为啥 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 作为传输层协议?的主要内容,如果未能解决你的问题,请参考以下文章