IP

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
IP
Название Internet protocol
Уровень (по модели OSI) Сетевой
Семейство TCP/IP
Создан в 1981
Назначение протокола Передача датаграмм между хостами сетей TCP/IP
Спецификация RFC 791
Разработчик Винтон Серф и Кан, Роберт Эллиот
Логотип Викисклада Медиафайлы на Викискладе

Internet Protocol (IP, досл. «межсетевой протокол») — маршрутизируемый протокол сетевого уровня стека TCP/IP. Именно IP стал тем протоколом, который объединил отдельные компьютерные сети во всемирную сеть Интернет. Неотъемлемой частью протокола является адресация сети (см. IP-адрес).

IP объединяет сегменты сети в единую сеть, обеспечивая доставку пакетов данных между любыми узлами сети через произвольное число промежуточных узлов (маршрутизаторов). Он классифицируется как протокол сетевого уровня по сетевой модели OSI. IP не гарантирует надёжной доставки пакета до адресата — в частности, пакеты могут прийти не в том порядке, в котором были отправлены, продублироваться (приходят две копии одного пакета), оказаться повреждёнными (обычно повреждённые пакеты уничтожаются) или не прийти вовсе. Гарантию безошибочной доставки пакетов дают некоторые протоколы более высокого уровня — транспортного уровня сетевой модели OSI — например, TCP, которые используют IP в качестве транспорта.

Фрагментация IP-пакетов

[править | править код]

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

В протоколе предусмотрена возможность запрета фрагментации конкретного пакета. Если такой пакет нельзя передать через сегмент связи целиком, то он уничтожается, а отправителю направляется ICMP-сообщение о проблеме.

В современной сети Интернет используется IP четвёртой версии, также известный как IPv4. В протоколе IP этой версии каждому узлу сети ставится в соответствие IP-адрес длиной 4 октета (4 байта). При этом компьютеры в подсетях объединяются общими начальными битами адреса. Количество этих бит, общее для данной подсети, называется маской подсети (ранее использовалось деление пространства адресов по классам — A, B, C; класс сети определялся диапазоном значений старшего октета и определял число адресуемых узлов в данной сети, сейчас используется бесклассовая адресация).

С 1996 года вводится в эксплуатацию шестая версия протокола — IPv6, которая позволяет адресовать значительно большее количество узлов, чем IPv4. Адресное пространство IPv6 составляет 2128. Такое большое адресное пространство было введено ради иерархичности адресов (это упрощает маршрутизацию). Тем не менее, увеличенное пространство адресов сделает NAT необязательным. Классическое применение IPv6 (по сети /64 на абонента; используется только unicast-адресация) обеспечит возможность использования более 300 млн IP-адресов на каждого жителя Земли. Эта версия отличается повышенной разрядностью адреса, встроенной возможностью шифрования и некоторыми другими особенностями[какими?]. Долгий переход с IPv4 на IPv6 связан с трудоёмкой работой операторов связи и производителей программного обеспечения и не может быть выполнен в один момент. К осени 2013 года в Интернете присутствовало более 14 000 сетей, работающих по протоколу IPv6. Для сравнения, к середине 2010 года в адресном пространстве IPv4 присутствовало более 320 тысяч сетей, но в IPv6 сети гораздо более крупные, нежели в IPv4.

IP-пакет — форматированный блок информации, передаваемый по компьютерной сети, структура которого определена протоколом IP. Соединения компьютерных сетей, не поддерживающие IP-пакеты, такие как традиционные соединения типа «точка—точка» в телекоммуникациях, просто передают данные в виде последовательности байтов, символов или битов. При использовании пакетного форматирования сеть может передавать длинные сообщения более надежно и эффективно.

Версия 4 (IPv4)

[править | править код]
Октет 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Версия IHL Differentiated Services Code Point ECN Длина пакета
4 Идентификатор Флаги Смещение фрагмента
8 Время жизни (TTL) Протокол Контрольная сумма заголовка
12 IP-адрес отправителя
16 IP-адрес получателя
20 Параметры (от 0 до 10 32-битных слов)
  Данные
  • Версия — для IPv4 значение поля должно быть равно 4.
  • IHL — (Internet Header Length) длина заголовка IP-пакета в 32-битных словах (dword). Именно это поле указывает на начало блока данных (англ. payload — полезный груз) в пакете. Минимальное корректное значение для этого поля равно 5.
  • Длина пакета — (Total Length) длина пакета в октетах, включая заголовок и данные. Минимальное корректное значение для этого поля равно 20, максимальное — 65 535.
  • Идентификатор — (Identification) значение, назначаемое отправителем пакета и предназначенное для определения корректной последовательности фрагментов при сборке пакета. Для фрагментированного пакета все фрагменты имеют одинаковый идентификатор.
  • 3 бита флагов. Первый бит должен быть всегда равен нулю, второй бит DF (don’t fragment) определяет возможность фрагментации пакета и третий бит MF (more fragments) показывает, не является ли этот пакет последним в цепочке пакетов.
  • Смещение фрагмента — (Fragment Offset) значение, определяющее позицию фрагмента в потоке данных. Смещение задается количеством восьмибайтовых блоков, поэтому это значение требует умножения на 8 для перевода в байты.
  • Время жизни (TTL) — число маршрутизаторов, которые может пройти этот пакет. При прохождении маршрутизатора это число уменьшается на единицу. Если значение этого поля равно нулю, то пакет должен быть отброшен, и отправителю пакета может быть послано сообщение Time Exceeded (ICMP тип 11 код 0).
  • Протокол — идентификатор сетевого протокола следующего уровня указывает, данные какого протокола содержит пакет, например, TCP, UDP, или ICMP (см. IANA protocol numbers и RFC 1700). В IPv6 называется «Next Header».
  • Контрольная сумма заголовка — (Header Checksum) вычисляется в соответствии с RFC 1071
Позиция в октетах 0 1 2 3
Позиция в битах 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 Версия Класс трафика Метка потока
4 32 Длина полезной нагрузки След. заголовок Число переходов
8 64 IP-адрес отправителя
12 96
16 128
20 160
24 192 IP-адрес получателя
28 224
32 256
36 288
  • Версия — для IPv6 значение поля должно быть равно 6.
  • Класс трафика — определяет приоритет трафика (QoS, класс обслуживания).
  • Метка потока — уникальное число, одинаковое для однородного потока пакетов.
  • Длина полезной нагрузки — длина данных в октетах (заголовок IP-пакета не учитывается).
  • Следующий заголовок — задаёт тип расширенного заголовка (англ. IPv6 extension), который идёт следующим. В последнем расширенном заголовке поле Next header задаёт тип транспортного протокола (TCP, UDP и т. д.) и определяет следующий инкапсулированный уровень.
  • Число переходов — максимальное число маршрутизаторов, которые может пройти пакет. При прохождении маршрутизатора это значение уменьшается на единицу и по достижении нуля пакет отбрасывается.

Примечания

[править | править код]
  • RFC 791 — спецификация IP.
  • RFC 1918 — выделение адресов для частных сетей.
  • RFC 3330 — специальные диапазоны адресов в IPv4.