Формат заголовка ip-пакета - студопедія

Мал. 3.13. Структура IP-пакета

Поле Номер версії (Version) вказує версію протоколу IP. Нагадаємо, що в даний час широко використовується 4 версія (IPv4) і починається перехід на 6 версію (IPv6) (формат заголовка IPv6 відрізняється від розглянутого заголовка IPv4).

Поле Довжина заголовка (Header Length) вказує значення довжини заголовка IP-пакета в 32-бітних (четир ехбайтових) словах. Зазвичай довжина заголовка становить 5 таких слів (20 байт), але може бути більше за рахунок додаткових байт в поле Опції (максимальна довжина заголовка 60 байт = 15 четир ехбайтових слів).

Молодші три біта поля Тип сервісу (Type of Service) (біти 0-2) задають пріоритет пакета від найнижчого 000 (нормальний пакет) до найвищого 111 (пакет з керуючою інформацією). Біти 3-5 визначають критерій вибору маршруту, який використовується в протоколах маршрутизації OSPF і BGP. Вибір здійснюється між трьома альтернативами: малою затримкою передачі дейтаграм (біт 3 Delay = 1), високою пропускною спроможністю лінії зв'язку (біт 4 Throughput = 1) і високою надійністю передачі дейтаграм (біт 5 Reliability = 1). Зазвичай поліпшення одного параметра викликає погіршення іншого, отже, вибирається один критерій вибору маршруту. Хости зазвичай не використовують можливість визначення типу сервісу відправляється дейтаграми і вказують значення цього поля 00Н.

Поле Загальна довжина (Total Length) містить загальну довжину IP-пакета разом із заголовком. Виходячи з розрядності поля (2 байта), максимальна довжина пакету складає 65535 байт. Однак в більшості випадків такі великі пакети не використовуються, а розмір пакета вибирається з урахуванням максимального поля даних несе цей пакет кадру канального рівня (MTU). Для Ethernet MTU »1500 байт, для FDDI MTU» 4096 байт.

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

Поле Прапори (Flags) містить біти: 0 біт - резерв = 0, 1 біт - DF - Do not Fragment в разі установки в 1 забороняє фрагментацію пакету, 2 біт - MF - More Fragments в разі установки в 1 свідчить про те, що дана дейтаграмма є проміжним (не останнім) фрагментом.

В поле Зміщення фрагмента (Fragment Offset) вказується зміщення в 8-байтних блоках поля даних цього пакета-фрагмента від початку загального поля даних вихідного пакета, що зазнає фрагментації (8 байт х 2 13 = 2 16 - максимальний розмір пакета). Перший фрагмент має значення цього поля, що дорівнює 0. На рис. 3.14 наведено приклад фрагментації дейтаграми довжиною 472 байта при маршрутизації її в мережу з MTU = 280 байт.

Ідентифікатори вихідного пакета і фрагментів однакові (111). Значення зміщення фрагмента для першого фрагмента дорівнює нулю. Довжина поля даних першого фрагмента (рис. 3.14 б) = 276 байт (Загальна довжина пакета) - 20 байт (довжина заголовка) = 256 байт / 8 = 32 8-байтових блоку, що і зазначено в поле Зміщення фрагмента другого фрагмента. Значення прапорів для першого фрагмента = 1 (001), тобто вказується, що цей фрагмент не останній. Для другого фрагмента значення прапорів = 0 (000), тобто фрагмент останній.

Мал. 3.14. Приклад фрагментації дейтаграми: а) IP-заголовок вихідної

дейтаграми; б) IP-заголовок першого фрагмента; в) IP-заголовок другого фрагмента

Поле Час життя (Time To Live - TTL) вказує граничний термін часу, протягом якого дейтаграмма може переміщатися по мережі. Це час задається відправником дейтаграми в секундах. При пересиланні пакета через маршрутизатор значення TTL зменшується на 1 (навіть якщо час передачі через маршрутизатор менше 1 секунди). Тому іноді говорять, що цей час вимірюється в кількості переходів через маршрутизатори (hops). При досягненні цим значенням 0 пакет далі не передається.

Поле Протокол верхнього рівня (Protocol) містить ідентифікатор протоколу, що переносить інформацію, розміщену в поле даних IP-пакета. Найбільш популярними ідентифікаторами є 06Н - для протоколу управління транспортом (Transport Control Protocol - TCP), 11Н - для протоколу призначених для користувача дейтограмм (User Datagram Protocol - UDP) і 01Н - для протоколу керуючих повідомлень Інтернет (Internet Control Message Protocol - ICMP).

Поле Контрольна сума (Header Checksum) розраховується тільки для заголовка IP-дейтаграми. При кожній зміні полів заголовка проміжними маршрутизаторами контрольна сума заголовка перераховується. Алгоритм розрахунку - доповнення до суми всіх 16-бітових слів заголовка. При обчисленні контрольної суми значення самого поля «Контрольна сума» виставляється в 0.

Поле Опції (IP Options) є необов'язковим і зазвичай не використовується. У ньому можуть зазначатися точний маршрут проходження дейтаграми, дані про безпеку, різні часові позначки і т.д. Поле може мати довільну довжину в межах від 0 до 40 байтів, для вирівнювання розміру дейтаграми по 32-бітної кордоні використовується поле Вирівнювання (Padding). Це поле, наприклад, використовується для доповнення розміру дейтаграми нульовими байтами до мінімального розміру поля даних кадру канального рівня (для Ethernet 64 байта).