Заголовок IP-пакету: формат, поля

⚡ Розумний підсумок

IP-заголовок – це метадані, що розміщуються на початку кожного IP-пакета та містять такі поля, як версія, довжина заголовка, загальна довжина, час життя, протокол, контрольна сума, а також адреси джерела та призначення, які маршрутизатори зчитують для доставки даних.

  • 🧭 Мета: IP-заголовок зберігає деталі маршрутизації та доставки, щоб кожен пакет досяг правильного пункту призначення в мережах.
  • 📏 Розмір: Заголовок IPv4 має розмір від 20 до 60 байтів і контролюється полем «Довжина заголовка Інтернету».
  • 🧱 Ключові поля: Основні поля включають версію, міжнародний ліміт на передачу даних (IHL), тип послуги, загальну довжину, TTL, протокол, контрольну суму та адреси.
  • 🔀 Фрагментація: Ідентифікація, прапорці та зсув фрагмента дозволяють великим дейтаграмам правильно розділяти та збирати їх знову.
  • 🆚 IPv4 проти IPv6: IPv6 замінює змінний заголовок фіксованим 40-байтовим заголовком та видаляє поле контрольної суми.
  • 🤖 Допомога AI: Аналізатори пакетів на базі штучного інтелекту автоматично аналізують IP-заголовки, щоб виявляти аномалії та пришвидшувати усунення несправностей.

Формат та поля заголовка IP-пакета

Що таке IP-заголовок?

IP-заголовок — це метаінформація на початку IP-пакета. Він відображає таку інформацію, як версія IP-адреси, довжина пакета, джерело та пункт призначення.

Формат заголовка IPv4 має довжину від 20 до 60 байт і містить інформацію, необхідну для маршрутизації та доставки. Він складається з таких полів, як Версія, Довжина заголовка, Загальна довжина, Ідентифікація, Прапорці, Контрольна сума, IP-адреса джерела та IP-адреса призначення. Разом ці поля надають основні дані, необхідні для... transmit надійно передавати пакет від одного хоста до іншого.

Компоненти/поля заголовка IPv4

На діаграмі нижче показано повний формат заголовка 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-адреси.

Поширені запитання

Довжина заголовка (IHL) вимірює лише заголовок у 32-бітних словах і коливається від 20 до 60 байт. Загальна довжина вимірює всю дейтаграму — заголовок плюс дані — у байтах, до 65 535.tracВідділення одного від іншого дає розмір корисного навантаження.

Фрагментація розділяє датаграму, розмір якої перевищує максимальний розмір з'єднання. Transmission Розділити на менші частини. Поля «Ідентифікація», «Прапори» та «Зсув фрагмента» дозволяють пункту призначення зібрати частини по порядку. Це відбувається щоразу, коли пакет має перетнути мережу з меншим MTU.

Заголовок IPv4 має 13 фіксованих полів: Версія, IHL, Тип послуги, Загальна довжина, Ідентифікація, Прапорці, Зсув фрагмента, TTL, Протокол, Контрольна сума, Адреса джерела, Адреса призначення, а також додаткове поле Параметри. Розділ Дані, що йде далі, є корисним навантаженням, а не полем заголовка.

Ні. Контрольна сума заголовка IPv4 охоплює лише поля заголовка, а не корисне навантаження. Протоколи верхнього рівня, такі як TCP та UDP, мають власні контрольні суми для захисту даних. Оскільки TTL змінюється на кожному стрибку, маршрутизатори перераховують контрольну суму заголовка при кожному пересиланні.

Коли TTL досягає нуля, маршрутизатор відкидає пакет і повертає джерелу повідомлення ICMP Time Exceeded. Це запобігає затримці пакетів.ping вічно в циклі маршрутизації. traceroute Інструмент спирається на цю поведінку для відображення кожного стрибка вздовж шляху.

Поле «Протокол» визначає, який протокол верхнього рівня має отримувати корисне навантаження в пункті призначення. Загальні значення: 6 для TCP, 17 для UDP та 1 для ICMP. Хост-отримувач зчитує це число, щоб передати дані правильному обробнику.

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

Копілот GitHub може чернетку Python або код на C, який розпаковує поля IP-заголовка, декодує прапорці та перевіряє контрольні суми з короткого коментаря. RevУважно перегляньте згенеровану логіку маскування бітів, оскільки зміщення, що відрізняються на одиницю, є поширеним джерелом помилок парсингу.

Підсумуйте цей пост за допомогою: