当我尝试使用 Wireshark 捕获数据包时,我观察到 Don't fragment 位始终设置为 1. 所有 TCP 数据包和 2. DNS 查询响应。
我明白为什么情况 1 是这样,这里
现在,我的问题是 1. 为什么它总是设置为 DNS 查询响应?2. 如果这个数据包没有设置 DF 位并且它在去往客户端的途中被分片,它会在客户端造成任何问题吗?
当我尝试使用 Wireshark 捕获数据包时,我观察到 Don't fragment 位始终设置为 1. 所有 TCP 数据包和 2. DNS 查询响应。
我明白为什么情况 1 是这样,这里
现在,我的问题是 1. 为什么它总是设置为 DNS 查询响应?2. 如果这个数据包没有设置 DF 位并且它在去往客户端的途中被分片,它会在客户端造成任何问题吗?
所以坦率地说,我不知道这是一回事,也不知道这是为什么 - 但是一些谷歌福能够提供答案。以后请多做一些研究。
从 ServerFault 窃取部分响应: https ://serverfault.com/questions/587625/why-dns-through-udp-has-a-512-bytes-limit
每个 Internet 目的地都必须能够接收 576 个八位字节的数据报,无论是整块还是要重新组装的片段。
由于 DNS 通常是 UDP(除了区域传输或 DNSSEC 是 TCP),因此无法确保交付。RFC 中的上述声明保证了主机能够处理响应大小。这相应地对应于 576 字节的最小可能 MTU。