DNS详解

许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。 名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。

因特网的域名结构

因特网采用了层次树状结构的命名方法。

任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

域名的结构由标号序列组成,各标号之间用点隔开:

    … . 三级域名 . 二级域名 . *域名

各标号分别代表不同级别的域名。

域名只是个逻辑概念,并不代表计算机所在的物理地点。 变长的域名和使用有助记忆的字符串,是为了便于人来使用。

而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。

域名中的“点”和点分十进制 IP 地址中的“点”并无一一对应的关系。点分十进制 IP 地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。

DNS详解

 域名服务器 

一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。

各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。

每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。

DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

DNS详解

树状结构的 DNS 域名服务器 

DNS详解

域名服务器有以下四种类型 

根域名服务器

*域名服务器

权限域名服务器

本地域名服务器

根域名服务器 ——最高层次的域名服务器——

根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的*域名服务器的域名和 IP 地址。 不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。 在因特网上共有13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从a 一直到 m(前13 个字母)。

这些根域名服务器相应的域名分别是

a.rootservers.net

b.rootservers.net

m.rootservers.net

到 2006 年底全世界已经安装了一百多个根域名服务器机器,分布在世界各地。 这样做的目的是为了方便用户,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器。

根域名服务器并不直接把域名直接转换成 IP 地址。 在使用迭代查询时,根域名服务器把下一步应当找 的*域名服务器的 IP 地址告诉本地域名服务器。

*域名服务器(即 TLD 服务器)

这些域名服务器负责管理在该*域名服务器注册的所有二级域名。

当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。

权限域名服务器 

这就是前面已经讲过的负责一个区的域名服务器。 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。

本地域名服务器

本地域名服务器对域名系统非常重要。 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。 每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器, 这种域名服务器有时也称为默认域名服务器。

提高域名服务器的可靠性

DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。 当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。 主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。

 

域名的解析过程

主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务

器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

DNS详解

本地域名服务器采用递归查询(比较少用)

DNS详解

名字的高速缓存

每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。 可大大减轻根域名服务器的负荷,使因特网上的 DNS 查询请求和回答报文的数量大为减少。 为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。 当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

上一篇:Python学习(二十二)—— 前端基础之BOM和DOM


下一篇:《STL源码剖析》环境配置