You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么DNS请求默认使用UDP协议而非TCP协议?

为什么DNS默认采用UDP协议而非TCP协议

DNS把UDP设为默认协议不是历史设计的偶然,是多方面实际需求共同决定的,核心原因如下:

  • 更低的请求延迟
    UDP是无连接协议,不需要经过TCP三次握手建立连接、四次挥手释放连接的流程,单次普通DNS查询只需要1次请求+1次响应的往返就能完成,延迟远低于TCP,完全匹配DNS作为基础网络服务对低延迟的核心要求。
  • 报文大小覆盖绝大多数场景
    DNS协议规范规定UDP传输的DNS报文默认最大为512字节,日常绝大多数A记录、AAAA记录、CNAME记录的查询响应都远小于这个阈值,完全可以满足传输需求。如果响应内容超过512字节(比如DNSSEC查询、包含多IP的轮询记录查询等),DNS服务器会在响应里设置截断标志,客户端收到后会自动切换为TCP协议重新发起查询,不会出现内容丢失的问题。
  • 服务器侧资源开销更低
    UDP不需要维护连接状态,单台DNS服务器可以承载的并发请求量是TCP模式的数倍甚至数十倍,对于根DNS、顶级域DNS这类需要处理全球每秒数百万级请求的节点来说,资源开销的差异是决定性的。
  • 历史设计适配
    DNS诞生于80年代,当时TCP协议的实现还未完全成熟,且早期网络传输的丢包率更高,UDP轻量、无状态的特性更适合短查询场景,所以最初就将UDP定为默认传输协议,这个设计也一直沿用至今。

当然TCP在DNS场景下也有不可替代的作用,比如DNS区域传输(AXFR/IXFR)、超大响应查询、DNS over TLS/HTTPS等场景都会使用TCP完成传输。

内容的提问来源于stack exchange,提问作者ahm5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:15:09