TCP协议——拥塞控制,捎带应答,延迟应答

拥塞控制,捎带应答,延迟应答实际都与提高TCP的效率的机制

拥塞控制

上次我们谈到TCP通过滑动窗口来高效可靠的发送大量数据,但是当一开始就发送大量数据,当遇到网络比拥堵或者网络状态不佳的时候,就会引发一系列的问题。

为了解决这一问题,TCP引入慢启动机制,先发少量的数据,“探探路”,然后再决定数据的发送的速度。

  • 这里引入一个拥塞窗口的概念
  • 发送开始时,定义拥塞窗口大小为1
  • 每次收到的一个ACK,拥塞窗口就加一
  • 每次发送数据包的时候,将拥塞窗口和接收端主机反馈的窗口大小进行比较,取较小的值作为实际发送的窗口大小

在这里插入图片描述

上图中的拥塞窗口增长速度是指数级别的,刚开始的时候比较慢,增长的时候还是非常快的

  • 为了控制拥塞窗口的增长速度,引入了一个慢启动阈值
  • 当拥塞窗口超郭这个阈值,就不再按指数方式增长,而是按线性增长,这里按照线性增长原因是防止拥塞(虽然增长到了一定的值,必定会再次拥塞)
  • 当TCP开始启动的时候,慢启动阈值等于窗口最大值
  • 在每次超时重传的时候,慢启动阈值会变成原来的一半,同时拥塞窗口置回1

在这里插入图片描述

注意:
当少量丢包出现的时候,我们仅仅触发超时重传,当大量丢包的时候,我们认为是网络拥塞

当TCP通信开始之后,网络吞吐量会逐渐上升,随着网络发生拥堵,吞吐量也会下降
拥塞控制实际是在保证保证传输效率的情况下,避免造成网络太大压力的折中方案

延迟应答

如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小

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

窗口越大,网络吞吐量越大,传输效率越高,在保证网络不拥塞的情况下要尽量提高传输速率

可以通过以下两种方式实现延迟应答

  • 数量限制:每隔N个包就应答一次
  • 时间限制:超过最大延迟时间就应答一次

具体是数量和时间与操作系统有关,一般N取2,超时时间取200ms

捎带应答

在延迟应答的基础上,很多情况下,客户端和服务器在应用层也是一收一发的,意味着客户端给服务器发送一个“hello”,服务端也会给客户端回一个“hi”,这时候ACK就可以搭顺风车,跟着服务端的“hi”,一起回到客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值