39、TCP 网络数据处理机制深度剖析

TCP 网络数据处理机制深度剖析

1. 重排序长度相关处理

在 TCP 数据传输过程中,重排序长度的计算和处理是一个关键环节。当处理接收到的 SACK 块时,我们需要进行一系列的检查和操作。
- 未重传段的重排序更新 :首先检查段是否从未被重传(第 897 行)。若满足此条件,且该段的 FACK 计数小于 ACK 段到达之前向前确认的段数时,才更新重排序。第 880 行的条件是为了检查当前段的顺序(fack_count)是否低于之前最高顺序的 SACK 段(tp → facked_out)。
- 新 SACK 段的标记与计数调整 :如果新的 SACK 段被标记为丢失,我们会清除该段的丢失标志,并调整丢失段的计数器(第 883 - 885 行)。同时,将新的 SACK 段标记为 SACK 状态(第 889 行),并将 SACK 段的计数器加 1(第 891 行)。若新段 FACK 的段数比之前记录的多,则更新 FACK 段(第 893 - 894 行)。
- D - SACK 块的处理 :检查当前考虑的 SACK 块是否为 D - SACK。若该块覆盖的段已被重传(TCPCB_SACKED_RETRANS 标志已设置),则清除重传标记,并将重传计数器减 1。
- 重排序长度的计算 :重排序长度是指具有最高序列号(tp → facked_out)和最低序列号(reord)的 SACK/ACK 段之间的段数。因此,我们标记 fack_count 和之前记录的重排序中的最小值。最后,调用 tcp_update_reordering() 更

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值