Русская Википедия:Maximum segment size
MSS (Шаблон:Lang-en) является параметром протокола TCP и определяет максимальный размер полезного блока данных в байтах для TCP-пакета (сегмента). Таким образом этот параметр не учитывает длину заголовков TCP и IP[1].
Для установления корректной TCP-сессии с удалённым хостом должно соблюдаться следующее условие:
- MSS + заголовок TCP + заголовок IP ≤ MTU
Таким образом, максимальный размер MSS = MTU − размер заголовка IP − размер заголовка TCP.
Так каждый хост требует доступности для MSS:
Обычно конкретное значение MSS определяется операционной системой во время «TCP-рукопожатия» с целевым хостом исходя из значений MTU или Шаблон:Нп5 (Шаблон:Lang-en)[2].
Однако промежуточный маршрутизатор (например, имея линк с малым MTU) может подслушивать TCP SYN пакеты и подменять значения MSS, анонсируемые конечными устройствами. В результате конечные узлы "договорятся" о меньших MSS и пакеты не придётся фрагментировать.
Примечания
- ↑ 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».
- ↑ PMTUD Шаблон:Wayback, «О PPPoE, MTU и проблеме Path MTU Discovery Black Hole».