IPv4 (Internet Protocol version 4)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 02:55, 1 июня 2016.

IPv4 (англ. Internet Protocol version 4) является четвертой версии интернет-протокола (IP). Это один из основных протоколов, основанных на стандартах методов межсетевого взаимодействия в Интернете, и являлся первой версией, развернутой для производства в ARPANET в 1983 году. Он до сих пор направляет большую часть интернет-трафика, несмотря на продолжающееся развертывание протокола преемника, IPv6. IPv4 описана в документе IETF публикации RFC 791 (сентябрь 1981), заменив ранее определение (RFC 760, январь 1980).

Разложение 4-байтного IPv4-адреса в двоичный вид

IPv4 является протоколом без установления соединения для использования в сетях с коммутацией пакетов. Он работает на модели доставки "лучшее из возможного", он не гарантирует доставку, а также обеспечения надлежащей последовательности или избежания дублирования доставки. Эти аспекты, в том числе целостности данных, рассматриваются верхним слоем транспортного протокола, например, протокола управления передачей (TCP).

Адресация

IPv4 использует 32-разрядные (четыре байта) адреса, которые ограничивают адресное пространство до 4294967296 (232) адресов. Это ограничение стимулировало развитие IPv6 в 1990-е годы, который был в коммерческом развертывании с 2006 года.

Из-за спроса растущего Интернета, малое адресное пространство, наконец, иссякло 3 февраля 2011 года. IPv4 резервирует специальные блоки адресов для частных сетей (~ 18 миллионов адресов) и групповых адресов (~ 270 миллионов адресов).

Представления адреса

Форма записи Пример Преобразование из десятичной нотации с точками
Десятичная с точками 192.0.2.235
Шестнадцатеричная с точками 0xC0.0x00.0x02.0xEB Каждый октет преобразуется в шестнадцатеричную форму
Восьмеричная с точками 0300.0000.0002.0353 Каждый октет преобразуется в восьмеричную форму
Шестнадцатеричная 0xC00002EB Конкатенация октетов из шестнадцатеричной нотации с точками
Десятичная 3221226219 32-битное число в десятичной форме
Восьмеричная 030000001353 32-битное число в восьмеричной форме

IPv4-адреса могут быть представлены в любой записи, выражающей 32-битное целое значение. Они чаще всего написаны в десятично-точечном формате, который состоит из четырех октетов адреса, выраженных в индивидуальном порядке из десятичных чисел и разделенных периодами. Стандартные обозначения CIDR (бесклассовая адресация) сочетает в себе адрес с префиксом маршрутизации в компактном формате, в котором за адресом следует символ косой черты (/) и подсчета последовательных единичных битов в префиксе маршрутизации (маска подсети).

Например, IP-адрес 192.0.2.235 представляет 32-битное десятичное число 3221226219, которое в шестнадцатеричном формате является 0xC00002EB. Это также может быть выражено в десятичном формате с точками, как 0xC0.0x00.0x02.0xEB, или в восьмеричных значениях байта как 0300.0000.0002.0353.

Распределение

Первоначально, IP-адрес был разделен на две части: идентификатор сети был самым значительным (высшего порядка) октетом адреса, а идентификатор хоста являлся остальной частью адреса. Поэтому последний также назывался полем остатка (rest field). Это позволило создать более 256 сетей. Скоро это сочли недостаточным. Чтобы преодолеть это ограничение, октет высокого порядка был пересмотрен, чтобы создать набор классов сетей, в системе, которая позже стала известна как классовая адресация. Система определила пять классов, класс A, B, C, D и E. Классы A, B и C имеют разную битовую длину для новой сетевой идентификации. Остальная часть адреса использовалась, как и ранее, для идентификации хоста внутри сети, а это означает, что у каждого класса сети была разная емкость для адресации хостов. Класс D был выделен для многоадресной адресации, а класс Е был зарезервирован для будущих применений. Начиная примерно с 1985 года, были разработаны методы для подразделения IP-сетей. Одним из способов, который доказал, что является гибким, является использование маски подсети переменной длины (VLSM). На основе стандарта IETF RFC 1517, опубликованном в 1993 году, эта система классов была официально заменена Бесклассовой адресацией (CIDR), которая выражает число битов (от наиболее значимых), как, например, /24, а схема на основе классов была дублирована классовой, в отличие от этого. CIDR была разработана, чтобы позволить переразделение любого адресного пространства, так что меньшие или большие блоки адресов могут быть выделены для пользователей. Иерархическая структура, созданная CIDR, управляется организацией Internet Assigned Numbers Authority (IANA) и региональными интернет-реестрами (RIRs). Каждый RIR поддерживает базу данных WHOIS с публичной возможностью поиска, которая содержит информацию о назначениях IP-адреса

