Кратко
- Опция MSS с Kind 2 и длиной 4 передаётся в SYN и указывает максимальный объём данных TCP, который отправитель опции готов принять в одном сегменте.
- Направления независимы. Значение не включает заголовки IP и TCP; отправитель дополнительно учитывает фактические заголовки и ограничения маршрута.
Два SYN, два предела приёма
Слово «переговоры» вводит в заблуждение. Значение от A описывает приём у A, а значение от B — приём у B. Поэтому различие значений нормально: они ограничивают противоположные потоки.
Формат определён точно: Kind 2, Length 4 и 16-битное значение MSS. RFC 9293 разрешает передавать опцию в первоначальном запросе с SYN и запрещает её в последующих сегментах. Это ограничение устанавливается при открытии соединения, а не обновляется непрерывно.
MSS считает октеты данных TCP и исключает заголовки IP и TCP. Это не размер IP-дейтаграммы, не MTU интерфейса и не размер записи приложения. Отправитель соединяет объявление партнёра со своими сведениями о маршруте и реально используемыми заголовками.
RFC 879 ещё в 1983 году отмечал, что MSS часто ошибочно называют переговорами. Получатель сообщает, что может принять, а отправитель формирует пакет.
Почему значением по умолчанию было 536
В описанном RFC 879 случае IPv4 хост должен был уметь собрать дейтаграмму размером 576 октетов. После вычитания минимальных 20 октетов заголовка IPv4 и 20 октетов заголовка TCP оставалось 536 октетов данных TCP.
Это была основа совместимости, а не измерение маршрута. Расчёт не доказывал, что MTU каждого пути равна 576, и не устанавливал универсальное значение для конкретной технологии канала.
MSS также не является обнаружением MTU маршрута. PMTUD исследует свойство пути, которое может измениться; MSS передаётся при открытии и описывает приёмную способность конечной точки.
Исправление, касающееся опций
Некоторые реализации уменьшали объявляемый MSS, заранее оставляя место для возможных опций IP или TCP. RFC 6691 исправил это правило: получатель должен объявлять максимальную TCP-нагрузку, которую способен собрать, не вычитая гипотетическое место под заголовки.
При передаче отправитель корректирует данные в каждом пакете с учётом реально присутствующих опций и применимого ограничения размера IP. Большой MSS не разрешает игнорировать меньшую способность маршрута, а малый MSS не доказывает MTU каждого перехода.
Что может изменить промежуточное устройство
Middlebox может переписать MSS в SYN, например для учёта накладных расходов туннеля. Это меняет ограничение, представленное другой конечной точке, но не превращает MSS в авторитетное измерение ёмкости маршрута.
Захват трафика подтверждает значение, видимое в конкретной точке. Он не обязательно показывает исходное объявление, MTU всех переходов или причину выбора меньшей нагрузки.
Исторический вывод прост: получатель объявляет предел, отправитель строит пакет, а маршрут остаётся внешним ограничением.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
