TCP重组算法

本文分两部分,第一部分适用于监控场景,第二部分适用于协议栈内部。


第一部分:


说明:
1.基于FLAGS标志位的TCP重组算法都是不可靠的、不准确的
2.TCP重组算法紧密相关的字段是序列号SN(sequence number)、确认号AN(Acknowledgement number)、承载数据长PL(payload segment data length)
3.在某些时候,发送方连续发多个包,可能使用同一个SN与AN


下面的过程,以发送方作为分片方为例
开始
1.开始是突然的,没有和接收者打招呼
2.分片的第一个包与一般包无异常
3.SN、AN初始化为一随机量,计算时作为起始点0


中间
1.AN不变,还是开始那个
2.本次SN = 上次SN + 上次的PL


结束
1.AN不变,还是开始那个
2.本次SN = 上次SN + 上次的PL


问题:
1.什么都不变,怎么知道分片过程结束了呢?
答:在结束之后,由发送方发出的下一个包,AN变化了,这就说明发送方此次之前的包为分片包。


2.作为接收方,总要等到结束后的下一个包,才知道分片结束了,是不是慢了些些呢?
答:如果TCP分片承载的是HTTP,则接收方,可以把HTTP里面的Content-Length预读出来;Content-Length与http协议头长度之和就是前面那些分片包的PL和(忽略了重传包,下面探讨)。


3.重传包怎么办?
答:重传包的SN与被重传包的SN相同,有N条一样的话,就只要一条就OK了。


第二部分:


1.协议栈内部有没快捷的算法加速重组过程?


a).PUSH(与有无分组无关)作为一次会话结束标志,向协议栈上层提交还要等会话的全部包到达。此步可算出会话总长度。


b).‍ reassembly timer(超时晚到的分组片)。


c).结合第一部分的算法。


PS:在移动GPRS环境中,MMS2.0底层的TCP很经常发生分组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值