IP分片与TCP分段

阅读目标

  1. 理解TCP/IP对报文的拆分逻辑

对IP协议还比较陌生的同学异步到IP协议报文详解

在TCP协议和IP协议中都有字段来对报文进行拆包和组装,为什么在网络层和传输层都有做拆分?在做分析之前,首先科普两个概念.

  1. 最大传输单元MTU(Maximum Transmission Unit): 为IP网络层的最大载荷上限
  2. 最大报文段长度MSS(Maximum Segment Size): 为TCP传输层的最大载荷上限
  3. 关系: MTU = MSS + TCP首部长度 + IP首部长度(不包含以太网头部)

IP分片(网络层)

1. 原因

当IP的报文长度大于MTU时会对该IP报文进行分片

2. 缺陷

因为IP协议没有超时重传机制,所以当IP的某个分片在传输过程中丢失后,会让整个IP报文重新发送。举个栗子:A为长度为2000字节的报文,但由于MTU最大为1500,所以被分成两片A1(1500)和A2(500),由于网络波动A2在传输过程中丢失,A1传输成功,那么根据IP协议没有超时重传的设定,会让A1和A2都重新发送,这样明显是浪费流量。

3. 改进方式

由于IP协议不可重传机制会造成流量的浪费,但我们可以考虑在可以重传的地方将包进行拆分,即TCP分段

TCP分段(传输层)

优势

为了避免IP协议不可重传机制造成的流量浪费,我们可以在TCP协议下先将大报文给分段。另外因为MTU = MSS + TCP首部长度 + IP首部长度,所以TCP分段后的每段肯定都小于MTU,这样就可以避免在网络层对报文分片,从而解决了IP分片带来的问题。

备注

  1. 因为报文经过路由MTU的值会有差异,所以报文在传输传输过中可能碰到某个路由的MTU小于发送端和接收端的两者的设定,因此在报文在路由转发过程中也可能会进行分片。此问题可以通过路径MTU发现解决,在此就不多说了
  2. 传输层的UDP协议是不可靠传输,所以UDP协议不可分段,只能在IP协议下分片了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值