计算机网络实验|DNS 域名服务协议

DNS 域名服务协议

【实验目的】
1、理解 DNS 实现的原理;
2、了解 DNS 解析的过程;
3、掌握 DNS 报文格式。

【实验环境】
本实验要求实验室主机能够连接到 Internet,并可浏览网页。
实验拓扑如图
在这里插入图片描述
【实验内容】
1、学习 DNS 协议的原理和实现方法;
2、了解 DNS 的工作过程;
3、通过编辑 DNS 请求数据包,了解 DNS 的报文格式;
4、掌握 nslookup 命令和 ipconfig 命令的使用方法。

【实验流程】
在这里插入图片描述

【实验原理】
DNS 域名系统是服务器和客户程序相互通信的一种协议。它提供了主机域名和 IP 地址 之间的转换。域名服务器使用固定的端口号 53,支持 UDP 和 TCP 访问。

DNS 协议
DNS 是域名系统(Domain Name System)的缩写,它是一种用于 TCP/IP 应用程序的分 布式数据库,它提供主机名字和 I P 地址之间的转换及有关电子邮件的选路信息。所谓“分 布式”是指在 Internet 上的单个站点不能拥有所有的信息。每个站点(如大学中的系、校 园、公司或公司中的部门)保留它自己的信息数据库,并运行一个服务器程序供 Internet 上的其他系统(客户程序)查询。

在 Internet 中,域名可用来对某个组织或实体进行寻址。例如“www.sina.com”这个 域名可用来对 IP 地址为 71.5.7.191 的 Internet 网点“sina.com”进行寻址,而特定的 主机服务器名称为“www”。域名中的“com”部分表明该组织或实体的性质,“sina”定义 了该组织或实体。

而 DNS 就像是一个自动的电话号码簿,我们可以直接拨打某人的名字来代替他的电话号码(IP 地址)。DNS 在我们直接呼叫网站的名字以后,就会将像 www.sina.com 一样便 于人类使用的名字转化成像 71.5.7.191 一样便于机器识别的 IP 地址。

这个转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是 进行域名解析的服务器。它是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转 换,以及控制因特网的电子邮件的发送。大多数因特网服务依赖于 DNS 而工作,一旦DNS 出 错,就无法连接 Web 站点,电子邮件的发送也会中止。

在 DNS 命名方式中,采用了分散和分层的机制来实现域名空间的委派授权,以及域名 与地址相转换的授权。通过使用 DNS 的命名方式来为遍布全球的网络设备分配域名,而这 则是由分散在世界各地的服务器实现的。
命名系统是分层次的,域名树是倒置的,它的根级显示在最上方,分为若干顶级域 (.com、.net、.edu、.gov、.org 等,以及 200 多个国家级的顶级域),这些域又被分成 二级域,依此类推。它们由各自相应的政府或私有实体管理。

DNS 的分布式机制支持有效且可靠的名字到 IP 地址的映射。多数名字可以在本地映射, 不同站点的服务器相互合作能够解决大网络的名字与 IP 地址的映射问题。单个服务器的故 障不会影响 DNS 的正确操作。

DNS 工作流程
域名服务分为客户端和服务器端,客户端提出请求,询问一个 Domain Name 的 IP 地 址,服务器端必须回答客户端的请求。本地 DNS 首先查询自己的数据库,如果自己的数据 库中没有对应的 IP 地址,则向本地 DNS 上所设的上一级 DNS 询问,得到结果之后,将收 到的结果保存在高速缓冲区,并回答给客户端。其简单过程如图所示:
在这里插入图片描述
在这个过程中,待查询的域名放在查询问题中,查询结果放在回答的资源记录中。

DNS 的报文格式
DNS定义了用于查询和响应的报文格式,下图是查询和响应报文的总体格式:
在这里插入图片描述
这个报文由 1 2 字节长的首部和 4 个长度可变的字段组成。

标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否 匹配。16 bit 的标志字段被划分为若干子字段,如下图所示:
在这里插入图片描述
标志中每一位的含义如下:
QR:是 1 bit 字段,0 表示查询报文,1 表示响应报文。

Opcode:报文类型,是一个 4 bit 字段,通常值为 0(标准查询),其他值为 1(反向查询)和 2(服务器状态请求)。

AA:是 1 bit 字段,表示“授权回答(authoritative answer)”,如果此位为 1,
表示服务器对问题部分的回答是权威性的。

TC:是 1 bit 字段,表示“可截断的(truncated)”。使用 UDP 时,它表示当应答的总长度超过 512 字节时,只返回前 512 个字节。

RD:是 1 bit 字段,表示“期望递归(recursion desired)”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查 询。如果该位为 0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询 的其他名字服务器列表,这称为迭代查询。

RA:是 1 bit 字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中 将该比特设置为 1。

