美文网首页
滑动窗口在TCP中的作用

滑动窗口在TCP中的作用

作者: 爱读书的夏夏 | 来源:发表于2020-03-06 16:19 被阅读0次

https://baijiahao.baidu.com/s?id=1650553452294041970&wfr=spider&for=pc
TCP滑动窗口协议。大家都知道,我们从一台机器向另外一台机器发送数据的时候,数据并不是一口气也不可能一口气传输给接收方。这个并不难理解,因为网络环境特别的复杂,有些地方快有些地方慢。所以,操作系统把这些数据写成连续的数据包,并且以一定的速率发给对方。一定的速率怎么理解呢?网络环境就像复杂的交通链路。就好比一个沙漏,中间可能有一个地方流量非常的小,这个最小的口径决定了网络传输的真正速度。我们要考虑到带宽缓冲区等因素,如果一下子发送所有的数据只会加大网络压力,造成丢包重试,轻则传输更慢,重则网络崩溃。因为TCP是顺序发送的,操作系统将这些数据包一批一批的发送给对方,就像一个窗口,不停地往后移动,所以,我们称之为TCP滑动窗口协议。

在TCP中,窗口的大小是在TCP三次握手后协定的,并且窗口的大小并不是固定的,而是会随着网络的情况进行调整。这个也不难理解,原本你女朋友在家独享10M的宽带,你下班要上虎牙看网址荣耀直播,两个人就要共享这个宽带。TCP为了更好的传输效率,就会调整窗口的大小。

image.png

我们通过一个图来解释下滑动窗口的工作流程,对于发送端来说,即将要发送的数据包排成一个队列,对于发送者来说,数据包总共分成四类。分别是在窗口前的,已经发送给接收方,并且收到了接收方的答复,我们称之为已发送。在窗口中的,有两种状态,一个是已经发送给接收方,但是接收方还没确认送达,我们称之为已发送未确认,另外一个是可以发送了,但是还没有发送,我们称之为允许发送未发送。最后的是在窗口外面的,我们称之为不可发送,除非窗口滑到此处,否则不会进行发送。

就这样,一旦前面的数据已经得到服务端确认了,这个窗口就会慢慢地往后滑,如下图所示,P1,P2两个数据包被确认之后,窗口就往后移动,后面新的数据包就由不可发送待发送变成了可发送状态了。

image.png

TCP的滑动窗口协议有什么意义呢?

  1. 首先当然是可靠性
    滑动窗口只有在队列前部的被确认之后,才会往后移动,保证数据包被接收方确认并接收。
  2. 其次是传输效率
    假如没有窗口,服务端是杂乱无章地进行发包,因为TCP的队首效应,如果有前面的包没有发送成功,就会不停的重试,反而造成更差的传输效率。
  3. 最后是稳定性
    TCP的滑动窗口大小,是整个复杂网络商榷的结果,会进行动态调整,可以尽量地避免网络拥塞,更加稳定。

相关文章

  • 滑动窗口在TCP中的作用

    https://baijiahao.baidu.com/s?id=1650553452294041970&wfr=...

  • TCP/IP 协议(转)

    参考:TCP/IP 协议tcp窗口滑动以及拥塞控制解析TCP之滑动窗口(动画演示)

  • TCP-滑动窗口原理

    1 TCP可靠传输的实现 1.1 以字节为单位的滑动窗口 TCP滑动窗口以字节为单位。如下图: 在网络传输中...

  • TCP 滑动窗口是个什么东西?这篇讲清楚

    今天我们来看TCP的滑动窗口问题,无论是在工作中,还是在笔试面试中,滑动窗口都是非常重要的概念,今天,图文并茂给大...

  • TCP的流量控制与拥塞控制机制

    参考:滑动窗口TCP的流量控制和拥塞控制 1 流量控制 利用滑动窗口机制实施流量控制 TCP协议里窗口机制有2种:...

  • TCP滑动窗口

    TCP是以一个段为单位的,如果每次只发一个段进行一次确认应答处理的话,将会导致通信性能的下降,尤其是往返时间较长的...

  • TCP滑动窗口

    https://www.cnblogs.com/alifpga/p/7675850.htmlhttps://www...

  • TCP滑动窗口

    一、复习review 1.1 多进程和多线程的对比 多线程模型需要处理SIGPIPE信号,因为多次去写就会触发SI...

  • TCP 滑动窗口

    在 TCP 中,滑动窗口是一个非常重要的概念,因为是以它为基础来进行流控和拥塞控制。 流量控制,根据接收端可接受的...

  • TCP滑动窗口

    滑动窗口协议 窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗...

网友评论

      本文标题:滑动窗口在TCP中的作用

      本文链接:https://www.haomeiwen.com/subject/ymxwrhtx.html