【网络原理】TCP提升效率机制(一):滑动窗口

目录

一. 前言

 二. 滑动窗口

 三. 丢包现象

1)ACK报文丢失 

2)数据丢失

四. 总结


一. 前言

TCP最核心的机制就是可靠传输 ,确认应答,超时重传,连接管理这些都保证了可靠传输,得到了可靠传输,但是传输效率降低了

单位时间内,传输的数据量变少了


  • 由于确定应答机制,发送方每发送一次数据,接收方就要返回一个ACK,收到ACK之后才会发送下一次数据,将大部分的时间都浪费在了等待ACK中

 所以我们希望在可靠传输的基础上,减少等待的时间,从而提高效率


 二. 滑动窗口

我们引入滑动窗口的机制,就可以保证在可靠传输的基础上,提高效率(减少等待时间) 


核心思想就是批量传输

 发送一个数据之后,不等了,再发一个,连续发送一定的数据之后,统一等ACK

把多次请求的等待时间,使用同一份时间来等,减少了总的等待时间

滑动窗口

  • 连续发送一定量的数据,这个一定量的数据由滑动窗口来规定,连续发送一个窗口的数据,就必须停下来等待ACK
  • 如上图,连续发送三份数据(一个窗口数据),那么就会收到对应的三个ACK报文
  • 如果一直等待,直到收到最后一个ACK再往后移动三份,这样显然效率不高,但是如果收到第一份数据的ACK,那么就往后滑动一位,同时发送数据,一直这样循环

由于每次移动一个位置,窗口移动的速度很快,类似于滑动的效果,所有叫滑动窗口 


 三. 丢包现象

 整个TCP最重要的就是可靠性,如果出现丢包现象,滑动窗口如何解决?


1)ACK报文丢失 

ACK报文的含义: 

  1. 这个序号之前的数据,我都收到了
  2. 下一次从这个序号开始

 如果出现ACK报文丢失情况,不用管,不会对可靠性造成影响 (不需要重传)

2)数据丢失

如果出现数据丢失情况,则必须要重传

  •  如果在传输过程中,出现数据丢失的情况,返回的ACK报文中的序号是下一次需要发送的起始位置,如果接收的不是想要的,会一直索要想要序号的数据,一直发送想要序号的ACK确认报文
  • 这里的连续索要是为了给没有收到的数据留有等待时间,这个数据没有到,可能是因为路上“堵”了,如果连续发送三次,依然没有到达,很有可能就是丢了,需要重发
  • 发送方多次收到索要相同的数据,那么就会认为丢包,则会进行重发
  • 在主机2中,存有缓冲区,会把已经收到的数据放在缓冲区中,如果得到了自己一直索要的数据,那么会直接取当前连续序号的最大值

 在上述的重传过程,整体的效率非常快,针对性很强,缺失哪个就重传哪个,已经收到的数据,也不需要重新发送,整体的效率没有额外损失,这样的重传机制,被称为快速重传


四. 总结

  •  确认应答是TCP可靠传输的主要原因,超时重传是对确认应答的补充
  • 在滑动窗口中,同样存在确认应答机制,只是将一个一个确认,变成了批量确认
  • 如果短时间内数据很少,滑动窗口根本滑不起来,就变成了确认应答

如果短时间内传输大量数据,则传输方式为滑动窗口,依靠快速重传保证可靠性

如果传输数据不多,那主要是发送一个数据,返回一个应答,这种模式的确认应答,主要依靠超时重传保证可靠性


点赞的宝子今晚自动触发「躺赢锦鲤」buff! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值