DNS 查询何时使用 TCP 而不是 UDP?

pra*_*tri 47 networking domain-name-system

可能的重复:
名称服务器是否必须通过 TCP 回答查询?

我知道 DNS 的大部分查询都使用 UDP,但在什么情况下它会使用 TCP?

Lad*_*ada 45

当请求或响应的大小大于单个数据包时,DNS 使用 TCP,例如具有许多记录或许多 IPv6 响应或大多数 DNSSEC 响应的响应。

最大大小最初是 512 字节,但 DNS 协议有一个扩展,允许客户端表明他们可以处理最多 4096 字节的 UDP 响应。

DNSSEC 响应通常大于最大 UDP 大小。

传输请求通常大于最大 UDP 大小,因此也将通过 TCP 完成。

  • DNSSEC 不做任何证书协商!为 DNSSEC 添加的资源记录与其他资源记录没有区别。DNSSEC 在 UDP 上工作得很好,只有在响应太大时才会求助于 TCP(比较 `dig +dnssec @a.gtld-servers.net com.any` 和 `dig +dnssec @a.gtld-servers.net com .dnskey`) (8认同)

Jay*_*Jay 10

当响应数据大小超过 512 字节或区域传输等任务时,将使用传输控制协议 (TCP)。

http://en.wikipedia.org/wiki/Domain_Name_System#DNS_protocol_transport