Максимальный размер сегмента - Maximum segment size

В максимальный размер сегмента (MSS) является параметром опции поле TCP заголовок, указывающий наибольший объем данных, указанный в байты, которые компьютер или коммуникационное устройство может получить за один Сегмент TCP. Это не в счет Заголовок TCP или Заголовок IP (в отличие, например, от MTU для дейтаграмм IP).[1] В Дейтаграмма IP содержащий сегмент TCP, может быть самодостаточным в одном пакете или может быть восстановлен из нескольких фрагментированный шт; в любом случае ограничение MSS применяется к общему количеству данных, содержащихся в окончательном восстановленном сегменте TCP.

Чтобы избежать фрагментации в Уровень IP, хост должен указать максимальный размер сегмента, равный наибольшей IP-дейтаграмме, которую хост может обработать, за вычетом размеров заголовков IP и TCP.[2] Следовательно, IPv4 хосты должны иметь возможность обрабатывать MSS из 536 октетов (= 576[3] - 20-20) и IPv6 хосты должны иметь возможность обрабатывать MSS из 1220 октетов (= 1280[4] - 40 - 20).

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

Каждое направление потока данных может использовать разные MSS.

Для большинства пользователей компьютеров опция MSS устанавливается Операционная система.

Значение по умолчанию

Максимальный размер сегмента TCP по умолчанию - 536.[6] Если хост желает установить для максимального размера сегмента значение, отличное от значения по умолчанию, максимальный размер сегмента указывается как опция TCP, первоначально в TCP SYN пакет во время Рукопожатие TCP. Значение не может быть изменено после установления соединения.[7]

Межуровневая коммуникация

Чтобы уведомить MSS на другом конце, межуровневая связь выполняется следующим образом:[8]

  • Сетевой драйвер (ND) или интерфейс должны знать Максимальный блок передачи (MTU) сети с прямым подключением.
  • IP должен запросить у сетевого драйвера максимальный размер передаваемого блока.
  • TCP должен запросить у IP-адреса максимальный размер данных дейтаграммы (MDDS). Это MTU минус длина IP-заголовка (MDDS = MTU - IPHdrLen).
  • При открытии соединения TCP может отправить параметр MSS со значением, равным: MDDS - TCPHdrLen. Другими словами, значение MSS для отправки: MSS = MTU - TCPHdrLen - IPHdrLen

При отправке сегментов TCP на другой конец межуровневая связь осуществляется следующим образом:[9]

  • TCP должен определить максимальный размер данных сегмента (MSDS) либо из значения по умолчанию, либо из полученного значения параметра MSS.
  • TCP должен определить, возможна ли фрагментация источника (запрашивая IP) и желательна ли.
    • Если это так, TCP может передавать IP сегменты (включая заголовок TCP) до MSDS + TCPHdrLen.
    • Если нет, TCP может передать IP сегменты (включая заголовок TCP) до меньшего из (MSDS + TCPHdrLen) и MDDS.
  • IP проверяет длину данных, передаваемых ему по TCP. Если длина меньше или равна MDDS, IP присоединяет заголовок IP и передает его ND. В противном случае IP должен выполнять фрагментацию источника.

MSS и MTU

MSS иногда объединяют с MTU / PMTU, что является характеристикой основного уровень связи, в то время как MSS применяется конкретно к TCP и, следовательно, транспортный уровень. Они похожи тем, что ограничивают максимальный размер полезной нагрузки, переносимой их соответствующими блок данных протокола (кадр для MTU, сегмент TCP для MSS) и связанные с ними, поскольку MSS не может превышать MTU для своего нижележащего канала (с учетом накладных расходов любых заголовков, добавленных уровнями ниже TCP). Однако разница, помимо применения к разным уровням, заключается в том, что MSS может иметь разное значение в любом направлении, а также в том, что кадры, превышающие MTU, могут в конечном итоге оказаться фрагментированными из-за транспортный уровень, а сегменты, превышающие MSS, просто отбрасываются.

дальнейшее чтение

  • Комер, Дуглас Э. (2006). Межсетевое взаимодействие с TCP / IP. Vol. 1 (5 / E ed.). Река Аппер Сэдл, штат Нью-Джерси, США: Прентис-Холл.
  • Козиерок, Чарльз М. (20 сентября 2005 г.). Руководство по TCP / IP (3,0 изд.). Получено 2011-09-08.

Смотрите также

Рекомендации

  1. ^ RFC 879, стр. 2, раздел 3, «MSS считает только октеты данных в сегменте, он не считает заголовок TCP или заголовок IP».
  2. ^ RFC 2460, стр. 28, раздел 8.3
  3. ^ RFC 879, стр. 1, раздел 1
  4. ^ RFC 2460, стр. 24, раздел 5
  5. ^ Руководство по TCP / IP, Максимальный размер сегмента TCP (MSS) и отношение к размеру дейтаграммы IP
  6. ^ RFC 879, стр. 1, раздел 1, «Максимальный размер сегмента TCP по умолчанию - 536.»
  7. ^ RFC 793, стр. 19, раздел 3.1, «Это поле должно быть отправлено только в первоначальном запросе соединения (т. е. в сегментах с установленным битом управления SYN)».
  8. ^ RFC 879, стр. 1, раздел 11
  9. ^ RFC 879, стр. 1, раздел 11