TCP滑动窗口

滑动窗口是一种在计算机网络中管理数据发送和接收的机制,通过控制发送方和接收方的窗口大小,确保有序、可靠的数据传输,同时优化网络利用率。它包括发送窗口和接收窗口的动态调整,以及应对数据丢失的快重传和超时重传策略。
摘要由CSDN通过智能技术生成

为什么会有滑动窗口

  • 在计算机网络中,数据通常被分成小块(也叫数据段)在网络中传输(为什么会被分成小块,请了解拥塞窗口和流量控制)。这些小块可能会在传输的过程中遇到延迟、丢失或乱序等问题。为了保证数据的正确传输,我们需要一种方法来管理数据的发送和接收。

  • 而滑动窗口就像是一个虚拟的窗口,用来控制发送方和接收方之间的数据交换。当发送方把数据段发送给接收方时,发送窗口会向前滑动,表示发送方可以继续发送更多的数据。接收方会根据自己的接收窗口的大小,告诉发送方它可以接收多少数据。如果发送方发送的数据超过了接收方的窗口大小,接收方会拒绝接收多余的数据,以避免数据的丢失或混乱。

  • 同时,滑动窗口机制也有助于优化网络的利用率。发送方不需要等待每个数据段的确认,它可以持续发送多个数据段,只要发送窗口内的数据没有超过接收窗口的大小。这样可以充分利用网络的带宽,提高数据传输效率。

简单来说,滑动窗口机制就是为了在网络通信中更好地管理数据的传输。它确保发送方和接收方之间的数据交换有序、可靠,同时最大限度地利用网络资源。就像拍照时要控制好光线,光线过强会导致过曝,太弱会导致欠曝。

滑动窗口是什么

在这里插入图片描述

  • 滑动窗口实际上是发送缓冲区的一部分,滑动窗口左边代表已经确认发送成功,即接收到来自对端发送的ACK报文,是可以被覆盖的无效数据。

  • 滑动窗口内部代表不需要应答,直接就可以发送的数据和已经发送但未确认应答的数据。发送到数据大小根据对端给的应答报文中窗口大小来确定。

  • 滑动窗口的右边代表着尚未发送到数据内容。滑动窗口内的数据发送完后,滑动窗口就会右移,窗口大小由对端的应答报文中的窗口大小决定。

滑动窗口工作原理

  1. 应答报文中会返回下一次发送数据的序号, 窗口的下一次起始位置就等于返回的序号
    应答报文中的会返回此时接收端接收缓冲区的大小。而窗口的起始位置 + 缓冲区大小就是窗口的大小,即决定了窗口的结束位置

  2. 滑动窗口只能向右滑动,因为向左没有意义,左边是已经发送的废弃数据。

  3. 窗口大小可大可小,是浮动的,也能变0,代表对端不能再接收数据了,对端的接收缓冲区可用容量为0了,此时就进入到了发送端的窗口探测阶段和对端的窗口更新通知阶段。

  4. 如果报文丢失了呢

    1. 应答丢失

      假设有1000-5000序号的数据发送,对端返回应答,丢失了2001,但我们收到了3001,4001和5001的确认应答。虽然丢掉了2001应答,但收到了后面的数据应答,这意味着之前的数据对端都接收到了,只是应答丢了而已,而发送端只需要关心我的数据是否成功发送,不关心应答,所以应答丢失了2001不重要,不关心。
      在这里插入图片描述

    2. 数据丢失

      假设有1000-5000序号的数据发送,丢失了2000之前的数据,对端返回应答时就不会返回后面的确认应答序号,而返回1001。由于发送端发送的是1000-5000,而收到的应答中确认序号却是1001,代表1000后面的数据丢包了,此时滑动窗口不动,等待超时重传。

      无论滑动窗口中丢失的是最左侧的数据、中间的数据还是最末尾的数据,通过数据重传和确认,及窗口滑动的过程,被确认的正常数据都会从窗口的左侧被删除,最后剩下的无论是左侧、中间还是末尾的丢失数据,都将转换为相对窗口而言的左侧丢失。

      具体分析:

      • 最左侧数据丢失 - 此时窗口不能滑动,直到最左侧数据重传并确认,窗口才开始滑动。
      • 中间数据丢失 - 中间数据之前和之后的正常数据会被确认,窗口会滑动到中间数据,此时对窗口来说,中间数据就转换为了左侧丢失。
      • 最末尾数据丢失 - 除了最末尾的数据,其他的数据都会得到确认,窗口滑动到最末尾数据,对窗口来说,它现在就是左侧丢失。
      • 通过重复以上过程,最后都会转换为窗口左侧数据的丢失。

    实际上快重传超时重传就是依托滑动窗口接受ACK确认之前会保留的特性来实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值