Internet Protocol


1. IP как маршрутизирован протокол.

IP протокол (англ. IP - Internet protocol) - наиболее широко распространенная реализация иерархической схемы сетевой адресации. Используемый в сети Интернет, протокол отвечает за адресацию пакетов, но не отвечает за установление соединений, не является надежным и позволяет реализовать только негарантированную доставку данных. Термин "протокол без установления соединений" (англ. connectionless) означает, что протокол для взаимодействия не требует выделенного канала, как это происходит во время телефонного разговора и не существует процедуры вызова перед началом передачи данных между сетевыми узлами. Протокол IP выбирает наиболее эффективный путь из числа доступных на основе решений, принятых протоколом маршрутизации. Отсутствие надежности и гарантирована доставка не означает, что система работает плохо или ненадежно, а указывает лишь на то, что протокол IP не прилагает никаких усилий, чтобы проверить был пакет доставлен по назначению. Эти функции делегированы протоколам транспортного и высших уровней. Транспортный уровень также отвечает за сборку пакетов в сообщение в нужной последовательности.

Инкапсуляция

Информация, проходя вниз по уровням модели OSI, на каждом уровне определенным образом обрабатывается протоколами этого уровня. На рисунке вы можете видеть, как на сетевом уровне данные инкапсулируются внутрь пакетов, иногда названных дейтаграммами (датаграмма). Протокол IP распознает формат заголовка пакета (адресную часть и другую служебную информацию включительно), но никоим образом не анализирует и не заботится о фактические данные. Он принимает и передает любые данные, переданные протоколами верхних уровней.


2. Пересылка пакетов и коммутация внутри маршрутизатора.

Заголовок и хвост фрейма отбрасываются и заменяются новыми при каждом прохождении пакетом маршрутизатора. Причина в том, что блоки информации второго уровня (фреймы) используются для локальной доставки пакетов, в то время как блоки третьего уровня (пакеты) предназначены для сквозной передачи данных согласно схеме маршрутизации.

Ethernet -фреймы второго уровня предназначены для работы внутри широковещательных доменов с назначенными каждому сетевому устройству MAC-адресами. Фреймы второго уровня других типов, например последовательные двохточкови соединения или Frame relay распределенных сетей (сетей WAN), используют свою собственную схему адресации второго уровня. Принципиальным является то, что независимо от используемой схемы адресации второго уровня, все они разработаны для использования внутри одного широковещательного домена второго уровня. При прохождении через устройство третьего уровня информация второго уровня меняется.

Процессы, выполняемые устройствами третьего уровня, проиллюстрированы на рисунке справа.

Смена пакета в процессе инкапсуляции в маршрутизаторе

С фрейма, что приходит на интерфейс роутера, извлекается MAC-адрес и проверяется, адресован этот пакет непосредственно каком-то узлу или интерфейса, или он является широковещательным (эта процедура выполняется всеми устройствами внутри домена коллизий). В любом из этих случаев пакет будет обработан, в другом - отвергнуто, поскольку он адресован другому узлу в домене коллизий. Таким образом, домен коллизий - распределенный среда передачи данных, в котором устройства работают в режиме конкуренции. На основе значения, хранящегося в поле контрольной суммы, с помощью циклического убыточного кода (Cyclical Redundancy Check - CRC), который был изъят из хвоста полученного фрейма, проверяется были даны повреждены. Если проверка дает положительный результат - фрейм отбрасывается. В случае отрицательного результата, заголовок и хвост фрейма отбрасываются и пакет передается на третий уровень. Далее выполняется проверка, было пакет адресован маршрутизатору, нужна дальнейшая маршрутизация на пути к месту назначения. Пакеты, адресованные роутера в качестве IP-адреса получателя, имеют адрес одного из его интерфейсов. В таких пакетов удаляется заголовок и они передаются на четвертый, транспортный уровень. Если пакет требует маршрутизации, IP-адрес пункта назначения пакета сравнивается с записями в таблице маршрутизации. Если найдено точное соответствие или существует стандартный маршрут - пакет отправляется на интерфейс, который указан в таблице маршрутизации. Когда пакет коммутируется на выходной интерфейс, новое значение CRC добавляется в хвост фрейма и, в зависимости от типа интерфейса ( Ethernet, Frame relay или последовательный), пакету добавляется соответствующий заголовок. После чего фрейм пересылается в другой широковещательный домен на пути до конечного пункта назначения.


