Интернет -протокол ( IP ) — это сетевой протокол связи в наборе протоколов Интернета для ретрансляции датаграмм через границы сети. Его функция маршрутизации обеспечивает межсетевое взаимодействие и, по сути, устанавливает Интернет .
IP имеет задачу доставки пакетов от исходного хоста к хосту назначения исключительно на основе IP-адресов в заголовках пакетов . Для этой цели IP определяет структуры пакетов, которые инкапсулируют данные, которые должны быть доставлены. Он также определяет методы адресации, которые используются для маркировки датаграммы информацией об источнике и месте назначения. IP был службой датаграмм без установления соединения в оригинальной программе управления передачей, представленной Винтом Серфом и Бобом Каном в 1974 году, которая была дополнена службой , ориентированной на соединение , которая стала основой для протокола управления передачей (TCP). Поэтому набор протоколов Интернета часто называют TCP/IP .
Первая основная версия IP, Internet Protocol версии 4 (IPv4), является доминирующим протоколом Интернета. Его преемником является Internet Protocol версии 6 (IPv6), который все чаще внедряется в общедоступном Интернете примерно с 2006 года. [1]
Интернет-протокол отвечает за адресацию интерфейсов хостов , инкапсуляцию данных в датаграммы (включая фрагментацию и повторную сборку ) и маршрутизацию датаграмм от исходного интерфейса хоста к интерфейсу хоста назначения через одну или несколько IP-сетей. [2] Для этих целей Интернет-протокол определяет формат пакетов и предоставляет систему адресации.
Каждая датаграмма состоит из двух компонентов: заголовка и полезной нагрузки . Заголовок IP включает исходный IP-адрес, IP-адрес назначения и другие метаданные, необходимые для маршрутизации и доставки датаграммы. Полезная нагрузка — это транспортируемые данные. Этот метод вложения полезной нагрузки данных в пакет с заголовком называется инкапсуляцией.
IP-адресация подразумевает назначение IP-адресов и связанных с ними параметров интерфейсам хоста. Адресное пространство делится на подсети , включая обозначение сетевых префиксов. IP-маршрутизация выполняется всеми хостами, а также маршрутизаторами , чьей основной функцией является транспортировка пакетов через границы сети. Маршрутизаторы взаимодействуют друг с другом через специально разработанные протоколы маршрутизации , либо внутренние протоколы шлюза , либо внешние протоколы шлюза , в зависимости от топологии сети. [3]
В интернет-протоколе существует четыре основных метода адресации:
В мае 1974 года Институт инженеров по электротехнике и электронике (IEEE) опубликовал статью под названием «Протокол пакетной сетевой связи». [5] Авторы статьи, Винт Серф и Боб Кан , описали межсетевой протокол для совместного использования ресурсов с использованием пакетной коммутации между сетевыми узлами . Центральным компонентом управления этой модели была Программа управления передачей, которая включала как ориентированные на соединение связи, так и службы датаграмм между хостами. Монолитная Программа управления передачей позже была разделена на модульную архитектуру, состоящую из Протокола управления передачей и Протокола пользовательских датаграмм на транспортном уровне и Интернет-протокола на уровне Интернета . Модель стала известна как Модель Интернета Министерства обороны (DoD) и набор протоколов Интернета , а неофициально — как TCP/IP .
В следующих документах Internet Experiment Note (IEN) описывается эволюция интернет-протокола в современную версию IPv4: [6]
Версии IP с 1 по 3 были экспериментальными версиями, разработанными между 1973 и 1978 годами. [7] Версии 2 и 3 поддерживали адреса переменной длины в диапазоне от 1 до 16 октетов (от 8 до 128 бит). [8] Ранний проект версии 4 поддерживал адреса переменной длины до 256 октетов (до 2048 бит) [9], но позже от этого отказались в пользу фиксированного размера 32-битного адреса в окончательной версии IPv4 . Он остается доминирующим межсетевым протоколом, используемым на уровне Интернета ; число 4 идентифицирует версию протокола, передаваемую в каждой IP-дейтаграмме. IPv4 определен в RFC 791 (1981).
Версия номер 5 использовалась Internet Stream Protocol , экспериментальным потоковым протоколом, который не был принят. [7]
Преемником IPv4 является IPv6 . IPv6 стал результатом нескольких лет экспериментов и диалогов, в ходе которых предлагались различные модели протоколов, такие как TP/IX ( RFC 1475), PIP ( RFC 1621) и TUBA (TCP и UDP с большими адресами, RFC 1347). Его наиболее заметное отличие от версии 4 — размер адресов. В то время как IPv4 использует 32 бита для адресации, что дает около 4,3 млрд (4,3 × 10 9 ) адресов, IPv6 использует 128-битные адреса, обеспечивая c.3,4 × 1038 адресов . Хотя внедрение IPv6 идет медленно, по состоянию на январь 2023 года [update]большинство стран мира демонстрируют значительное внедрение IPv6, [10] при этом более 41% трафика Google передается через соединения IPv6. [11]
Назначение нового протокола как IPv6 было неопределенным, пока комплексная проверка не подтвердила, что IPv6 ранее не использовался. [12] Другим протоколам уровня Интернета были присвоены номера версий, [13] такие как 7 ( IP/TX ), 8 и 9 ( исторические ). Примечательно, что 1 апреля 1994 года IETF опубликовала первоапрельскую шутку об IPv9. [14] IPv9 также использовался в альтернативном предложенном расширении адресного пространства под названием TUBA. [15] Китайское предложение 2004 года по протоколу IPv9, по-видимому, не связано ни с одним из них и не одобрено IETF.
Дизайн набора протоколов Интернета соответствует принципу «из конца в конец» , концепции, адаптированной из проекта CYCLADES . Согласно принципу «из конца в конец», сетевая инфраструктура считается изначально ненадежной в любом отдельном сетевом элементе или среде передачи и является динамической с точки зрения доступности ссылок и узлов. Не существует центрального средства мониторинга или измерения производительности, которое отслеживало бы или поддерживало состояние сети. В целях снижения сложности сети интеллект в сети располагается в конечных узлах .
Вследствие этой конструкции Интернет-протокол обеспечивает только доставку с наилучшими усилиями , а его обслуживание характеризуется как ненадежное . На языке сетевой архитектуры это протокол без установления соединения , в отличие от ориентированной на соединение связи . Могут возникнуть различные состояния сбоя, такие как повреждение данных , потеря пакетов и дублирование. Поскольку маршрутизация является динамической, то есть каждый пакет обрабатывается независимо, и поскольку сеть не поддерживает состояние на основе пути предыдущих пакетов, различные пакеты могут быть направлены в один и тот же пункт назначения по разным путям, что приводит к неупорядоченной доставке получателю.
Все состояния сбоя в сети должны быть обнаружены и компенсированы участвующими конечными узлами. Протоколы верхнего уровня набора протоколов Интернета отвечают за решение проблем надежности. Например, хост может буферизировать сетевые данные, чтобы обеспечить правильный порядок перед доставкой данных в приложение.
IPv4 обеспечивает защиту, чтобы гарантировать, что заголовок IP-пакета не содержит ошибок. Узел маршрутизации отбрасывает пакеты, которые не прошли проверку контрольной суммы заголовка . Хотя протокол управляющих сообщений Интернета (ICMP) обеспечивает уведомление об ошибках, узел маршрутизации не обязан уведомлять ни один из конечных узлов об ошибках. IPv6, напротив, работает без контрольных сумм заголовков, поскольку предполагается, что текущая технология канального уровня обеспечивает достаточное обнаружение ошибок. [16] [17]
Динамическая природа Интернета и разнообразие его компонентов не дают никаких гарантий, что какой-либо конкретный путь действительно способен или подходит для выполнения запрошенной передачи данных. Одним из технических ограничений является размер пакетов данных, возможных на данном соединении. Существуют средства для проверки максимального размера блока передачи (MTU) локального соединения, и Path MTU Discovery может использоваться для всего предполагаемого пути к месту назначения. [18]
Уровень межсетевого взаимодействия IPv4 автоматически фрагментирует датаграмму на более мелкие блоки для передачи при превышении MTU канала. IP обеспечивает переупорядочение фрагментов, полученных не по порядку. [19] Сеть IPv6 не выполняет фрагментацию в сетевых элементах, но требует, чтобы конечные хосты и протоколы более высокого уровня не превышали MTU пути. [20]
Протокол управления передачей (TCP) является примером протокола, который регулирует размер своего сегмента, чтобы он был меньше MTU. Протокол пользовательских дейтаграмм (UDP) и ICMP игнорируют размер MTU, тем самым заставляя IP фрагментировать слишком большие дейтаграммы. [21]
На этапе проектирования ARPANET и раннего Интернета аспекты безопасности и потребности публичной международной сети не могли быть адекватно предвидены. Следовательно, многие интернет-протоколы демонстрировали уязвимости, выявленные сетевыми атаками и более поздними оценками безопасности. В 2008 году была опубликована тщательная оценка безопасности и предложенное смягчение проблем. [22] IETF проводит дальнейшие исследования. [23]
Авторы хотели бы поблагодарить ряд коллег за полезные комментарии во время ранних обсуждений международных сетевых протоколов, особенно R. Metcalfe, R. Scantlebury, D. Walden и H. Zimmerman; D. Davies и L. Pouzin, которые конструктивно прокомментировали вопросы фрагментации и учета; и S. Crocker, который прокомментировал создание и разрушение ассоциаций.