在软件无线电原理与应用第二版中,TCP窗口缩放选项通过引入一个选项来扩展了原始16位窗口定义,使其能够表示更大的窗口大小,最高可达32位。

工作原理:

  • 选项协商: 窗口缩放选项仅在连接建立阶段的SYN报文中协商。双方必须在各自的SYN报文中发送该选项才能启用。
  • 移位计数器: 选项使用一个字节的移位计数器来表示缩放因子,范围从0(无缩放)到14。最大值14表示窗口大小为1,073,725,440字节(65,535 x 2^14)。
  • 单向缩放: 每个方向的缩放因子可以不同。如果一端不支持窗口缩放,则通信将使用默认的16位窗口大小。
  • 透明处理: 由于选项机制,支持窗口缩放的系统可以与不支持的旧系统互操作。

窗口大小计算:

假设发送方的移位计数为S,接收方的移位计数为R:

  • 接收窗口计算: 接收方将收到的16位窗口值左移R位,得到实际的通告窗口大小。
  • 发送窗口计算: 发送方将实际的32位窗口大小右移S位,然后将其放入TCP首部的16位窗口字段中。

自动调整:

TCP根据接收缓存的大小自动选择移位计数。系统通常允许应用程序修改接收缓存的大小,从而间接影响窗口缩放。