TCP 中滑动窗口机制

目的

提高 TCP 协议效率的机制

示例

  • 场景一,未使用滑动窗口
    在这里插入图片描述

这样 一发一收 的方式效率比较低,那么我们一次发送多条数据(也就是多个段的等待时间重叠在一起了),统一等待 ACK,就可以大大提高性能。

  • 场景二,使用滑动窗口
    在这里插入图片描述

蓝色框表示已经发送的数据有哪些

在这里插入图片描述

当收到 ACK(2001)后,表示 2001 之前的数据已经发送完成,可以发送 5001 - 6000 了

在这里插入图片描述

这就类似于,拉粑粑的时候也可以玩手机,看 CSDN 大佬的文章,没必要拉屎的时候就只拉屎。。。。有点恶心,但是还是挺形象的。(我觉得有点像 海王 行为)
有点类似与以前小学的一个题,烤一个饼子需要 20 分钟,正面 10 分钟,背面 10 分钟,一个锅最多一次能烤两个饼子,请问烤 3 个饼子最短需要多少时间?

  • 场景三,使用滑动窗口,但是 ACK 丢了

在这里插入图片描述

1001 ACK 丢失,但是客户端已经收到 2001 ACK ,表示 2000 以前的数据都收到了,并不要紧。

  • 场景四,使用滑动窗口,丢包
    在这里插入图片描述

连续收到几次同样的 ACK 时进行重传。这样就保证了可靠性的同时提高效率!
而重传机制的也依赖与 32 位确认序号。丢失那个序号的数据就重传那个序号的数据,保证了传输的效率是比较高的,重传的效率也是比较高的(比较没有重传多余的数据)。因此丢包重传也叫做 快速重传

滑动窗口大小的设计

滑动窗口越大,效率就越高,但是存在一个问题,滑动窗口越大,那么就要有一个相对的缓冲区,缓冲区也就是一块内存。内存占用过大是不科学的;
而影响窗口大小的还有接收方的接受速率,如果接收方处理数据慢,而发送数据却发送得很快,就会导致丢包。此时就要限制发送发的窗口大小。因此就有了 流量控制机制
而两台主机之间传输数据会有很多中间节点,也就是路由器,路由器的处理数据能力并不知道,为了防止丢包,因此就有了 拥塞控制机制

滑动窗口 的大小取决于 拥塞窗口流量窗口 中的最小值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值