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。該限制用於防止字節序列號溢出。