DNS协议使用UDP还是TCP?

DNS帧格式

DNS协议运行在UDP/TCP协议之上,使用的端口号是53(绝大部分情况DNS解析是使用UDP 53端口)

有这么两种情况DNS会使用TCP

1.解析器发出一个request后,返回的response中的TC删节标志比特位被置1时,说明报文因为超长而有删节,因为UDP最大长度是512字节。这时解析器发现后,将使用TCP重发request,TCP允许报文超过512字节。
以太网帧在局域网中的MTU是1500byte,但是在非局域网环境,如:internet下的时候,MTU是各个路由器进行一个配置的。所以,通常路由器默认的MTU为576字节。所以,为了适应网络环境,DNS协议在返回的数据报大于512的时候,就转化为了TCP协议。

2.DNS在进行区域传输的时候使用TCP协议,其他时候则使用UDP协议。

  • 区域传输时: 一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息,传输协议是tcp。

  • 域名解析时: 一般返回的内容都不超过512字节,首选的通讯协议是udp。使用udp传输,不用经过TCP三次握手,这样DNS服务器负载更低,响应更快

3.当域名解析的反馈报文的长度超过512字节时,将不能使用udp协议进行解析,此时必须使用tcp。通常传统的UDP报文一般不会大于512字节。
区域传输使用TCP协议的原因大概是:
1) 区域传输的数据量相比单次DNS查询的数据量要大得多
2) 区域传输对数据的可靠性和准确性相比普通的DNS查询要要高得多,因此使用TCP协议。

原文链接:https://blog.csdn.net/ljc1999/article/details/112392801

你可能感兴趣的:(计算机网络,网络,tcp/ip,网络协议)