
В современную технологическую эпоху мы наблюдаем колоссальный скачок в использовании интернета и сетевых устройств. В каждом доме есть ноутбук, смартфон, цифровые часы, устройство Интернета вещей, система домашней автоматизации и другие устройства, подключенные к домашней сети или интернету. Устройства взаимодействуют друг с другом по различным сетевым протоколам, наиболее часто используемыми из которых являются TCP и IP. Каждое устройство, подключенное к сети, должно иметь IP-адрес, который идентифицирует его в сети.
В этой статье объясняется интернет-протокол и чем IPv6 отличается от IPv4.
Что такое IP (интернет-протокол)
Будучи людьми, мы идентифицируем друг друга и общаемся друг с другом, используя свои имена. Аналогично, в компьютерном мире устройства используют IP-адреса для идентификации и взаимодействия друг с другом. Общий язык, используемый всеми вычислительными устройствами для взаимодействия друг с другом, называется протоколом. Подобно человеческим языкам, протокол также имеет набор правил для форматирования и обработки данных.

Интернет-протокол (IP) — это набор правил, определяющих адресацию и маршрутизацию данных между компьютерами. Он в основном используется с сетевыми транспортными протоколами, такими как TCP и UDP.
Интернет существует сегодня благодаря этой уникальной схеме адресации. IANA управляет диапазонами IP-адресов для сетей/сайтов, подключенных к Интернету. Однако, если мы используем изолированную локальную сетевую инфраструктуру, мы можем назначать адреса по своему усмотрению. Теперь давайте перейдем к деталям обеих архитектур и их сравнительному анализу.
IPv4
Первой основной версией протокола IP (IP) является версия 4 (IPv4). Она использует 32-битную схему сетевой адресации, которая далее разбивается на четыре 8-битных числа, называемых октетами. Например, IP-адрес google.com — 141.251.36.46. Этот формат известен как точечно-квадрантная нотация. Эти IP-адреса можно настроить вручную или получить автоматически через DHCP-сервер.
Чтобы проверить текущий статус удаленного устройства, мы можем выполнить ICMP-зондирование этого IP-адреса с помощью команды ping :
ping -c 1 google.com
PING google.com (142.251.36.46) 56(84) bytes of data. 64 bytes from ams17s12-in-f14.1e100.net (142.251.36.46): icmp_seq=1 ttl=116 time=247 ms ...
IP-адреса делятся на две части: сетевые и хостовые, что позволяет создавать подсети. Номера подсетей помогают определить сетевую и хостовую части IP-адреса. Кроме того, доступное пространство IP-адресов разделено на пять различных классов, как показано в таблице ниже.
| Класс адреса | Диапазоны IP-адресов | Маска подсети | Количество сетей | Количество хостов в сети |
|---|---|---|---|---|
| Класс А | 1.0.0.0 – 126.0.0.0 | 255.0.0.0 | 126 | 16,777,214 |
| Класс Б | 128.0.0.0 – 191.255.0.0 | 255.255.0.0 | 16,282 | 65,534 |
| Класс С | 192.0.0.0 – 223.255.255.0 | 255.255.255.0 | 2,097,150 | 254 |
| Класс D | 224.0.0.0 – 239.255.255.255 | Многоадресная рассылка | ||
| Класс Е | 240.0.0.0 до 255.255.255.255 | Исследование/Зарезервировано/Экспериментально |
Расчёт подсети включает в себя несколько математических выражений, скрытых за экраном. Для упрощения вычислений можно использовать инструменты для разбиения IPv4 на подсети, такие как ipcalc или subnetcalc . Ниже приведены фрагменты кода, демонстрирующие использование этих инструментов:
ipcalc 110.0.20.18/24
Address: 110.0.20.18 01101110.00000000.00010100. 00010010 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 110.0.20.0/24 01101110.00000000.00010100. 00000000 HostMin: 110.0.20.1 01101110.00000000.00010100. 00000001 HostMax: 110.0.20.254 01101110.00000000.00010100. 11111110 Broadcast: 110.0.20.255 01101110.00000000.00010100. 11111111 Hosts/Net: 254 Class A
subnetcalc 192.168.10.15/24
Address = 192.168.10.15 11000000 . 10101000 . 00001010 . 00001111 Network = 192.168.10.0 / 24 Netmask = 255.255.255.0 Broadcast = 192.168.10.255 Wildcard Mask = 0.0.0.255 Hosts Bits = 8 Max. Hosts = 254 (2^8 - 2) Host Range = { 192.168.10.1 - 192.168.10.254 } Properties = - 192.168.10.15 is a HOST address in 192.168.10.0/24 - Class C - Private GeoIP Country = Unknown (??) DNS Hostname = (Name or service not known)
Обычно IP-адреса присваиваются конечному хост-компьютеру и интерфейсу шлюза маршрутизатора, как показано ниже.

