为什么在 https 和 ssh 协议中设置了“不分段”标志?

Aid*_*son 13 packet-analyzer packet-capture packet ip-fragmentation

我发现了很多信息表明情况确实如此,但是,我真的在寻找这背后的原因。为什么有必要?有必要吗?

Sha*_*den 13

DF 标志指示通常会因数据包对于链路的 MTU 过大而对其进行分段的路由器(并且可能由于该分段而无序传送)改为丢弃该数据包并返回 ICMP Fragmentation Needed 数据包,从而允许发送主机来考虑到目标主机的路径上的较低 MTU。此过程称为“路径 MTU 发现”。

通常最好让 PMTUD 单独存在并让它完成它的工作,而不是让您的 TCP 堆栈处理乱序片段。但是,在某些情况下(主要是当必要的 ICMP 被阻止时)PMTUD 不起作用,并且连接中断。

那时您需要取消设置 DF 标志 - 当 PMTUD 无法正常运行并导致连接问题时。

  • 另见[“如果我发现你阻止了 ICMP,我会追捕你,掏出你的内脏,并用你自己的内脏勒死你”](http://serverfault.com/questions/84963/why-not-block-icmp/84981 #84981) (5认同)
  • 加密流量是否有原因,即。ssh 和 https 流量不应分段? (2认同)
  • (即,它与加密无关,而与 TCP 有关。) (2认同)