DNS是应用程序层协议。所有应用程序层协议都使用UDP和TCP这两种传输层协议之一。 TCP是可靠的, 而UDP是不可靠的。 DNS应该是可靠的, 但它使用UDP, 为什么呢?
下列有关传输层上的TCP和UDP的有趣事实证明了上述观点。
1)
UDP快得多。 TCP很慢, 因为它需要3次握手。 DNS服务器上的负载也是一个重要因素。 DNS服务器(因为它们使用UDP)无需保持连接。
2)
DNS请求通常很小, 并且非常适合UDP段。
2)
UDP不可靠, 但是可以在应用程序层上增加可靠性。应用程序可以使用UDP, 并且可以通过使用超时来使其可靠并在应用程序层重新发送。
实际上, DNS主要使用端口号53上的用户数据报协议(UDP)来处理请求。 DNS查询由来自客户端的单个UDP请求和来自服务器的单个UDP响应组成。当答案的长度超过512字节且客户端和服务器均支持EDNS时, 将使用较大的UDP数据包。否则, 将使用传输控制协议(TCP)再次发送查询。 TCP还用于诸如区域传输之类的任务。一些解析器实现将TCP用于所有查询。
https://zh.wikipedia.org/wiki/Domain_Name_System#DNS_protocol_transport
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
评论前必须登录!
注册