Подсети и маски IPv4
IPv4-адрес — 32 бита (RFC 791). Маска подсети делит его на сетевой префикс и host-часть. Применяется побитовое AND между адресом и маской.
IP: 192.168.10.15 → 11000000.10101000.00001010.00001111
Mask: 255.255.255.0 → 11111111.11111111.11111111.00000000
Net: 192.168.10.0 → 11000000.10101000.00001010.00000000
Адрес 192.168.10.15 принадлежит сети 192.168.10.0/24. Цифра после / — длина префикса (CIDR, RFC 4632).
CIDR и VLSM
- CIDR (RFC 4632) — бесклассовая маршрутизация, заменила классы A/B/C.
- VLSM — переменная длина маски, разные подсети внутри одного блока.
/31— point-to-point линки (RFC 3021),/32— host route.- Агрегирование префиксов уменьшает таблицы маршрутизации.

Зарезервированные адреса в /24
В /31 и /32 host/broadcast не выделяются.
Шлюз и маршрутизация
Default gateway — IP роутера в той же подсети. Логика отправки пакета:
- Назначение в той же подсети (определяется маской) → ARP по IP-получателю → отправка кадра напрямую.
- Назначение вне подсети → ARP по IP шлюза → кадр уходит на gateway, который маршрутизирует пакет дальше.
ip route add default via 192.168.10.1
ip route show
# default via 192.168.10.1 dev eth0
# 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.15
MAC и ARP
MAC-адрес — 48-битный идентификатор L2-интерфейса (00:1A:2B:3C:4D:5E).
ARP (RFC 826) сопоставляет IPv4 с MAC внутри L2-сегмента:
- Узел шлёт broadcast ARP request
who-has <IP>. - Владелец IP отвечает unicast ARP reply со своим MAC.
- Ответ кэшируется в neighbor table.
ip neigh show
В IPv6 функция ARP заменена на NDP (RFC 4861).
DNS — записи
DNS (RFC 1034/1035) — иерархическая система имён, порт 53 UDP/TCP.
dig example.com
dig example.com MX
Подробнее — в отдельной заметке по DNS.
DHCP
DHCP (RFC 2131) выдаёт IP, маску, шлюз, DNS-серверы. Обмен по UDP-портам 67 (server) и 68 (client). Стадии DORA: Discover → Offer → Request → Ack.
Для IPv6 — DHCPv6 (RFC 8415) или SLAAC (RFC 4862).
NAT и PAT
NAT (RFC 3022) подменяет адреса. PAT/NAPT — разделение по портам, один публичный IP на множество внутренних:
192.168.1.10:52345 → 198.51.100.10:40001 → 203.0.113.5:80
192.168.1.11:52346 → 198.51.100.10:40002 → 203.0.113.5:80
sudo iptables -t nat -L -n -v