TCP流量控制和滑动窗口

目录

TCP流量控制和滑动窗口

什么是TCP滑动窗口?它是如何工作的?

快速发送器,慢速接收器

TCP滑动窗口


 

TCP流量控制和滑动窗口


https://www.ibm.com/support/knowledgecenter/en/SSGSG7_7.1.0/com.ibm.itsm.perf.doc/c_network_sliding_window.html

传输控制协议(TCP)使用滑动窗口进行流量控制。在调整任何TCP / IP设置之前,请先了解TCP滑动窗口的工作方式。

TCP滑动窗口确定一个系统可以发送给另一个系统的未确认字节数x。两个因素决定x的值:
  • 发送系统上发送缓冲区的大小
  • 接收系统上的接收缓冲区的大小和可用空间

发送系统发送的字节数不能超过接收系统上接收缓冲区中可用空间的字节数。发送系统上的TCP必须等待发送更多数据,直到接收系统上的TCP确认当前发送缓冲区中的所有字节为止。

在接收系统上,TCP将接收到的数据存储在接收缓冲区中。TCP确认收到数据,并向发送系统通告(通信)新的接收窗口。接收窗口表示接收缓冲区中可用的字节数。如果接收缓冲区已满,则接收系统公告接收窗口大小为零,并且发送系统必须等待发送更多数据。接收应用程序从接收缓冲区检索数据之后,接收系统可以播发一个等于读取的数据量的接收窗口大小。然后,发送系统上的TCP可以继续发送数据。

接收缓冲区中的可用空间取决于接收应用程序从缓冲区读取数据的速度。TCP将数据保留在其接收缓冲区中,直到接收应用程序从该缓冲区读取数据为止。接收应用程序读取数据后,缓冲区中的空间可用于新数据。如上一段所述,缓冲区中的可用空间量被通告给发送系统。

使用滑动窗口进行流控制时,请确保了解TCP窗口大小。窗口大小是可以管理的数据量。如果接收缓冲区接收到的数据多于其可以通信的范围,则可能需要调整窗口大小。有关优化TCP窗口大小的更多信息,请参见针对同一系统上的不同操作优化窗口大小

发送和接收缓冲区如何交互具有以下结果:
  • 系统可以发送的未确认字节的最大数目是两个数字中的较小者:
    • 发送系统上的发送缓冲区大小
    • 接收系统向发送系统通告的接收窗口大小
  • 当接收应用程序以发送系统可以发送的速度读取数据时,接收窗口将保持在接收缓冲区的大小或附近。结果是数据在网络上流畅地流动。如果接收应用程序可以足够快的速度读取数据,则更大的接收窗口可以提高性能。
  • 当接收缓冲区已满时,接收系统将通告接收窗​​口大小为零。发送系统必须暂停并且暂时不能发送更多数据。
  • 通常,接收窗口出现零大小的频率更高,导致整个网络上的数据传输速度总体较慢。每次接收窗口为零时,发送系统必须等待,然后再发送更多数据。

通常,您为操作系统分别设置发送窗口和接收窗口的大小。例如,在AIX®中,no命令的tcp_sendspace和tcp_recvspace参数可用于设置发送和接收窗口的大小。

Tivoli Storage Manager操作使用的滑动窗口由TCPWINDOWSIZE选项控制。

TCP流量控制和滑动窗口

 

 

什么是TCP滑动窗口?它是如何工作的?


https://www.thegeekstuff.com/2013/10/tcp-sliding-window/

滑动窗是一个有趣的概念。就TCP而言,接收者的窗口代表了接收者愿意接受的数据量。

在本文中,我们将介绍TCP滑动窗口的概念及其相关方面。

快速发送器,慢速接收器

在学习滑动窗口概念之前,让我们首先讨论一个场景,即发送方快速发送数据而接收方接受数据的速度有点慢。假设发送方发送三个数据段(seg1,seg2和seg3),每个数据段为4096字节,并开始等待接收方的确认。

现在,如果这3个段填满了接收器的所有TCP缓冲区,则接收器将通告窗口大小为0。窗口大小为零表示接收器此时不能再接收任何数据。每当缓冲区可用时,接收方将通告一个非零的窗口大小。

TCP滑动窗口

上一节中描述的过程在接收方方面很好,但是发送方也必须在其侧面维护一个窗口。该窗口涵盖了未确认的数据及其可以发送的数据,同时请牢记接收方通告的窗口大小。

下图应该使您了解滑动窗口的外观:

TCP流量控制和滑动窗口

在上图中所示:

  • 接收者发布的可用窗口是6。这意味着接收者到目前为止可以接受6个字节。
  • 发送方窗口覆盖的字节范围为13到18(即总共6个字节)。
  • 超出此范围的13-15是已发送的字节,但尚未收到它们的确认。
  • 字节16-18是发送方可以尽快发送的字节。
  • 如果发件人开始接收字节13到15的确认,则窗口的左端开始关闭。
  • 随着接收器广告越来越大的窗口大小,右端开始打开。
  • 此窗口向右滑动,具体取决于接收方消耗数据和发送确认的速度,因此称为滑动窗口。

与此相关的是,这也有助于您了解TCP攻击ARP缓存中毒的工作方式。

与滑动窗口有关的其他几点:

  • 接收者甚至可以在其窗口完全填满之前发送确认。
  • 窗口的左边缘可以向右移动。
  • 左边缘都不应向左移动,右边缘也不应向左移动。

 

TCP流量控制和滑动窗口