Appearance
3.2. 特定选项定义
TCP 的必备选项集合包括:选项列表结束选项、无操作选项和最大报文段大小选项。
选项列表结束(EOL)
选项列表结束选项的格式如下:
text
0
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+其中:
- Kind: 1 字节;
Kind == 0。 - 该选项代码表示选项列表的结束,其位置不一定与数据偏移字段所指示的 TCP 首部末尾重合。它位于整个选项列表的末尾,而非每个选项的末尾;仅当选项末尾无法自然落在 TCP 首部末尾时,才需要使用它。
无操作(NOP)
无操作选项的格式如下:
text
0
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| 1 |
+-+-+-+-+-+-+-+-+其中:
- Kind: 1 字节;
Kind == 1。 - 该选项代码可置于其他选项之间,例如将后续选项的起始位置对齐到字边界。发送方并不保证一定会使用该选项,因此接收方必须做好准备,处理并非从字边界开始的选项(
MUST-64)。
最大报文段大小(MSS)
最大报文段大小选项的格式如下:
text
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2 | Length | Maximum Segment Size (MSS) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+其中:
- Kind: 1 字节;
Kind == 2。该选项若存在,则用于通告发送该报文段的 TCP 端点所能接收的最大报文段大小。该数值受 IP 重组上限的约束。该字段可以在初始连接请求中发送(即出现在设置了SYN控制位的报文段中),绝不能出现在其他报文段中(MUST-65)。若不使用该选项,则允许任意大小的报文段。该选项的完整描述见第 3.7.1 节。 - Length: 1 字节;
Length == 4,表示选项的字节长度。 - Maximum Segment Size(MSS): 2 字节,表示发送该报文段的 TCP 端点的最大接收报文段大小。
3.2.1. 其他常见选项
其他一些 RFC 定义了若干常用选项。为获得高性能,建议实现这些选项,但基本的 TCP 互操作性并不要求它们。它们包括:TCP 选择确认(SACK)选项(RFC 2018、RFC 2883)、TCP 时间戳(TS)选项和 TCP 窗口缩放(WS)选项(RFC 7323)。