Total Pageviews

Thursday, 9 February 2012

DNS相关协议和原理




理论上说,DNS是同时占用UDP和TCP端口53,但一个问题是DNS分别在什么情况下使用这两种协议,根据现有资料显示,现在几乎所有的情况都是在使用UDP,使用TCP的情况比较少见。其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区 域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS往往需要跨越广域网或互联网,分组丢失率和往返时间的不确定性要更大些,这对于DNS客户端来说是个考验,也因此说好的重传和超时检测就显得更重要了。

TCP和UDP的区别
TCP协议时一个面向连接的、可靠的、端到端的、基于字节流的传输层协议。UDP协议为应用程序提供了一种无连接、不可靠的数据报服务。UDP协议不保证数据报的按序到达,也不重传丢失的数据。与TCP协议相比,UDP协议不考虑流控制、拥塞控制和可靠传输,因而受到网络拥塞的影响较小,适合于传输实时数据。在实际应用中,TCP连接注重数据的安全性,如数据安全通信;UDP注重数据的实时性,如多媒体数据传输,即时数据有所丢失也无大碍。

No comments:

Post a Comment