Answers:
512字节有效负载保证DNS数据包在传输过程中发生碎片时可以重新组合。同样,一般而言,较小的数据包被随机丢弃的可能性较小。
在IPv4的标准指定每个主机必须能够以576个字节以内重组的工作。如果使用IPv4标头(20字节,尽管可以带选项最高为60字节)和8字节UDP标头,则具有512字节有效负载的DNS数据包将小于576字节。
正如@RyanRies所说:DNS可以将TCP用于更大的有效负载以及区域传输和DNSSEC。TCP起作用时会有更多的延迟,这是因为与UDP不同,在任何数据开始流动之前,客户端和服务器之间都会进行握手。
现代DNS实际上不再将UDP的有效载荷限制为512字节。
使用EDNS0时,可以指定更大的有效负载大小,这对于支持DNSSEC的客户端通常也是这种情况。
通过UDP支持更大的有效负载是一把双刃剑,但这在一定程度上是使用名称服务器进行放大攻击的原因,因为如果攻击者使用能够获得较大响应的查询,则可以实现更好的放大。
有关EDNS0的详细信息,请参见rfc2671
默认情况下,DNS操作(例如查询和区域维护操作)使用端口53。出于性能原因,查询使用UDP协议,且块大小限制为512字节。可以选择在逐个事务的基础上为查询操作协商TCP,但是由于TCP产生的性能开销,从本质上讲这是一种理论上的能力。从历史上看,通常不惜一切代价避免超过512字节的响应大小限制,实际上13个IPv4根服务器的限制是单个512字节UDP事务中可以返回的最大值。
罗恩·阿奇森(Ron Aitchison)-Pro DNS和BIND 10-2011
这是一个QOS。
由于UDP是无状态的,因此无法对数据包进行错误处理。
因此,通过将数据包保持为最大大小,它们将到达目的地有更大的变化,从而减少了没有错误处理的影响。