Заголовок IP-пакету: формат, поля
⚡ Розумний підсумок
IP-заголовок – це метадані, що розміщуються на початку кожного IP-пакета та містять такі поля, як версія, довжина заголовка, загальна довжина, час життя, протокол, контрольна сума, а також адреси джерела та призначення, які маршрутизатори зчитують для доставки даних.
Що таке IP-заголовок?
IP-заголовок — це метаінформація на початку IP-пакета. Він відображає таку інформацію, як версія IP-адреси, довжина пакета, джерело та пункт призначення.
Формат заголовка IPv4 має довжину від 20 до 60 байт і містить інформацію, необхідну для маршрутизації та доставки. Він складається з таких полів, як Версія, Довжина заголовка, Загальна довжина, Ідентифікація, Прапорці, Контрольна сума, IP-адреса джерела та IP-адреса призначення. Разом ці поля надають основні дані, необхідні для... transmit надійно передавати пакет від одного хоста до іншого.
Компоненти/поля заголовка IPv4
На діаграмі нижче показано повний формат заголовка IPv4, де кожне поле намальоване у правильному положенні та з правильною бітовою шириною:
Нижче наведено різні компоненти/поля заголовка IP-пакета:
- Версія: Перше поле IP-заголовка — це 4-бітний індикатор версії. В IPv4 значення цих чотирьох бітів встановлено на 0100, що вказує на 4 у двійковому коді. Якщо маршрутизатор не підтримує вказану версію, пакет відкидається.
- Довжина інтернет-заголовка: Довжина заголовка Інтернету, скорочено відома як IHL, становить 4 біти. Її також називають HELEN (Header Length - довжина заголовка). Цей IP-компонент показує, скільки 32-бітних слів присутні в заголовку.
- Тип послуги: Тип послуги також називається диференційованими послугами Code Точка, або DSCP. Це поле надає функції, пов'язані з якістю обслуговування для потокової передачі даних або VoIP-дзвінків. Перші 3 біти є бітами пріоритету. Воно також визначає, як слід обробляти дейтаграму.
- Загальна довжина: Загальна довжина вимірюється в байтах. Мінімальний розмір IP-дейтаграми становить 20 байт, а максимальний – 65 535 байт. HELEN та загальна довжина можуть бути використані для розрахунку розміру корисного навантаження. Усі хости повинні мати можливість читати дейтаграми розміром 576 байт. Однак, якщо дейтаграма занадто велика для хостів у мережі, широко використовується метод фрагментації.
- Ідентифікація: Ідентифікація – це поле, яке використовується для унікальної ідентифікації фрагментів IP-дейтаграми. Деякі дослідники рекомендують використовувати це поле для інших цілей, таких як додавання інформації для пакетів. tracIng.
- Прапори IP: Прапорці – це трибітове поле, яке допомагає контролювати та ідентифікувати фрагменти. Можливі конфігурації: біт 0 зарезервований і має бути встановлений на нуль; біт 1 означає, що не фрагментувати; а біт 2 означає більше фрагментів.
- Зміщення фрагмента: Зсув фрагмента (fragment offset) відображає кількість байтів даних перед певним фрагментом у певній дейтаграмі. Він визначається в одиницях по 8 байтів і має максимальне значення 65 528 байтів.
- Час жити: Це 8-бітове поле, яке вказує максимальний час, протягом якого датаграма може існувати в інтернет-системі. Щоразу, коли датаграма обробляється, її значення TTL зменшується на одиницю. Коли значення TTL досягає нуля, датаграма відкидається, щоб пакети не доставлялися нескінченно. Значення TTL може коливатися від 0 до 255.
- Протокол: Це поле заголовка IPv4 вказує, який інтернет-протокол передається в останній частині дейтаграми. Наприклад, число 6 використовується для позначення TCP, а 17 – для позначення протоколу UDP.
- Контрольна сума заголовка: Наступний компонент – це 16-бітове поле контрольної суми заголовка, яке використовується для перевірки заголовка на наявність помилок. IP-заголовок порівнюється зі значенням його контрольної суми. Якщо контрольна сума заголовка не збігається, пакет відкидається.
- Адреса джерела: Адреса джерела – це 32-розрядна адреса джерела, яка використовується для пакета IPv4.
- Адреса призначення: Адреса призначення також має розмір 32 біти та зберігає адресу одержувача.
- Параметри IP: Це необов’язкове поле заголовка IPv4, яке використовується, коли значення IHL (довжина інтернет-заголовка) більше 5. Воно містить значення та налаштування, пов’язані з безпекою, маршрутом запису, міткою часу та подібними опціями. Список опцій зазвичай закінчується маркером кінця списку опцій (EOL).
- дата: Це поле зберігає дані з протокольного рівня, який передав дані на IP-рівень.
Як розрахувати довжину заголовка IPv4
Поле «Довжина заголовка Інтернету» (IHL) повідомляє маршрутизатору точну довжину заголовка, щоб він знав, де закінчується заголовок і починаються дані. Оскільки поле має ширину лише 4 біти, воно не зберігає довжину безпосередньо в байтах. Натомість воно підраховує заголовок у 32-бітних словах, де кожне слово дорівнює 4 байтам.
Щоб перетворити значення IHL у байти, помножте його на 4:
- мінімум: Найменше допустиме значення за МГП дорівнює 5, отже 5 × 4 = 20 байт. Це заголовок без опцій.
- максимум: Найбільше значення IHL дорівнює 15, отже 15 × 4 = 60 байт. Додаткові 40 байтів містять додаткові поля.
Розглянемо робочий приклад. Якщо пакет надходить зі значенням IHL, що дорівнює 6, довжина заголовка становить 6 × 4 = 24 байти, тобто після стандартного 20-байтового заголовка присутні 4 байти опцій. Щоб знайти розмір корисного навантаження, підмножимоtracдовжина заголовка з поля «Загальна довжина». Якщо загальна довжина становить 1,500 байт, а заголовок — 24 байти, то корисне навантаження становить 1,500 − 24 = 1,476 байт.
Цей розрахунок важливий під час фрагментації, оскільки маршрутизатор повинен знати розмір заголовка, щоб визначити, скільки даних може переносити кожен фрагмент, не перевищуючи максимальний обсяг даних мережі. Transmission Одиниця (MTU).
Заголовок IPv4 проти IPv6
Заголовок IPv6 було перероблено, щоб його було простішим та швидшим для обробки, ніж заголовок IPv4. Він використовує фіксовану довжину та переміщує рідко використовувані параметри в окремі розширювальні заголовки, щоб маршрутизатори могли пересилати пакети зі швидкістю лінії. У таблиці нижче порівнюються два заголовки по полях:
| особливість | Заголовок IPv4 | Заголовок IPv6 |
|---|---|---|
| Розмір заголовка | від 20 до 60 байт (змінна) | 40 байт (фіксовано) |
| Кількість полів | 13 полів плюс опції | 8 полів |
| Довжина адреси | 32-бітний відправник і відправник | 128-бітний відправник і відправник |
| Контрольна сума заголовка | Уявити | Вилучено |
| Поля фрагментації | У базовому заголовку (Ідентифікація, Прапорці, Зсув) | Переміщено до заголовка розширення фрагмента |
| Опції | Переноситься всередині заголовка | Переноситься в розширювальних заголовках |
| Поле довжини | Загальна довжина (заголовок плюс дані) | Довжина корисного навантаження (лише корисне навантаження) |
Оскільки IPv6 пропускає контрольну суму та параметри змінної довжини, його заголовок містить менше полів і може оброблятися апаратно без перерахунку на кожному стрибку.
Чому важливий IP-заголовок
Кожне поле в IP-заголовку існує для того, щоб маршрутизатори та хости могли переміщувати пакети через багато мереж без постійного з'єднання між ними. Саме заголовок забезпечує роботу комутації пакетів.
- Маршрутизація: Адреса призначення вказує кожному маршрутизатору, куди пересилати пакет, тоді як адреса джерела дозволяє повертати відповіді та повідомлення про помилки.
- Запобігання зацикленню: Поле «Час життя» зменшується на кожному стрибку, тому неправильно маршрутизований пакет відкидається, а не циркулює в Інтернеті вічно.
- Доставка за правильним протоколом: Поле «Протокол» повідомляє приймаючому хосту, чи слід передавати корисне навантаження через TCP, UDP чи інший протокол.
- Integrity та повторне складання: Контрольна сума захищає заголовок від пошкодження, а поля «Ідентифікація», «Прапори» та «Зсув фрагмента» дозволяють перебудувати фрагментовану датаграму в правильному порядку.
Для мережевих інженерів читання цих полів у TCP / IP Захоплення часто є найшвидшим способом діагностики втрачених пакетів, петель маршрутизації та неправильно налаштованих IP-адреси.


