![在哪里可以找到 TCP 标头选项表,其中列出了种类编号和相应的选项](https://linux22.com/image/1364121/%E5%9C%A8%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E6%89%BE%E5%88%B0%20TCP%20%E6%A0%87%E5%A4%B4%E9%80%89%E9%A1%B9%E8%A1%A8%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%88%97%E5%87%BA%E4%BA%86%E7%A7%8D%E7%B1%BB%E7%BC%96%E5%8F%B7%E5%92%8C%E7%9B%B8%E5%BA%94%E7%9A%84%E9%80%89%E9%A1%B9.png)
前几天看到一个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 个之外的所有内容都是“扩展”,不需要处理。
TCP 必须能够接收任何段中的 TCP 选项。TCP 必须无错误地忽略它未实现的任何 TCP 选项,假设该选项具有长度字段(将来定义的所有 TCP 选项都将具有长度字段)。TCP 必须准备好处理非法选项长度(例如零)而不会崩溃;建议的程序是重置连接并记录原因。
已经有 RFC 添加了更多选项(例如RFC 2581和RFC 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 备用校验和数据。
(其余选项已过时、实验性、尚未标准化或未分配)