IPv4
| Название: |
Internet Protocol version 4 |
|---|---|
| Уровень (по модели OSI): |
Сетевой |
| Семейство: | |
| Назначение протокола: |
Адресация |
| Спецификация: | |
| Основные реализации (клиенты): | |
| Основные реализации (серверы): |
IPv4 (англ. Internet Protocol version 4) — четвёртая версия IP-протокола, первая широко используемая версия. Протокол описан в RFC 791 (сентябрь 1981 года), заменившем RFC 760 (январь 1980 года).
Содержание |
Адресация [править]
IPv4 использует 32-битные (четырёхбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 (232) возможными уникальными адресами.
Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. (или 128.10.2.30 — традиционная десятичная форма представления адреса)
Представление адреса [править]
| Форма записи | Пример | Преобразование из десятичной нотации с точками |
|---|---|---|
| Десятичная с точками (англ.) | 192.0.2.235 | — |
| Шестнадцатеричная с точками | 0xC0.0x00.0x02.0xEB | Каждый октет преобразуется в шестнадцатеричную форму |
| Восьмеричная с точками | 0300.0000.0002.0353 | Каждый октет преобразуется в восьмеричную форму |
| Шестнадцатеричная | 0xC00002EB | Конкатенация октетов из шестнадцатеричной нотации с точками |
| Десятичная | 3221226219 | 32-битное число в десятичной форме |
| Восьмеричная | 030000001353 | 32-битное число в восьмеричной форме |
Зарезервированные адреса [править]
Некоторые адреса IPv4 зарезервированы для специальных целей и не предназначены для глобальной маршрутизации[1].
| Подсеть | Назначение |
|---|---|
| 0.0.0.0/8[2] | Адреса источников пакетов «этой» («своей») сети, предназначены для локального использования на хосте при создании сокетов IP. Адрес 0.0.0.0/32 используется для указания адреса источника самого хоста.[1] |
| 10.0.0.0/8[3] | Для использования в частных сетях. |
| 127.0.0.0/8[2] | Подсеть для коммуникаций внутри хоста (см.: localhost). |
| 169.254.0.0/16[4] | Канальные адреса; подсеть используется для автоматического конфигурирования адресов IP в случае отсутствия сервера DHCP. |
| 172.16.0.0/12[3] | Для использования в частных сетях. |
| 100.64.0.0/10[5] | Для использования в сетях сервис-провайдера. |
| 192.0.0.0/24[6] | Регистрация адресов специального назначения. |
| 192.0.2.0/24[7] | Для примеров в документации. |
| 192.168.0.0/16[3] | Для использования в частных сетях. |
| 198.51.100.0/24[7] | Для примеров в документации. |
| 198.18.0.0/15[8] | Для стендов тестирования производительности. |
| 203.0.113.0/24[7] | Для примеров в документации. |
| 240.0.0.0/4[2] | Зарезервировано для использования в будущем. |
| 255.255.255.255[9] | Ограниченный широковещательный адрес. |
Есть также зарезервированные адреса, которые маршрутизируются глобально.
| Подсеть | Назначение |
|---|---|
| 192.88.99.0/24[1] | Используются для рассылки ближайшему узлу. Адрес 192.88.99.1/32 применяется в качестве ретранслятора при инкапсуляции IPv6 в IPv4 (6to4)[10]. |
| 224.0.0.0/4[11] | Используются для многоадресной рассылки. |
Структура пакета [править]
Пакет IP содержит 14 полей, из которых 13 являются обязательными. Четырнадцатое поле предназначено для необязательных опций. Поля используют порядок байтов от старшего к младшему, старшие биты идут первыми. Первый бит имеет номер 0. Таким образом, например, поле с версией находится в четырёх старших битах первого байта.
| Смещение в битах | 0-3 | 4-7 | 8-13 | 14-15 | 16-18 | 19-31 | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Версия | Размер заголовка | Differentiated Services Code Point | Explicit Congestion Notification | Размер пакета | |||||||||||||||||||||||||||
| 32 | Идентификатор | Флаги | Смещение фрагмента | |||||||||||||||||||||||||||||
| 64 | Время жизни | Протокол | Контрольная сумма заголовка | |||||||||||||||||||||||||||||
| 96 | Адрес источника | |||||||||||||||||||||||||||||||
| 128 | Адрес назначения | |||||||||||||||||||||||||||||||
| 160 | Опции (если размер заголовка > 5) | |||||||||||||||||||||||||||||||
| 160 или 192+ | Данные | |||||||||||||||||||||||||||||||
- Версия
- Первым полем пакета является версия протокола размером в четыре бита. Для IPv4 это 4.
- Размер заголовка
- Следующие четыре бита содержат размер заголовка пакета в 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 байт, но современные реализации обычно поддерживают гораздо больший размер. Пакеты большего размера, чем поддерживает канал связи, фрагментируются.
- Идентификатор
- Преимущественно используется для идентификации фрагментов пакета, если он был фрагментирован. Существуют эксперименты по его использованию для других целей, таких как добавление информации о трассировке пакета для упрощения отслеживания пути пакета с подделанным адресом источника.[12]
- Флаги
- Поле размером три бита содержащее флаги контроля над фрагментацией. Биты, от старшего к младшему, означают:
- 0: Зарезервирован, должен быть равен 0.[13]
- 1: Не фрагментировать
- 2: У пакета ещё есть фрагменты
- Если установлен флаг «не фрагментировать», то в случае необходимости фрагментации такой пакет будет уничтожен. Может использоваться для передачи данных хостам, не имеющим достаточных ресурсов для обработки фрагментированных пакетов.
- Флаг «есть фрагменты» должен быть установлен в 1 у всех фрагментов пакета, кроме последнего. У нефрагментированных устанавливается в 0 — такой пакет считается собственным последним фрагментом.
- Смещение фрагмента
- Поле размером в 13 бит, указывает смещение текущего фрагмента от начала передачи фрагментированного пакета в блоках по 8 байт. Позволяет (213−1)×8=65528 байт смещения, что превышает максимальный размер пакета. Первый фрагмент в последовательности имеет нулевое смещение.
- «Время жизни» (Time to Live, TTL) пакета.
- Позволяет предотвратить закольцовывание пакетов в сети путем уничтожения пакетов, превысивших время жизни. Указывается в секундах, интервалы менее секунды округляются до одной секунды. На практике каждый маршрутизатор уменьшает время жизни пакетов на единицу (что справедливо при существующих типичных задержках в сети). Пакеты, время жизни которых стало равно нулю уничтожаются, а отправившему посылается сообщение ICMP Time Exceeded. На отправке пакетов с разным временем жизни основана трассировка их пути прохождения (traceroute).
- Протокол
- Указывает, данные какого протокола содержит пакет (например, TCP или ICMP). Присвоенные номера протоколов можно найти на сайте IANA.[14]
- Контрольная сумма заголовка
- 16-битная контрольная сумма, используемая для проверки целостности заголовка. Каждый хост или маршрутизатор сравнивает контрольную сумму заголовка со значением этого поля и отбрасывает пакет, если они не совпадают. Целостность данных IP не проверяет — она проверяется протоколами более высоких уровней (такими, как TCP или UDP), которые тоже используют контрольные суммы.
- Поскольку TTL уменьшается на каждом шаге прохождения пакета, сумма тоже должна вычисляться на каждом шаге. Метод пересчета контрольной суммы определён в RFC 1071.[15]
- Адрес источника
- 32-битный адрес отправителя пакета. Может не совпадать с настоящим адресом отправителя из-за трансляции адресов.
- Адрес назначения
- 32-битный адрес получателя пакета.
- Опции
- За адресом назначения может следовать поле дополнительных опций, но оно используется редко. Размер заголовка в этом случае должен быть достаточным чтобы вместить все опции (с учетом дополнения до целого числа 32-битных слов).
- Если список опций не является концом заголовка, он должен оканчиваться опцией 0x00. Опции имеют следующий формат:
| Поле | Размер в битах | Описание |
|---|---|---|
| Копировать | 1 | Устанавливается в 1 если требуется копировать опции в заголовки всех фрагментов. |
| Класс опции | 2 | 0 для «управляющих» опций и 2 для опций «измерений и отладки». 1 и 3 зарезервированы. |
| Номер опции | 5 | Указывает опцию. |
| Размер опции | 8 | Указывает размер опции (с учетом этого поля). Может не указываться для опций без аргументов. |
| Аргументы опции | Переменный | Дополнительные данные, используемые опцией. |
- Замечание: Размер заголовка более 5 слов указывает на присутствие опций и необходимость их обработки.
- Замечание: Поля «копировать», «класс опции» и «номер опции» иногда называют одним восьмибитным полем «тип опции».
Исчерпание адресного пространства [править]
Уже в 1980-е годы стало очевидно, что распределение адресного пространства происходит значительно более быстрыми темпами, чем было заложено в архитектуру IPv4. Это привело сначала к появлению классовой адресации, позднее бесклассовой адресации, и в конечном итоге к разработке нового протокола IPv6.
В феврале 2011 года IANA выделила 5 последних блоков адресов RIRам. Блоки свободных IP-адресов начали заканчиваться у региональных регистраторов с 2011 года.[16]
См. также [править]
Примечания [править]
- ↑ 1 2 3 RFC3330: Special-use IPv4 addresses (англ.); заменён RFC5735: Special-use IPv4 addresses (англ.)
- ↑ 1 2 3 RFC1700: Assigned Numbers (англ.)
- ↑ 1 2 3 RFC1918: Address allocation for private internets (англ.)
- ↑ RFC3927: Dynamic configuration of IPv4 link-local addresses (англ.)
- ↑ RFC6598: IANA-reserved IPv4 prefix for shared address space (англ.)
- ↑ RFC5736: IANA IPv4 Special Purpose Address Registry (англ.)
- ↑ 1 2 3 RFC5737: IPv4 address blocks reserved for documentation (англ.)
- ↑ RFC2544: Benchmarking methodology for network interconnect devices (англ.)
- ↑ RFC919: Broadcasting internet datagrams (англ.)
- ↑ RFC3068: An anycast prefix for 6to4 relay routers (англ.)
- ↑ RFC3171: IANA guidelines for IPv4 multicast address assignments (англ.)
- ↑ Stefan Savage. Practical network support for IP traceback. Проверено 6 сентября 2010.
- ↑ В качестве первоапрельской шутки предложен означать злонамеренность пакета (evil bit)
- ↑ Assigned Internet Protocol Numbers (англ.)
- ↑ Computing the Internet Checksum (англ.)
- ↑ IPv4 Address Report
| Это заготовка статьи о компьютерных сетях. Вы можете помочь проекту, исправив и дополнив её. |
| Основные протоколы TCP/IP по уровням модели OSI (Список портов TCP и UDP) | |
|---|---|
| Физический | |
| Канальный |
Ethernet • PPPoE • PPP • L2F • 802.11 Wi-Fi • 802.16 WiMax • Token ring • ARCNET • FDDI • HDLC • SLIP • ATM • CAN • DTM • X.25 • Frame relay • SMDS • STP • ERPS |
| Сетевой | |
| Транспортный | |
| Сеансовый | |
| Представления | |
| Прикладной | |
| Другие прикладные |
OSCAR • CDDB • Multicast FTP • Multisource FTP • BitTorrent • Gnutella • Skype |