Урок 2 — IP-адреса с нуля

В прошлом уроке мы выяснили: пакеты летят от хоста к хосту по адресам. Теперь разберёмся, что это за адреса такие, почему они выглядят как 192.168.1.1, и почему адресов «вдруг закончилось».

В этом уроке
  1. Зачем нужен IP-адрес
  2. Как устроен IPv4-адрес
  3. Биты, байты и октеты
  4. Публичные и приватные адреса
  5. Особые адреса: localhost, broadcast, link-local
  6. IPv6 — следующее поколение
  7. MAC-адрес и чем он отличается от IP
  8. Как устройство получает IP — DHCP
  9. Что с этим делает DevOps
  10. Команды и упражнения
  11. Чек-лист «понимаю это»
  12. Задачи с ответами
Вспомни из прошлого урока

Данные летят по сети пакетами — «конвертами», на каждом из которых написан адрес получателя и отправителя. Хост — любое устройство с адресом. В мини-лабе ты уже видел свой адрес в ipconfig и пинговал 8.8.8.8. Сегодня разберём эти числа до последнего бита — после урока они перестанут быть «магическими».

1. Зачем нужен IP-адрес

Из прошлого урока ты знаешь: в пакете указан адрес получателя и отправителя. IP-адрес (англ. Internet Protocol Address) — это и есть тот адрес. Он уникально идентифицирует хост в сети.

Каждый компьютер, каждый телефон, каждый сервер, который подключён к сети, имеет IP-адрес. Без него пакеты не знают, куда идти.

Аналогия

IP-адрес = почтовый адрес дома

Чтобы письмо дошло до тебя, на конверте нужен почтовый адрес: страна, город, улица, дом, квартира. IP-адрес — это то же самое для пакета в сети. Просто записано короче и в цифрах.

Только в отличие от почтового адреса, который ты выбираешь сам (точнее, тебе его дают вместе с квартирой), IP-адрес тебе выдают автоматически — об этом ниже.

2. Как устроен IPv4-адрес

Самый распространённый формат — IPv4 (IP version 4). Выглядит так:

Октет 1
192
11000000
Октет 2
168
10101000
Октет 3
1
00000001
Октет 4
42
00101010

192.168.1.42

Это четыре числа от 0 до 255, разделённые точками. Каждое такое число называется октет (англ. octet — «восьмёрка»).

Почему «октет», а не «байт»? Технически это одно и то же — 8 бит. Но в сетях исторически принято говорить «октет», чтобы не было путаницы с другими определениями байта.

3. Биты, байты и октеты — что под капотом

Компьютер не знает чисел «192» — он знает только нули и единицы. Числа от 0 до 255 умещаются ровно в 8 нулей и единиц. Это и называется бит (англ. bit = binary digit).

Покажу на пальцах. Возьмём число 192 и переведём в биты:

Число 192 в восьми битах 128 64 32 16 8 4 2 1 1 1 0 0 0 0 0 0 128 + 64 = 192 включенные биты складываются по их «весам»
Как 8 битов кодируют число от 0 до 255. Каждая позиция — степень двойки. Включённые (1) складываются.

Вот и весь секрет: каждый октет — это 8 переключателей, каждый «включён» или «выключен». Минимум — все выключены = 0, максимум — все включены = 255.

Сколько всего адресов IPv4? 4 октета × 8 битов = 32 бита. Это 232 = около 4,3 миллиарда уникальных адресов.

Почему IPv4 «закончился»

В 1981 году, когда IPv4 был придуман, 4 миллиарда казались огромным числом — компьютеров в мире было всего тысячи. Но сегодня людей на планете 8 миллиардов, у каждого 3-5 устройств, плюс серверы, плюс «умные» камеры, лампочки и холодильники. Адресов не хватает.

Поэтому придумали два решения: NAT (он позволяет миллионам устройств за одним домашним роутером делить один публичный IP — об этом в уроке 8) и IPv6 (просто больше битов — см. ниже).

4. Публичные и приватные адреса

Это самое важное понятие в этом уроке. Запомни на всю жизнь.

Все IP-адреса в мире делятся на две большие группы:

🌐 Публичные (public)

