Що таке MTU? Розповідаємо про пакети, їх розміри та транспортування

MTU

У мережах максимальна одиниця передачі (MTU) — це вимірювання, що представляє найбільший пакет даних, який прийме пристрій, підключений до мережі. Уявіть собі це як обмеження висоти для підземних переходів або тунелів на автостраді: автомобілі та вантажівки, які перевищують межу висоти, не можуть пройти, так само як пакети, які перевищують MTU мережі, не можуть пройти через цю мережу.

Однак, на відміну від легкових і вантажних автомобілів, пакети даних, які перевищують MTU, розбиваються на менші частини, щоб вони могли пройти. Цей процес називається фрагментацією. Фрагментовані пакети збираються знову, коли вони досягають місця призначення.

MTU вимірюється в байтах — «байт» дорівнює 8 бітам інформації, тобто 8 одиниць і нулів. 1500 байт – це максимальний розмір MTU.

Що таке пакет?

Усі дані, що надсилаються через Інтернет, розбиваються на менші фрагменти, які називаються пакетами. Наприклад, коли веб-сторінка надсилається з веб-сервера на ноутбук користувача, складові дані веб-сторінки передаються через Інтернет у вигляді серії пакетів. Потім пакети знову збираються в оригінальну цілу веб-сторінку за допомогою ноутбука.

Пакети даних мають дві основні частини: заголовок і корисне навантаження. Заголовок містить інформацію про адреси джерела та призначення пакета, тоді як корисне навантаження — це фактичний вміст пакета. Подумайте про заголовок як транспортну етикетку, прикріплену до пакета, а корисне навантаження як вміст пакета. (На відміну від пакетів, пакети в Інтернеті мають кілька заголовків, приєднаних різними мережевими протоколами.)

MTU майже завжди використовується для посилань на пакети рівня 3* або пакети, які використовують Інтернет-протокол (IP). MTU вимірює пакет в цілому, включаючи всі заголовки та корисне навантаження. Сюди входить заголовок IP і заголовок TCP (Transport Control Protocol), які зазвичай додають до 40 байтів.

*Модель OSI розділяє функції, які роблять Інтернет можливим, на 7 рівнів; рівень 3 – це мережевий рівень, де відбувається маршрутизація.

Коли пакети стають фрагментованими?

Коли два комп’ютерні пристрої відкривають з’єднання та починають обмінюватися пакетами, ці пакети маршрутизуються через декілька мереж. Необхідно враховувати не тільки MTU двох пристроїв на кінцях кожного зв’язку, але також усіх маршрутизаторів, комутаторів і серверів посередині. Пакети, які перевищують MTU в будь-якій точці мережевого шляху, фрагментуються.

Припустимо, що Сервер A і Комп’ютер A підключені, але пакети даних, які вони надсилають один одному, мають пройти через маршрутизатор B і маршрутизатор C. Сервер A, комп’ютер A і маршрутизатор B мають MTU 1500 байт. Однак маршрутизатор C має MTU 1400 байт. Якщо Сервер A і Комп’ютер A не знають про MTU маршрутизатора C і надсилають 1500-байтні пакети, усі їхні пакети даних будуть фрагментовані маршрутизатором B під час передачі.

mtu fragmentation diagram

Фрагментація додає невелику затримку та неефективність мережевих комунікацій, тому її слід уникати, якщо це можливо. (Застаріле мережеве обладнання може бути вразливим до атак відмови в обслуговуванні, які використовують фрагментацію, наприклад атаки «ping of death».)

Як працює фрагментація?

Усі мережеві маршрутизатори перевіряють розмір кожного отриманого IP-пакета з MTU наступного маршрутизатора, який отримає пакет. Якщо пакет перевищує MTU наступного маршрутизатора, перший маршрутизатор розбиває корисне навантаження на два або більше пакетів, кожен зі своїми власними заголовками.

Кожен новий пакет має заголовок, скопійований з вихідного пакета (так що всі пакети мають вихідні IP-адреси джерела та призначення тощо) з деякими важливими змінами. Маршрутизатор редагує певні поля в заголовку IP, щоб вказати, що пакети фрагментовані і вимагають повторної збірки, скільки пакетів і в якому порядку вони надсилаються.

