我正在阅读“TCP/IP插图”(第1卷)一书,书中说IP碎片是由网络层完成的。
到目前为止,我就是这样理解这个概念的:网络层(L3)创建"IP数据报“(IP报头+数据),并将该字节数组发送到数据链路层(L2)。如果L2不知道IP数据报结构,并且接收到的字节数组大于最大大小,那么它将不知道如何拆分该字节数组并在每个块中附加IP头,这是其L3's的责任。因此,L2和L3必须以某种方式合作。
令我困惑的是,几页之后,当讨论IP头、IP数据报的总长度和最大大小时,它说:“尽管发送65535字节的IP数据报是可能的,但大多数链路层都会将其分割开来”。
我的“概念”错了吗?L2是否了解IP数据报的结构,从而可以对IP数据报进行分割?如果是这样的话,为什么L2不总是这样做,因为它知道它的MTU?
发布于 2018-01-02 17:30:41
IP碎片是一个东西,在IP层切分数据报。重组工作,如果其中一个碎片丢失,可能会重新传输,这意味着要避免碎片。
底层2是分开的,并将每个包(片段)包装在一个帧中。事实上,这就是它作为一般来说,L2(当然不是以太网)不做“碎片)。所能做的所有事情。
确定最优大小的协调性要小得多,更像是猜测,称为路径MTU发现。网络堆栈不太可能尝试最大65535字节。也许ICMP的消息会回来说这个尺寸太大了。虽然路径从一开始就可能是一个以太网接口,所以尝试1400以上的任何操作都可能行不通。
发布于 2018-01-01 22:10:57
这一措辞具有误导性。IP层知道链路层的最大有效负载大小,所以它会进行分段。
发布于 2018-01-01 14:03:58
L2不知道IP,但它在帧大小上有自己的限制。任何大于L2帧大小的IP数据报都会被吐出2到更多L2帧。
https://serverfault.com/questions/890256
复制相似问题