Internet Protocol или IP (англ. internet protocol – межсетевой протокол) – маршрутизируемый сетевой протокол, протокол сетевого уровня семейства («стека») TCP/IP.
Протокол IP (RFC 791) используется для негарантированной доставки данных, разделяемых на так называемые пакеты от одного узла сети к другому. Это означает, что на уровне этого протокола (третий уровень сетевой модели OSI) не даётся гарантий надёжной доставки пакета до адресата. В частности, пакеты могут прийти не в том порядке, в котором были отправлены, продублироваться (когда приходят две копии одного пакета; в реальности это бывает крайне редко), оказаться повреждёнными (обычно повреждённые пакеты уничтожаются) или не прибыть вовсе. Гарантию безошибочной доставки пакетов дают протоколы более высокого (транспортного уровня) сетевой модели OSI – например, TCP – которые используют IP в качестве транспорта.
В современной сети Интернет используется IP четвёртой версии, также известный как IPv4. В протоколе IP этой версии каждому узлу сети ставится в соответствие IP-адрес длиной 4 октета (4 байта). При этом компьютеры в подсетях объединяются общими начальными битами адреса. Количество этих бит, общее для данной подсети, называется маской подсети (ранее использовалось деление пространства адресов по классам – A, B, C; класс сети определялся диапазоном значений старшего октета и определял число адресуемых узлов в данной сети, сейчас используется бесклассовая адресация).
В настоящее время введена в эксплуатацию шестая версия протокола – IPv6, которая позволяет адресовать значительно большее количество узлов, чем IPv4. Эта версия отличается повышенной разрядностью адреса, встроенной возможностью шифрования и некоторыми другими особенностями. Переход с IPv4 на IPv6 связан с трудоёмкой работой операторов связи и производителей программного обеспечения и не может быть выполнен одномоментно. На середину 2010 года в Интернете присутствовало более 3000 сетей, работающих по протоколу IPv6. Для сравнения, на то же время в адресном пространстве IPv4 присутствовало более 320 тысяч сетей, но в IPv6 сети гораздо более крупные, нежели в IPv4.
IP-пакет – форматированный блок информации, передаваемый по вычислительной сети. Соединения вычислительных сетей, которые не поддерживают пакеты, такие как традиционные соединения типа «точка-точка» в телекоммуникациях, просто передают данные в виде последовательности байтов, символов или битов. При использовании пакетного форматирования сеть может передавать длинные сообщения более надежно и эффективно.
Формат IP-пакетов для IPv4 и IPv6 приведены на рисунках 9 и 10.
Рис. 9. Формат IP-пакетов для версии IPv4
На рисунке используются следующие обозначения:
Версия – для IPv4 значение поля должно быть равно 4.
Длина заголовка IP-пакета в 32-битных словах. Именно это поле указывает на начало блока данных в пакете. Минимальное корректное значение для этого поля равно 5.
Идентификатор – значение, назначаемое отправителем пакета и предназначенное для определения корректной последовательности фрагментов при сборке датаграммы. Для фрагментированного пакета все фрагменты имеют одинаковый идентификатор.
3 бита флагов. Первый бит должен быть всегда равен нулю, второй бит определяет возможность фрагментации пакета и третий бит показывает, не является ли этот пакет последним в цепочке пакетов.
Смещение фрагмента – значение, определяющее позицию фрагмента в потоке данных.
Протокол – идентификатор интернет-протокола следующего уровня
Полная длина IP-пакета (от версии до IP-адреса получателя) составляет 20 байт (октет) или 160 бит.
Рис. 10. Формат IP-пакетов для версии IPv6
На рисунке используются следующие обозначения:
Версия – для IPv6 значение поля должно быть равно 6.
Класс трафика – определяет приоритет трафика.
Метка потока – уникальное число, одинаковое для однородного потока пакетов.
Длина полезной нагрузки – длина данных (заголовок IP-пакета не учитывается).
Следующий заголовок – определяет следующий протокол.
Число переходов — максимальное число маршрутизаторов, которые может пройти пакет. При прохождении маршрутизатора это значение уменьшается на единицу и по достижении нуля пакет отбрасывается.