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

Posted

技术标签:

【中文标题】为啥 DNS 使用 UDP 作为传输层协议?【英文标题】:Why DNS uses UDP as the transport layer protocol?为什么 DNS 使用 UDP 作为传输层协议? 【发布时间】:2017-02-25 01:53:35 【问题描述】:

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

【问题讨论】:

大多数查询适合一条消息。如果没有得到答复,您可以重新发送消息。开销低于 TCP。 【参考方案1】: UDP 快得多。 TCP 很慢,因为它需要 3 次握手。 DNS 服务器上的负载也是一个重要因素。 DNS 服务器(因为它们使用 UDP)不必保持连接。 DNS 请求通常非常小,非常适合 UDP 段。 UDP 不可靠,但可以在应用层增加可靠性。应用程序可以使用 UDP,并且可以通过在应用程序层使用超时和重发来实现可靠。

你可以在这里阅读: https://www.geeksforgeeks.org/why-does-dns-use-udp-and-not-tcp/

【讨论】:

您的答案的 3 条注释:1) DNS 仅使用 UDP - 有时它也使用 TCP。 2)TCP的慢主要在于not在连接建立上(反过来not只是3次握手)。 3) 可靠性可以添加到更高层,但 不是 DNS 的情况。 dns 如何使用 tcp。请解释@MarianD ???随着响应时间的增加 @AmanGupta,请看我回答的最后两段。 此答案已被抄袭,包括错别字,此处:geeksforgeeks.org/why-does-dns-use-udp-and-not-tcp 是的,我是从另一个来源得到的,我不记得了。我本来可以给它命名的。【参考方案2】:

UDP 很便宜。 UDP 本身并不可靠,但更高级别的协议(如 DNS)可以保持可靠性,例如在没有响应的情况下重复UDP数据报。

DNS 的情况并非如此。 DNS 本身有时也使用除了UDP(作为其主要协议)之外的可靠传输控制协议 (TCP)。

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

此外,还有一些解析器实现将TCP 用于所有个查询。

【讨论】:

以上是关于为啥 DNS 使用 UDP 作为传输层协议?的主要内容,如果未能解决你的问题,请参考以下文章

[网络] SOCKET, TCP/UDP, HTTP, FTP

tcp与udp比较

传输层

传输层协议(TCP, UDP)

四层协议网络传输

DNS何时使用TCP协议,何时使用UDP协议