Адреса специального назначения

Целевая группа Internet Engineering (IETF) и Internet Assigned Numbers Authority (IANA) поставили ограничение на общее использование различных зарезервированных IP-адресов для специальных целей. Некоторые из них используются для обслуживания таблиц маршрутизации, для многоадресного трафика, эксплуатации в режимах отказа, или для обеспечения адресного пространства для общественных, частных сетей неограниченного пользования.

Зарезервированные адресные блоки
Диапозон Описание Отношение
0.0.0.0/8 Текущая сеть (действует только в качестве адреса источника) RFC 6890
10.0.0.0/8 Частная сеть RFC 1918
100.64.0.0/10 Общее адресное пространство RFC 6598
127.0.0.0/8 Обратная петля(Loopback) RFC 6890
169.254.0.0/16 Локальный адрес канала RFC 3927
172.16.0.0/12 Частная сеть RFC 1918
192.0.0.0/24 Протокол назначений IETF RFC 6890
192.0.2.0/24 TEST-NET-1, документация и образцы RFC 5737
192.88.99.0/24 IPv6-to-IPv4 эстафета(или 6to4-механизм) RFC 3068
192.168.0.0/16 Частная сеть RFC 1918
198.18.0.0/15 Network benchmark tests RFC 2544
198.51.100.0/24 TEST-NET-2, документация и образцы RFC 5737
203.0.113.0/24 TEST-NET-3, документация и образцы RFC 5737
224.0.0.0/4 Групповая адресация (IP multicast) (бывшая сеть класса D) RFC 5771
240.0.0.0/4 Зарезервированные (бывшая сеть класса E) RFC 1700
255.255.255.255 Теле-радиовещание RFC 919

Частные сети

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

Ниже приведены три диапазона, зарезервированых для частных сетей (RFC 1918):

Имя Адресный диапазон Число адресов Классовое описание Наибольший CIDR блок
24-битный блок 10.0.0.0–10.255.255.255 16 777 216 Класс А 10.0.0.0/8
20-битный блок 172.16.0.0–172.31.255.255 1 048 576 Смежный диапазон из 16 блоков класса B 172.16.0.0/12
16-битный блок 192.168.0.0–192.168.255.255 65 536 Смежный диапазон из 256 блоков класса C 192.168.0.0/16
Виртуальные частные сети

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

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

Локально-канальная адресация (Link-local addressing)

RFC 6890 определяет специальный блок адресов 169.254.0.0/16 для локальной адресации. Эти адреса действительны только на ссылках (например, локальное соединение или сегмент сети точка-точка), подключенных к хосту. Эти адреса не маршрутизируемы. Как частные адреса, эти адреса не могут быть источником или пунктом назначения пакетов, проходящих через Интернет. Эти адреса используются в основном для автоконфигурирования адреса (Zeroconf), когда хост не может получить IP-адрес от DHCP сервера или других внутренних методов конфигурирования.

Когда блок адресов был зарезервирован, не существовало никаких стандартов для автонастройки адреса. Microsoft создала реализацию под названием Automatic Private IP Addressing (APIPA), которая была развернута на миллионах машин и стала стандартом де-факто. Много лет спустя, в мае 2005 года IETF определила официальный стандарт RFC 3927 под названием Dynamic Configuration of IPv4 Link-Local Addresses.

Loopback[1]