Уявіть, що Нова Пошта обробляє вантаж, розміри якого перевищують допустимі обмеження, та не поміщаються в один пакунок. Замість того, щоб відмовлятися доставити вантаж, транспортна компанія ділить вміст пакунку на три менші пакунки. Вона також дублює транспортну етикетку для кожної упаковки та додає примітку, яка вказує, що кожнен пакунок є частиною серії, яка має прибути разом — перша упаковка — це 1 із 3, друга — 2 із 3 тощо.

Коли фрагментація неможлива?

У деяких випадках пакети не можуть бути фрагментовані, а отже, вони не будуть доставлені, якщо вони перевищують MTU будь-якого маршрутизатора або пристрою вздовж мережевого шляху:

  1. Фрагментація не дозволена в IPv6. IPv6 є останньою версією Інтернет-протоколу, хоча IPv4 все ще широко використовується. Маршрутизатори, які підтримують IPv6, відкидають будь-які пакети IPv6, які перевищують MTU, оскільки вони не можуть бути фрагментовані.
  2. Фрагментація також неможлива, якщо в IP-заголовку пакета активовано прапор «Не фрагментувати».

Що таке прапорець «Не фрагментувати» в заголовку IP?

Думайте про IP-заголовок як про форму, яку заповнюють споживачі, коли комусь відправляють посилку. У формі вказується адреса джерела, адреса призначення, термін доставки посилки та інші спеціальні інструкції для працівників доставки.

Прапор «Не фрагментувати» — це спеціальна інструкція для маршрутизаторів, параметр, який можна вибрати у «формі» заголовка IP. Коли прапор встановлено, приєднаний пакет не може бути фрагментований.

Будь-який маршрутизатор, який отримує пакет, аналізує заголовок і перевіряє наявність прапора «Не фрагментувати». Якщо прапорець увімкнено, і пакет перевищує MTU, маршрутизатор скидає пакет замість того, щоб фрагментувати його.

На додаток до скидання пакета, маршрутизатор надсилає назад повідомлення ICMP до джерела пакета. Повідомлення ICMP — це дуже маленький пакет даних, який надсилає оновлення статусу. У цьому випадку, по суті, говориться: «Цей маршрутизатор або пристрій не зміг доставити ці пакети, оскільки вони були занадто великими і не могли бути фрагментовані».

Що таке відкриття MTU шляху?

Відкриття MTU шляху, або PMTUD, — це процес виявлення MTU всіх пристроїв, маршрутизаторів і комутаторів на мережевому шляху. Якби комп’ютер A і сервер A з наведеного вище прикладу використовували PMTUD, вони б визначили вимоги MTU маршрутизатора B і відповідно відрегулювали свій розмір пакета, щоб уникнути фрагментації.

PMTU працює дещо інакше залежно від того, чи використовують підключені пристрої IPv4 чи IPv6:

IPv4: IPv4 дозволяє фрагментацію і, таким чином, включає прапор «Не фрагментувати» в заголовку IP. PMTUD в IPv4 працює шляхом надсилання тестових пакетів уздовж мережевого шляху з увімкненим прапором «Не фрагментувати». Якщо будь-який маршрутизатор або пристрій на шляху скидає пакет, він надсилає назад повідомлення ICMP зі своїм MTU. Пристрій-джерело знижує свій MTU і надсилає ще один тестовий пакет. Цей процес повторюється до тих пір, поки тестові пакети не стануть достатньо малими, щоб пройти весь мережевий шлях без відкидання.

IPv6: для IPv6, який не допускає фрагментації, PMTUD працює приблизно так само. Ключова відмінність полягає в тому, що заголовки IPv6 не мають параметра «Не фрагментувати», тому прапор не встановлено. Маршрутизатори, які підтримують IPv6, не будуть фрагментувати пакети IPv6, тому, якщо тестові пакети перевищують MTU, маршрутизатори відкидають пакети та надсилають назад відповідні повідомлення ICMP, не перевіряючи наявність прапора «Не фрагментувати». IPv6 PMTUD надсилає все менші тестові пакети, поки пакети не зможуть пройти весь мережевий шлях, як і в IPv4.

Що таке MSS?

MSS означає максимальний розмір сегмента. MSS використовується TCP на 4-му рівні Інтернету (транспортному рівні) замість рівня 3. MSS стосується лише розміру корисного навантаження в кожному пакеті. Він обчислюється шляхом віднімання довжини заголовків TCP та IP від MTU.

Хоча пакети, що перевищують MTU маршрутизатора, фрагментуються або відкидаються, пакети, що перевищують MSS, завжди відкидаються.

Прокоментувати

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *