15.TCP协议-迟到的ACK-Linux

windows在回复确认时的情况,在接收到 TCP 段的情况下,等待 200ms 再回复 ack,除非在这 200ms 里接收方也有数据要发给对方,于是就在发送数据的时候将 ack 捎带过去;(win10下现在是40ms)

而在Linux下,所有的延时的 ack,延时时间都在 40 ms 左右(从收到数据到发送 ack 之间的时间);

官方的说法是,当协议栈接受到TCP数据时,并不一定会立刻发送ACK响应,而是倾向于等待一个超时或者满足特殊条件时再发送;对于Linux实现,这些特殊条件如下:

    1)收到的数据已经超过了 full frame size 
    2)或者处于快速回复模式 
    3)或者出现了乱序的包 

    4)或者接收窗口的数据足够多

如果接收方有数据回写,则ACK也会搭车一起发送;当以上条件都不满足时,接收方会延迟40ms再回应ACK;

有时候,我们不希望 ack 被延时发送,可以设置 TCP_NODELAY;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值