关于域名系统DNS(Domain Name System)

从域名中解析出IP地址。

DNS主要由3部分组成:

① 名称解析器(resolver)

② 域名空间(domain name space)

③ 名称服务器(name server)

DNS服务器获取域名空间的部分信息的方法:

① 由管理员编辑一个原始区域文件;

② 从其他名称服务器那里复制区域文件;

③ 通过向其他DNS服务器查询来获取具有一定时效的缓存信息。

名称服务器的3种主要类型:

① 主(primary)名称服务器:拥有一个区域文件的原始版本的服务器。

② 次(secondary)名称服务器:从其他主名称服务器那里复制一个区域文件。是一个只读版本。次名称服务器通过区域传输(zone transfer)跟随主名称服务器上的区域文件进行变化。

③ 惟高速缓存(caching-only)名称服务器:没有区域文件。它的职责是帮助名称解析器完成名称解析,并缓存解析结果,便于以后使用。当惟高速缓存名称服务器第一次启动时,他没有存储任何DNS信息。它是在启动之后,通过缓存查询的结果来逐渐建立DNS信息。缓存表项的生存时间TTL由提供授权解析结果的名称服务器决定。该服务器将查询的生存时间和名称解析一起返回。

域名解析

TCP/IP 的域名系统是一个有效的、可靠的、通用的、分布式的 名称——地址 映射系统。

域名解析有两种方式:正向解析和反向解析。

① 正向解析:根据域名查询对其对应的IP地址或其他相关信息。

② 反向解析:根据主机的IP地址查询其对应的域名。

DNS在名称空间中设置了一个称谓in-addr.arpa的特殊域,专门用于反向解析。

为了能够使反向解析用与正向解析相同的方法进行解析,反向解析将IP地址的字节倒过来写,构成反向解析的“名称空间”。如:地址是202.119.80.126的主机的域名写成126.80.119.202.in-addr.arpa。

DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用TCP,也可以使用UDP,使用的是TCP/UDP的53号端口。

DNS接收两种类型的解析:递归解析和反复解析

① 递归解析(递归查询):

要求名称服务器系统一次性完成名称——地址变换。

递归查询强制指定的DNS服务器对请求做出响应(响应要么是一个包含相应解析结果的成功的响应,要么是一个失败的响应)。

本地的DNS服务器可能需要通过再查询一些其他的DNS服务器才能完成解析,当DNS服务器从其他服务器得到响应后,再向客户端发送回答。

② 反复解析(迭代查询):

要求客户端本身反复寻求名称服务器的服务来获得最终的解析结果。

过程:名称服务器收到请求后,若能够给出解析结果,则返回最终结果到客户端;如果本名称服务器无法给出解析结果,则返回给请求者它认为能够给出解析结果的服务器的IP地址。

请求者收到该IP地址后,将向该地址发送解析请求,直到获得最终的解析结果或失败的响应。

名称服务器在没有任何可以回答的信息时,将返回一个失败的响应。

怎样提高解析效率

可以采用两步名称解析机制和高速缓存技术解决这个问题。

① 两步名称解析机制

Ⅰ. 先通过本地名称服务器进行解析;

Ⅱ. 如果不行,再采用自顶向下的方法搜索。

优点:既提高了效率,又保证了域名管理的层次结构。

② 高速缓存

在名称服务器中使用高速缓存技术,存放最近解析过的 名称——地址 映射和描述解析该名称服务器位置的信息。

优点:可以避免每次解析非本地名称时都进行自顶向下的搜索,从而减少非本地名称解析带来的开销。

缺点:若授权名称服务器中的 名称——地址 映射已经发生了变化。而高速缓存未能作出相应的刷新,会有一个有效性的问题,缓存失效,从而导致解析错误。

有效性问题解决办法:

服务器向解析器报告缓存信息时,必须注明该信息是非授权的,同时还要指出能够给出授权解析结果的名称服务器的地址。

此外,高速缓存中的每一个映射表项都有一个生存时间TTL,一旦某个表的TTL时间到期,便将它从缓存中删除。

本文链接:http://www.cnblogs.com/xsilence/p/6034467.html

