TCP核心处理:快速路径与慢速路径解析
1. 快速路径处理
快速路径处理在 tcp_rcv_established() 函数中进行,进入快速路径处理需要满足特定条件:
- 预测标志中的所有位必须与接收到的TCP段头部的 TCP_HP_BITS 位匹配(代码行3241)。一旦进入慢速路径模式,预测标志( tp → pred_flags )会被置为零,此时TCP头部的 TCP_HP_BITS 将无法匹配。
- 接收到的段必须按顺序到达(代码行3242)。
当满足上述两个条件时,进入快速路径处理该段,具体步骤如下:
1. 时间戳选项检查 :在代码行3251检查TCP头部是否启用了时间戳选项。如果启用,访问TCP头部末尾,即时间戳选项的起始位置(代码行3252)。若时间戳选项代码不正确,则进入慢速路径处理(代码行3257);否则,将接收到的时间戳值存储在 tp→ rcv_tsval 中,回显的时间戳存储在 tp→ rcv_tsecr 中(代码行3261 - 3263)。若新接收到的时间戳小于之前记录的时间戳( tp → ts_recent ),则进入慢速路径处理,检查是否存在PAWS(保护避免重复序列)问题(代码行3267)。
2. TCP头部和段检查 :检查TCP头部是否损坏或TCP段是否没有数据。若TCP段长度等于头部长度(代码行3278),且没有待处理的ACK时,调用
超级会员免费看
订阅专栏 解锁全文
185

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



