【23秋招c++后端面试技术突围】TCP/IP 之 滑动窗口、Nagle算法和延迟确认

本文详细介绍了TCP/IP协议中的滑动窗口机制,用于解决网络拥塞问题,以及Nagle算法和延迟确认机制,旨在优化网络通信效率。Nagle算法减少小包发送,延迟确认则合并ACK,降低网络流量。理解这些概念对于理解和优化网络性能至关重要。
摘要由CSDN通过智能技术生成

滑动窗口
滑动窗口(Sliding window)是一种流量控制技术。
早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。
由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。
其实滑动窗口就是互相的协商, 发送的数据不能超过对方的处理能力.
 

image.png

 #1 表示已经发送并确认的数据
 #2 表示已经发送但是并未 Ack 的数据
 #3 表示即将要发送还未发送的数据
 #4 表示没有发送的数据

image.png




黑色的框就是我们说的滑动窗口, 它的大小为 20 字节, 当 #2 Ack回来的时候, 会重新返回对方的窗口大小, 然后发送方进行动态调节。
 

image.png



上图展示了发送窗口和接收窗口两端的实际执行情况, 有意思的是最后出现了 窗口占满(window=0) 的情况, 通常这种情况会发生 RST 标志位进行重置, 这个不再此次范围讨论里面。
从图中我们可以看到 Server 端每次根据自身消费数据缓冲区情况,重新计算 RCV.WND 值大小, ACK 响应给 Client 端都会携带 window 字段, Client 端根据 Server端的 window 大小, 重新调整了 发送窗口 大小。



Nagle算法


John Nagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年首次用这种方法来尝试解决福特汽车公司的网络拥塞问题。
他解决的问题就是所谓的silly window syndrome,中文称“愚蠢窗口症候群”。
具体含义是,因为普遍终端应用程序每产生一次击键操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据载荷以及40 个字节长的包头,于是产生4000%的过载,很轻易地就能令网络发生拥塞。
Nagle化后来成了一种标准并且立即在因特网上得以实现。
它现在已经成为缺省配置了,但在我们看来,有些场合下把这一选项关掉也是合乎需要的。



如果频繁的进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值