Здесь трафик с компьютера A (10.235.64.58) попадает на интерфейс шлюза маршрутизатора (10.235.64.57) в левой части интернет-облака. Он достигает шлюза сервера Google через интернет-маршрутизацию и, наконец, достигает сервера назначения.
Для определения IP-адреса сетевого интерфейса можно использовать такие команды, как ifconfig , hostname или ip .
ifconfig ens160
ens160: flags=4163 mtu 1500 inet 10.235.64.58 netmask 255.255.255.252 broadcast 10.235.64.59 inet6 fe80::fc7f:d8da:a969:1c1d prefixlen 64 scopeid 0x20 ether 00:0c:29:23:6f:30 txqueuelen 1000 (Ethernet) RX packets 35607241 bytes 34540488400 (34.5 GB) RX errors 0 dropped 12 overruns 0 frame 0 TX packets 24701952 bytes 15008379564 (15.0 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
hostname -I
10.235.64.58
Существуют специальные сетевые IP-адреса, например, 0.0.0.0 или 127.0.0.1 . Первый из них — маршрут по умолчанию или маршрут с четырьмя нулями, а второй называется адресом обратной связи.
В приведенном ниже фрагменте кода представлена таблица маршрутизации IP ядра с маршрутом по умолчанию для этой сети. Флаг «U» означает, что сетевой маршрут направлен вверх, а флаг «G» — что сетевой маршрут является сетевым шлюзом.
netstat -rn | grep ens160
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.235.64.57 0.0.0.0 UG 0 0 0 ens160 10.235.64.56 0.0.0.0 255.255.255.252 U 0 0 0 ens160
Обычно датаграмма IPv4 состоит из заголовка длиной 20 байт, поля параметров и полей данных переменной длины. Пример формата пакета показан ниже.

Ниже захват Wireshark помогает расшифровать информацию заголовка пакета из реального трафика.

IPv6
Интернет-протокол версии 6 — это обновлённая версия интернет-протокола (IP). 6-я версия интернет-протокола призвана заменить старую версию (IPv4), на которую по состоянию на 2018 год приходилось 75% всего интернет-трафика (Источник: Google IPv6 Stats).
Адрес IPv6 состоит из 128 бит (16 байт) и состоит из 32 шестнадцатеричных цифр. Для удобства управления эти цифры разделены на восемь групп по четыре цифры в каждой. Ниже представлена краткая иллюстрация.

Соглашение об именовании IPv6 состоит из нескольких основных этапов.
Правило 1: Все буквы нечувствительны к регистру. Например, «ab41» равно «AB41». Правило 2: Последовательные поля с «0» могут быть отображены как «::», но только один раз в адресе. Правило 3: Начальные нули в поле необязательны. Например, «001a» равно «1a».
Например, возьмем адрес IPv6, 45ab:0000:a179:0000:0000:c1c0:abcd:0876
Применить правило 1 => 45ab:0000:a179:0000:0000:c1c0:abcd:0876 Применить правило 2 => 45ab:0:a179:0:0:c1c0:abcd:876 Применить правило 3 => 45ab:0:a179::c1c0:abcd:876
Существует три типа адресов IPv6: Unicast, Multicast и Anycast. Unicast-адрес — это отдельный сетевой интерфейс, на который пакеты доставляются. Кроме того, Unicast-адреса имеют локальную (link-local) и глобальную области действия. Multicast-адрес — это групповые интерфейсы, на которые доставляются пакеты. Anycast-адрес — это групповой интерфейс, на который пакеты доставляются на ближайший интерфейс.
Ниже приведены несколько известных адресов.
| ]::1/128 | Адрес обратной связи |
|---|---|
| фф00::/8 | Многоадресные адреса |
| fe80::/10 | Локальные адреса ссылок |
| 2001::/16 | Обычные одноадресные адреса IPv6 |
| 2002::/16 | 6to4 Unicast-адреса |
subnetcalc 2001:4860:4860::8888/64
Address = 2001:4860:4860::8888 2001 = 00100000 00000001 4860 = 01001000 01100000 4860 = 01001000 01100000 0000 = 00000000 00000000 0000 = 00000000 00000000 0000 = 00000000 00000000 0000 = 00000000 00000000 8888 = 10001000 10001000 Network = 2001:4860:4860:: / 64 Netmask = ffff:ffff:ffff:ffff:: Wildcard Mask = ::ffff:ffff:ffff:ffff Hosts Bits = 64 Max. Hosts = 18446744073709551616 (2^64 - 1) Host Range = { 2001:4860:4860::1 - 2001:4860:4860:0:ffff:ffff:ffff:ffff } Properties = - 2001:4860:4860::8888 is a HOST address in 2001:4860:4860::/64 - Global Unicast Properties: + Interface ID = 0000:0000:0000:8888 + Sol. Node MC = ff02::1:ff00:8888 GeoIP Country = United States (US) DNS Hostname = dns.google
Опять же, пакет IPv6 содержит как заголовок, так и полезную нагрузку. Размер заголовка фиксирован и составляет 40 байт, а адреса отправителя и получателя занимают по 32 байта. Пример формата пакета показан ниже.