Сеть класса А 127.0.0.0 (бесклассовая сеть 127.0.0.0/8) резервируется для обратной петли(loopback). IP-пакеты, у которых источник адреса принадлежит к этой сети, никогда не должны появляться за пределами хоста. Принцип работы этой сети расширяется при том, что из интерфейса обратной петли:

  • IP-пакеты, чьи адреса источника и назначения принадлежат к сети (или подсети) одного и того же интерфейса обратной петли, возвращаются к этому интерфейсу;
  • IP-пакеты, чьи адреса источника и назначения принадлежат сетям (или подсетям) различных интерфейсов одного и того же хоста, один из которых - интерфейс loopback, регулярно пересылаются.

Адреса, оканчивающиеся на 0 или 255

Сети с маской подсети, по крайней мере, 24 бита, т.е. сетей класса C классовой адресации, и сети с CIDR окончаниями / 24 к / 32 (255.255.255.0-255.255.255.255) могут не иметь адрес, заканчивающийся на 0 или 255.

Классовая адресация назначила только три возможные маски подсети: Класс A, 255.0.0.0 или / 8; Класс B, 255.255.0.0 или / 16; и класса C, 255.255.255.0 или / 24. Например, в подсети 192.168.5.0/255.255.255.0 (192.168.5.0/24) идентификатор 192.168.5.0 обычно используется для обозначения всей подсети. Во избежание недоразумений в представлении, зарезервирован адрес, заканчивающийся в октете 0.

Широковещательный адрес является адресом, который позволяет отправлять информацию на все интерфейсы в данной подсети, а не конкретной машине. Как правило, широковещательный адрес ищется путем получения битового дополнения маски подсети и выполнения операции побитовое ИЛИ с идентификатором сети. Другими словами, широковещательный адрес — последний адрес в диапазоне адресов подсети. Например, широковещательный адрес для сети 192.168.5.0 является 192.168.5.255. Для сетей размером / 24 или больше, широковещательный адрес всегда заканчивается 255.

Тем не менее, это не означает, что каждый адрес, оканчивающийся на 0 или 255, не может быть использован в качестве адреса хоста. Например, в / 16 подсети 192.168.0.0/255.255.0.0, что эквивалентно диапазону адресов 192.168.0.0-192.168.255.255, широковещательный адрес — 192.168.255.255. Можно использовать следующие адреса для хостов, даже если они заканчиваются 255: 192.168.1.255, 192.168.2.255 и т.д. Кроме того, 192.168.0.0 является идентификатором сети и не должен быть отнесен к интерфейсу. Адреса 192.168 .1.0, 192.168.2.0 и т.д., могут быть назначены, несмотря на окончание с 0.

В прошлом, конфликт между сетевыми адресами и широковещательными адресами возник потому, что некоторые программы использовали нестандартные широковещательных адреса с нулями вместо них.

В сетях меньших, чем / 24, широковещательные адреса не обязательно заканчиваются 255. Например, CIDR подсеть 203.0.113.16/28 имеет широковещательный адрес 203.0.113.31.

Преобразование адреса

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

Перевод между адресами и доменными именами осуществляется с помощью системы доменных имен (DNS), иерархической, распределенной системе присвоения имен, которая позволяет передачу из пространств имен на другие DNS-серверы.

Исчерпание адресного пространства

С 1980-х годов, было очевидно, что пул свободных адресов IPv4 был истощается со скоростью, которая не предполагалась изначально в первоначальном проектировании системы сетевого адреса. Угроза истощения была мотивацией для восстановительных технологий, таких как: сети классовой адресации, методы бесклассовой адресации (CIDR), и преобразование сетевых адресов (NAT). В конечном счете, был создан IPv6, который имеет гораздо больше доступных адресов.

Некоторые рыночные силы ускорили истощение IPv4 адресов:

  • быстро растущее число Интернет-пользователей
  • ADSL модемы, кабельные модемы
  • мобильные устройства — ноутбуки, мобильные телефоны

