我们知道, IP层会分片传输, 这是受到了数据链路层MTU的限制, 那么, 分片后, 多个分片在哪里进行重组呢?

        在实际传输中, 不同的分片可能经过不同的路径达到最终的目的地, 所以,中间设备很可能值看到某个分片而已, 根本不可能由中间设备(比如路由器)来承担重组的操作。 这是根本的原因。 另外, 如果让中间设备进行重组, 也会加重中间设置的负担。

        所以, IP层的多个分片, 在最终的目的地才会重组。

        

        多说一点, 如果某个分片被弄丢了, 那么在最终目的地是没办法正确重组的。 整个IP包就是一个垃圾IP包, IP层也不会有重传机制。 如果上层是TCP,  那么TCP会负责重传。可以看到, 分片会带来一些问题, 所以TCP尽量避免分片, 而采用提前分段的方式。

        另外, 多个分片的达到顺序是无法保证的, 在实际的实现中, 发送方经常会故意捣乱这些分片(会有一些好处), 在最终的接收端, 是有足够能力重组这些分片的, 所以不用担心。

 

 


本文转载:CSDN博客