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

⚡ Умное резюме

Заголовок IP-пакета — это метаданные, размещаемые в начале каждого IP-пакета и содержащие такие поля, как версия, длина заголовка, общая длина, время жизни, протокол, контрольная сумма, а также адреса источника и назначения, которые маршрутизаторы считывают для доставки данных.

  • 🧭 Цель: В заголовке IP-пакета хранятся данные о маршрутизации и доставке, благодаря чему каждый пакет достигает нужного пункта назначения в любой сети.
  • 📏 Размер: Длина заголовка IPv4 варьируется от 20 до 60 байт и определяется полем "Длина заголовка интернета".
  • 🧱 Ключевые области: К основным полям относятся: версия, международное гуманитарное право, тип услуги, общая продолжительность, время жизни (TTL), протокол, контрольная сумма и адреса.
  • 🔀 Фрагментация: Идентификация, флаги и смещение фрагмента позволяют правильно разделять и собирать большие датаграммы.
  • 🆚 IPv4 против IPv6: В IPv6 переменный заголовок заменяется фиксированным 40-байтовым заголовком, а поле контрольной суммы удаляется.
  • 🤖 Помощь ИИ: Анализаторы IP-пакетов на основе искусственного интеллекта автоматически анализируют заголовки IP-пакетов, выявляют аномалии и ускоряют поиск и устранение неисправностей.

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

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

Заголовок IP-пакета — это метаинформация в начале IP-пакета. Он отображает такую ​​информацию, как версия IP-пакета, длина пакета, источник и получатель.

Заголовок IPv4 имеет длину от 20 до 60 байт и содержит информацию, необходимую для маршрутизации и доставки. Он состоит из таких полей, как Version, Header Length, Total Length, Identification, Flags, Checksum, исходный IP-адрес и целевой IP-адрес. Вместе эти поля предоставляют необходимые данные для transmit надежно передает пакет от одного хоста к другому.

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

На приведенной ниже диаграмме показан полный формат заголовка IPv4, при этом каждое поле отображено в своем правильном положении и с соответствующей разрядностью:

Диаграмма формата заголовка пакета IPv4, показывающая все поля и их битовые позиции.

Ниже перечислены различные компоненты/поля заголовка IP-пакета:

  • Версия: Первое поле заголовка IP-пакета — это 4-битный индикатор версии. В IPv4 значение этих четырех битов установлено на 0100, что в двоичном представлении означает 4. Если маршрутизатор не поддерживает указанную версию, пакет отбрасывается.
  • Длина интернет-заголовка: Длина заголовка интернета (Internet Header Length, сокращенно IHL) составляет 4 бита. Также она называется HELEN (Header Length). Этот компонент IP показывает, сколько 32-битных слов содержится в заголовке.
  • Тип обслуживания: Такой вид услуг также называется дифференцированными услугами. Code Точка, или DSCP. Это поле определяет характеристики, связанные с качеством обслуживания при потоковой передаче данных или VoIP-звонках. Первые 3 бита — это биты приоритета. Оно также определяет, как следует обрабатывать дейтаграмму.
  • Общая длина: Общая длина измеряется в байтах. Минимальный размер IP-дейтаграммы составляет 20 байт, а максимальный — 65 535 байт. Для расчета размера полезной нагрузки можно использовать функции HELEN и Total Length. Все хосты должны уметь читать дейтаграммы размером 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 (Internet Header Length) больше 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 Единица измерения (МТУ).

Заголовки IPv4 и IPv6

Заголовок IPv6 был переработан, чтобы стать проще и быстрее в обработке, чем заголовок IPv4. Он использует фиксированную длину и выносит редко используемые параметры в отдельные расширенные заголовки, что позволяет маршрутизаторам пересылать пакеты на скорости линии. В таблице ниже приведено сравнение полей двух заголовков:

Характеристика Заголовок IPv4 Заголовок IPv6
Размер заголовка 20–60 байт (переменное значение) 40 байта (фиксированный размер)
Количество полей 13 полей плюс опции 8 полей
Длина адреса 32-битный источник и получатель 128-битный источник и получатель
Контрольная сумма заголовка Представить удален
Поля фрагментации В базовом заголовке (Идентификация, Флаги, Смещение) Перенесено в заголовок расширения фрагмента.
Параметры Размещено внутри заголовка Передаётся в заголовках расширения.
Поле длины Общая длина (заголовок плюс данные) Длина полезной нагрузки (только полезная нагрузка)

Поскольку в IPv6 отбрасываются контрольная сумма и параметры переменной длины, его заголовок содержит меньше полей и может обрабатываться аппаратно без пересчета на каждом этапе передачи.

Почему заголовок IP важен

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

  • Маршрутизация: Адрес назначения указывает каждому маршрутизатору, куда следует переслать пакет, а адрес источника позволяет получать ответы и сообщения об ошибках.
  • Предотвращение зацикливания: Поле «Время жизни» уменьшается на каждом этапе передачи, поэтому неправильно маршрутизированный пакет отбрасывается, вместо того чтобы бесконечно циркулировать в интернете.
  • Доставка в соответствии с надлежащим протоколом: Поле «Протокол» указывает принимающему хосту, следует ли передавать полезную нагрузку по протоколу TCP, UDP или другому протоколу.
  • Integrity и повторная сборка: Контрольная сумма защищает заголовок от повреждения, а поля «Идентификация», «Флаги» и «Смещение фрагмента» позволяют восстановить фрагментированную датаграмму в правильном порядке.

Для сетевых инженеров чтение этих полей в TCP / IP Захват трафика часто является самым быстрым способом диагностики потерянных пакетов, петель маршрутизации и неправильной конфигурации. IP-адреса.

Часто задаваемые вопросы (FAQ)

Длина заголовка (IHL) измеряет только заголовок в 32-битных словах и варьируется от 20 до 60 байт. Общая длина измеряет всю датаграмму — заголовок плюс данные — в байтах, до 65 535.tracСопоставление одного с другим позволяет определить размер полезной нагрузки.

Фрагментация разделяет датаграмму, размер которой превышает максимальный размер канала связи. Transmission Разделите пакет на более мелкие части. Поля «Идентификация», «Флаги» и «Смещение фрагмента» позволяют получателю собрать части в правильном порядке. Это происходит всякий раз, когда пакет должен пройти через сеть с меньшим MTU.

Заголовок IPv4 содержит 13 фиксированных полей — Version, IHL, Type of Service, Total Length, Identification, Flags, Fragment Offset, TTL, Protocol, Checksum, Source Address, Destination Address, а также необязательное поле Options. Раздел Data, который следует далее, представляет собой полезную нагрузку, а не поле заголовка.

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

Когда TTL достигает нуля, маршрутизатор отбрасывает пакет и отправляет источнику сообщение ICMP "Time Exceeded". Это предотвращает задержку пакетов.ping Вечный цикл маршрутизации. traceroute Этот инструмент использует данное поведение для построения карты каждого участка пути.

Поле «Протокол» определяет, какой протокол верхнего уровня должен принимать полезную нагрузку в пункте назначения. Обычно используются значения 6 для TCP, 17 для UDP и 1 для ICMP. Принимающий хост считывает это число для передачи данных соответствующему обработчику.

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

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

Подведем итог этой публикации следующим образом: