IPv4 | |
---|---|
Название | Internet Protocol version 4 |
Уровень (по модели OSI) | Сетевой |
Семейство | TCP/IP |
Создан в | 1981 |
Назначение протокола | Адресация |
Спецификация | RFC 791 |
Основные реализации (клиенты) | реализации стека TCP/IP в Windows, Linux и BSD, Mac OS |
Основные реализации (серверы) | реализации стека TCP/IP в Windows, Linux и BSD |
Медиафайлы на Викискладе |
IPv4 (англ. Internet Protocol version 4) — четвёртая версия интернет-протокола (IP). Первая широко используемая версия. Протокол описан в RFC 791 (сентябрь 1981 года), заменившем RFC 760 (январь 1980 года).
IPv4 использует 32-битные (четырёхбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 (232) возможными уникальными адресами.
Традиционной формой записи IPv4-адреса является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками. Через дробь указывается длина маски подсети.
Форма записи | Пример | Преобразование из десятичной нотации с точками |
---|---|---|
Десятичная с точками[англ.] | 192.0.2.235 | — |
Шестнадцатеричная с точками | 0xC0.0x00.0x02.0xEB | Каждый октет преобразуется в шестнадцатеричную форму |
Восьмеричная с точками | 0300.0000.0002.0353 | Каждый октет преобразуется в восьмеричную форму |
Шестнадцатеричная | 0xC00002EB | Конкатенация октетов из шестнадцатеричной нотации с точками |
Десятичная | 3221226219 | 32-битное число в десятичной форме |
Восьмеричная | 030000001353 | 32-битное число в восьмеричной форме |
Ранняя версия стандарта IP, согласно RFC 760 (англ.) (январь 1980), описывала жёсткое разделение адресного пространства на подсети и хосты. Первый октет обозначал адрес сети, за которым следовал локальный адрес хоста, занимавший оставшиеся три октета. Таким образом, стандарт допускал существование 28=256 сетей по 224=16 777 216 хостов в каждой.
Размер подсети фиксирован.
Однако очень скоро выяснилось, что сетей слишком мало, они слишком большие, и адресация лишена гибкости. Поэтому уже в сентябре 1981 года вышел RFC 791 (англ.), который вводил так называемую классовую адресацию. Идея заключается в следующем: для гибкости в назначении адресов сетей и возможности использовать большое число малых и средних сетей адресное пространство было разделено на несколько логических групп и в каждой группе отводилось разное соотношение хостов и подсетей. Эти группы носят названия классов сетей и пронумерованы латинскими буквами: A, B, C, D и E. Деление основывается на старших битах адреса. Подробно адресация рассматривается в RFC 790 (англ.).
Класс А: 0.XXX.XXX.XXX — 127.XXX.XXX.XXX
Первый бит адреса равен нулю, таким образом, класс А занимает половину всего адресного пространства. Адрес сети занимает 7 бит, адрес узла — 24 бита, следовательно класс A содержит 128 подсетей по 16 777 216 адресов в каждой.
Например, подсеть 10.0.0.0 (класса А, содержит более 16,7 млн адресов от 10.0.0.0 по 10.255.255.255). По умолчанию зарезервирована, не маршрутизируется в интернете и используется для построения локальных и корпоративных сетей.
Класс B: 128.0.XXX.XXX — 191.255.XXX.XXX
Адрес начинается с битов 1,0, таким образом, класс B занимает четверть всего адресного пространства. Адрес сети занимает 14 бит, адрес узла — 16, следовательно класс B содержит 16 384 подсетей по 65 536 адресов в каждой
Например, сеть 169.254.X.X класса B с 65536 адресами. Зарезервирована для «канальных» адресов.
Класс C: 192.0.0.XXX — 223.255.255.XXX
Адрес начинается с битов 1,1,0, таким образом, класс C занимает 1/8 адресного пространства. Адрес сети занимает 21 бит, адрес узла — 8 бит, следовательно класс C содержит 2 097 152 сетей по 256 адресов в каждой.
Например, сеть 192.0.2.X имеет адреса с 192.0.2.0 по 192.0.2.255, зарезервирована для примеров в документации.
В 1990 году в RFC 1166 (англ.) описаны ещё два класса.
Класс D: 224.XXX.XXX.XXX — 239.XXX.XXX.XXX
Адрес начинается с битов 1,1,1,0. Класс D занимает 1/16 адресного пространства. Используется для многоадресной рассылки.
Класс Е: 240.XXX.XXX.XXX — 255.XXX.XXX.XXX.
Адрес начинается с битов 1,1,1,1. Такие адреса запрещены. Зарезервировано для использования в будущем.
Сравнительно размеры классов подсетей выглядят так:
классы: | A | B | C | D | E |
---|
При классовой адресации размер подсети вычисляется из ip адреса.
С ростом сети Интернет эта система оказалась неэффективной и была дополнена бесклассовой адресацией (CIDR). Была введена дополнительная метрика — маска подсети, определяющая, сколько бит адреса отводится на адрес сети, а сколько — на адрес узла.
Некоторые адреса IPv4 зарезервированы для специальных целей и не предназначены для глобальной маршрутизации[1]. Список подсетей специального назначения определён RFC 6890. В таблице ниже приведены основные (список не полный).
Подсеть | Назначение | Маршрутизация |
---|---|---|
0.0.0.0/8[2] | Адреса источников пакетов «этой» («своей») сети[1][3]. | Запрещена |
0.0.0.0/32 | В сокетах с состоянием «listening» обозначает любые IP отправителя или любые сети получателя на текущем хосте. Может посылаться в сеть только в качестве адреса источника, если хосту ещё не назначен IP-адрес (обычно по протоколу DHCP). Не может быть использован как адрес назначения в сети. В маршрутизаторах Cisco при попытке отправить пакет на адрес 0.0.0.0 он будет отправлен на широковещательный адрес наименьшей подсоединённой подсети (connected в таблице маршрутизации). |
Запрещена |
10.0.0.0/8[4] | Для использования в частных сетях. RFC 1918. | Глобальная маршрутизация запрещена. |
100.64.0.0/10 | Shared Address Space. RFC 6598. Для использования в сетях сервис-провайдера. | Глобальная маршрутизация запрещена. |
127.0.0.0/8[2] | Подсеть для коммуникаций внутри хоста (см. localhost). Используется сетевая подсистема, но в действительности такие пакеты не проходят через сетевую карту. Если пакет с таким адресом назначения был получен из сети, то должен быть отброшен. | Запрещена |
169.254.0.0/16[5] | Канальные адреса. Подсеть используется для автоматического назначения IP операционной системой в случае, если настроено получение адреса по DHCP, но ни один сервер не отвечает. Назначение осуществляется при помощи протокола APIPA (Automatic Private IP Addressing). | только в частных сетях |
172.16.0.0/12[4] | Для использования в частных сетях. RFC 1918. | Глобальная маршрутизация запрещена. |
192.0.0.0/24[6] | IETF Protocol Assignments | |
192.0.0.0/29 | Dual-Stack Lite (DS-Lite). RFC 6333. IPv6 transition mechanisms[англ.] | |
192.0.0.170/32 | NAT64[англ.] | |
192.0.0.171/32 | DNS64 | |
192.0.2.0/24[7] | Для примеров в документации. | Запрещена |
192.88.99.0/24[1] | Используются для рассылки ближайшему узлу. RFC 3068 | Глобальная маршрутизация запрещена. |
192.88.99.1/32 | Применяется в качестве ретранслятора при инкапсуляции IPv6 в IPv4 (6to4)[8]. Иными словами, этот IP не уникален. Его анонсируют многие компании. Пакет на этот адрес пойдёт до ближайшего хоста с этим IP, который распакует пакет и отправит его дальше по IPv6-маршрутизации. | Глобальная маршрутизация запрещена. |
192.168.0.0/16[4] | Для использования в частных сетях. RFC 1918. | Глобальная маршрутизация запрещена. |
198.51.100.0/24[7] | Для примеров в документации. | Запрещена |
198.18.0.0/15[9] | Для стендов тестирования производительности. | Только для тестов |
203.0.113.0/24[7] | Для примеров в документации. | Запрещена |
224.0.0.0/4[10] | Используются для многоадресной рассылки. Полный актуальный список зарезервированных блоков на сайте IANA [1]. Разъяснения по зарезервированным мультикастовым подсетям RFC 5771. | Глобально разрешена только для подсетей 233.0.0.0/8 и 234.0.0.0/8. |
240.0.0.0/4[2] | Зарезервировано для использования в будущем. Существует мнение, что эта подсеть больше никогда не будет использована, так как есть множество оборудования, не способного посылать пакеты в эту сеть.[источник не указан 177 дней] | Запрещена |
255.255.255.255/32[11] | Ограниченный широковещательный адрес. Чаще всего используется как адрес назначения при поиске DHCP-серверов. | Запрещена |
все остальные | Распределяются региональными интернет-регистраторами. Могут быть провайдеро-независимыми. | Глобально разрешена |
Заголовок пакета IP содержит 14 полей, из которых 13 являются обязательными. Четырнадцатое поле предназначено для необязательных опций. Поля используют порядок байтов от старшего к младшему, старшие биты идут первыми. Первый бит имеет номер 0. Таким образом, например, поле с версией находится в четырёх старших битах первого байта. При передаче многооктетных значений старший октет передаётся первым.
Отступ | Октет | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
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+ | Данные |
Поле | Размер в битах | Описание |
---|---|---|
Копировать | 1 | Устанавливается в 1, если требуется копировать опции в заголовки всех фрагментов. |
Класс опции | 2 | 0 для «управляющих» опций и 2 для опций «измерений и отладки». 1 и 3 зарезервированы. |
Номер опции | 5 | Указывает опцию. |
Размер опции | 8 | Указывает размер опции (с учётом этого поля). Может не указываться для опций без аргументов. |
Аргументы опции | Переменный | Дополнительные данные, используемые опцией. |
Copy | Class | Number | Value | Name | Reference |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | EOOL — End of Options List | RFC791[17] |
0 | 0 | 1 | 1 | NOP — No Operation | RFC791[17] |
1 | 0 | 2 | 130 | SEC — Security | [RFC1108] |
1 | 0 | 3 | 131 | LSR — Loose Source Route | RFC791[17] |
0 | 2 | 4 | 68 | TS — Time Stamp | RFC791[17] |
1 | 0 | 5 | 133 | E-SEC — Extended Security | [RFC1108] |
1 | 0 | 6 | 134 | CIPSO — Commercial Security | [draft-ietf-cipso-ipsecurity-01] |
0 | 0 | 7 | 7 | RR — Record Route | RFC791[17] |
1 | 0 | 8 | 136 | SID — Stream ID | RFC791[17][RFC6814][1] |
1 | 0 | 9 | 137 | SSR — Strict Source Route | RFC791[17] |
0 | 0 | 10 | 10 | ZSU — Experimental Measurement | [ZSu] |
0 | 0 | 11 | 11 | MTUP — MTU Probe | [RFC1063][RFC1191][1] |
0 | 0 | 12 | 12 | MTUR — MTU Reply | [RFC1063][RFC1191][1] |
1 | 2 | 13 | 205 | FINN — Experimental Flow Control | [Greg_Finn] |
1 | 0 | 14 | 142 | VISA — Experimental Access Control | [Deborah_Estrin][RFC6814][1] |
0 | 0 | 15 | 15 | ENCODE — ??? | [VerSteeg][RFC6814][1] |
1 | 0 | 16 | 144 | IMITD — IMI Traffic Descriptor | [Lee] |
1 | 0 | 17 | 145 | EIP — Extended Internet Protocol | [RFC1385][RFC6814][1] |
0 | 2 | 18 | 82 | TR — Traceroute | [RFC1393][RFC6814][1] |
1 | 0 | 19 | 147 | ADDEXT — Address Extension | [Ullmann IPv7][RFC6814][1] |
1 | 0 | 20 | 148 | RTRALT — Router Alert | [RFC2113] |
1 | 0 | 21 | 149 | SDB — Selective Directed Broadcast | [Charles_Bud_Graff][RFC6814][1] |
1 | 0 | 22 | 150 | В В В В В В В — Unassigned (Released 18 October 2005) | |
1 | 0 | 23 | 151 | DPS — Dynamic Packet State | [Andy_Malis][RFC6814][1] |
1 | 0 | 24 | 152 | UMP — Upstream Multicast Pkt. | [Dino_Farinacci][RFC6814][1] |
0 | 0 | 25 | 25 | QS — Quick-Start | [RFC4782] |
0 | 0 | 30 | 30 | EXP — RFC3692-style Experiment [2] | [RFC4727] |
0 | 2 | 30 | 94 | EXP — RFC3692-style Experiment [2] | [RFC4727] |
1 | 0 | 30 | 158 | EXP — RFC3692-style Experiment [2] | [RFC4727] |
1 | 2 | 30 | 222 | EXP — RFC3692-style Experiment [2] | [RFC4727] |
Уже в 1980-е годы стало очевидно, что распределение адресного пространства происходит значительно более быстрыми темпами, чем было заложено в архитектуру IPv4. Это привело сначала к появлению классовой адресации, позднее бесклассовой адресации, и в конечном итоге к разработке нового протокола IPv6.
В феврале 2011 года IANA выделила 5 последних блоков адресов для RIR. Блоки свободных IP-адресов начали заканчиваться у региональных регистраторов с 2011 года[18].
25 ноября 2019 года были распределены последние свободные IPv4-адреса в Европе, странах бывшего СССР и на Ближнем Востоке[19]. Теперь получить IPv4-адрес можно будет, только если его освободит текущий владелец — например, закроется компания или какая-либо сеть освободит ненужный ей адресный ресурс.
Физический | |
---|---|
Канальный | |
Сетевой | |
Транспортный | |
Сеансовый | |
Представления | |
Прикладной | |
Другие прикладные | |