Модели: OSI и TCP/IP
Сеть — это стек слоёв. Каждый слой решает одну задачу и пользуется услугами нижнего, не зная, как тот устроен. Данные, спускаясь вниз, обрастают заголовками (инкапсуляция), на приёмнике заголовки снимаются в обратном порядке.
| OSI | TCP/IP | Единица данных | Примеры |
|---|---|---|---|
| 7 Прикладной 6 Представления 5 Сеансовый | Прикладной | Данные | HTTP, DNS, SSH, TLS |
| 4 Транспортный | Транспортный | Сегмент / датаграмма | TCP, UDP, QUIC |
| 3 Сетевой | Интернет | Пакет | IP, ICMP |
| 2 Канальный | Канальный | Кадр | Ethernet, Wi-Fi |
| 1 Физический | Биты | Медь, оптика, радио |
Канальный уровень: Ethernet, MAC, коммутаторы
В пределах одного сегмента устройства общаются кадрами. Адрес на этом уровне — MAC (48 бит, например 3c:22:fb:9a:01:7e). Он привязан к сетевой карте и значим только локально: через маршрутизатор MAC не «путешествует».
Кадр Ethernet: | MAC получателя 6Б | MAC отправителя 6Б | EtherType 2Б | Данные 46–1500Б | FCS 4Б |
Коммутатор (switch) учится на лету: видит кадр с MAC-источником X на порту 3 и запоминает «X живёт за портом 3» в таблице MAC-адресов. Если получатель известен — кадр уходит в один порт, если нет (или это broadcast) — рассылается во все, кроме входного.
ARP: как узнать MAC по IP
Чтобы отправить пакет соседу 192.168.1.20, хост рассылает broadcast: «У кого 192.168.1.20? Сообщите MAC». Владелец отвечает, ответ кэшируется (arp -a).
VLAN
Тег 802.1Q (12 бит, до 4094 сетей) логически делит один коммутатор на несколько изолированных широковещательных доменов.
IP-адресация и подсети
IPv4-адрес — 32 бита, записанные как четыре октета: 192.168.1.37. Маска определяет, где граница между сетью и хостом. Запись CIDR /24 значит «первые 24 бита — сеть».
192.168.1.37/24 адрес : 11000000.10101000.00000001.00100101 маска : 11111111.11111111.11111111.00000000 сеть : 192.168.1.0 broadcast: 192.168.1.255 хосты : .1 – .254 (2^8 − 2 = 254)
Частные диапазоны (RFC 1918)
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — не маршрутизируются в интернете, используются дома и в офисах.
Калькулятор подсети
—
NAT
Домашний роутер подменяет частный адрес и порт источника на свой публичный и запоминает соответствие в таблице. Так сотни устройств выходят в сеть с одним IPv4. Побочный эффект: входящие соединения снаружи не проходят без проброса портов.
IPv6
128 бит, адреса вида 2001:db8::1. Адресов хватает, чтобы отказаться от NAT, а ARP заменён протоколом NDP.
Маршрутизация
Маршрутизатор смотрит на IP назначения и выбирает следующий узел (next hop) по таблице маршрутов. Побеждает самый длинный совпавший префикс.
Destination Next hop Iface 10.0.0.0/8 10.1.1.1 eth1 10.20.0.0/16 10.1.1.2 eth2 ← для 10.20.5.9 выберут этот 0.0.0.0/0 203.0.113.1 eth0 ← маршрут по умолчанию
На каждом хопе уменьшается поле TTL; при нуле пакет отбрасывается, а отправитель получает ICMP Time Exceeded. На этом построен traceroute.
Статика и динамика
- OSPF — внутри организации; каждый маршрутизатор знает топологию и считает кратчайшие пути (алгоритм Дейкстры).
- BGP — между автономными системами (провайдерами); выбор по политикам, а не только по метрике. Именно BGP «склеивает» интернет.
Важно: маршрутизатор меняет MAC-адреса в кадре на каждом хопе, а IP-адреса источника и назначения остаются прежними (кроме NAT).
Транспортный уровень: TCP и UDP
IP доставляет пакеты «как получится»: они могут потеряться, дублироваться, прийти не по порядку. Транспорт добавляет порты (чтобы различать приложения на хосте) и, при необходимости, надёжность.
UDP
Минимальный заголовок (8 байт), без соединения, без гарантий. Подходит для DNS, голоса, игр, а также как основа QUIC.
TCP
Надёжный упорядоченный поток байт. Соединение устанавливается трёхсторонним рукопожатием:
Клиент Сервер ── SYN, seq=x ─────────▶ ◀── SYN+ACK, seq=y, ack=x+1 ── ── ACK, ack=y+1 ───────▶ соединение установлено
- Номера последовательности и ACK — подтверждение получения, повторная отправка потерянного.
- Управление потоком — окно приёма: получатель говорит, сколько байт готов принять.
- Управление перегрузкой — отправитель сам замедляется при потерях (slow start, CUBIC, BBR).
- Закрытие — обмен FIN/ACK в обе стороны.
DNS: имена вместо адресов
DNS — распределённая иерархическая база. Имя www.example.com. читается справа налево: корень → com → example → www.
Браузер → резолвер (провайдер / 1.1.1.1 / 8.8.8.8) резолвер → корневой сервер : «кто знает .com?» → адрес TLD резолвер → TLD-сервер .com : «кто знает example.com?» → адрес NS резолвер → NS example.com : «A для www?» → 93.184.216.34 Ответ кэшируется на время TTL.
| Запись | Назначение |
|---|---|
| A / AAAA | имя → IPv4 / IPv6 |
| CNAME | псевдоним на другое имя |
| MX | почтовые серверы домена |
| TXT | произвольный текст (SPF, верификация) |
| NS | авторитетные серверы зоны |
Классический DNS идёт по UDP/53 открытым текстом; DoH и DoT шифруют запросы.
HTTP и TLS: что происходит при открытии сайта
- Браузер разрешает имя через DNS.
- Через ARP/шлюз пакеты уходят к маршрутизатору, затем через NAT и сеть провайдера к серверу.
- TCP-рукопожатие (в HTTP/3 вместо него QUIC поверх UDP).
- Рукопожатие TLS: сервер предъявляет сертификат, подписанный доверенным центром; стороны договариваются о ключах (обмен Диффи — Хеллмана) и дальше шифруют трафик.
- Запрос HTTP и ответ.
GET /notes HTTP/1.1 Host: example.com HTTP/1.1 200 OK Content-Type: text/html Cache-Control: max-age=3600
HTTP/1.1 — текст, один запрос за раз на соединение; HTTP/2 мультиплексирует много потоков в одном TCP; HTTP/3 делает то же поверх QUIC и избегает блокировки очереди при потерях.
Полезные инструменты
ping — доступность и задержка, traceroute — путь, dig — DNS, ss -tulpn — открытые сокеты, curl -v — HTTP и TLS, tcpdump/Wireshark — разбор пакетов.