3. Структура IP-пакета

Выше мы рассмотрели как пакеты третьего уровня становятся данным второго уровня и инкапсулируются во фреймы. Аналогично, IP-пакеты состоят из данных верхнего уровня и IP-заголовке. По спецификации протокола, пакет должен быть не больше 65535 битов (с заголовком и данными включительно).

  • Версия (Version) - 4-битовое поле, описывает используемую версию протокола IP. Все устройства обязаны использовать протокол IP одной версии, устройство использующее другую версию будет отбрасывать пакеты.
  • Длина IP-заголовка (IP header Length - HLEN) - 4-битовое поле, описывает длину заголовке пакета в 32-битных блоках. Это значение - это полная длина заголовка с учетом двух полей переменной длины.
  • Тип обслуживания (Type of Service - TOS) - 8-битное поле, указывает на степень важности информации, присвоена протоколом верхньго уровня.
  • Общая длина (Total Length) - 16-битное поле, описывает длину пакета в байтах, с заголовком и данными включительно. Для того чтобы вычислить длину блока данных, нужно от полной длины вычесть значение поля HLEN.
  • Идентификация (Identification) - шистнадцятибитове поле, сохраняет целое число, описывающее данный пакет. Это число представляет собой последовательный номер.
  • Флаги (Flags) - 3-битовое поле, в котором два младших бита контролируют фрагментацию пакетов. Первый бит определяет был пакет фрагментирован, а второй является ли этот пакет последним фрагментом в серии фрагментов.
  • Смещение фрагментации (Fragment Offset) - 13-битное поле, помогает собрать вместе фрагменты пакетов. Это поле позволяет использовать 16 битов в сумме для флагов фрагментации.
  • Время жизни (Time-to-Live - TTL) - 8-битное поле - счетчик, в котором хранятся последовательно уменьшающееся значение количества пройденных узлов (роутетив, которые еще ​​иногда в этом случае называют хопамы (hops)) на пути к месту назначения. В случае, когда счетчик пройденных хопов равна нулю - пакет будет отброшен, таким образом предупреждается бесконечная циклическая пересылка пакетов.
  • Протокол (Protocol) - 8-битное поле, что указывает на то, какой протокол верхнего уровня получит пакет, после завершения обработки IP. Например TCP или UDP.
  • Контрольная сумма заголовка (Header Checksum) - 16-битное поле, что помогает проверить целостность заголовке пакета.
  • IP-адрес отправителя (Source IP address) (адресант, Сорс, отправитель) - 32-битное поле, сохраняет IP-адрес узла-отправителя.
  • IP-адрес получателя (Destination IP adress) (адресат, ГОСТ, получатель) - 32-битное поле, хранящее адрес узла назначения (получателя).
  • Опции (Options) - поле переменной длины, что позволяет протоколу IP реализовать поддержку различных опций, в частности средств безопасности.
  • Подложка (Padding) - поле, используется для вставки дополнительных нулей, для обеспечения кратности IP-заголовке 32 битам.
  • Данные (Data) - поле переменной длины (64 Кбит макс.), Сохраняющий информации для верхних уровней.


Биты 0-3 4-7 8-15 16-18 19-23 24-31
Версия HLEN Тип обслуживания Общая длина
Идентификация Флаги Смещение фрагментации
Время жизни Протокол Контрольная сумма заголовка
IP-адрес отправителя
IP-адрес получателя
Опции Приложение
Данные (65535 минус заголовок)
...

IP-пакет состоит из данных протокола верхнего уровня и заголовке, имеет описанную выше структуру. Хотя основной частью заголовке есть адреса отправителя и назначения, именно другие части заголовке делают протокол таким надежным и гибким. Информация, хранящаяся в полях заголовка задает данные пакета и предназначена для протоколов верхних уровней.