Несмотря на множество преимуществ, IPv6 не может вытеснить IPv4. Для плавного перехода обе версии протокола должны существовать одновременно. Поэтому поставщики услуг предлагают систему поддержки с двойным стеком, оснащённую сетевым интерфейсом, поддерживающим как пакеты IPv4, так и IPv6.
Существует несколько механизмов интеллектуального перехода, а именно туннелирование IPv6, сопоставление адресов IPv6 с IPv4 и т. д. Первый инкапсулирует пакет IPv6 в IPv4, тогда как второй сопоставляет IPv6 с адресами IPv4 в реализациях с двойным стеком.
IPv4 против IPv6 — быстрый сравнительный
| Функции | Интернет-протокол версии 4 [IPv4] | Интернет-протокол версии 6 [IPv6] |
|---|---|---|
| Развертывание и распределение | 1981 | 1999 |
| Длина | 32-битный | 128-бит |
| Адресное пространство | 4,29 х 10^9 | 3,4 х 10^38 |
| Формат | Десятичная дробь с точками / [10.235.64.56] | Шестнадцатеричный / [2400::4] |
| Количество октетов | 4 | 16 |
| Размер заголовка | Варьируется от 20 до 60 байт | 40 байт |
| Классы | Пять классов: класс A, класс B, класс C, класс D, класс E | Никто |
| Функции безопасности / Аутентификация и шифрование | Нет в наличии | Доступный |
| Контрольная сумма | Доступный | Нет в наличии |
| IPSec | Внешние и необязательные | Встроенная функция |
| Количество прыжков | Указано полем TTL | Указано полем Hoplimit |
| Фрагментация | Выполняется маршрутизаторами отправителя и пересылки | Выполняется только отправителем |
| Поля параметров | Предоставляется в заголовке IPv4 | Необязательных полей нет, но доступны заголовки расширения IPv6. |
| Многоадресная передача | IGMP управляет членством в многоадресной группе | MLD заменяет IGMP |
| Широковещательное сообщение | Доступный | Недоступно. Используется многоадресная передача. |
| Сопоставление IP и MAC | Протокол разрешения адресов | Протокол обнаружения соседей |
Заключение
Мы рассмотрели основы интернет-протокола и его версий. Кроме того, статья освещает схему адресации, формат пакетов, функционирование IPv4 и IPv6, а также проводит сравнительный анализ. Хотя сегодня IPv4 передаёт большую часть интернет-трафика, IPv6 — это будущее сетевых технологий.
Об авторах
Шрирам Рамануджам
Опытный архитектор глобальной сетевой автоматизации с более чем 10-летним богатым отраслевым опытом разработки масштабируемых решений для сетевой автоматизации, инженерного проектирования, эксплуатации и телеметрии.
Связанные руководства