TCP分段和IP分片

主要讲TCP/IP协议中传输层的分段和网络层的分片

 

1、TCP分段是指在经三次握手后,收发双方建立起连接通过后,双方已经协商好并确定彼此要采用的MSS(最大分段长度B),MSS一般都是按照接受方确定。然后把用户数据payload按照MSS大小进行分段,各个分段数据被逐一添加TCP报头后(20B),送给下一层网络层。

 

2、网络层接收到这些分段后,在添加端主要的IP报头前,按照主机所在的局域网链路层MTU(最大传输单元B),进行分片,即当TCP分段大小超过该局域网链路上的MTU的大小才会发生,并在分片后在每个IP分片前添加IP报头20字节。

注:为了避免频繁IP层分片,一般MTU和MSS是对应的。所以TCP在协商时确定的MSS就低于MTU,这些下层就不用分段了。

 

3、当这些IP分片经由网络不同的路径进行传输时,可能会跨越不同的链路,即不同的MTU,因此分片在路由器上不断被进行,注意,该项很消耗路由器的性能,因为数据报越小,产生CPU中断越频繁。

注1:分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

注2:IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号(分段标识Identifier)唯一记录了一个IP包的ID(ipid),具有同一个ID的IP分片将会重新组装;而13位片偏移(Fragmented Offset)则记录了某IP片相对整个包的位置;而这两个表中间的3位标志(Flags)则标志着该分片后面是否还有新的分片。这三个域就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织。 

注3:由于UDP数据报不会自己进行分段,因此当长度超过了MTU时,会在网络层进行IP分片。同样,ICMP(在网络层中)同样会出现IP分片情况。所以,UDP数据包由IP层来分段,TCP数据包自分段!

 

IP报头格式

http://blog.sina.com.cn/s/blog_769423400100vqvk.html

IP分片原理及分析

http://blog.chinaunix.net/uid-26993600-id-3359402.html

TCP/IP详解--TCP的分段和IP的分片

http://blog.csdn.net/yusiguyuan/article/details/39860303

 

 

猜你喜欢

转载自murray2081.iteye.com/blog/2287681