跳转至

DNS用的是TCP协议还是UDP协议

DNS TCP/UDP 简介

DNS 占用 53 号端口,同时使用 TCP 和 UDP 协议;那么 DNS 在什么情况下使用这两种协议?

  • DNS 在区域传输的时候使用 TCP 协议
  • 其他时候使用 UDP 协议

区传送

DNS 的规范规定了 2 种类型的 DNS 服务器:

  • 主 DNS 服务器
  • 辅助 DNS 服务器

在一个区中主 DNS 服务器从自己本机的数据文件中读取该区的 DNS 数据信息,而辅助 DNS 服务器则从区的主 DNS 服务器中读取该区的 DNS 数据信息。当一个辅助 DNS 服务器启动时,它需要与主 DNS 服务器通信,并加载数据信息,这就叫做区传送(zone transfer)

区域传送时使用 TCP,主要有以下两点考虑:

  • (1)辅域名服务器会定时(一般时 3 小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用 TCP 而不是 UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多
  • (2)TCP 是一种可靠的连接,保证了数据的准确性

DNS UDP

域名解析时使用 UDP 协议:

客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。不用经过 TCP 三次握手,这样 DNS 服务器负载更低,响应更快

虽然从理论上说,客户端也可以指定向 DNS 服务器查询的时候使用 TCP,但事实上,很多 DNS 服务器进行配置的时候,仅支持 UDP 查询包