Заголовок дейтаграммы состоит из 32-разрядных слов и имеет переменную длину, которая зависит от размера поля “Options”, но всегда кратна 32 битам. За заголовком следуют данные, передаваемые в дейтаграмме.
Ver (4 бита) - версия протокола IP, в настоящий момент используется версия 4, новые разработки имеют номера версий 6-8.
IHL (Internet Header Length) (4 бита) - длина заголовка в 32-битных словах; диапазон допустимых значений от 5 (минимальная длина заголовка, поле “Options” отсутствует) до 15 (т.е. может быть максимум 40 байт опций).
TOS (Type Of Service) (8 бит) - значение поля определяет приоритет дейтаграммы и желаемый тип маршрутизации. Структура байта TOS:
Три бита (“Precedence”) определяют приоритет дейтаграммы:
111 - управление сетью
110 - межсетевое управление
101 - CRITIC-ECP
100 - более чем мгновенно
011 - мгновенно
010 - немедленно
001 - срочно
000 - обычно
Биты D,T,R,C определяют желаемый тип маршрутизации:
D (Delay) - выбор маршрута с минимальной задержкой,
T (Throughput) - выбор маршрута с максимальной пропускной способностью,
R (Reliability) - выбор маршрута с максимальной надежностью,
C (Cost) - выбор маршрута с минимальной стоимостью.
В дейтаграмме может быть установлен только один из битов D,T,R,C. Старший бит байта не используется.
Total Length (16 бит) - длина всей дейтаграммы в октетах, включая заголовок и данные, максимальное значение 65535, минимальное - 21 (заголовок без опций и один октет в поле данных).
ID (Identification) (16 бит), Flags (3 бита), Fragment Offset (13 бит) используются для фрагментации и сборки дейтаграмм и будут подробнее рассмотрены ниже в п. 2.4.1.
TTL (Time To Live) (8 бит) - “время жизни” дейтаграммы. Устанавливается отправителем, измеряется в секундах. Каждый маршрутизатор, через который проходит дейтаграмма, переписывает значение TTL, предварительно вычтя из него время, потраченное на обработку дейтаграммы. Так как в настоящее время скорость обработки данных на маршрутизаторах велика, на одну дейтаграмму тратится обычно меньше секунды, поэтому фактически каждый маршрутизатор вычитает из TTL единицу. При достижении значения TTL=0 дейтаграмма уничтожается, при этом отправителю может быть послано соответствующее ICMP-сообщение. Контроль TTL предотвращает зацикливание дейтаграммы в сети.
Protocol (8 бит) - определяет программу (вышестоящий протокол стека), которой должны быть переданы данные дейтаграммы для дальнейшей обработки.
Header Checksum (16 бит) - контрольная сумма заголовка, пересчитывается всеми маршрутизаторами по пути следования. (16 бит, дополняющие биты в сумме всех 16-битовых слов заголовка)
Options - опции, поле переменной длины. Опций может быть одна, несколько или ни одной. Опции определяют дополнительные услуги модуля IP по обработке дейтаграммы, в заголовок которой они включены. При помощи опций можно задавать маршрутизацию датаграммы от источника(строгое и нестрогое следовани маршруту), требование записи маршрута и временные штампы (используется утилитой traceroute).
Padding - выравнивание заголовка по границе 32-битного слова, если список опций занимает нецелое число 32-битных слов. Поле “Padding” заполняется нулями.