DNS递归查询会先查询根域名服务器(.),然后再查询com.、edu.等顶级域名。根域名服务器承载着全球的ipv4域名解析,根域名服务器越多越好。这是为什么呢?为什么查询根域名服务器只返回13个IP地址呢?我们先来看一下DNS的数据包结构,然后再分析DNS数据包传输的一些限制;
1. DNS数据包传输限制
以太网的最大传输单元(MTU)是1500,也就是说一次链路传输的最大长度是1500,结合下图,IP头是20字节,UDP头是8字节,DNS数据包的长度是不是就是1500减28呢?
DNS主要采用UDP协议,由于UDP协议是不可靠传输,没有TCP协议的超时和重传机制,因此UDP服务会对应用的数据包长度进行限制,以避免出现分片;
我们先来看一下TCP协议传输长度协商机制:
在TCP协议的三次握手过程中,SYN包中的MSS字段代表TCP协议的最大段长度,通常MSS=MTU-20(IP头长度)-20(TCP头长度),通信两端各自通告自己能够收到的最大MSS,TCP协议会选择双方MSS较小的一个作为本次连接的MSS,TCP协议设计的这种机制可以避免链路分片。
DNS限制是512字节,那为什么是512呢?根据相关资料,IP协议实现要求主机至少能发送和接收576字节的数据报,UDP应用程序限制比这个还要长,大多数应用程序都限制在512字节。
2. DNS UDP和TCP传输
DNS协议有两种:UDP和TCP,通常抓包看到的DNS请求一般都是UDP的,比如下面的数据包:
看一下DNS响应包中的字段:
:字段表示响应是否被截断,当:设置为1时,表示响应超出512字节,当前响应只返回前512字节,此时DNS会使用TCP重新发送原始的响应,这显然会增加域名解析时间。
在查询根域的 NS 记录时,为了在一条消息中传输响应,512 个字节仅够返回 13 个根域名服务器的 NS 记录和 A 记录;所以虽然从网络覆盖的角度考虑,根域的域名服务器地址越多越好。实际上,对根域名服务器的查询仅返回 13 个 IP 地址。
☆ 完 ☆
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。