【网络】TCP协议通信的重要策略——滑动窗口,快重传,流量控制,拥塞控制,延时应答

目录

MSS值

滑动窗口

滑动窗口与重发机制

快重传机制

滑动窗口与流量控制

滑动窗口与拥塞控制

延时应答


个人主页:东洛的克莱斯韦克-CSDN博客

相关文章

【网络】传输层TCP协议的报头和传输机制-CSDN博客

【网络】详解TCP协议通信时客户/服务端的状态-CSDN博客

【网络】IP分片与路径MTU发现-CSDN博客

MSS值

由于底层(数据链路层)在发送数据时有最大长度限制,所以TCP在发送数据时,为了尽量避免IP分片,TCP一段为单位发送数据。

MSS值表示最大消息长度,正好是不用进行IP分片的最大长度。而MSS值会在三次握手时进行协商。

滑动窗口

如果每发一个段,就要等待一个ACK应答,会让传输数据的效率变得低下

窗口的概念是发送完一个段后无需应答,继续发送。在一个时间节点内发送一批数据,这一批已经发送但未收到应答的数据就用窗口维护起来。

在TCP维护的缓冲区中分为四块,发送以收到应答的数据,发送未收到应答的数据,未发送的数据,剩余空间,而整个缓冲区在逻辑上也是一个环形缓冲区。窗口就是那块发送未收到应答的数据的缓冲区。

上图中,窗口大小也是根据应答的序号动态调整的。

滑动窗口与重发机制

窗口的存在允许部分应答丢失。即使部分应答丢失也不会触发重发机制。

快重传机制

那如果是报文丢失呢?

如上图所示。当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,这个确认应答好像在提醒发送端“我想接收的是从1001开始的数据”。因此,在窗口比较大,又出现报文段丢失的情况下,同一个序号的确认应答将会被重复不断地返回。而发送端主机如果连续3次收到同一个确认应答·,就会将其所对应的数据进行重发。这种机制比之前提到的超时管理更加高效,因此也被称作高速重发控制。

滑动窗口与流量控制

所谓流量控制就是接收端在应答时在报头中填充窗口字段的大小,大小就填自己剩余缓冲区的空间。滑动窗口的大小就和接收端缓冲区起来,这样发送端就知道自己下一次发送多大的数据。

如上图所示,当接收端收到从3001号开始的数据段后其缓冲区即满,不得不暂时停止接收数据。之后,在收到发送窗口更新通知后通信才得以继续进行。如果这个窗口的更新通知在传送途中丢失,可能会导致无法继续通信。为避免此类问题的发生,发送端主机会时不时的发送一个叫做窗口探测的数据段,此数据段仅含一个字节以获取最新的窗口大小信息。

滑动窗口与拥塞控制

上述情况都只是考虑双方主机的问题,但网络通信中不可忽视的一个因素就是网络环境。如果发送出去的数据总是收不到应答,可能是网络本身出问题了。

在一个共享的网络环境中,可能某个时间段发送的数据的高峰期,让网络变得特别拥塞,这是就要对发送的数据量进行控制,这种控制就叫做拥塞控制。

此处引入一个概念称为拥塞窗口,发送开始的时候, 定义拥塞窗口大小为 1;  每次收到一个 ACK 应答, 拥塞窗口加 1;  每次发送数据包的时候, 将拥塞窗口和接收端主机反馈的窗口大小做比较, 取较 小的值作为实际发送的窗口

像上面这样的拥塞窗口增长速度, 是指数级别的. "慢启动" 只是指初使时慢, 但是增长速 度非常快.  为了不增长的那么快, 因此不能使拥塞窗口单纯的加倍. 此处引入一个叫做慢启动的阈值 当拥塞窗口超过这个阈值的时候, 不再按照指数方式增长, 而是按照线性方式增 长

当 TCP 开始启动的时候, 慢启动阈值等于窗口最大值; 在每次超时重发的时候, 慢启动阈值会变成原来的一半, 同时拥塞窗口置回 1; 少量的丢包, 我们仅仅是触发超时重传; 大量的丢包, 我们就认为网络拥塞; 当 TCP 通信开始后, 网络吞吐量会逐渐上升; 随着网络发生拥堵, 吞吐量会立刻下降; 拥塞控制, 归根结底是 TCP 协议想尽可能快的把数据传输给对方, 但是又要避免给网络 造成太大压力的折中方案

理解拥塞控制要站在全网的角度。由于使用TCP协议的主机多,这种拥塞控制的机制实际上就是一种共识。

网络越拥塞检测到网络拥塞的主机就越多,那么参与到拥塞控制的主机就越多,这样网络才可能或者说有较大概率让网络畅通起来。(不考虑网络的设计本身就有问题)

延时应答

延时应答(Delayed Acknowledgment)是指TCP接收方在接收到数据包后,并不立即发送确认(ACK)消息,而是等待一段时间,以期望在该时间段内收到更多的数据包。如果在这段时间内确实收到了更多的数据包,接收方会将多个ACK消息合并为一个进行发送,从而减少网络中的确认消息数量,提高网络利用率。

 假设接收端缓冲区为 1M. 一次收到了 500K 的数据; 如果立刻应答, 返回的窗口 就是 500K;  但实际上可能处理端处理的速度很快, 10ms 之内就把 500K 数据从缓冲区消费 掉了; 在这种情况下, 接收端处理还远没有达到自己的极限, 即使窗口再放大一些, 也 能处理过来; •如果接收端稍微等一会再应答, 比如等待 200ms 再应答, 那么这个时候返回的 窗口大小就是 1M;

得, 窗口越大, 网络吞吐量就越大, 传输效率就越高. 我们的目标是在保证网络 不拥塞的情况下尽量提高传输效率。

具体的数量和超时时间, 依操作系统不同也有差异; 一般 N 取 2, 超时时间取 200

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值