DNS 与EDNS0(DNS 的扩展名机制)

DNS报文主要使用53/UDP,何时会用到53/TCP?服务器


    根据RFC1035,对于DNS服务器,递归解析时用53/UDP,区传输因须要可靠传输,必须使用53/TCP。DNS服务器的标准实现必须同时支持53/TCP和53/UDP。RFC 1035中还指出,53/UDP上的UDP数据区(不包括UDP首部)不得超过512字节,发送时若是超过512字节,将被截断成512字节,同时DNS协议Flags字段Truncated位置位。53/TCP上的数据区最前面是big-endian序的2字节长度域,不包括自身这2字节,指明了后续数据长度。ide

当DNS响应数据大于512字节的时候,数据只返回512字节,剩余的数据将被丢弃.这个时候名字解析器(DNS客户端或递归解析中的DNS服务器)一般使用TCP重发原来的查询请求,它将容许返回的响应超过512个字节.因此什么时候使用TCP是由名字解析器决定的,也就是说,名字解析器用TCP发送请求,名字服务器才会用TCP发送响应,正常状况下决不会出现请求抱文是UDP而响应报文是TCP的状况.spa

即"当DNS服务器产生的响应数据大于512字节(指UDP数据区)时会自动改用53/TCP"这种说法是错误的.递归

 

使用 DNS 的扩展名机制 (EDNS0)资源

DNS 的扩展机制容许 DNS 请求者公布其 UDP 数据包的大小,而且更便于传输大于 512 字节(对于 UDP 数据包大小的原始 DNS 限制,RFC 1035)的数据包。DNS 服务器经过 UDP 传输层接收请求时,它对来自 OPT 资源记录 (RR) 的请求者的 UDP 数据包大小进行标识,测量其响应,以包含请求者指定的最大 UDP 数据包大小中容许的多个资源记录。
 it

相关文章
相关标签/搜索