DNS(Domain Name System)是互联网上非常重要的一项服务,我们每天上网都要依靠大量的DNS服务。在Internet上,用户更容易记住的是域名,但是网络中的计算机的互相访问是通过 IP 地址实现的。DNS 最常用的功能是给用户提供域名解析服务,将用户的域名解析成网络上能够访问的IP地址。
DNS报文格式
如下图所示,DNS报文由12B长的首部和4个长度可变的字段组成。标识字段由客户端程序设置并由服务器返回结果,客户端通过标识来确定响应与查询是否匹配。
下面我们结合 DNS 查询报文和响应报文的抓包信息来理解报文格式中的几个关键字段。
DNS查询报文的抓包,如下所示。
关键字段如下:
-
UDP:DNS查询是基于UDP传输数据的。DNS服务器支持TCP和UDP两种协议的查询方式。
-
Destination port:目的端口默认是53。
-
QR:0表示查询报文;1表示回应报文。
-
TC:表示“可截断”。使用UDP时,当应答报文超过512Byte时,只返回前512Byte。
通常情况下,DNS查询都是使用UDP,返回响应中TC位设置为1时