什么是 TCP 中的傻窗综合症?

TCP是一种传输控制协议,是一种面向连接的协议。它为发送方和接收方之间的信息提供了流量控制和错误控制设施。

将在数据链路层中使用的一种协议,它将支持数据帧的可靠和顺序传送。该协议是滑动窗口协议。

这种滑动窗口设施也与 TCP 一起使用,它有助于在收到来自接收方的确认之前由发送方一次传输多个帧。

TCP 将保持适当的数据流。

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

由于TCP的错误实现,可能会出现傻窗口综合症。

这会降低性能。由于这个问题,数据传输变得低效。

由于此问题,发件人窗口可能会缩小到较小的尺寸。

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

导致傻窗综合症的问题

由于以下问题,可能会出现该综合征 -

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

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

让我们详细了解它们。

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

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

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

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

接收器窗口重复接受一字节数据

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

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

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

步骤 4 - 因此,接收器重复通告一字节的窗口大小。

步骤 5 - 最后,接收过程变得缓慢且低效。

解决方案

针对上述问题的解决方案解释如下:

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

  • 从应用程序接收到一个字节数据时,发送方必须仅发送第一个字节。

  • 发送方必须缓冲所有剩余的字节,直到未完成的字节得到确认。

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

接收器窗口重复接受一字节数据 -

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

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

之后,接收方应该向发送方通告窗口的大小。

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

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