Maximum segment size
MSS (англ. Maximum segment size) является параметром протокола TCP и определяет максимальный размер полезного блока данных в байтах для TCP-пакета (сегмента). Таким образом этот параметр не учитывает длину заголовков TCP и IP[1].
Для установления корректной TCP-сессии с удалённым хостом должно соблюдаться следующее условие:
- MSS + заголовок TCP + заголовок IP ≤ MTU
Таким образом, максимальный размер MSS = MTU − размер заголовка IP − размер заголовка TCP.
Так каждый хост требует доступности для MSS:
Обычно конкретное значение MSS определяется операционной системой во время «TCP-рукопожатия» с целевым хостом исходя из значений MTU или PMTUD[англ.] (англ. Path MTU Discovery)[2].
Однако промежуточный маршрутизатор (например, имея линк с малым MTU) может подслушивать TCP SYN пакеты и подменять значения MSS, анонсируемые конечными устройствами. В результате конечные узлы "договорятся" о меньших MSS и пакеты не придётся фрагментировать.