为什么dns 13个_DNS为什么查询根域名服务器只返回13个IP地址

c4a3f387f1447f744fddee6e44a621a4.gif 一次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服务为了了避免分⽚片,都会对应⽤用做⼀个包长度的限制; c2eaee77d812318397eeebaf3c63d13b.png 先来直观的看⼀一下TCP协议传输⻓长度的协商机制: 81882880c9815e72ca337f1b3a8d4a32.png 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两种,通常wireshark抓包看到的DNS请求通常都是UDP协议的,例如以下包: 118263b603fd6f9e350f77cd9056e026.png 看⼀一下DNS 响应包中的字段: 13d681788fbdaf3dae707dc585ddf9b8.png 其中,Truncated:字段代表响应是否被截断,当时Truncated:被置为1时,就意味着响应超过了了512字节,当前响应只返回了前512字节,这时DNS server会使⽤用TCP重发原来的请求,这样显然增加了了域 名解析时间。 当查询根域的NS记录时,为了了在⼀一个报⽂文中传完响应,512字节只够返回包含13个根域名服务器器的NS记录和A记录;所以虽然从⽹络覆盖角度考虑根域名服务器器的地址越多越好,实际上一次查询根域名服 务器器只返回到13个IP地址。 ☆ END ☆ 43e3485669f61278de912b72f8f45481.png 3bbc17cedc404fac09a0cbc29e98562b.png 943a125c55415a4b50e101d1bf4176f2.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值