TCP窗口扩大选项
TCP窗口扩大选项(TCP Window Scale Option)
TCP窗口扩大选项 TCP Window Scale Option (WSopt)
窗口扩大选项用于扩大TCP通告窗口,使TCP的窗口定义从16bit增加为32bit。
1、RFC 1323中关于窗口扩大选项的图示如下:
TCP Window Scale Option (WSopt):
Kind: 3 Length: 3 bytes
+———+———+———+
| Kind=3 |Length=3 |shift.cnt|
+———+———+———+
2、要启用窗口扩大选项,通讯双方必须在各自的SYN报文中发送这个选项。主动建立连接的一方在SYN报文中发送这个选项;而被动建立连接的一方只有在收到带窗口扩大选项的SYN报文之后才能发送这个选项。
3、这个选项只在一个SYN报文中有意义(<SYN>或<SYN,ACK>),包含窗口扩大选项的报文如果没有SYN位,则会被忽略掉。当连接建立起来后,在每个方向的扩大因子是固定的。注意:在SYN报文本身的窗口字段始终不做任何的扩大(The Window field in a SYN (i.e., a <SYN> or <SYN,ACK>) segment itself is never scaled.)。
4、在启用窗口扩大选项的情况下,若发送一个窗口通告,要将实际窗口大小右移shift.cnt位,然后赋给TCP首部中的16bit窗口值;而当接收到一个窗口通告时,则将TCP首部中的16bit窗口值左移shift.cnt位,以获得实际的通告窗口大小。
5、shift.cnt取值范围为0~14,即最大TCP序号限定为2^16 * 2^ 14 = 2^30 < 2^31。该限制用于防止字节序列号溢出。