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