我试图了解networking中MTU的不匹配行为。
假设两台主机能够通过基于以太网的networking相互通话。 networking和主机Aconfiguration为巨型帧,但不包括LAN主机B上的交换机和主机B本身。 从我对TCP的理解来看,每个TCP会话开始时的三次握手都会将每个主机的MSS通告给另一个主机。 考虑到主机B将在减去IP和TCP报头之后通告一个1460字节的MSS,并且由于它们将使用两个通告的MSS中较低的那个,这两个主机之间的任何TCP对话是否会毫无问题地工作?
另一方面,由于UDP没有MSS,主机A发送的大型碎片UDP数据包是否会被主机B丢弃?
TCP执行pathMTU发现以避免可能导致丢包增加的分段。 使用UDP的应用程序有两个select。
他们可以允许他们的数据报被分割。 在这种情况下,它们不会被丢弃,但是如果任何碎片发生丢弃,整个数据报将不会被接收。 这可以放大丢包率。
他们也可以通过在数据报中设置“不分段”位来完成自己的pathMTU发现。 他们将不得不检测数据报丢失,并处理pathMTU改变的可能性。
典型的UDP应用程序只是保持其数据报总计低于1500字节,并允许它们碎片,如果有必要。 这将导致最常见的链路没有分段,也不需要进行pathMTU检测。