学习:DNS协议分析

DNS服务:采用服务器/客户端(C/S)的方式工作。当客户端程序要通过一个主机名称访问网络中的一台主机时,它首先需要得到这个主机名称所对应的IP地址,此时就需要用到DNS,来进行域名转换为网络地址的作用

进行DNS服务查询之前,会先进行系统DNS缓存 > HOSTS文件

然后会请求 DNS服务器中的缓存,如果没有就开始迭代DNS查询

windows查询dns缓存:ipconfig/displaydns 清除ipconfig/flushdns


DNS报文格式:

学习:DNS协议分析_第1张图片

首先看看Header段中每个字段的含义:

DNS ID号(DNS ID Number): 用来对应DNS查询和DNS响应

查询/响应(Query/Response, QR): 用来指明这个报文是DNS查询还是响应,占1个比特位。为1代表响应,0代表查询

操作代码(OpCode):用来定义消息中请求的类型

权威应答(Authoritative Answer, AA):这个比特位在响应的时候才有意义。则说明这个响应是由域内权威域名服务器发出的

截断(Truncation, TC):用来指出报文比允许的长度还要长,导致被截断

期望递归(Recursion Desired, RD):如果设置了RD,就建议域名服务器进行递归解析,递归查询的支持是可选的。

支持递归(Recursion Available, RA): 当响应中设定了这个值,说明域名服务器支持递归查询

保留(Z): 未使用,用0表示

响应代码(Response  Code): 在DNS响应中指明错误,占4个比特位。

问题计数(Question Count): 问题区段中的问题记录数

回答计数(Answer Count):回答区段中的回答记录数

域名服务计数(Name Server Count):权威区段中的记录数

额外记录数(Additional  Records Count):在额外信息区段中的记录数

问题区段(Question Section):包含有被发送到DNS服务器的一条或者多条信息

回答区段(Answer Section):含有用来回答查询的一条或者多条资源记录

权威区段(Authority Section):包含权威域名服务器的资源记录

额外信息区段(Additional Information Section): 包含资源记录且大小可变的区段。

分析数据包:

DNS请求数据包:

学习:DNS协议分析_第2张图片

DNS应答数据包:

学习:DNS协议分析_第3张图片

学习:DNS协议分析_第4张图片

需要注意的是:上面的抓到的只是客户端与DNS服务器114.114.114.114之间的递归查询,DNS服务器114.114.114.114还进行了之后的迭代查询

1、递归查询

客户计算机向本地域名服务器的查询一般采用的是递归查询。如果客户机所询问的本地域名服务器无法提供被查询域名的IP地址,那么本地域名服务器就会以DNS客户的身份,向其它根域名服务器继续发出查询请求的报文。

2、迭代查询

本地域名服务器向根域名服务器的查询通常采用的是迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求的报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器“下一步应该向哪个域名服务器进行查询”。然后本地域名服务器就进行后续的查询。

使用wireshark走一遍流程,机器为ubuntu,用linux的dig命令来进行查询下dig www.adexx.xyz +trace

ubuntu向本地DNS服务器发送请求,向根域服务器的ns记录

学习:DNS协议分析_第5张图片

返回信息如下:

学习:DNS协议分析_第6张图片

然后向其中的DNS服务器的A记录(自己抓包发现还有请求AAAA的记录)

学习:DNS协议分析_第7张图片

学习:DNS协议分析_第8张图片

都拿到了A记录和AAAA记录之后,又向其中DNS服务器的A记录进行DNS查询www.adexx.xyz的A记录

学习:DNS协议分析_第9张图片

返回包中,它会返回xyz域的ns记录

学习:DNS协议分析_第10张图片

然后挑选其中的一条记录z.nic.xyz,请求dns请求A记录

返回包中,它会返回z.nic.xyz的A记录

学习:DNS协议分析_第11张图片

然后请求其IP,尝试获取www.adexx.xyz的A记录

返回包中却返回了其他服务器的ns记录

然后又继续请求其中的dns服务器(ns记录),请求它的A记录

然后请求dns服务器的A记录,询问www.adexx.xyz的A记录

学习:DNS协议分析_第12张图片

最后该dns服务器返回www.adexx.xyz的A记录

学习:DNS协议分析_第13张图片

总结:

1、客户端先去向本地DNS服务器请求 根域的NS记录

2、本地DNS服务器查询完之后,向客户端返回了根域的NS记录

3、然后客户端会向本地DNS服务器请求---->这些根域的NS记录中的DNS服务器的A记录

4、本地DNS服务器返回给客户端---->这些根域的NS记录中的DNS服务器的A记录

5、接着客户端就开始向这些DNS服务器请求指定的域名www.adexx.xyz的A记录

....接着就如上的操作,返回类似.xyz的域名的ns记录 ----> 这些.xyz域的NS记录中的DNS服务器的A记录

你可能感兴趣的:(学习:DNS协议分析)