Zero:随后的 3 bit 字段必须为 0。

Rcode:是一个 4 bit 的返回码字段。通常的值为 0(没有差错)和 3(名字差错)。 名字差错只有从一个授权 DNS 服务器上返回,它表示在查询中制定的域名不存在。 随后的 4 个 16 bit 字段说明最后 4 个变长字段中包含的条目数。对于查询报文,问题(question)数通常是 1,而其他 3 项则均为 0。类似地,对于应答报文,回答数至少 是 1,剩下的两项可以是 0 或非 0。

下图是DNS查询报文中的查询问题记录部分的格式,通常只有一个问题:
在这里插入图片描述
查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值 来说明随后标识符的字节长度,每个名字以最后字节为 0 结束,长度为 0 的标识符是根标 识符。计数字节的值必须是 0 ~ 63 的数,因为标识符的最大长度仅为 63。

每个问题有一个查询类型,而每个响应(也称一个答案或资源记录)也有一个类型。大约有 20 个不同的类型值,其中的一些目前已经过时,常见的值如下表:

名字数值描述
A1IP地址
NS2名字服务器
CHAME5规范名称
PTR12指针记录
HINFO13主机信息
MX15邮件交换记录

最常用的查询类型是 A 类型,表示期望获得查询名的 IP 地址。一个 PTR 查询则请求 获得一个 IP 地址对应的域名。

查询类通常是 1,指互联网地址(某些站点也支持其他非 I P 地址)。

DNS 报文中最后的三个字段,答案字段、权威答案字段和附加答案字段,均采用一种称 为资源记录 RR(Resource Record)的相同格式,下图是 DNS 响应报文中资源记录的格式:
在这里插入图片描述
域名:是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式相同。 类型:说明 RR 的类型码。它的值和前面介绍的查询类型值是一样的。

类:通常为 1,指 Internet 数据。 生存时间:该字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为 2天。

资源数据长度:说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型 1(A 记录)资源数据是 4 字节的 I P 地址。

【实验步骤】
步骤一:使用 nslookup 工具解析域名,捕获数据包并进行分析
1、在实验主机上启动网络协议分析仪进行数据捕获并设置过滤条件,在工具栏点击“过 滤器”按钮,会弹出“设置&过滤器”对话框,在“过滤器类型”中选择“类型过滤器”,

类型值中选择“DNS 协议”,点击“设置参数”按钮后“确定”,开始进行数据包的捕获:
在这里插入图片描述

过滤表达式用途
DNS只查看 DNS 协议的记录
ip.src == 192.168.1.102 or ip.dst ==192.168.1.102源地址或者目标地址是 192.168.1.102

2、使用 nslookup 工具进行域名的解析
nslookup 命令是查询域名对应 IP 的工具,其用法可以直接在 Windows 系统的命令提 示符下运行命令:nslookup 域名 来进行域名解析,例如:
在这里插入图片描述
也可以仅仅运行 nslookup 命令(不需任何参数),进入 nslookup 的交互界面,在“>” 提示符后可以多次输入不同的域名,以实现多次的查询,例如可以在一次 nslookup 的交互过程中,进行 www.baidu.com、 www.yahoo.com、 www.google.com 的查询:
在这里插入图片描述
最后,可用“exit”命令退出 nslookup 的交互状态。

3、分析捕获到的数据报文
分析一个 DNS 的查询报文,从中可以看到,报文的标识为 10,问题数是1,答案数、 权威答案数、附加答案数都是 0,而要查询的域名是 www.yahoo.com :

分析一个响应报文,报文标识同样为 10,指明这个响应是针对哪一个查询报文

步骤二:使用 ipconfig 命令查看 DNS 缓存
1、继续使用协议分析仪进行数据的捕获,同时打开 IE 浏览器,访问 www.baidu.com、 www.yahoo.com、 www.google.com,观察此时是否还有 DNS 请求?

2、关闭 IE 浏览器后再重新打开,访问一个尚未访问过的网站,例如 www.sohu.com, 观察此时是否有 DNS 请求?为什么?

3、在 Windows 系统的命令提示符下运行:ipconfig /displaydns 显示本机缓冲区中 的DNS 解析内容,如图所示:
在这里插入图片描述
4、在 Windows 系统的命令提示符下运行:ipconfig /flushdns,则可以清除本机的 DNS 缓存记录,如图所示:
在这里插入图片描述
5、此时关闭 IE 浏览器再打开,访问刚才打开过的网站,观察是否有 DNS 请求?为什么?

【思考问题】
结合实验过程中的实验结果,回答下列问题:
1、根据步骤 1 中的捕获结果,分析 DNS 协议的工作流程。
2、域名与 IP 地址之间是否有一一对应的关系?


版权声明:本文为qq_43571150原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。