Интернет-протокол версии 4 ( IPv4 ) — первая версия Интернет-протокола (IP) как отдельной спецификации. Это один из основных протоколов основанных на стандартах методов межсетевого взаимодействия в Интернете и других сетях с коммутацией пакетов . IPv4 был первой версией, развернутой для производства на SATNET в 1982 году и на ARPANET в январе 1983 года. Он по-прежнему используется для маршрутизации большей части интернет-трафика сегодня, [1] даже с продолжающимся развертыванием Интернет-протокола версии 6 (IPv6), [2] его преемника.
IPv4 использует 32-битное адресное пространство, которое обеспечивает 4 294 967 296 (2 32 ) уникальных адресов, но большие блоки зарезервированы для специальных сетевых целей. [3] [4]
Ранние версии TCP/IP были объединенной спецификацией через TCP/IPv3. С IPv4 интернет-протокол стал отдельной спецификацией. [5]
Интернет-протокол версии 4 описан в публикации IETF RFC 791 (сентябрь 1981 г.), заменив более раннее определение от января 1980 г. (RFC 760). В марте 1982 г. Министерство обороны США приняло решение о наборе интернет-протоколов (TCP/IP) в качестве стандарта для всех военных компьютерных сетей . [6]
Интернет-протокол — это протокол, который определяет и обеспечивает сетевое взаимодействие на уровне Интернета в наборе протоколов Интернета. По сути, он формирует Интернет. Он использует логическую систему адресации и выполняет маршрутизацию , которая представляет собой пересылку пакетов от исходного хоста к следующему маршрутизатору, который находится на один шаг ближе к предполагаемому хосту назначения в другой сети.
IPv4 — это протокол без установления соединения , работающий по модели доставки «лучшее из возможного» , то есть не гарантирующий доставку, а также не гарантирующий надлежащую последовательность или избегание дублирования доставки. Эти аспекты, включая целостность данных, решаются транспортным протоколом верхнего уровня , таким как протокол управления передачей (TCP).
IPv4 использует 32-битные адреса, что ограничивает адресное пространство до 4 294 967 296 (2 32 ) адресов.
IPv4 резервирует специальные блоки адресов для частных сетей (2 24 + 2 20 + 2 16 ≈ 18 миллионов адресов) и многоадресных адресов (2 28 ≈ 268 миллионов адресов).
Адреса IPv4 могут быть представлены в любой нотации, выражающей 32-битное целое число. Чаще всего они записываются в точечно-десятичной нотации , которая состоит из четырех октетов адреса, выраженных по отдельности в десятичных числах и разделенных точками .
Например, IP-адрес с четырьмя точками на рисунке ( 172.16.254.1 ) представляет собой 32-битное десятичное число 2886794753, которое в шестнадцатеричном формате равно 0xAC10FE01.
Нотация CIDR объединяет адрес с его префиксом маршрутизации в компактном формате, в котором за адресом следует символ косой черты (/) и количество ведущих последовательных единичных бит в префиксе маршрутизации (маска подсети).
Другие представления адресов были широко распространены, когда практиковались классовые сети . Например, адрес обратной связи 127.0.0.1 обычно записывался как 127.1 , учитывая, что он принадлежит к сети класса A с восемью битами для маски сети и 24 битами для номера хоста. Когда в адресе в точечной нотации указывалось менее четырех чисел, последнее значение рассматривалось как целое число из такого количества байтов, которое требуется для заполнения адреса до четырех октетов. Таким образом, адрес 127.65530 эквивалентен 127.0.255.250 .
В первоначальном дизайне IPv4 IP-адрес был разделен на две части: идентификатор сети был самым значимым октетом адреса, а идентификатор хоста был остальной частью адреса. Последнее также называлось полем rest . Эта структура допускала максимум 256 идентификаторов сети, что быстро было признано недостаточным.
Чтобы преодолеть это ограничение, в 1981 году был переопределен самый значимый октет адреса для создания классов сетей в системе, которая позже стала известна как классовая сеть. Пересмотренная система определила пять классов. Классы A, B и C имели разную длину бит для сетевой идентификации. Остальная часть адреса использовалась, как и ранее, для идентификации хоста в сети. Из-за разных размеров полей в разных классах каждый класс сети имел разную емкость для адресации хостов. В дополнение к трем классам для адресации хостов, класс D был определен для многоадресной адресации, а класс E был зарезервирован для будущих приложений.
Разделение существующих классовых сетей на подсети началось в 1985 году с публикацией RFC 950. Это разделение стало более гибким с введением масок подсетей переменной длины (VLSM) в RFC 1109 в 1987 году. В 1993 году на основе этой работы RFC 1517 представил бесклассовую междоменную маршрутизацию (CIDR), [7] которая выражала количество бит (начиная с самого старшего ), например, как /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 создала реализацию под названием Automatic Private IP Addressing (APIPA), которая была развернута на миллионах машин и стала фактическим стандартом . Много лет спустя, в мае 2005 года, IETF определила формальный стандарт в RFC 3927 под названием Dynamic Configuration of IPv4 Link-Local Addresses .
Сеть класса A 127.0.0.0 (бесклассовая сеть 127.0.0.0 / 8 ) зарезервирована для loopback . IP-пакеты, исходные адреса которых принадлежат этой сети, никогда не должны появляться за пределами хоста. Пакеты, полученные на не-loopback интерфейсе с петлевым исходным или целевым адресом, должны быть отброшены.
Первый адрес в подсети используется для идентификации самой подсети. В этом адресе все биты хоста равны 0. Чтобы избежать неоднозначности в представлении, этот адрес зарезервирован. [18] В последнем адресе все биты хоста установлены в 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 является идентификатором сети и не должен назначаться интерфейсу. [19] : 31 Адреса 192.168.1.0 , 192.168.2.0 и т. д. могут быть назначены, несмотря на то, что они заканчиваются на 0.
В прошлом конфликт между сетевыми адресами и широковещательными адресами возникал из-за того, что некоторое программное обеспечение использовало нестандартные широковещательные адреса с нулями вместо единиц. [19] : 66
В сетях размером меньше / 24 широковещательные адреса не обязательно заканчиваются на 255. Например, подсеть CIDR 203.0.113.16 / 28 имеет широковещательный адрес 203.0.113.31 .
Как особый случай, сеть / 31 имеет емкость только для двух хостов. Такие сети обычно используются для соединений точка-точка. Для этих сетей нет сетевого идентификатора или широковещательного адреса. [20]
Хосты в Интернете обычно известны по именам, например www.example.com, а не по их IP-адресу, который используется для маршрутизации и идентификации сетевого интерфейса. Использование доменных имен требует их преобразования, называемого разрешением , в адреса и наоборот. Это аналогично поиску номера телефона в телефонной книге по имени получателя.
Перевод адресов в доменные имена осуществляется системой доменных имен (DNS) — иерархической распределенной системой именования, которая позволяет делегировать пространства имен другим DNS-серверам.
Ненумерованная связь точка-точка (PtP), также называемая транзитной связью, — это связь, которая не имеет связанного с ней номера IP-сети или подсети, но все еще имеет IP-адрес. Впервые представленная в 1993 году, [21] [22] [23] [24] Фил Карн из Qualcomm считается первоначальным разработчиком.
Целью транзитного канала является маршрутизация датаграмм . Они используются для освобождения IP-адресов из дефицитного пространства IP-адресов или для сокращения управления назначением IP и конфигурацией интерфейсов. Ранее для каждого канала требовалось выделять подсеть / 31 или / 30 с использованием 2 или 4 IP-адресов на канал «точка-точка». Когда канал не пронумерован, используется идентификатор маршрутизатора , один IP-адрес, заимствованный из определенного (обычно петлевого ) интерфейса. Один и тот же идентификатор маршрутизатора может использоваться на нескольких интерфейсах.
Одним из недостатков ненумерованных интерфейсов является то, что их сложнее тестировать и управлять удаленно.
В 1980-х годах стало очевидно, что пул доступных адресов IPv4 истощается со скоростью, которая изначально не предполагалась в первоначальном проекте сети. [25] Основными рыночными силами, которые ускорили истощение адресов, были быстро растущее число пользователей Интернета, которые все чаще использовали мобильные вычислительные устройства, такие как ноутбуки , персональные цифровые помощники (КПК) и смартфоны с IP-сервисами передачи данных. Кроме того, высокоскоростной доступ в Интернет был основан на постоянно включенных устройствах. Угроза истощения мотивировала введение ряда восстановительных технологий, таких как:
К середине 1990-х годов NAT повсеместно использовался в системах поставщиков сетевого доступа наряду со строгой политикой распределения на основе использования в региональных и локальных интернет-регистратурах.
Основной адресный пул Интернета, поддерживаемый IANA, был исчерпан 3 февраля 2011 года, когда последние пять блоков были выделены пяти RIR . [26] [27] APNIC был первым RIR, исчерпавшим свой региональный пул 15 апреля 2011 года, за исключением небольшого количества адресного пространства, зарезервированного для технологий перехода на IPv6, которое должно быть выделено в соответствии с ограниченной политикой. [28]
Долгосрочным решением для решения проблемы истощения стала спецификация 1998 года новой версии интернет-протокола IPv6 . [29] Она обеспечивает значительно увеличенное адресное пространство, а также позволяет улучшить агрегацию маршрутов по всему Интернету и предлагает большие подсетевые выделения минимум 2 64 адресов хостов для конечных пользователей. Однако IPv4 несовместим напрямую с IPv6, поэтому хосты, поддерживающие только IPv4, не могут напрямую взаимодействовать с хостами, поддерживающими только IPv6. С поэтапным отказом от экспериментальной сети 6bone , начавшимся в 2004 году, постоянное формальное развертывание IPv6 началось в 2006 году. [30] Ожидается, что завершение развертывания IPv6 займет значительное время, [31] поэтому необходимы промежуточные переходные технологии , чтобы позволить хостам участвовать в Интернете, используя обе версии протокола.
Пакет IP состоит из раздела заголовка и раздела данных. Пакет IP не имеет контрольной суммы данных или какого-либо другого нижнего колонтитула после раздела данных. Обычно канальный уровень инкапсулирует пакеты IP в кадры с нижним колонтитулом CRC, который обнаруживает большинство ошибок, многие протоколы транспортного уровня, переносимые IP, также имеют свою собственную проверку ошибок. [32] : §6.2
Заголовок пакета IPv4 состоит из 14 полей, из которых 13 обязательных. 14-е поле является необязательным и метко названо: параметры. Поля в заголовке упакованы так, что сначала идет самый старший байт ( сетевой порядок байтов ), и для диаграммы и обсуждения самые значимые биты считаются идущими первыми ( нумерация битов MSB 0 ). Самый значимый бит имеет номер 0, поэтому поле версии фактически находится в четырех самых значимых битах первого байта, например.
Интернет-протокол обеспечивает трафик между сетями. Конструкция охватывает сети различной физической природы; она не зависит от базовой технологии передачи, используемой на канальном уровне. Сети с различным оборудованием обычно различаются не только по скорости передачи, но и по максимальному размеру передаваемого блока (MTU). Когда одна сеть хочет передать датаграммы в сеть с меньшим MTU, она может фрагментировать свои датаграммы. В IPv4 эта функция была размещена на уровне Интернета и выполняется в маршрутизаторах IPv4, ограничивая подверженность этих проблем хостам.
Напротив, IPv6 , следующее поколение интернет-протокола, не позволяет маршрутизаторам выполнять фрагментацию; хосты должны выполнять обнаружение MTU пути перед отправкой датаграмм.
Когда маршрутизатор получает пакет, он проверяет адрес назначения и определяет исходящий интерфейс для использования и MTU этого интерфейса. Если размер пакета больше MTU, а бит Do not Fragment (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 только в последнем. И, конечно, поле Identification продолжает иметь то же значение во всех повторно фрагментированных фрагментах. Таким образом, даже если фрагменты повторно фрагментируются, получатель знает, что изначально все они начинались с одного и того же пакета.
Последнее смещение и последний размер данных используются для расчета общего размера данных: .
Получатель знает, что пакет является фрагментом, если выполняется хотя бы одно из следующих условий:
Получатель идентифицирует соответствующие фрагменты, используя адреса источника и назначения, идентификатор протокола и поле идентификации. Получатель повторно собирает данные из фрагментов с тем же идентификатором, используя как смещение фрагмента, так и флаг «больше фрагментов». Когда получатель получает последний фрагмент, у которого флаг «больше фрагментов» установлен на 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.
Специальные адреса: В определенных контекстах полезно иметь фиксированные адреса с функциональным значением, а не как идентификаторы конкретных хостов. Когда требуется такое использование, адрес ноль следует интерпретировать как означающий «это», как в «эта сеть».