1.IP分片
产生IP分片的原因:IP层的数据包在经过网卡时,数据包大小超过了网卡的MTU,然后IP数据包的DF标志为0,即该数据包允许分片,此时数据包会被分片。

DF的标志在数据包的IP头的标志部分,标志部分包含三个部分,第一位无用,第二位DF,第三位MF,MF的值如果为1,则该数据包是分片后的非最后一个数据包,如果MF的值为0,则该包为分片之后的最后一个数据包。
其中的标识为相同数值的数据包,表示这些数据包为同一个数包分片出来的数据包。
片偏移为指定本数据报在原数据报中的偏移位,单位为8字节。
因此IP分片的数据包,通过标识和MF值以及对应的片偏移完成分片后的数据包的重组。
2.TCP分片
TCP在三次握手建立连接过程中,会在SYN报文中使用MSS(Maximum Segment Size)选项功能,协商交互双方能够接收的最大段长MSS值。而MSS的值会受到链路中的网卡的MTU的限制,一般会比网卡的MTU小40个字节,即去掉数据包的IP头和TCP头。
TCP分片后,在传输层,根据TCP报文中的seq和mss值将分片后的数据包排好顺序完成重组。
当数据包发生TCP分片后,数据包的大小必然小于MTU,因此TCP报文是不会产生IP分片的,而UDP报文没有MSS,因此产生IP分片的报文必然是UDP报文。
本文详细探讨了IP分片的产生原因、DF标志在IP头部的作用,以及如何通过标识和片偏移重组数据;同时介绍了TCP分片的MSS协商过程和如何根据seq和mss值进行报文重组,区分了UDP与TCP分片的区别。

1152

被折叠的 条评论
为什么被折叠?



