程序员人生 网站导航

DNS分别在什么情况下使用UDP和TCP

栏目:互联网时间:2014-11-11 09:03:37
         DNS同时占用UDP和TCP端口53是公认的,这类单个利用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在甚么情况下使用这两种协议。

     如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几近所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出1个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文由于超长而有删节。这是由于UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就可以用更多的segment来传送任意长度的数据。

     另外1种情况是,当1个域的辅助域名http://www.wfuyu.com/server/启动时,将从该域的主域名http://www.wfuyu.com/server/primary DNS server履行区域传送。除此以外,辅域名http://www.wfuyu.com/server/也会定时(1般时3小时)向PDS进行查询以便了解SOA的数据是不是有变动。如有变动,也会履行1次区域传送。区域传送将使用TCP而不是UDP,由于传送的数据量比1个request或response多很多。

     DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS常常需要逾越广域网或http://www.wfuyu.com/Internet/,分组丢失率和来回时间的不肯定性要更大些,这对DNS客户端来讲是个考验,好的重传和超时检测就显得更重要了。DNS分别在什么情况下使用UDP和TCP - E界风云 - 我的博客

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