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 查询包