Maximum segment size

параметр протоколу TCP

Maximum segment size (скор. MSS; укр. Максимальний розмір сегмента) є параметром заголовку протоколу TCP та визначає найбільший розмір корисного блоку даних в байтах, який пристрій може отримати в одному сегменті TCP. Таким чином цей параметр не враховує довжину заголовків TCP та IP[1] (на відміну від MTU для IP-дейтаграм). Дейтаграма IP, що містить сегмент TCP, може міститися в одному пакеті або може бути реконструйована з кількох фрагментованих частин; у будь-якому випадку обмеження MSS застосовується до загального обсягу даних, що міститься в остаточному реконструйованому сегменті TCP.

Щоб уникнути фрагментації на рівні IP, хост повинен вказати максимальний розмір сегмента, що дорівнює найбільшій датаграмі IP, яку хост може обробити, мінус розміри заголовків IP і TCP.

Для встановлення TCP-сесії з віддаленою станцією (хостом) повинна виконуватись наступна умова:

  • MSS + заголовок TCP + заголовок IP ≤ MTU

Таким чином, найбільший розмір MSS = MTU — розмір заголовку IP — розмір заголовку TCP.

Отже, кожний мережний вузол вимагає наявності для MSS:

  • IPv4 — останніх 536 октетів (= 576 — 20 — 20)
  • IPv6 — останніх 1220 октетів (= 1280 — 40 — 20).

За звичай конкретне значення MSS визначається операційною системою під час «TCP-рукостискання» з цільовим хостом, виходячи із значення MTU або PMTUD[en] (англ. Path MTU Discovery)[2].

Малі значення MSS зменшать або усунуть фрагментацію IP-адреси, але призведуть до більших накладних витрат.

Кожен напрямок потоку даних може використовувати різні MSS.

Розмір параметрів TCP (змінна 0–320 біт, у одиницях по 32 біти) потрібно вирахувати з розміру MSS, якщо параметри TCP увімкнено. Наприклад, мітки часу TCP увімкнено за замовчуванням на платформах Linux.

Максимальний розмір сегмента TCP за умовчанням становить 536. Якщо хост бажає встановити максимальний розмір сегмента на значення, відмінне від стандартного, максимальний розмір сегмента вказується як опція TCP спочатку в пакеті TCP SYN під час рукостискання TCP. Значення не можна змінити після встановлення з’єднання.

Примітки ред.

  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».