Технические записки

Как на самом деле работают компьютерные сети

От электрического сигнала в кабеле до веб-страницы в браузере: путь одного пакета, шаг за шагом. Автор — maslen0k.

01

Модели: OSI и TCP/IP

Сеть — это стек слоёв. Каждый слой решает одну задачу и пользуется услугами нижнего, не зная, как тот устроен. Данные, спускаясь вниз, обрастают заголовками (инкапсуляция), на приёмнике заголовки снимаются в обратном порядке.

OSITCP/IPЕдиница данныхПримеры
7 Прикладной
6 Представления
5 Сеансовый
ПрикладнойДанныеHTTP, DNS, SSH, TLS
4 ТранспортныйТранспортныйСегмент / датаграммаTCP, UDP, QUIC
3 СетевойИнтернетПакетIP, ICMP
2 КанальныйКанальныйКадрEthernet, Wi-Fi
1 ФизическийБитыМедь, оптика, радио
Реальный интернет работает по TCP/IP. OSI — удобный словарь: когда говорят «L2-коммутатор» или «L7-балансировщик», имеют в виду номера слоёв OSI.
03

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.

04

Маршрутизация

Маршрутизатор смотрит на 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.

Статика и динамика

Важно: маршрутизатор меняет MAC-адреса в кадре на каждом хопе, а IP-адреса источника и назначения остаются прежними (кроме NAT).

05

Транспортный уровень: TCP и UDP

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

UDP

Минимальный заголовок (8 байт), без соединения, без гарантий. Подходит для DNS, голоса, игр, а также как основа QUIC.

TCP

Надёжный упорядоченный поток байт. Соединение устанавливается трёхсторонним рукопожатием:

Клиент            Сервер
  ── SYN, seq=x ─────────▶
  ◀── SYN+ACK, seq=y, ack=x+1 ──
  ── ACK, ack=y+1 ───────▶   соединение установлено
Сокет — это пятёрка: протокол, IP и порт источника, IP и порт назначения. Именно она однозначно определяет соединение.
06

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 шифруют запросы.

07

HTTP и TLS: что происходит при открытии сайта

  1. Браузер разрешает имя через DNS.
  2. Через ARP/шлюз пакеты уходят к маршрутизатору, затем через NAT и сеть провайдера к серверу.
  3. TCP-рукопожатие (в HTTP/3 вместо него QUIC поверх UDP).
  4. Рукопожатие TLS: сервер предъявляет сертификат, подписанный доверенным центром; стороны договариваются о ключах (обмен Диффи — Хеллмана) и дальше шифруют трафик.
  5. Запрос 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 — разбор пакетов.