DNS是一种应用层协议。所有应用层协议都使用两种传输层协议之一UDP和TCP。TCP是可靠的,UDP不可靠。DNS应该是可靠的,但它使用UDP,为什么?
关于传输层上的TCP和UDP,有以下有趣的事实证明了上述情况。
1)UDP速度更快。TCP很慢,因为它需要3次握手。DNS服务器上的负载也是一个重要因素。DNS服务器(因为它们使用UDP)没有保持连接。
2)DNS请求通常非常小,非常适合UDP段。
3)UDP不可靠,但可以在应用层添加可靠性。应用程序可以使用UDP,并且可以通过在应用程序层使用超时和重新发送来实现可靠性。