Некоторые технологии смягчили истощение адресов IPv4:

  • Трансляция сетевых адресов (NAT - Network address translation) — это технология, которая позволяет частной сети использовать один публичный IP-адрес. Она разрешает частные адреса для частной сети.
  • Использование частных сетей
  • Dynamic Host Configuration Protocol (DHCP)
  • Виртуальный хостинг веб-сайтов на основе имени
  • Более строгий контроль со стороны региональных интернет-реестров по распределению адресов по местным Интернет регистрам
  • Перенумерация сети для возвращения крупных блоков адресного пространства, выделенного в первые дни Интернета

Основной пул адресов Интернета, утвержденный IANA, был исчерпан 3 февраля 2011 года, когда последние 5 блоков были выделены 5 региональным интернет-реестрам. Asia-Pacific Network Information Centre (APNIC) был первым региональным интернет-реестром, исчерпавшим свой региональный пул 15 апреля 2011, кроме небольшого количества адресного пространства, зарезервированного для перехода к IPv6, которые будут выделены в рамках гораздо более жесткой политики.

Принятое и стандартное долгосрочное решение заключается в использовании Internet Protocol Version 6. Размер адреса был увеличен в IPv6 до 128 бит, что обеспечивает существенное увеличение объема адресного пространства, что также позволяет улучшить агрегацию маршрута через Интернет и предлагает большие распределения подсетей с минимум 264 хост-адресов для конечных пользователей. Однако хосты IPv4-only не могут напрямую общаться с хостами IPv6-only, поэтому IPv6 в одиночку не обеспечивает немедленное решение проблемы исчерпания IPv4. Переход на IPv6 в стадии разработки, но завершение, как ожидается, займет значительное время.

Структура пакетов

Пакет IP состоит из раздела заголовка и секции данных.

Заголовок

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

IPv4 Header Format
Отступ Октет 0 1 2 3
Октет Бит 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24
0 0 Версия Размер заголовка Differentiated Services Code Point Explicit Congestion Notification Размер пакета (полный)
4 32 Идентификатор Флаги Смещение фрагмента
8 64 Время жизни Протокол Контрольная сумма заголовка
12 96 IP-адрес источника
16 128 IP-адрес назначения
20 160 Опции (если размер заголовка > 5)
20 или 24+ 160 или 192+ Данные
Версия 
Первым полем пакета является версия протокола размером в четыре бита. Для IPv4 это 4.
Размер заголовка (Internet Header Length)
Следующие четыре бита содержат размер заголовка пакета в 32-битных словах. Поскольку число опций не постоянно, указание размера важно для отделения заголовка от данных. Минимальное значение равно 5 (5×32=160 бит, 20 байт), максимальное — 15 (60 байт).
Differentiated Services Code Point (DSCP)
Изначально называлось «тип обслуживания» (Type of Service, ToS), в настоящее время определяется RFC 2474 как «Differentiated Services». Используется для разделения трафика на классы обслуживания, например для установки чувствительному к задержкам трафику, такому как VoIP, большего приоритета.
Указатель перегрузки (Explicit Congestion Notification, ECN) 
Предупреждение о перегрузке сети без потери пакетов. Является необязательной функцией и используется только если оба хоста её поддерживают.
Размер пакета 
16-битный полный размер пакета в байтах, включая заголовок и данные. Минимальный размер равен 20 байтам (заголовок без данных), максимальный — 65535 байт. Хосты должны поддерживать передачу пакетов размером до 576 байт, но современные реализации обычно поддерживают гораздо больший размер. Пакеты большего размера, чем поддерживает канал связи, фрагментируются.
Идентификатор 
Преимущественно используется для идентификации фрагментов пакета, если он был фрагментирован. Существуют эксперименты по его использованию для других целей, таких как добавление информации о трассировке пакета для упрощения отслеживания пути пакета с подделанным адресом источника.
Флаги 
Поле размером три бита содержащее флаги контроля над фрагментацией. Биты, от старшего к младшему, означают:
  • 0: Зарезервирован, должен быть равен 0.В качестве первоапрельской шутки предложен означать злонамеренность пакета (evil bit)
  • 1: Не фрагментировать
  • 2: У пакета ещё есть фрагменты
