Gymterview
junior

Что такое IP-адресация? Чем отличаются IPv4 и IPv6?

IP-адрес (Internet Protocol Address) — уникальный логический идентификатор устройства в сети на сетевом уровне (L3), используемый для маршрутизации пакетов между сетями.

Аналогия из жизни: если MAC-адрес — это серийный номер на корпусе телефона (привязан к устройству), то IP-адрес — это номер телефона (привязан к сети и может меняться при переезде).

IPv4 (Internet Protocol version 4)

  • 32-битный адрес, записывается как 4 десятичных числа через точку: 192.168.1.100
  • Каждое число — 1 байт (0–255)
  • Всего 2³² ≈ 4.3 млрд адресов (этого уже недостаточно)
  • Адрес делится на сетевую часть и хостовую часть (определяется маской подсети)

Специальные диапазоны IPv4

Диапазон Назначение
10.0.0.0/8 Частная сеть (класс A)
172.16.0.0/12 Частная сеть (класс B)
192.168.0.0/16 Частная сеть (класс C)
127.0.0.0/8 Loopback (localhost), чаще всего 127.0.0.1
0.0.0.0 Все интерфейсы (при привязке сервера)
255.255.255.255 Широковещательный адрес
169.254.0.0/16 Link-local (автоматическая настройка при отсутствии DHCP)

IPv6 (Internet Protocol version 6)

  • 128-битный адрес, записывается как 8 групп по 4 hex-цифры через двоеточие: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • Можно сокращать: ведущие нули опускаются, последовательные группы нулей заменяются на :: (один раз): 2001:db8:85a3::8a2e:370:7334
  • 2¹²⁸ ≈ 3.4×10³⁸ адресов — хватит надолго
  • Нет NAT — каждое устройство может иметь глобально уникальный адрес
  • Нет broadcast — вместо него multicast
  • ::1 — loopback (аналог 127.0.0.1)
  • fe80::/10 — link-local адреса (аналог 169.254.x.x в IPv4)

Сравнение IPv4 и IPv6

Свойство IPv4 IPv6
Длина адреса 32 бита 128 бит
Формат записи Десятичный (192.168.1.1) Шестнадцатеричный (2001:db8::1)
Количество адресов ~4.3 млрд ~3.4×10³⁸
Заголовок Переменной длины (20–60 байт) Фиксированной длины (40 байт), проще для обработки
NAT Широко используется Не нужен
IPSec Опционально Встроен в спецификацию
Broadcast Есть Нет (заменён multicast)
Автоконфигурация DHCP SLAAC + DHCPv6

Для Java-разработчика

  • InetAddress.getByName("192.168.1.1") — работает и с IPv4, и с IPv6
  • При привязке серверного сокета на 0.0.0.0 — сервер слушает на всех IPv4-интерфейсах, на :: — на всех (IPv4 + IPv6)
  • В URL IPv6-адрес заключается в квадратные скобки: http://[::1]:8080/
  • Inet4Address и Inet6Address — конкретные подклассы InetAddress для работы с разными версиями протокола

Вывод

IPv4 по-прежнему доминирует, но его адресное пространство исчерпано. IPv6 — это будущее, которое уже активно внедряется. Java-разработчику важно понимать оба протокола и учитывать dual-stack при конфигурации серверов.

На собеседовании: обычно спрашивают базовые различия IPv4 и IPv6, специальные диапазоны (особенно приватные сети и loopback), а также практические аспекты — как сервер слушает на всех интерфейсах, как записать IPv6 в URL.