Интернет-протокол версии 4 ( IPv4 ) — четвертая версия Интернет -протокола (IP). Это один из основных протоколов основанных на стандартах методов межсетевого взаимодействия в Интернете и других сетях с коммутацией пакетов . IPv4 был первой версией, развернутой для производства в SATNET в 1982 году и в ARPANET в январе 1983 года. Он до сих пор используется для маршрутизации большей части интернет-трафика , [1] даже несмотря на продолжающееся развертывание Интернет-протокола версии 6 (IPv6), [2 ] его преемник.
IPv4 использует 32-битное адресное пространство, которое обеспечивает 4 294 967 296 (2 32 ) уникальных адресов, но большие блоки зарезервированы для специальных сетевых целей. [3] [4]
Интернет-протокол версии 4 описан в публикации IETF RFC 791 (сентябрь 1981 г.), заменяющей более раннее определение от января 1980 г. (RFC 760). В марте 1982 года Министерство обороны США приняло решение о выборе пакета интернет-протоколов (TCP/IP) в качестве стандарта для всех военных компьютерных сетей . [5]
Интернет-протокол — это протокол, который определяет и обеспечивает межсетевое взаимодействие на интернет-уровне набора интернет-протоколов. По сути, это формирует Интернет. Он использует систему логической адресации и выполняет маршрутизацию , то есть пересылку пакетов от хоста-источника к следующему маршрутизатору, который находится на один шаг ближе к предполагаемому хосту назначения в другой сети.
IPv4 — это протокол без установления соединения , который работает по модели доставки с максимальными усилиями , поскольку он не гарантирует доставку, а также не обеспечивает правильную последовательность или предотвращение дублирования доставки. Эти аспекты, включая целостность данных, решаются транспортным протоколом верхнего уровня , таким как протокол управления передачей (TCP).
IPv4 использует 32-битные адреса, что ограничивает адресное пространство 4 294 967 296 (2 32 ) адресами.
IPv4 резервирует специальные блоки адресов для частных сетей (~18 миллионов адресов) и групповых адресов (~270 миллионов адресов).
Адреса IPv4 могут быть представлены в любой записи, выражающей 32-битное целое значение. Чаще всего они записываются в десятично-точечной системе счисления , которая состоит из четырех октетов адреса, выраженных индивидуально десятичными числами и разделенных точками .
Например, IP-адрес, разделенный четырьмя точками на рисунке ( 172.16.254.1 ), представляет собой 32-битное десятичное число 2886794753, которое в шестнадцатеричном формате равно 0xAC10FE01.
Нотация CIDR объединяет адрес с его префиксом маршрутизации в компактном формате, в котором за адресом следует косая черта (/) и количество ведущих последовательных битов 1 в префиксе маршрутизации (маске подсети).
Другие представления адресов широко использовались, когда практиковалась классовая сеть . Например, адрес обратной связи 127.0.0.1 обычно записывался как 127.1 , учитывая, что он принадлежит сети класса A с восемью битами для маски сети и 24 битами для номера хоста. Когда в адресе было указано менее четырех чисел в точечной записи, последнее значение рассматривалось как целое число из такого количества байтов, которое требуется для заполнения адреса до четырех октетов. Таким образом, адрес 127.65530 эквивалентен 127.0.255.250 .
В исходной версии IPv4 IP-адрес был разделен на две части: идентификатор сети представлял собой самый старший октет адреса, а идентификатор хоста — остальную часть адреса. Последнее еще называли полем отдыха . Эта структура позволяла использовать максимум 256 сетевых идентификаторов, что было быстро признано недостаточным.
Чтобы преодолеть это ограничение, в 1981 году был переопределен старший октет адреса для создания сетевых классов в системе, которая позже стала известна как классовая сеть. Пересмотренная система определила пять классов. Классы A, B и C имели разную длину бит для идентификации сети. Остальная часть адреса, как и раньше, использовалась для идентификации хоста в сети. Из-за разных размеров полей в разных классах каждый класс сети имел разную способность адресации хостов. В дополнение к трем классам адресации хостов класс D был определен для многоадресной адресации, а класс E был зарезервирован для будущих приложений.
Разделение существующих классовых сетей на подсети началось в 1985 году с публикацией RFC 950. Это разделение стало более гибким с введением масок подсети переменной длины (VLSM) в RFC 1109 в 1987 году. В 1993 году на основе этой работы был принят RFC 1517. представила бесклассовую междоменную маршрутизацию (CIDR) [6] , которая выражала количество битов (начиная со старшего ) как, например, /24 , а схема на основе классов , напротив, была названа классовой . CIDR был разработан, чтобы разрешить перераспределение любого адресного пространства, чтобы пользователям можно было выделять меньшие или большие блоки адресов. Иерархическая структура, созданная CIDR, управляется Управлением по присвоению номеров Интернета (IANA) и региональными реестрами Интернета (RIR). Каждый RIR поддерживает общедоступную базу данных WHOIS , которая предоставляет информацию о присвоении IP-адресов.
Инженерная группа Интернета (IETF) и IANA запретили общее использование различных зарезервированных IP-адресов для специальных целей. [4] В частности, эти адреса используются для многоадресного трафика и для предоставления адресного пространства для неограниченного использования в частных сетях.
Из примерно четырех миллиардов адресов, определенных в IPv4, около 18 миллионов адресов в трех диапазонах зарезервированы для использования в частных сетях. Адреса пакетов в этих диапазонах не маршрутизируются в общедоступном Интернете; они игнорируются всеми общедоступными маршрутизаторами. Таким образом, частные хосты не могут напрямую взаимодействовать с общедоступными сетями, но для этой цели требуется преобразование сетевых адресов на шлюзе маршрутизации.
Поскольку две частные сети, например два филиала, не могут напрямую взаимодействовать через общедоступный Интернет, эти две сети должны быть соединены через Интернет через виртуальную частную сеть (VPN) или IP-туннель , который инкапсулирует пакеты, включая их заголовки, содержащие частные адреса на уровне протокола во время передачи по общедоступной сети. Кроме того, инкапсулированные пакеты могут быть зашифрованы для передачи по общедоступным сетям для защиты данных.
RFC 3927 определяет специальный блок адреса 169.254.0.0/16 для локальной адресации. Эти адреса действительны только для канала (например, сегмента локальной сети или соединения «точка-точка»), напрямую подключенного к хосту, который их использует. Эти адреса не маршрутизируются. Как и частные адреса, эти адреса не могут быть источником или пунктом назначения пакетов, проходящих через Интернет. Эти адреса в основном используются для автоматической настройки адреса ( Zeroconf ), когда хост не может получить IP-адрес от DHCP-сервера или других методов внутренней настройки.
Когда блок адресов был зарезервирован, стандартов автоконфигурации адресов не существовало. Microsoft создала реализацию под названием « Автоматическая частная IP-адресация» (APIPA), которая была развернута на миллионах компьютеров и стала стандартом де-факто . Много лет спустя, в мае 2005 года, IETF определил формальный стандарт в RFC 3927, озаглавленный « Динамическая конфигурация локальных адресов каналов IPv4» .
Сеть класса A 127.0.0.0 (бесклассовая сеть 127.0.0.0/8 ) зарезервирована для обратной связи . IP-пакеты, исходные адреса которых принадлежат этой сети, никогда не должны появляться за пределами хоста. Пакеты, полученные на интерфейсе без обратной связи с адресом источника или назначения обратной связи, должны быть отброшены.
Первый адрес в подсети используется для идентификации самой подсети. В этом адресе все биты хоста равны 0 . Во избежание двусмысленности представления этот адрес зарезервирован. [17] В последнем адресе все биты хоста установлены в 1 . Он используется как локальный широковещательный адрес для одновременной отправки сообщений всем устройствам в подсети. Для сетей размером / 24 или больше широковещательный адрес всегда заканчивается на 255.
Например, в подсети 192.168.5.0/24 ( маска подсети 255.255.255.0 ) идентификатор 192.168.5.0 используется для обозначения всей подсети. Широковещательный адрес сети — 192.168.5.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 является идентификатором сети и не должен назначаться интерфейсу. [18] : 31 Адреса 192.168.1.0 , 192.168.2.0 и т. д. могут быть назначены, несмотря на то, что они заканчиваются на 0.
В прошлом конфликт между сетевыми адресами и широковещательными адресами возникал из-за того, что некоторые программы использовали нестандартные широковещательные адреса с нулями вместо единиц. [18] : 66
В сетях меньше / 24 широковещательные адреса не обязательно заканчиваются на 255. Например, подсеть CIDR 203.0.113.16/28 имеет широковещательный адрес 203.0.113.31 .
В частном случае сеть / 31 рассчитана всего на два хоста. Эти сети обычно используются для соединений «точка-точка». Для этих сетей не существует идентификатора сети или широковещательного адреса. [19]
Хосты в Интернете обычно известны по именам, например, www.example.com, а не по IP-адресу, который используется для маршрутизации и идентификации сетевого интерфейса. Использование доменных имен требует их перевода, называемого разрешением , в адреса и наоборот. Это аналогично поиску номера телефона в телефонной книге по имени получателя.
Преобразование между адресами и доменными именами выполняется системой доменных имен (DNS), иерархической распределенной системой именования, которая позволяет делегировать пространства имен другим DNS-серверам.
Ненумерованный канал «точка-точка » (PtP), также называемый транзитным каналом, — это канал, который не имеет связанного с ним номера IP-сети или подсети, но все же имеет IP-адрес. Впервые представленный в 1993 году, [20] [21] [22] [23] Фил Карн из Qualcomm считается первоначальным разработчиком.
Целью транзитного канала является маршрутизация датаграмм . Они используются для освобождения IP-адресов из ограниченного пространства IP-адресов или для упрощения управления назначением IP и настройкой интерфейсов. Раньше для каждого канала необходимо было выделить подсеть / 31 или / 30 , используя 2 или 4 IP-адреса для каждого канала «точка-точка». Если канал не пронумерован, используется идентификатор маршрутизатора — один IP-адрес, заимствованный из определенного (обычно Loopback ) интерфейса. Один и тот же идентификатор маршрутизатора может использоваться на нескольких интерфейсах.
Одним из недостатков ненумерованных интерфейсов является то, что их сложнее проводить удаленное тестирование и управление.
В 1980-х годах стало очевидно, что пул доступных адресов IPv4 истощается со скоростью, которая изначально не предполагалась в первоначальном проекте сети. [24] К основным рыночным силам, ускорившим истощение адресов, относилось быстро растущее число пользователей Интернета, которые все чаще использовали мобильные вычислительные устройства, такие как портативные компьютеры , персональные цифровые помощники (КПК) и смартфоны с услугами передачи данных по IP. Кроме того, высокоскоростной доступ в Интернет основывался на постоянно включенных устройствах. Угроза истощения побудила к внедрению ряда лечебных технологий, таких как:
К середине 1990-х годов NAT широко использовался в системах поставщиков доступа к сети, наряду со строгой политикой распределения ресурсов в зависимости от использования в региональных и местных интернет-регистратурах.
Пул первичных адресов Интернета, поддерживаемый IANA, был исчерпан 3 февраля 2011 года, когда последние пять блоков были выделены пяти RIR . [25] [26] APNIC была первой RIR, исчерпавшей свой региональный пул 15 апреля 2011 года, за исключением небольшого объема адресного пространства, зарезервированного для технологий перехода на IPv6, которое должно быть выделено в соответствии с ограниченной политикой. [27]
Долгосрочным решением проблемы исчерпания адресов стала спецификация в 1998 году новой версии интернет-протокола IPv6 . [28] Он обеспечивает значительно увеличенное адресное пространство, а также позволяет улучшить агрегацию маршрутов в Интернете и предлагает конечным пользователям выделение больших подсетей, состоящих как минимум из 264 адресов хостов. Однако IPv4 несовместим напрямую с IPv6, поэтому хосты, поддерживающие только IPv4, не могут напрямую взаимодействовать с хостами, поддерживающими только IPv6. После прекращения эксплуатации экспериментальной сети 6bone , начавшейся в 2004 году, в 2006 году началось постоянное официальное развертывание IPv6. [29] Ожидается, что завершение развертывания IPv6 займет значительное время, [30] поэтому необходимы технологии промежуточного перехода, чтобы разрешить хостам для участия в сети Интернет, используя обе версии протокола.
IP- пакет состоит из раздела заголовка и раздела данных. IP-пакет не имеет контрольной суммы данных или какого-либо другого нижнего колонтитула после раздела данных. Обычно канальный уровень инкапсулирует IP-пакеты в кадры с нижним колонтитулом CRC, который обнаруживает большинство ошибок. Многие протоколы транспортного уровня, передаваемые по IP, также имеют собственную проверку ошибок. [31]
Заголовок пакета IPv4 состоит из 14 полей, из которых 13 являются обязательными. 14-е поле является необязательным и имеет удачное название: options. Поля в заголовке упаковываются старшим байтом первым ( сетевой порядок байтов ), а для диаграммы и обсуждения считается, что старшие биты идут первыми ( нумерация бит MSB 0 ). Самый старший бит имеет номер 0, поэтому поле версии фактически находится, например, в четырех старших битах первого байта.
Полезная нагрузка пакета не включается в контрольную сумму. Его содержимое интерпретируется на основе значения поля заголовка протокола.
Список номеров IP-протоколов содержит полный список типов протоколов полезной нагрузки. Некоторые из распространенных протоколов полезной нагрузки включают в себя:
Интернет-протокол обеспечивает передачу трафика между сетями. Проект позволяет использовать сети различной физической природы; он не зависит от базовой технологии передачи, используемой на канальном уровне. Сети с разным оборудованием обычно различаются не только скоростью передачи, но и максимальным блоком передачи (MTU). Когда одна сеть хочет передать дейтаграммы в сеть с меньшим MTU, она может фрагментировать свои дейтаграммы. В IPv4 эта функция была размещена на уровне Интернета и выполняется на маршрутизаторах IPv4, что ограничивает подверженность хостов этим проблемам.
Напротив, IPv6 , следующее поколение Интернет-протокола, не позволяет маршрутизаторам выполнять фрагментацию; хосты должны выполнить обнаружение Path MTU перед отправкой дейтаграмм.
Когда маршрутизатор получает пакет, он проверяет адрес назначения и определяет используемый исходящий интерфейс и MTU этого интерфейса. Если размер пакета больше, чем MTU, а бит «Не фрагментировать» (DF) в заголовке пакета установлен на 0, маршрутизатор может фрагментировать пакет.
Маршрутизатор делит пакет на фрагменты. Максимальный размер каждого фрагмента равен исходящему MTU минус размер IP-заголовка (минимум 20 байт; максимум 60 байт). Маршрутизатор помещает каждый фрагмент в отдельный пакет, причем в каждый пакет фрагментов вносятся следующие изменения:
Например, для MTU размером 1500 байт и размера заголовка 20 байт смещения фрагмента будут кратны (0, 185, 370, 555, 740 и т. д.).
Возможно, что пакет фрагментируется на одном маршрутизаторе, а фрагменты фрагментируются на другом маршрутизаторе. Например, пакет размером 4520 байт, включая 20-байтовый IP-заголовок, фрагментируется в канале на два пакета с MTU 2500 байт:
Общий размер данных сохраняется: 2480 байт + 2020 байт = 4500 байт. Смещения: и .
При пересылке на канал с MTU 1500 байт каждый фрагмент фрагментируется на два фрагмента:
Опять же, размер данных сохраняется: 1480 + 1000 = 2480 и 1480 + 540 = 2020.
Также в этом случае бит More Fragments остается 1 для всех пришедших с 1 фрагментов, а для последнего пришедшего фрагмента он работает как обычно, то есть бит MF устанавливается в 0 только в последнем. И, конечно же, поле «Идентификация» продолжает иметь одно и то же значение во всех перефрагментированных фрагментах. Таким образом, даже если фрагменты повторно фрагментируются, получатель знает, что изначально все они начались из одного и того же пакета.
Последнее смещение и последний размер данных используются для расчета общего размера данных: .
Получатель знает, что пакет является фрагментом, если выполняется хотя бы одно из следующих условий:
Получатель идентифицирует совпадающие фрагменты, используя адреса источника и назначения, идентификатор протокола и поле идентификации. Получатель повторно собирает данные из фрагментов с одинаковым идентификатором, используя как смещение фрагмента, так и флаг большего количества фрагментов. Когда получатель получает последний фрагмент, у которого флаг «больше фрагментов» установлен на 0, он может вычислить размер исходной полезной нагрузки данных, умножив смещение последнего фрагмента на восемь и добавив размер данных последнего фрагмента. В данном примере это вычисление было байтами. Когда у получателя есть все фрагменты, их можно собрать в правильной последовательности в соответствии со смещениями, чтобы сформировать исходную дейтаграмму.
IP-адреса не привязаны каким-либо постоянным образом к сетевому оборудованию, и действительно, в современных операционных системах сетевой интерфейс может иметь несколько IP-адресов. Чтобы правильно доставить IP-пакет хосту назначения по каналу, хостам и маршрутизаторам необходимы дополнительные механизмы для установления связи между аппаратным адресом [b] сетевых интерфейсов и IP-адресами. Протокол разрешения адресов (ARP) выполняет преобразование IP-адреса в аппаратный для IPv4. Кроме того, часто необходима обратная корреляция. Например, если адрес не настроен заранее администратором, когда IP-хост загружается или подключается к сети, ему необходимо определить свой IP-адрес. Протоколы для таких обратных корреляций включают протокол динамической конфигурации хоста (DHCP), протокол начальной загрузки (BOOTP) и, реже, обратный ARP .
Эта статья была адаптирована из следующего источника по лицензии CC BY 4.0 (2022 г.): Мишель Бакни; Сандра Ханбо (9 декабря 2022 г.). «Обзор Интернет-протокола версии 4 (IPv4)» (PDF) . Викижурнал науки . дои : 10.15347/WJS/2022.002. ISSN 2470-6345. OCLC 9708517136. S2CID 254665961. Викиданные Q104661268.
Специальные адреса: в определенных контекстах полезно иметь фиксированные адреса с функциональным значением, а не как идентификаторы конкретных хостов. Когда такое использование требуется, нулевой адрес следует интерпретировать как означающий «это», например «эта сеть».