TCP 中滑动窗口机制

目的

提高 TCP 协议效率的机制

示例

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

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

滑动窗口大小的设计

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP滑动窗口机制包括以下几种: 1. 停止等待协议(Stop-and-Wait Protocol):发送方每发送一段数据就停下来等待确认,接收方每接收到一段数据就发送确认,确认号表示接收成功的最后一个字节的序号。缺点是通信效率低下,因为发送方必须等待确认才能发送下一段数据。 2. 1比特滑动窗口协议(1-bit Sliding Window Protocol):发送方在等待确认时,可以同时发送多个数据包,最多可以发送两个未确认的数据包,即窗口大小为1。接收方接收到数据后,如果数据正确无误,则发送确认;如果数据有误,则不发送确认,发送方会在一定时间后重新发送数据。 3. 固定窗口大小协议(Fixed Window Protocol):发送方和接收方都有一个固定的窗口大小,发送方可以发送窗口的所有数据,而接收方只有在窗口的所有数据都正确接收后才会发送确认。缺点是窗口大小固定,不能根据网络状况进行动态调整,可能会导致网络拥塞或通信效率低下。 4. 可变窗口大小协议(Variable Window Protocol):发送方和接收方的窗口大小可以根据网络状况进行动态调整,以提高网络通信效率。发送方可以根据接收方的确认信息来调整窗口大小,而接收方则可以根据自己的处理能力和网络状况来调整窗口大小。这种协议可以提高网络通信效率,但也需要更复杂的算法和机制来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值