Уникальны во всём интернете. Принадлежат только одному устройству в мире. Видимы из любой точки сети. По таким адресам живут серверы Google, Cloudflare, Amazon.

Пример: 93.184.216.34 (это сервер example.com)

🏠 Приватные (private)

Используются внутри одной локальной сети. Не уникальны в мире — в каждой LAN могут использоваться одинаковые. Невидимы из интернета.

Пример: 192.168.1.42 — почти наверняка адрес твоего ноутбука дома

Какие диапазоны приватные (RFC 1918)

Эти три диапазона официально зарезервированы под приватные сети. Их роутеры мира не маршрутизируют — пакеты с такими адресами не выйдут в интернет:

ДиапазонСколько адресовГде используется
10.0.0.0 — 10.255.255.255~16,7 миллионовБольшие корпоративные сети, VPC в AWS/GCP/Azure
172.16.0.0 — 172.31.255.255~1 миллионСредние сети, по умолчанию Docker (172.17.0.0/16)
192.168.0.0 — 192.168.255.255~65 тысячДомашние роутеры, маленькие офисы
Дом Алисы (LAN) 192.168.0.10 💻 192.168.0.11 📱 192.168.0.12 📺 📡 Роутер 85.142.55.10 Дом Боба (LAN) 192.168.0.10 💻 192.168.0.11 📱 192.168.0.12 📺 📡 Роутер 203.0.113.7 Интернет 🌍 У Алисы и Боба ВНУТРИ — одинаковые приватные адреса. Это нормально. Снаружи их видно только по публичному адресу роутера. Это делает технология NAT (Network Address Translation) — см. урок 8
Приватные адреса повторяются в каждой LAN. Из интернета видна только публичная «вывеска» — адрес роутера.
DevOps-практика

Когда ты создаёшь VPC в AWS или сеть в Docker, ты выбираешь именно приватный диапазон. Например 10.10.0.0/16 для prod и 10.20.0.0/16 для staging.

Правило №1: не пересекай диапазоны с другими сетями твоей компании. Иначе при соединении (VPN, peering) пакеты будут блуждать — машины не поймут, кому отправлять.

5. Особые адреса

Помимо обычных «публичных и приватных», есть несколько специальных адресов, которые тебе встретятся каждый день. Их нужно знать наизусть.

127.0.0.1 Localhost — «я сам». Пакет, отправленный по этому адресу, никуда не выходит из устройства — он возвращается в этот же компьютер. Удобно для тестирования: запустил локально приложение на localhost:3000 — оно доступно у тебя, и больше нигде. Технически весь диапазон 127.0.0.0/8 — это loopback, но 99% времени используется именно 127.0.0.1. Имя localhost разрешается в этот адрес автоматически.
0.0.0.0 «Любой адрес» / «все интерфейсы». Когда сервер слушает на 0.0.0.0 — он принимает соединения через все свои сетевые интерфейсы (и Wi-Fi, и Ethernet). В роутинге 0.0.0.0/0 означает «всё, что угодно» — это default route, маршрут по умолчанию.
255.255.255.255 Broadcast — «всем сразу». Пакет, отправленный сюда, получают все хосты в локальной сети. В современных сетях используется редко (потому что шумит), но в служебных протоколах вроде DHCP — ещё актуален.
169.254.x.x Link-local — «сам себе IP». Если устройство не получило адрес от DHCP, оно само себе присваивает что-то из этого диапазона, чтобы хоть как-то общаться внутри своей физической сети. Видишь такой адрес в ip addr — это сигнал «DHCP не сработал, что-то не так с сетью».
169.254.169.254 Metadata service в облаках (AWS, GCP, Azure). Из любой виртуалки в облаке можно сделать curl http://169.254.169.254/ и получить метаданные о ней самой — кто она, в какой подсети, какие у неё IAM-роли. Запомни этот адрес — он будет в каждом DevSecOps-собеседовании про cloud security.

6. IPv6 — следующее поколение

Когда стало понятно, что 4 миллиардов IPv4-адресов мало, придумали IPv6. Главное отличие — длина: вместо 32 битов используется 128 битов. Это даёт 2128 ≈ 3,4 × 1038 адресов. Если коротко — хватит каждой песчинке на Земле.