Если установлен флаг «не фрагментировать», то в случае необходимости фрагментации такой пакет будет уничтожен. Может использоваться для передачи данных хостам, не имеющим достаточных ресурсов для обработки фрагментированных пакетов.
Флаг «есть фрагменты» должен быть установлен в 1 у всех фрагментов пакета, кроме последнего. У нефрагментированных устанавливается в 0 — такой пакет считается собственным последним фрагментом.
Смещение фрагмента 
Поле размером в 13 бит, указывает смещение текущего фрагмента от начала передачи фрагментированного пакета в блоках по 8 байт. Позволяет (213−1)×8=65528 байт смещения, что превышает максимальный размер пакета. Первый фрагмент в последовательности имеет нулевое смещение.
«Время жизни» (Time to Live, TTL) пакета 
Определяет максимальное количество маршрутизаторов на пути следования пакета. Наличие этого параметра не позволяет пакету бесконечно ходить по сети. Каждый маршрутизатор при обработке пакета должен уменьшить значение TTL на единицу. Пакеты, время жизни которых стало равно нулю, уничтожаются, а отправителю посылается сообщение ICMP Time Exceeded. На отправке пакетов с разным временем жизни основана трассировка их пути прохождения (traceroute). Максимальное значение TTL=255. Обычное начальное значение TTL=64 (зависит от ОС).
Протокол 
Указывает, данные какого протокола IP содержит пакет (например, TCP или ICMP). Присвоенные номера протоколов можно найти на сайте IANA.
Контрольная сумма заголовка 
16-битная контрольная сумма, используемая для проверки целостности заголовка. Каждый хост или маршрутизатор сравнивает контрольную сумму заголовка со значением этого поля и отбрасывает пакет, если они не совпадают. Целостность данных IP не проверяет — она проверяется протоколами более высоких уровней (такими, как TCP или UDP), которые тоже используют контрольные суммы.
Поскольку TTL уменьшается на каждом шаге прохождения пакета, сумма тоже должна вычисляться на каждом шаге. Метод пересчета контрольной суммы определён в RFC 1071.
Адрес источника 
32-битный адрес отправителя пакета. Может не совпадать с настоящим адресом отправителя из-за трансляции адресов.
Адрес назначения 
32-битный адрес получателя пакета.
Опции 
За адресом назначения может следовать поле дополнительных опций, но оно используется редко. Размер заголовка в этом случае должен быть достаточным, чтобы вместить все опции (с учетом дополнения до целого числа 32-битных слов). Присвоенные номера опций размещаются на сайте IANA. Если список опций не является концом заголовка, он должен оканчиваться опцией 0x00. Опции имеют следующий формат:
Поле Размер в битах Описание
Копировать 1 Устанавливается в 1 если требуется копировать опции в заголовки всех фрагментов.
Класс опции 2 0 для «управляющих» опций и 2 для опций «измерений и отладки». 1 и 3 зарезервированы.
Номер опции 5 Указывает опцию.
Размер опции 8 Указывает размер опции (с учетом этого поля). Может не указываться для опций без аргументов.
Аргументы опции Переменный Дополнительные данные, используемые опцией.
  • Замечание: Размер заголовка более 5 слов указывает на присутствие опций и необходимость их обработки.
  • Замечание: Поля «копировать», «класс опции» и «номер опции» иногда называют одним восьмибитным полем «тип опции».

Данные

Часть данных пакета не включена в пакет контрольной суммы. Его содержание интерпретируется на основе значения поля заголовка протокола.

Некоторые из общих протоколов для части данных перечислены ниже:

Номер протокола Имя протокола Аббревиатура
1 Internet Control Message Protocol ICMP
2 Internet Group Management Protocol IGMP
6 Transmission Control Protocol TCP
17 User Datagram Protocol UDP
41 IPv6 encapsulation ENCAP
89 Open Shortest Path First OSPF
132 Stream Control Transmission Protocol SCTP

Примечания

  1. Loopback — это термин, который обычно используется для описания методов или процедур маршрутизации электронных сигналов, цифровых потоков данных, или других движущихся сущностей от их источника и обратно к тому же источнику без специальной обработки или модификаций.