柯侧耳倾听者 - 云代码空间
—— 翱翔在Java世界的海洋之上
DNS协议
一.【实验目的与要求】
1.掌握DNS的报文格式
2.掌握DNS的工作原理
3.掌握DNS域名空间的分类
4.理解DNS高速缓存的作用
二.【实验环境】
该实验采用网络结构一
三.【实验原理】
1.域名空间
在域名空间中,名字被定义在一个根在顶部的树型结构中。这个树结构最多有128层:第0层为根,如下图所示:
图8.1 域名空间
(1)标号
树上的每一个节点都有一个标号,标号是一个最多有63个字符的字符串。根节点的标号是空字符串。每一个节点的子节点都具有不同的标号,这样就保证了域名是惟一的。
(2)域名
一个完全的域名是用点“.”分隔开的标号序列。域名总是从节点标号向上读到根节点标号的。因为最后一个标号是根节点的标号,所以一个完全的域名总是以空标号结束。因为空字符串表示什么也没有,所以域名的最后一个字符是一个点。下图给出了一个域名示例。
图8.2 域名和标号
1)完整域名
若域名以空字符串结束,那么这个域名就叫做完整域名(FQDN)。完整域名是包括主机全名的域名。它包括从最具体的到最一般的所有标号,并惟一地定义了该主机的名字。例如,域名:challenger.atc.fhda.edu是名为challenger的计算机的完整域名。
2)不完整域名
若一个域名不是以空字符串结束,则它就叫做不完整域名(PQDN)。不完整域名从一个节点开始,它没有到达根节点。它适用于这样一种情况:当要被解析的域名和客户属于同一个场所时,解析程序可以自动加上缺少的部分,以便创建完整域名。例如,如果在场所atc.fhda.edu上的用户想得到计算机challenger的IP地址,用户就可以定义一个不完整域名:challenger。DNS客户在把地址传递给DNS服务器之前,会加上后缀atc.fhda.edu。
(3)域
域(domain)是域名空间中的子树。域的名字就是这个子树顶部节点的域名。下图给出了一些域。域本身又可划分为若干个域(有时也称它们为子域)。
图8.3 域
2. DNS协议简介
DNS(域名服务)是一种能够完成从域名到地址或从地址到域名的映射系统。使用DNS,计算机用户可以间接的通过域名来完成通信。Internet中的DNS被设计成为一个联机分布式数据库系统,采用客户/服务器方式工作。分布式的结构使DNS具有很强的容错性。
3. DNS的域名分类
在Internet中,域名空间被划分为3个部分:类属域、国家域和反向域,如下图所示:
图8.4 Internet中使用的DNS
(1)类属域
类属域按照主机的类属行为分类。树中的每一个节点定义一个域,它是到域名空间数据库的一个索引,如下图所示:
图8.5 类属域
在类属域的第一级允许有14个标号。这些标号描述了不同的机构类型,如下表所示:
表8.1 第一级类属域
(2)国家域
国家域使用两字符的国家或地区的缩写(例如,用cn代表中国)。第二级标号可以是机构的标号,或者是国家指定的标号。
(3)反向域
反向域用来把一个地址映射为域名。例如,有时服务器会收到来自客户的请求,要完成一个任务。但是服务器不能确定这个客户是否在授权的客户列表中,因为只有客户的IP地址(从收到的IP数据包中提取出来的)被列出。要确定这个客户是否在授权列表中,服务器可以使用它的解析程序向DNS发送查询,并请求把地址映射为名字。
这种类型的查询叫做反向查询或指针(PTR)查询。要处理反向查询,在域名空间中要增加反向域,且其第一级节点叫做arpa(由于历史原因)。第二级节点叫做in-addr(表示反向地址)。域的其余部分为IP地址。
处理反向域的服务器也是分级的。这就表示地址的网络号部分要比子网号部分的等级高,而子网号部分要比主机号部分的等级高。在与类属域和国家域相比较时,反向域看起来是反过来的,如132.34.45.121的IP地址在读出时应为121.45.34.132.in-addr. arpa。下图是反向域配置的说明。
图8.6 反向域
四、【预习与准备】
预习有关DNS协议的原理及其工作机制,准备好安装有Windows XP或Window 7系统的PC机一台,搭建好实验所需的网络拓扑结构一。
五、【实验内容】
各主机打开工具区的“拓扑验证工具”,选择相应的网络结构,配置网卡后,进行拓扑验证,如果通过拓扑验证,关闭工具继续进行实验,如果没有通过,请检查网络连接。
本练习一人一组,现仅以主机A为例,其它主机的操作参考主机A。
【说明】本实验要求各主机能上广域网。
1. 类属域
将主机A的“首选DNS服务器”设置为公网DNS服务器(202.114.216.3),目的是能够访问Internet。
(1)主机A启动协议分析器开始捕获数据并设置过滤条件(提取DNS协议)。
(2)主机A在命令行下运行“nslookup www.python.org”命令。
(3)主机A停止捕获数据。分析主机A捕获到的数据及命令行返回的结果,回答以下问题:
● “www.python.org”域名的顶级域名的含义是什么?
代表其他类型的组织
2. 国家域
(1)主机A启动协议分析器开始捕获数据并设置过滤条件(提取DNS协议)。
(2)主机A在命令行下运行“nslookup www.jl.gov.cn”命令。
(3)主机A停止捕获数据。分析主机A捕获到的数据及命令行返回的结果,回答以下问题:
● “www.jl.gov.cn”域名的顶级、二级、三级域名的含义是什么?
Cn代表中国,gov代表政府组织,jl代表吉林省
3. 反向域
(1)将主机A的“首选DNS服务器”设置为服务器的IP地址(172.16.0.253)。
(2)主机A启动协议分析器开始捕获数据并设置过滤条件(提取DNS协议)。
(3)主机A在命令行下运行“nslookup 172.16.0.253”命令。
(4)主机A停止捕获数据。分析主机A捕获到的数据及命令行返回的结果,回答以下问题:
● 172.16.0.253对应的域名是什么?
JServer.NetLab
● 反向域的顶级、二级域名分别是什么?
NetLab(顶级域名)
JServer(二级域名)
本练习一人一组,现仅以主机A为例,其它主机的操作参考主机A。
【说明】
● 本练习中要求每台主机配置DNS服务器,(DNS服务器的IP地址即Linux服务器的IP地址)其IP地址以172.16.0.253为例。
● 各组主机IP地址配置如下:
第一组六台主机IP地址依次为172.16.0.11,172.16.0.12 …… 172.16.0.16;
第二组六台主机IP地址依次为172.16.0.21,172.16.0.22 …… 172.16.0.26;
其它各组以此类推。
1. 在主机A执行命令“nslookup 本机的IP地址”获取本机的域名,记录下来。
2. 主机A启动协议编辑器,编写一个DNS正向查询报文。其中:
MAC层:
源MAC地址:本机MAC地址
目的MAC地址:服务器的MAC地址
IP层:
源IP地址:本机IP地址
目的IP地址:服务器的IP地址(172.16.0.253)
总长度:IP层及其上层协议总长度
校验和:IP层字段全部编辑完成后,计算IP层校验和
UDP层:
源端口:大于1024的端口
目的端口:53
有效负载长度:UDP层及其上层协议总长度
校验和:所有字段编辑完成后,计算校验和
DNS层:
标志:0100
问题记录数:1
域名循环体:选中第一个“域名循环体”项,点击右边按钮[B]来追加域名块。按格式要求填写步骤1获取的对方主机的域名。
例如:设步骤1中获取的域名为host11.Netlab,则追加2块。选中“域名循环体”下的“长度”项,修改长度值;出现“域标记”项,选中“域标记”项,点击右边按钮[E]输入相应的值。最后一块“长度”字段为0。
查询类型:1
查询类别:1
设置如图所示:
图8.19 DNS帧的编辑
3. 主机A启动协议分析器开始捕获数据,并设置过滤条件(提取DNS协议)。
4. 主机A发送已编辑好的报文。
5. 主机A停止捕获数据。在捕获到的数据中查找DNS响应报文。
● 在响应报文中提取对方主机的IP地址。
练习3 DNS反向查询
本练习一人一组,现仅以主机A为例,其它主机的操作参考主机A。
1. 该练习中,DNS服务器及各主机IP地址配置同练习二。
2. 主机A启动协议编辑器,编写一个DNS反向查询报文。其中:
MAC层:
源MAC地址:本机MAC地址
目的MAC地址: 服务器的MAC地址
IP层:
源IP地址:本机IP地址
目的IP地址:服务器的IP地址(172.16.0.253)
总长度:IP层及其上层协议总长度
校验和:IP层字段全部编辑完成后,计算IP层校验和
UDP层:
源端口:大于1024的合法端口号
目的端口:53
有效负载长度:UDP层及其上层协议总长度
校验和:所有字段编辑完成后,计算校验和
DNS层:
标志:0100
问题记录数:1
域名循环体:选中“域名循环体”项,点击右边按钮[B]来追加域名块。按格式要求填写对方主机的反向域域名(反转IP+.in-addr.arpa)。例如:设主机A的IP地址为172.16.0.11,则它的反向域为11.0.16.172.in-addr.arpa,这需要追加6个块,其中最后一个块“长度”字段为0,如图所示:
图8.20 DNS帧的编辑
查询类型:12
查询类别:1
3. 主机A启动协议分析器开始数据捕获,设置过滤条件(提取DNS协议)。
4. 主机A发送已编辑好的报文。
5. 主机A停止捕获数据。在捕获到的数据中查找DNS响应报文。
● 在响应报文中提取主机A的域名地址。
练习4 DNS的应用及高速缓存
本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、B所在组为例,其它组的操作参考主机A、B所在组的操作。
1. 该练习中,DNS服务器及各主机IP地址配置同练习二。
2. 主机A、B在命令行下分别执行“ipconfig /flushdns”命令来清空DNS高速缓存。
3. 主机A、B分别启动协议分析器开始捕获数据并设置过滤条件(提取DNS协议和ICMP协议)。
4. 主机A、B分别在命令行下执行“ping 对方域名”命令,然后执行“ipconfig /displaydns”命令来显示DNS高速缓存。在缓存中找到对方的域名所对应的记录。
5. 主机A、B分别在命令行下再次执行“ping 对方域名”命令。
6. 主机A、B停止捕获,分析其捕获的数据及对方的DNS高速缓存中的内容,回答问题:
● 简述在使用域名完成的通信中,DNS协议所起到的作用。
为域名解析IP地址
● 简述DNS高速缓存的作用。
当某个访问请求解析过一个域名以后,该解析记录就放置在缓存中,以后再有同样的解析请求,就直接从缓存中提供结果,加快了访问者的应答速度。
● 参考“会话分析”视图的显示结果,绘制此次访问过程的报文交互图(包括ICMP协议)。
7. 恢复网络环境,将“首选DNS服务器”清空。