38、TCP核心处理:ACK处理与拥塞控制详解

TCP核心处理:ACK处理与拥塞控制详解

1. 网络资源消耗与飞行中数据包计算

在网络中,会有额外的段被发送,这会消耗网络资源。因此,在计算飞行中的数据包时,需要考虑 tp → retrans_out

2. tcp_ack_is_dubious() 函数

此函数用于确认当前是否处于拥塞状态或已检测到拥塞,有三个检查条件:
1. 当前ACK设置了 FLAG_NOT_DUP 标志,用于指示是否为重复ACK。
2. 当前ACK设置了 FLAG_CA_ALERT 标志,表明检测到拥塞,需要警惕。
3. 当前TCP状态不能为 TCP_CA_Open ,即已处于某种拥塞状态。

FLAG_NOT_DUP 由三个标志组合定义:
- FLAG_DATA :若收到数据则设置该标志。即使未确认新数据,设置此标志时也不应视为重复ACK。例如,数据仅单向流动,接收方总是收到相同的ACK序列号,不能将所有ACK都视为重复。
- FLAG_WIN_UPDATE :若对端接收窗口改变或确认了新数据,则设置该标志。讨论的重复ACK是在对端收到乱序段后生成的,乱序段不会使窗口左边缘右移,不会改变接收窗口。若段未确认新数据、不携带新数据但改变了发送窗口,则可视为对端的窗口更新,而非重复ACK。
- FLAG_ACKED :若确认了新数据或收到SYN段,则设置该标志,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值