DNS占用53号端口,同时使用TCP和UDP协议:
- DNS在区域传输的时候使用TCP协议
- 域名解析时使用UDP协议
区域传输
DNS的规范规定了2种类型的DNS服务器:
- 主DNS服务器
- 辅助DNS服务器
在一个区中,主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)
辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多。
为什么使用TCP:
- TCP是一种可靠的连接,保证了数据的准确性
- UDP最大长度为512字节,无法满足区域传送的数据量
域名解析
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包