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

IP-дейтаграмма состоит из заголовка (часто 20 байт) и поля данных, максимальная длина пакета – заголовок + данные составляет 65535 байт, минимальная – определяется минимальным размером переносящего IP-пакет кадра канального уровня (для Ethernet 64 байта). Структура IP-пакета приведена на рис. 3.13.

                 
Номер версии Длина заголовка Тип сервиса Общая длина пакета  
Идентификатор пакета Флаги 3 бита Смещенные флаги 13 бит  
Время жизни Протокол верхнего уровня Контрольная сумма заголовка  
IP-адрес отправителя  
IP-адрес получателя  
Опции и выравнивание  
Данные  
   
Поле «Тип сервиса»   Поле «Флаги»
                       
Приоритет Задержка Пропускная способность Надежность доставки Резерв (0)   Резерв (0) Do not Fragment More Fragment
                 
Поле «Протокол верхнего уровня»
Значение поля 0=00Н 1=01Н 2=02Н 4=04Н 6=06Н 8=08Н 17=11Н 88=58Н 89=59Н
Протокол Резерв ICMP IGMP IP TCP EGP UDP IGRP OSPF
                                           

Рис. 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 бит - DFDo not Fragment в случае установки в 1 запрещает фрагментацию пакета, 2 бит – MFMore Fragments в случае установки в 1 свидетельствует о том, что данная дейтаграмма является промежуточным (не последним) фрагментом.

В поле Смещение фрагмента (Fragment Offset) указывается смещение в 8-байтных блоках поля данных этого пакета-фрагмента от начала общего поля данных исходного пакета, подвергнутого фрагментации (8 байт х 213 = 216 – максимальный размер пакета). Первый фрагмент имеет значение этого поля, равное 0. На рис. 3.14 приведен пример фрагментации дейтаграммы длиной 472 байта при маршрутизации ее в сеть с MTU = 280 байт.

Идентификаторы исходного пакета и фрагментов одинаковы (111). Значение смещения фрагмента для первого фрагмента равно нулю. Длина поля данных первого фрагмента (рис. 3.14 б) = 276 байт (Общая длина пакета) – 20 байт (Длина заголовка) = 256 байт/8 = 32 8-байтовых блока, что и указано в поле Смещение фрагмента второго фрагмента. Значение флагов для первого фрагмента = 1 (001), то есть указывается, что этот фрагмент не последний. Для второго фрагмента значение флагов = 0 (000), то есть фрагмент последний.

         
         
Номер версии = 4 Длина заголовка = 5 Тип сервиса Общая длина пакета = 472
Идентификатор пакета = 111 Флаги 3 бита = 0 Смещение фрагмента 13 бит = 0
Время жизни = Протокол верхнего уровня = 6 Контрольная сумма заголовка
IP-адрес отправителя
IP-адрес получателя
  а)  
Номер версии = 4 Длина заголовка = 5 Тип сервиса Общая длина пакета = 276
Идентификатор пакета = 111 Флаги 3 бита = 1 Смещение фрагмента 13 бит = 0
Время жизни = Протокол верхнего уровня = 6 Контрольная сумма заголовка
IP-адрес отправителя
IP-адрес получателя
  б)  
Номер версии = 4 Длина заголовка = 5 Тип сервиса Общая длина пакета = 216
Идентификатор пакета = 111 Флаги 3 бита = 1 Смещение фрагмента 13 бит = 32
Время жизни = Протокол верхнего уровня = 6 Контрольная сумма заголовка
IP-адрес отправителя
IP-адрес получателя

в)

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

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

Поле Время жизни (Time To LiveTTL) указывает предельный срок времени, в течение которого дейтаграмма может перемещаться по сети. Это время задается отправителем дейтаграммы в секундах. При пересылке пакета через маршрутизатор значение TTL уменьшается на 1 (даже если время передачи через маршрутизатор менее 1 секунды). Поэтому иногда говорят, что это время измеряется в количестве переходов через маршрутизаторы (hops). При достижении этим значением 0 пакет далее не передается.

Поле Протокол верхнего уровня (Protocol) содержит идентификатор протокола, переносящего информацию, размещенную в поле данных IP-пакета. Наиболее популярными идентификаторами являются 06Н – для протокола управления транспортом (Transport Control ProtocolTCP), 11Н – для протокола пользовательских дейтограмм (User Datagram ProtocolUDP) и 01Н – для протокола управляющих сообщений Интернет (Internet Control Message ProtocolICMP).

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

Поля IP-адрес отправителя (Source IP Address) и IP-адрес получателя (Destination IP Address) содержат соответствующие адреса.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: