Русская Википедия:Maximum segment size

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

MSS (Шаблон:Lang-en) является параметром протокола 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 или Шаблон:Нп5 (Шаблон:Lang-en)[2].

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

Примечания

Шаблон:Примечания

  1. RFC 879 Шаблон:Wayback, 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 Шаблон:Wayback, «О PPPoE, MTU и проблеме Path MTU Discovery Black Hole».