在哪里可以找到 TCP 标头选项表,其中列出了种类编号和相应的选项

在哪里可以找到 TCP 标头选项表,其中列出了种类编号和相应的选项

前几天看到一个TCP常用选项表(几十种),上面列出了种类编号和对应的选项,现在怎么都找不到了google

喜欢

kind                 option
0 (8 bits) –       End of options list
1 (8 bits) –       No operation (NOP, Padding) 
2,4,SS (32 bits) – Maximum segment size (see maximum segment size) [SYN]
3,3,S (24 bits) –  Window scale (see window scaling for details) [SYN][7]
4,2 (16 bits) –    Selective Acknowledgement permitted
....
....

有人能提供一个链接让我可以找到这样的表格吗?

答案1

网络堆栈必须支持的仅有的 3 个“官方”选项是在RFC 793 第 3.1 节

  Kind     Length    Meaning
  ----     ------    -------
   0         -       End of option list.
   1         -       No-Operation.
   2         4       Maximum Segment Size.

这 3 个之外的所有内容都是“扩展”,不需要处理。

RFC 1122 第 4.2.2.5 节

TCP 必须能够接收任何段中的 TCP 选项。TCP 必须无错误地忽略它未实现的任何 TCP 选项,假设该选项具有长度字段(将来定义的所有 TCP 选项都将具有长度字段)。TCP 必须准备好处理非法选项长度(例如零)而不会崩溃;建议的程序是重置连接并记录原因。

已经有 RFC 添加了更多选项(例如RFC 2581RFC 5681用于拥塞控制),但这些仍然被视为可选的,并且并非所有网络硬件都需要遵守它们。


如果你真的想要已经标准化的选项列表,这里是来自维基百科

某些选项仅当设置了 SYN 时才可以发送;它们在下面表示为 [SYN]。Option-Kind 和标准长度以 (Option-Kind,Option-Length) 给出。

  • 0(8 位)– 选项列表结束
  • 1(8 位)— 无操作(NOP、填充)这可用于在 32 位边界上对齐选项字段以获得更好的性能。
  • 2,4,SS (32 位) - 最大段大小 (参见最大段大小) [SYN]
  • 3,3,S (24 位)– 窗口缩放(有关详细信息,请参阅窗口缩放)[SYN]
  • 4,2 (16 位) – 允许选择性确认。[SYN](有关详细信息,请参阅选择性确认)
  • 5、N、BBBB、EEEE、...(变量位,N 为 10、18、26 或 34)- 选择性确认 (SACK) 前两个字节后面跟着 1-4 个被选择性确认的块的列表,指定为 32 位开始/结束指针。
  • 8、10、TTTT、EEEE(80 位)- 时间戳和前一个时间戳的回显(有关详细信息,请参阅 TCP 时间戳)
  • 14,3,S (24 位)– TCP 备用校验和请求。[SYN]
  • 15,N,...(可变位)— TCP 备用校验和数据。

(其余选项已过时、实验性、尚未标准化或未分配)

相关内容