目的
提高 TCP 协议效率的机制
和 滑动窗口 密切相关
示例
背景:我是一个超市供货员
- 场景一
我:今天 早上 给超市老板送了 100 箱冰红茶。
老板:仓库还能放下 90 箱 冰红茶,你明天 早上 给我送 90 箱来。
…
第二天
我:早上 给老板送了 90 箱冰红茶。
老板:仓库能放下 120 箱冰红茶,明天 早上 送 120 箱过来。
…
不存在 延迟应答 的情况下,我每天送冰红茶去的时候就知道 第二天要送多少箱冰红茶去。
- 场景二
我:早上给超市老板送了 100 箱冰红茶。
老板:晚上再和发微信和你说明天送多少箱冰红茶。
…
到了晚上
老板:小陈啊,明天 早上 给我送 150 箱冰红茶来把。
我:第二天早上给老板送 150 箱冰红茶。
这就是存在 延迟应答 的情况,我早上给老板送 冰红茶,老板晚上回复我,白天这段时间卖了很多冰红茶,第二天我就能多送点冰红茶去了,老板也能多赚点。
当主机 A 收到主机 B 发送的数据后,并不会立即返回 ACK ,而是等待一会儿后(500ms),再返回 ACK,ACK 携带的窗口大小就可能会更大。这 500ms 主机 B 也就是接收方的应用程序从缓存区取走了一些数据。(500 ms 是不确定的,这个只是个时间概念,不同的环境下时间可能不同)
在 TCP 四次挥手中,被动关闭的一方先发送 ACK 再发送 FIN,可能存在延迟应答 + 捎带应答 ACK 的情况下 ACK 与 FIN 一起发送。但本质上还是 4 次挥手。
并不是所有包都可以 延迟应答
数量限制:每隔 N 个包应答一次;
时间限制:超过最大延迟时间就应答一次。
浙公网安备 33010602011771号