TCP中的Silly Window Syndrome(小窗口综合症)是什么?


TCP是**传输控制协议**,是一种面向连接的协议。它在发送方和接收方之间提供流量控制和错误控制功能。

一种用于数据链路层的协议,支持数据帧的可靠和顺序传递。该协议是滑动窗口协议。

TCP也使用这种滑动窗口机制,帮助发送方一次传输多个帧,然后再接收来自接收方的确认。

TCP将维护适当的数据流。

如果发送方的数据传输速度比接收方的接收速度快,就会出现溢出。这将导致数据丢失。这可以通过TCP来控制,即提供窗口的概念。

由于TCP的实现不当,可能会出现小窗口综合症。

这将降低性能。由于这个问题,数据传输效率低下。

由于这个问题,发送方窗口可能会缩小到很小的尺寸。

因此,传输的数据大小也变得小于TCP报头。

导致小窗口综合症的问题

该综合症可能是由于以下问题引起的:

  • 发送方窗口重复传输一个字节的数据。

  • 接收方窗口重复接受一个字节的数据。

让我们详细了解一下。

发送方窗口重复传输一个字节的数据

**步骤1** - 如果应用程序只生成一个字节的数据,TCP将传输这个小数据段。

**步骤2** - 应用程序始终生成单个字节的数据,窗口传输它。

**步骤3** - 这是因为传输过程变得缓慢且效率低下。这里发送方窗口重复传输一个字节的数据。

接收方窗口重复接受一个字节的数据

**步骤1** - 假设接收方无法处理所有传入的数据。

**步骤2** - 在这种情况下,接收方会通告一个较小的窗口大小。

**步骤3** - 该过程重复,窗口大小变得太小。

**步骤4** - 因此,接收方反复通告窗口大小为一个字节。

**步骤5** - 最终,接收过程变得缓慢且效率低下。

解决方案

下面解释了上述问题的解决方案

发送方窗口重复传输一个字节的数据

  • 发送方必须只在从应用程序接收一个字节的数据后发送第一个字节。

  • 发送方必须缓冲所有其余的字节,直到待处理的字节得到确认。

收到确认后,发送方需要在一个TCP段中发送缓冲的数据。然后发送方应该再次缓冲数据,直到先前发送的数据得到确认。

接收方窗口重复接受一个字节的数据:

  • 接收方不会为一个字节发送窗口更新。

  • 接收方必须等到有更多可用空间。

之后,接收方应将窗口大小通告给发送方。

TCP 将初始拥塞窗口设置为最大分段大小。通告窗口是接收方当时的窗口,有效窗口是当时通告窗口和拥塞窗口中的最小值。

从所有这些解释中,我们将了解关于小窗口综合症的信息,这将使数据传输效率低下。

更新于:2021年9月15日

4K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告