关于域名系统DNS解析IP地址的一些总结的更多相关文章

  1. 免费公共DNS服务器IP地址大全(2017年6月24日)

    收集全球各个常用公共DNS服务器 IP地址,欢迎各位朋友评论补充! 国内常用公共DNS 114 DNS: (114.114.114.114:    114.114.115.115) 114DNS安全版 ...

  2. MSF魔鬼训练营-3.1.1信息收集-通过DNS和IP地址挖掘目标网络信息

    情报搜集环境站渗透测试全过程的80%~90%   一.外围信息搜集(公开渠道信息搜集OSINT  open source intelligence) 3.1.1信息收集-通过DNS和IP地址挖掘目标网 ...

  3. 公共 DNS server IP 地址

    公共 DNS server IP 地址 名称 DNS server IP 地址 CNNIC SDNS 1.2.4.8 210.2.4.8 114 DNS 114.114.114.114 114.114 ...

  4. 常用的公共 DNS 服务器 IP 地址

    转载自:小哈龙 2019-04-12 09:34:42 公共 DNS 服务器 IP 地址 名称 DNS 服务器 IP 地址 阿里 AliDNS 223.5.5.5 223.6.6.6 CNNIC SD ...

  5. JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址

    /** * JavaMail SMTP服务器发送邮件程序示例 * 扮演SMTP服务器角色与邮件客户端软件最大的区别就是: * SMTP服务器需要解析不同接收人邮件地址主机名对应的SMTP服务器主机名 ...

  6. Linux上DNS解析总是选择resolv.conf中第二位的DNS服务器IP地址

    问题现象: 在Linux机器上,用户自建了一台DNS服务器.然后改动/etc/resolv.conf将其服务器IP地址添加到第一项.将阿里云的内网DNS放到第二位,然而在测试过程中发现telnet,p ...

  7. DNS、IP地址、子网掩码和默认网关

    一.DNS服务器 DNS是指:域名服务器(Domain Name Server).在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转 ...

  8. Linux socket编程 DNS查询IP地址

    本来是一次计算机网络的实验,但是还没有完全写好,DNS的响应请求报文的冗余信息太多了,不只有IP地址.所以这次的实验主要就是解析DNS报文.同时也需要正确的填充请求报文.如果代码有什么bug,欢迎指正 ...

  9. 通过阿里云域名动态解析 IP 地址

    这两天在家里用树莓派折腾了一个家用服务器,主要用来做 mac 的 Time Machine ,还有就是当做下载机和 nas ,想着平时上班时间家里没人用网络,空着也是空着,就可以利用空闲带宽下个美剧啥 ...

随机推荐

  1. 彻底解决“从客户端中检测到有潜在危险的Request.Form值”

    类似设置validateRequest="false"的方法不推荐,因为应用程序需要显式检查所有输入,不方便. 1.前端使用encodeHtml函数对字符串进行编码,例: var ...

  2. 多条asp.net网站的优化建议

    一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...

  3. 异步编程系列第05章 Await究竟做了什么?

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  4. 常见的Web实时消息交互方式和SignalR

    标签: WebSocket SignalR 前言 1. Web消息交互技术 1.1 常见技术 1.2 WebSocket介绍 1.3 WebSocket示例 2. Signal 2.1 SignalR ...

  5. python编码规范

    python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...

  6. DataTable转实体Model,DataRow转实体Model,DataTable转泛型T,DataRow转泛型T

    前言,此方法利用反射将DataRow转成实体,由于反射性能不行,大家就看看就行了吧. 代码来啦 using System; using System.Collections.Generic; usin ...

  7. bzoj1202--带权并查集+前缀和

    http://www.lydsy.com/JudgeOnline/problem.php?id=1202 记s[i]=a[1]+a[2]+...+a[i],即s[i]为前缀和.再令v[i]=s[f[i ...

  8. Java 批量插入数据(Oracle)

    //批量添加20000条数据用时8秒. try {    String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...

  9. powershell脚本,命令行参数传值,并绑定变量的例子

    这是小技巧文章,所以文章不长.但原创唯一,非常重要.我搜了下,还真没有人发 powershell怎样 [命令行 参数 绑定],所以我决定写成博客. 搜索关键字如下: powershell 命令行 参数 ...

  10. ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...