Записывается IPv6 не точками, а двоеточиями, в шестнадцатеричной системе:

# Полная форма
2001:0db8:0000:0000:0000:ff00:0042:8329

# Сокращённая (нули в начале блока опускаются, серия нулей — ::)
2001:db8::ff00:42:8329

# Localhost
::1                            # аналог 127.0.0.1

В реальности IPv4 ещё долго будет жить рядом с IPv6 — на одном устройстве часто есть оба адреса (это называется dual stack). Но в новых проектах (особенно в облаках) ты будешь видеть IPv6 всё чаще. Учи на уровне «узнаю, могу прочитать», без зубрёжки.

7. MAC-адрес — и почему он не IP

На каждой сетевой карте (Wi-Fi, Ethernet) намертво прошит ещё один адрес — MAC-адрес (англ. Media Access Control). Выглядит так:

aa:bb:cc:11:22:33

Это 6 байт (48 бит), записанные в шестнадцатеричной системе, через двоеточия. Производитель сетевой карты записывает MAC-адрес на заводе. Менять его в обычной жизни не нужно (хотя технически можно).

IP-адрес

  • Логический — назначается программно
  • Меняется при смене сети
  • Работает на уровне 3 (сетевом)
  • Используется для маршрутизации между сетями

MAC-адрес

  • Физический — «вшит» в железо
  • Не меняется (почти никогда)
  • Работает на уровне 2 (канальном)
  • Используется для доставки внутри одной LAN
Аналогия

IP = адрес дома, MAC = паспорт жильца

Адрес дома (IP) меняется, когда ты переезжаешь. Паспорт (MAC) — твой на всю жизнь и не зависит от того, где ты живёшь.

Когда почтальон доставляет письмо в город — он смотрит на адрес дома (IP). Когда заходит в подъезд и стучит в дверь — он сверяется с табличкой/паспортом конкретного жильца (MAC). Так же и в сети: IP — чтобы найти сеть, MAC — чтобы найти железку внутри неё.

«Связку» IP↔MAC поддерживает протокол ARP (Address Resolution Protocol). Когда твой компьютер хочет отправить пакет на 192.168.1.5, он спрашивает в локальной сети: «У кого 192.168.1.5? Скажи свой MAC». Это называется ARP-запрос.

8. Откуда устройство берёт IP — DHCP

Когда твой ноутбук подключается к Wi-Fi, ты не вводишь IP-адрес вручную. Откуда же он берётся?

Отвечает DHCPDynamic Host Configuration Protocol. Это сервис, который автоматически раздаёт IP-адреса устройствам в сети. У тебя дома DHCP-сервер встроен в роутер. В офисах и облаках — может быть отдельный.

💻 Новый клиент 📡 DHCP (роутер) 1. DISCOVER «Есть кто? Мне нужен IP» 2. OFFER «Дам тебе 192.168.1.42» 3. REQUEST «Беру!» 4. ACK «Принято. Действует 24 часа»
DHCP — 4 шага: DISCOVER → OFFER → REQUEST → ACK. Запоминается как «DORA».

Адрес, который выдал DHCP, называется аренда (lease) и имеет срок действия — например, 24 часа. Если за это время устройство снова подключилось — оно обычно получает тот же IP. Если ушло надолго — IP уходит в общий пул и может быть выдан другому.

DHCP против статики

Серверам в production часто назначают статический IP — то есть он не меняется. Иначе если адрес сервера сегодня 10.0.1.5, а завтра 10.0.1.12, то все его клиенты перестанут его находить. Об этом — в уроке 5 (DNS), который и решает проблему «адрес может меняться».

9. Что с этим делает DevOps / DevSecOps

10. Команды и упражнения

Открой терминал и реально запусти каждую команду. Это самое важное упражнение в этом уроке.

Увидеть свои IP-адреса

# Linux (современный способ)
ip addr show

# macOS / старый Linux
ifconfig

# Windows (cmd / powershell)
ipconfig /all

Найди свой адрес — он скорее всего 192.168.x.x или 10.x.x.x. Это твой приватный IP в домашней сети.

Узнать свой публичный IP

