Урок 2 — IP-адреса с нуля
В прошлом уроке мы выяснили: пакеты летят от хоста к хосту по адресам. Теперь разберёмся, что это за адреса такие, почему они выглядят как 192.168.1.1, и почему адресов «вдруг закончилось».
- Зачем нужен IP-адрес
- Как устроен IPv4-адрес
- Биты, байты и октеты
- Публичные и приватные адреса
- Особые адреса: localhost, broadcast, link-local
- IPv6 — следующее поколение
- MAC-адрес и чем он отличается от IP
- Как устройство получает IP — DHCP
- Что с этим делает DevOps
- Команды и упражнения
- Чек-лист «понимаю это»
- Задачи с ответами
Данные летят по сети пакетами — «конвертами», на каждом из которых написан
адрес получателя и отправителя. Хост — любое устройство с адресом. В мини-лабе ты уже видел
свой адрес в ipconfig и пинговал 8.8.8.8. Сегодня разберём эти числа
до последнего бита — после урока они перестанут быть «магическими».
1. Зачем нужен IP-адрес
Из прошлого урока ты знаешь: в пакете указан адрес получателя и отправителя. IP-адрес (англ. Internet Protocol Address) — это и есть тот адрес. Он уникально идентифицирует хост в сети.
Каждый компьютер, каждый телефон, каждый сервер, который подключён к сети, имеет IP-адрес. Без него пакеты не знают, куда идти.
IP-адрес = почтовый адрес дома
Чтобы письмо дошло до тебя, на конверте нужен почтовый адрес: страна, город, улица, дом, квартира. IP-адрес — это то же самое для пакета в сети. Просто записано короче и в цифрах.
Только в отличие от почтового адреса, который ты выбираешь сам (точнее, тебе его дают вместе с квартирой), IP-адрес тебе выдают автоматически — об этом ниже.
2. Как устроен IPv4-адрес
Самый распространённый формат — IPv4 (IP version 4). Выглядит так:
192.168.1.42
Это четыре числа от 0 до 255, разделённые точками. Каждое такое число называется октет (англ. octet — «восьмёрка»).
Почему «октет», а не «байт»? Технически это одно и то же — 8 бит. Но в сетях исторически принято говорить «октет», чтобы не было путаницы с другими определениями байта.
3. Биты, байты и октеты — что под капотом
Компьютер не знает чисел «192» — он знает только нули и единицы. Числа от 0 до 255 умещаются ровно в 8 нулей и единиц. Это и называется бит (англ. bit = binary digit).
Покажу на пальцах. Возьмём число 192 и переведём в биты:
Вот и весь секрет: каждый октет — это 8 переключателей, каждый «включён» или «выключен». Минимум — все выключены = 0, максимум — все включены = 255.
Сколько всего адресов IPv4? 4 октета × 8 битов = 32 бита. Это 232 = около 4,3 миллиарда уникальных адресов.
В 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 тысяч | Домашние роутеры, маленькие офисы |
Когда ты создаёшь VPC в AWS или сеть в Docker, ты выбираешь именно приватный диапазон. Например 10.10.0.0/16 для prod и 10.20.0.0/16 для staging.
Правило №1: не пересекай диапазоны с другими сетями твоей компании. Иначе при соединении (VPN, peering) пакеты будут блуждать — машины не поймут, кому отправлять.
5. Особые адреса
Помимо обычных «публичных и приватных», есть несколько специальных адресов, которые тебе встретятся каждый день. Их нужно знать наизусть.
localhost:3000 — оно доступно у тебя, и больше нигде. Технически весь диапазон 127.0.0.0/8 — это loopback, но 99% времени используется именно 127.0.0.1. Имя localhost разрешается в этот адрес автоматически.
0.0.0.0 — он принимает соединения через все свои сетевые интерфейсы (и Wi-Fi, и Ethernet). В роутинге 0.0.0.0/0 означает «всё, что угодно» — это default route, маршрут по умолчанию.
ip addr — это сигнал «DHCP не сработал, что-то не так с сетью».
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-адрес вручную. Откуда же он берётся?
Отвечает DHCP — Dynamic Host Configuration Protocol. Это сервис, который автоматически раздаёт IP-адреса устройствам в сети. У тебя дома DHCP-сервер встроен в роутер. В офисах и облаках — может быть отдельный.
Адрес, который выдал DHCP, называется аренда (lease) и имеет срок действия — например, 24 часа. Если за это время устройство снова подключилось — оно обычно получает тот же IP. Если ушло надолго — IP уходит в общий пул и может быть выдан другому.
Серверам в production часто назначают статический IP — то есть он не меняется. Иначе если адрес сервера сегодня 10.0.1.5, а завтра 10.0.1.12, то все его клиенты перестанут его находить. Об этом — в уроке 5 (DNS), который и решает проблему «адрес может меняться».
9. Что с этим делает DevOps / DevSecOps
- VPC в AWS. Создавая VPC, ты выбираешь приватный CIDR-диапазон. Это IP-планирование на 5 лет вперёд: ошибся — и потом не подружишь сети.
- Service Discovery. Адрес контейнера в K8s динамический (он умер — поднялся новый с другим IP). Поэтому общаются не по IP, а по имени сервиса. Это потребует DNS.
- Firewall. Все правила в Security Groups, NetworkPolicies, nftables формулируются в терминах «откуда» / «куда» — то есть IP-диапазоны.
- Безопасность облаков. Атаки на metadata-сервис
169.254.169.254— классика. Если приложение позволяет «дернуть произвольный URL» (SSRF), злоумышленник попросит его сходить на metadata и украдёт credentials. CKS-вопрос. - Дебаг. «Сайт не открывается». Первый шаг — проверить, что IP резолвится и пингуется. Если пинг идёт, а порт закрыт — проблема выше; если не идёт — сеть/маршрут.
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. Чек-лист «понимаю это»
Проставь галочки. Не отметил — вернись.
- ☐ Объясню, зачем нужен IP-адрес
- ☐ Знаю, что IPv4 — это 4 октета по 8 бит, и могу написать
192.168.1.42в битах - ☐ Помню, почему IPv4-адресов «всего 4 миллиарда» — и почему этого мало
- ☐ Различаю публичный и приватный IP, могу назвать три приватных диапазона
- ☐ Знаю, что значат
127.0.0.1,0.0.0.0,169.254.169.254 - ☐ Понимаю, чем IP отличается от MAC
- ☐ Объясню, как ноутбук получает IP через DHCP
- ☐ Запустил
ip addrи нашёл свои адреса - ☐ Узнал свой публичный IP и понимаю, почему он отличается от приватного
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.1 — loopback, «сам себе»: пакеты разворачиваются внутри
операционной системы и до сетевой карты вообще не доходят. Поэтому 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.
Ты знаешь, что такое адрес. Но вот вопрос, на котором спотыкаются все новички: откуда компьютер
знает, что 192.168.1.20 — его сосед по сети (можно напрямую), а 8.8.8.8 —
чужак (надо через роутер)? Ответ прячется в загадочной записи /24 и «маске подсети».
Следующий урок — самый важный в пути. Не спеши, пройди его вдумчиво.