TCP首部可以由多达40字节的可选信息。选项用于把附加信息传递给终点,或用来填充对齐其他选项。我们将定义两大类选项:1字节选项和多字节选项。第一类选项包括两种选项:选项列表结束和误操作。在大多数实现中,第二类选项包括了五种选项:最大报文段长度、窗口扩大因子、时间戳、允许SACK和SACK,见下图。
选项结束(EOF)
选项结束(end of option,EOP)选项是1字节选项,用来在选项区的结尾处进行填充。它只能用作最后一个选项。这个选项只允许出现一次。在这个选项后,接收方就要检查有效载荷数据了。下图给出了一个雷子,在首部后面后一个3字节的选项,在这个选项后面紧跟着的是数据。因此要用一个EOF选项插入进来使用数据对齐下一个字的开头。
EOF只能使用一次。
EOF选项向终点传达了两种信息:
1、首部中没有更多的选项了。
2、从应用程序传递来的数据开始于下一个32位字开始的地方。
无操作(NOP)
无操作(no-operation,NOP)选项也是1字节选项,用作选项之间的填充。但是,它通常用在另一个选项之前,帮助选项能够在4字--格中对齐。例如:在下图中,它被用来对齐一个3字节的选项(如窗口扩缩因子)和一个10字节的选项(如时间戳)。NOP可多次使用。
最大报文段长度(MSS)
最大报文段长度选项(maximun-segment-size option)定义了能够被终点接收的TCP报文段的最大数据单元。虽然它的名字是这样,但它定义的是数据的最大长度,而不是报文段的最大长度。因为这个字段是16位长,所以这个值只能在0到65535字节之间。下图给出了这个选项格式。