Единственные 3 "Официальных" варианта, которые должен поддерживать сетевой стек, определены в Разделе 3.1 RFC 793.
Kind Length Meaning
---- ------ -------
0 - End of option list.
1 - No-Operation.
2 4 Maximum Segment Size.
Все остальное, кроме этих трех, является "расширением" и не требует обработки.
Из RFC 1122 Раздел 4.2.2.5:
TCP ДОЛЖЕН быть в состоянии получить опцию TCP в любом сегменте. TCP ДОЛЖЕН безошибочно игнорировать любую опцию TCP, которую он не реализует, предполагая, что у опции есть поле длины (у всех опций TCP, определенных в будущем, будут поля длины). TCP ДОЛЖЕН быть готов обработать недопустимую длину параметра (например, ноль) без сбоя; Предлагаемая процедура - сбросить соединение и записать причину.
Были RFC, которые добавляют больше опций (например, RFC 2581 и RFC 5681 для контроля перегрузки), но они все еще считаются необязательными, и не все сетевое оборудование требуется для их соблюдения.
Если вы действительно хотите, чтобы список опций, которые были стандартизированы, вот список из Википедии
Некоторые параметры могут быть отправлены, только если установлен SYN; они обозначены ниже как [SYN]. Опция-вид и стандартная длина, указанная как (опция-вид, опция-длина).
- 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.
(Остальные параметры являются устаревшими, экспериментальными, еще не стандартизированными или не назначенными)