TCP到了IP层的时候,到底IP对不对他分片?

时间:2022-12-24 17:59:08
tcp是mss值在進行分片,對於tcp來說,他不願看到tcp包被ip層分片的情況出現,這樣會影響效率,因為比如一個tcp包被ip層分成三片,接收方如果收到兩片掉了一片,那麼收到的兩片也得要丟掉.這是ip層的做法,但是tcp顯然是受不了這樣的情況的,所以tcp本身就根據mss進行了分片,這樣就算丟,重傳的消費也不大.而ip层通过MTU值对数据包进行分片,mss值+TCP报头+IP报头=MTU

我的问题是:TCP段本身就会对数据分成很多块在交给IP,能保证数据包不大于MTU值,那IP层为什么还需要分片呢?

4 个解决方案

#1


ip分片也不完全是因为mtu,也可能是其他原因

#2


IP层上的不仅有TCP啊,超过MTU的UDP包就需要IP层的分片。并且与很多协议的设计一样,它提供了这个功能,但并不推荐你去依赖这个功能。所以在你写基于UDP的网络应用时,也得注意尽量不要使UDP包超过MTU。

#3


同意楼上说的。

每一层都会有自己的工作要做,IP层不仅仅是为了TCP的,要不然专门来个IP层就没有意义了。

#4


在我印象中不会,是否分片好像就是和包大小相关的。楼主还是差差书,一般的计算机网络书上都有。记不清了。

#1


ip分片也不完全是因为mtu,也可能是其他原因

#2


IP层上的不仅有TCP啊,超过MTU的UDP包就需要IP层的分片。并且与很多协议的设计一样,它提供了这个功能,但并不推荐你去依赖这个功能。所以在你写基于UDP的网络应用时,也得注意尽量不要使UDP包超过MTU。

#3


同意楼上说的。

每一层都会有自己的工作要做,IP层不仅仅是为了TCP的,要不然专门来个IP层就没有意义了。

#4


在我印象中不会,是否分片好像就是和包大小相关的。楼主还是差差书,一般的计算机网络书上都有。记不清了。