Меню

Главная
Случайная статья
Настройки
Maximum segment size
Материал из https://ru.wikipedia.org

MSS (англ. Maximum segment size) является параметром протокола TCP и определяет максимальный размер полезного блока данных в байтах для TCP-пакета (сегмента). Таким образом этот параметр не учитывает длину заголовков TCP и IP[1].

Для установления корректной TCP-сессии с удалённым хостом должно соблюдаться следующее условие:
  • MSS + заголовок TCP + заголовок IP MTU


Таким образом, максимальный размер MSS = MTU  размер заголовка IP  размер заголовка TCP.

Так каждый хост требует доступности для MSS:
  • IPv4 — последних 536 октетов (= 576  20  20)
  • IPv6 — последних 1220 октетов (= 1280  40  20).


Обычно конкретное значение MSS определяется операционной системой во время «TCP-рукопожатия» с целевым хостом исходя из значений MTU или PMTUD[англ.] (англ. Path MTU Discovery)[2].

Однако промежуточный маршрутизатор (например, имея линк с малым MTU) может подслушивать TCP SYN пакеты и подменять значения MSS, анонсируемые конечными устройствами. В результате конечные узлы "договорятся" о меньших MSS и пакеты не придётся фрагментировать.

Примечания
  1. RFC 879 Архивная копия от 11 ноября 2020 на Wayback Machine, page 2, Section 3, «The MSS counts only data octets in the segment, it does not count the TCP header or the IP header».
  2. PMTUD Архивная копия от 11 июля 2018 на Wayback Machine, «О PPPoE, MTU и проблеме Path MTU Discovery Black Hole».
Downgrade Counter