第13章 域名系统DNS
本章学习目标 了解域名的分层命名机制 看懂域名各部分所表示的含义 理解域名系统和域名解析过程
域名系统 DNS DNS(Domain Name System,域名系统)是一种工作在TCP/IP的应用层的分布式网络目录服务,它通过维护一个遍布全球的分布式数据库,提供主机名和IP地址之间的转换及有关电子邮件的选路信息 大多数因特网服务器依赖于DNS而工作,一旦DNS出错,用户将无法访问Web站点,并且无法收发电子邮件 域名地址是用英文字母与数字表示的助记符,用于标识网络上的计算机,DNS将枯燥难记的IP地址用容易理解的描述性名称代替,这样用户就可以不必去记忆IP地址 DNS是一种高层协议,它提供的是域名与IP地址之间互相转换的服务,尽管用户使用域名来访问网络,但下层的传输仍然使用IP地址
13.1 域名与命名约定 最初主机名与IP地址的映射是保存在NIC的hosts.txt文件中的,网络中所有计算机都必须在本地保存该文件的副本 13.1 域名与命名约定 最初主机名与IP地址的映射是保存在NIC的hosts.txt文件中的,网络中所有计算机都必须在本地保存该文件的副本 随着网络的发展,不断有计算机连入网络,在单个计算机上维护数据库的方法变得难以使用,因为经常会有主机要求下载hosts.txt文件,对NIC的主机造成巨大的压力;而且也不能保证服务的质量,存在单点故障;局域网的用户希望管理自己的主机名,不希望多天审核后才把自己的主机加在hosts.txt文件中。 DNS的出现解决了上述问题。DNS使用分层结构的名字空间组织方案,整个名字空间以分布式数据库管理
13.1 域名与命名约定 分层结构域名命名的基本语法是: local.group.site 13.1 域名与命名约定 分层结构域名命名的基本语法是: local.group.site 用小数点“.”分隔开的各部分称为“标签” ,分层结构中等级越高的标签,位置越靠后 上述表示中,site称为顶级域,group称为二级域,local称为三级域 标签可使用的字符:字母、数字和连字符“-” 每个标签的最大长度为63个字符,一律不区分大小写 域名的总长度最多为255个字符。
DNS域名的层次结构示意图
13.1 域名与命名约定 绝对域名 (FQDN) 相对域名 包含了主机名称,并以点小数点“.”结尾的域名,绝对域名是全球惟一的 13.1 域名与命名约定 绝对域名 (FQDN) 包含了主机名称,并以点小数点“.”结尾的域名,绝对域名是全球惟一的 例:“it.21cn.com.” 相对域名 可通过在其右边加上本地域信息后缀而使其变为绝对域名 例:域名news通过加上后缀“.21cn.com.”而成为绝对域名
13.1 域名与命名约定 顶级域名的三种类型: arpa 3字符长的域 2字符长的域 用作IP地址到绝对域名转换(反向解析)的特殊域 13.1 域名与命名约定 顶级域名的三种类型: arpa 用作IP地址到绝对域名转换(反向解析)的特殊域 3字符长的域 用于表示域所属组织的类型 由NIC定义,通常称为普通域(或组织域) 2字符长的域 用于表示域所在的国家或地区 绝大多数都与ISO3166中定义的国家代码一致,通常称为国家域或地理域
13.1 域名与命名约定 NIC定义的顶级域名 常见的国家域 域名 描述 us 美国 uk 英国 ru 俄罗斯 cn 中国 fr 法国 de 13.1 域名与命名约定 NIC定义的顶级域名 常见的国家域 域名 描述 us 美国 uk 英国 ru 俄罗斯 cn 中国 fr 法国 de 德国 jp 日本 hk 中国香港 tw 中国台湾 域名 描述 com 商业机构 edu 教育机构 gov 政府部门 int 国际组织 mil 军事机构 net 商业网络 org 其他组织
13.2 域名解析 域名解析包括 域名数据库分布在不同网络中的各个服务器上,这使得各个DNS服务器的负荷相对均衡,并有利于管理员进行维护 13.2 域名解析 域名解析包括 将域名转换为相应IP地址的过程 将IP地址转换为相应域名的过程 域名数据库分布在不同网络中的各个服务器上,这使得各个DNS服务器的负荷相对均衡,并有利于管理员进行维护 域名服务器上包含有DNS数据库,其中存储了域名和IP地址之间的映射信息
13.2 域名解析 域名解析示意图
13.2.1 区域 域名分层结构中可以分开管理的域叫做区域 区域中包含该域中所有计算机的IP与域名的详细信息 13.2.1 区域 域名分层结构中可以分开管理的域叫做区域 区域中包含该域中所有计算机的IP与域名的详细信息 区域-子区域的层次结构使得管理工作变得轻松 对于域名服务器所管理的区域来说,该服务器是权威的,一个域的域名解析查询只能由权威域名服务器来回答 包含区域的详细信息的服务器被称为域名服务器(或DNS服务器),一个域名服务器可以负责一个或多个区域 一个区域的管理者必须为该区域提供一个主域名服务器和至少一个副域名服务器。主、副域名服务器必须是独立和冗余的 把主域名服务器中的区域文件复制到副域名服务器的过程被称为区域传送
13.2.2 域名解析过程 将域名转换为相应IP地址的解析过程: 当客户端应用程序需要用到域名对应的IP地址时,它会向解析器发出查询请求 13.2.2 域名解析过程 将域名转换为相应IP地址的解析过程: 当客户端应用程序需要用到域名对应的IP地址时,它会向解析器发出查询请求 解析器首先会检查本地DNS缓存,看看是否有匹配的项目,如果有,解析器立即将结果返回给应用程序,否则解析器会产生DNS查询报文,并将其发送到本地域名服务器 当被询问到的有关本域名内主机的时候,域名服务器会直接做出回答 如果服务器无法解析,则它会先从缓存中查找,看该域名是否最近被解析过,如果找到了相应的记录,服务器会把从缓存中获取的IP地址信息返回给客户端,并标记为“非权威”,表示该结果可能已过期,同时附上解析该域名的权威服务器的域名和IP地址。当因过期而造成访问失败时,客户可直接访问它。 如果本地域名服务器在缓存中也无法找到匹配的记录项,它有两个选择:递归或迭代,这依赖于服务器的配置方式
13.2.2 域名解析过程 递归查询 如果域名服务器对于请求查询的域名来说不是权威的,它会将请求传送给另一个域名服务器,如果那个域名服务器还是无法解析域名,它同样会请求其他的域名服务进行解析,这个过程就像爬梯子一样 如果某个域名服务器成功解析了该域名,则IP地址信息会沿相反的路径返回给客户端,就像从梯子上下来一样 迭代查询 如果域名服务器不能解决查询,它将给客户端返回一个响应,告诉客户端能解决该查询的域名服务器,客户端需要自行与这个服务器联系,以获得域名解析的结果
13.2.3 DNS缓存 解析一个非本地域名的代价是很高的,可能需要向许多域名服务器发送查询(目的) 每个域名服务器都在本地维护一个DNS缓存,缓存中保存了最近解析过的域名与IP地址的映射信息,域名服务器把从其他域名服务器收到的响应数据也缓存起来 如果域名服务器不是被请求域的权威域名服务器时,它会先检查DNS缓存中是否有匹配的项目,如果没有找到才会向其他域名服务器发出查询请求
13.2.3 DNS缓存 为了保证DNS缓存中存储的信息是有效的,DNS中引入了TTL的概念,即缓存中项目的保存时间 较大的TTL值可以减轻因查询造成的网络负担,较小的TTL值可以很好地适应域名与IP地址的对应关系变化较快的情况 在客户端的计算机上,同样可以使用缓存。可以将客户端请求解析过的域名缓存在本地,或从本地域名服务器上下载域名与IP地址的映射数据库
13.3 DNS报文格式
13.3.1 DNS报头 DNS报文的报头部分是固定12字节长度的 标识 (Identification) 标志 (Flags) 16位标识符,由客户端设置,在服务器响应中原样返回。客户端通过它来确定返回的响应与发送的请求是否匹配 标志 (Flags) 用于指定所请求的操作及返回的响应码,它是以位字段的形式组织的,总长度为16bit DNS报头中“标志”字段的结构
13.3.1 DNS报头 询问数 表示发送给域名服务器的询问数。 答案数 表示域名服务器返回的答案数。 权威答案数 表示权威域名服务器返回的答案数。 附加答案数 表示附加部分包含的答案数 以上四个16bit字段说明最后四个变长字段中包含的条目数,对于查询报文,询问数通常是1,而其他三项均为0。对于应答报文,答案数至少是1,剩下的两项可以是0或非0
13.3.2 查询部分 紧随在报头部分的是“查询部分”,查询报文必须填写这个字段,“查询部分”可以包含多个查询记录 查询名称 查询类型 13.3.2 查询部分 紧随在报头部分的是“查询部分”,查询报文必须填写这个字段,“查询部分”可以包含多个查询记录 DNS查询报文中“查询记录”的格式 查询名称 要解析的站点的域名,它是一个或多个标识符的序列 查询类型 查询类型是类型(资源记录中用到的字段)的一个超集 查询类 的取值通常是1,指Internet地址(因某些站点也支持其他非IP地址)
域名news.zsu.edu.cn的表示 DNS查询和响应的类型值和查询类型值 名字 编码 描述 类型 查询类型 A 1 IP地址 √ NS 2 权威域名服务器 CNAME 5 规范名称(域名服务器的别名) PTR 12 指针记录 HINFO 13 主机信息 MX 15 邮件交换记录 TXT 16 说明文本 AXFR 252 对区域传送的请求 * 255 对所有记录的请求
13.3.3 资源记录 DNS报文中最后的三个字段:答案部分、权威答案部分和附加信息部分,均由一个或多个资源记录(RR)组成 13.3.3 资源记录 DNS报文中最后的三个字段:答案部分、权威答案部分和附加信息部分,均由一个或多个资源记录(RR)组成 DNS响应报文中“资源记录”的格式 域名:记录中资源数据对应的名字 存活时间:指定了客户端在缓存中保留资源记录的秒数 资源数据长度:指定了以字节为单位的资源数据的长度。 资源数据:包含了域名服务器返回给客户端的查询答案
13.3.4 信息压缩 一般情况下,在域名服务器返回的结果报文中,会有许多重复的域名。为了减少报文数据量,可以采用指针的方式实现域名数据的压缩 压缩方法: 当一个域名中的标识符是压缩的,它的单计数字节(范围0~63)中的最高两位将被设置为11,表示它是一个16bit指针而不再是8bit的计数字节 指针中的剩下14bit为偏移量,说明标识符在DNS报文中的位置 域名压缩表示中“指针”的格式
小结 DNS是任何与Internet相连主机必不可少的一部分,使用户能通过描述性的名字来识别和访问网络中的计算机 DNS是一个分布式的数据库,包含关于域名和IP地址之间的映射信息 DNS域名空间采用分层结构组织 域名解析是指域名与相应IP地址之间的转换 DNS通过缓存机制来加速域名解析的速度,用“存活时间”来保证缓存中数据的有效性 所有的DNS查询和响应都有相同的报文格式,这个报文格式中包含查询请求和可能的回答资源记录、权威资源记录和附加资源记录