В чем разница между MSS и MTU?


33

Меня смущает разница между максимальным размером сегмента и максимальной единицей передачи.

Может кто-нибудь объяснить, пожалуйста, в отношении слоев 2 и 3?

Если бы у меня был пакет из 800 байтов в полезной нагрузке. Было бы правильно сказать, что MSS будет 800 байтов (если я установлю так), а MTU будет 840? TCP 20 и IP 20 байтов. Было бы по-другому, если бы я делал PPPoE?


Хотя это, строго говоря, не дубликат, ответ на этот вопрос также может ответить на ваш вопрос.
YLearn

Ответы:


19

К тому же. MSS значение происходит от значения MTU , если у вас есть пакет с 800 байт, то это может также сказать , что такой пакет первоначально был длиной 2260 байт, и он ворвался в 2 пакета 1460 + 800 байт, если использовать MTU = 1500.
Вы скажем, верно, если MSS = 800, MTU должен быть не менее 840. Поскольку издержки PPPoE составляют 8 байтов, и, следовательно, MTU = 1492 байта, а MSS = 1492-40 = 1452 байта.


28

MTU - это максимальный размер IP-пакета для данного канала. Пакеты, большие, чем MTU, фрагментируются в точке, где находится нижний MTU, и снова собираются вниз по цепочке.

Если фрагментация не требуется, либо вы должны проверять MTU на каждом прыжке, либо использовать для этого вспомогательный протокол ( Path MTU Discovery ).

Обратите внимание, что IPv6 НЕ поддерживает фрагментацию пакетов по маршрутизаторам, поэтому PMTUD с ICMPv6 является обязательным, если вы не хотите потерять пакет где-либо из-за небольшого MTU. Конечные точки могут фрагментироваться, но не маршрутизаторы. Кроме того, IPv6 имеет намного более высокий МИНИМАЛЬНЫЙ MTU.

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

При использовании PPPoE все накладные расходы означают, что вам нужно уменьшить MSS в пути, обычно, указав его на маршрутизаторе, где находится точка chokepoint, который затем заменит MSS проходящего трехстороннего рукопожатия на правильное более низкое значение, если оно выше. PPPoE просто добавляет 8 байтов (6 байтов PPPoE + 2 байта PPP) поверх всего (IP + TCP) и предназначен для работы через Ethernet при MTU 1500 байт, следовательно, 1492 MSS, как правило, настроены для его прохождения.

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


4
Заявление: IPv6 не поддерживает фрагментацию в маршрутизаторах, однако конечные станции могут фрагментировать пакеты IPv6
Майк Пеннингтон,

1
Отредактировал мой ответ, чтобы быть более конкретным
Реми Летурно

0

MTU - максимальный размер IP-пакета для данного канала. MSS - Максимальный размер сегмента TCP.

MTU используется для фрагментации, то есть пакет, больший, чем MTU, фрагментирован. Но в случае MSS пакет, больший, чем MSS, отбрасывается.

MSS указывается во время TCP-квитирования в основном в SYN, и его значение не может быть изменено после установления соединения.

MSS = MTU-40 (заголовок IP (20 байтов) + заголовок TCP (20 байтов))


Я думаю, что заголовок TCP не обязательно 20 байтов, это просто минимальная длина?
Саджук

Там может быть дополнительный заголовок опций
Aneesh Джоши
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.