为什么DNS使用UDP作为传输层协议?

26

Why DNS uses UDP as the transport layer protocol?


2
大多数查询都适合于一条消息。如果你没有得到答案,可以重新发送消息。比TCP的开销小。 - Ry-
2个回答

25
  • UDP速度更快。TCP的速度慢是因为它需要三次握手。DNS服务器的负载也是一个重要因素。DNS服务器(因为使用UDP)不需要保持连接。
  • DNS请求通常非常小,很适合放在UDP分段中。
  • UDP不可靠,但可在应用层添加可靠性。应用程序可以使用UDP,并通过在应用层设置超时和重发来实现可靠性。

答案摘自[1],根据CCBY-SA许可证进行再现。

  1. https://www.geeksforgeeks.org/why-does-dns-use-udp-and-not-tcp/

6
关于你的回答有三点需要注意:1)DNS并不仅仅使用UDP,有时也会使用TCP。2)TCP的缓慢主要不在于连接建立(同时连接建立也不止三次握手)。3)可靠性可以在更高层次上添加,但这并不适用于DNS。 - MarianD
DNS如何使用TCP?请解释@MarianD ??? 因为响应时间会增加。 - Aman Gupta
1
@AmanGupta,请看一下我的回答中的最后两段。 - MarianD
这个答案已经被抄袭了,包括错别字,在这里:https://www.geeksforgeeks.org/why-does-dns-use-udp-and-not-tcp/。 - Tom Burrows
是的,我从另一个来源得到了它,是否是我不记得了。我本可以给它命名。 - Matthias Hamann

11

UDP是廉价的。 UDP本身不可靠,但更高级别的协议(如DNS)可以通过在没有响应的情况下重复UDP数据报来保持可靠性。

但这并不适用于DNSDNS本身有时除了使用UDP(作为其主要协议)之外还使用可靠的传输控制协议(TCP)。

当响应数据大小超过512字节且需要可靠传递(例如区域传输)的任务时,使用后者。

此外,还有一些解析器实现会对所有查询使用TCP


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接