# Просто пойдёт в интернет и спросит — что они видят
curl ifconfig.me
curl ipinfo.io
curl https://api.ipify.org

Это IP твоего роутера, под которым тебя видит весь интернет. Сравни — он совсем другой, чем тот, что показал ip addr. Это и есть NAT в действии.

«Пингануть» хост

# Отправить тестовые пакеты — посмотреть, что отвечает
ping 8.8.8.8                  # Google DNS, всегда отвечает
ping example.com              # здесь имя автоматически превратится в IP
ping ::1                      # IPv6 localhost

На Windows нажми Ctrl+C для прерывания.

Посмотреть ARP-таблицу

# Кто из соседей и какой у них MAC — устройство уже знает
ip neigh                      # Linux
arp -a                        # универсально

Метаданные облака (если есть виртуалка в AWS)

# Это та самая «магия» из 169.254.169.254
curl http://169.254.169.254/latest/meta-data/

11. Чек-лист «понимаю это»

Проставь галочки. Не отметил — вернись.

12. Задачи — реши сам (ответы спрятаны)

Задача 1. Коллега продиктовал адрес сервера: «192.168.1.300». Что ты ответишь?

Такого адреса не существует: каждый октет — 8 бит, максимум 255. Где-то опечатка — проси перепроверить. Мелочь, но именно так теряют часы на «сервер недоступен».

Задача 2. Какие из адресов приватные: 192.168.50.7, 172.20.1.5, 172.35.1.5, 10.99.0.1, 8.8.8.8?

Приватные: 192.168.50.7 (весь 192.168.0.0/16), 172.20.1.5 и 10.99.0.1. Ловушка — 172.35.1.5: приватный диапазон 172-х — только 172.16 – 172.31, так что 172.35 — публичный! 8.8.8.8 — публичный (DNS Google). Эту ловушку любят на собеседованиях.

Задача 3. Wi-Fi выключен, кабеля нет — а ping 127.0.0.1 всё равно отвечает. Почему?

127.0.0.1loopback, «сам себе»: пакеты разворачиваются внутри операционной системы и до сетевой карты вообще не доходят. Поэтому localhost работает даже в самолёте. Полезно: так проверяют, живо ли сетевое ПО самой машины.

Задача 4. На ноутбуке адрес 169.254.107.3, интернета нет. Что произошло?

Ноутбук не дождался ответа от DHCP и придумал себе адрес-заглушку (APIPA/link-local, диапазон 169.254.0.0/16). Значит, проблема между ним и DHCP-сервером (роутером): кабель, Wi-Fi, сам роутер. Увидел 169.254 — сразу знаешь, куда копать.

Задача 5. ipconfig показывает 192.168.1.10, а сайт «какой мой IP» — 85.142.30.17. Кто врёт?

Никто. 192.168.1.10 — твой приватный адрес внутри LAN; 85.142.30.17 — публичный адрес твоего роутера, под которым тебя видит интернет. Между ними работает NAT (подробно — в уроке 8).

Задача 6. У тебя дома адрес 192.168.1.10 — и у соседа за стенкой тоже 192.168.1.10. Почему интернет не ломается?

Потому что приватные адреса не выходят в интернет — они живут каждый в своей LAN. В мир и ты, и сосед выходите под разными публичными адресами своих роутеров. Повторяемость приватных адресов — не баг, а способ сэкономить дефицитные IPv4.

IP-адрес — это «почтовый адрес» хоста. IPv4 — 4 байта (4,3 млрд адресов, мало). Адреса бывают публичные (уникальны в мире) и приватные (для LAN, могут повторяться). MAC — это «паспорт» железа, не меняется. Адреса в LAN автоматически раздаёт DHCP.
Мост к следующему уроку

Ты знаешь, что такое адрес. Но вот вопрос, на котором спотыкаются все новички: откуда компьютер знает, что 192.168.1.20 — его сосед по сети (можно напрямую), а 8.8.8.8 — чужак (надо через роутер)? Ответ прячется в загадочной записи /24 и «маске подсети». Следующий урок — самый важный в пути. Не спеши, пройди его вдумчиво.

← Назад
Урок 1: Что такое сеть