intermediate
IP addressing и ports
Знайте IPv4/IPv6 basics, private ranges, NAT, sockets, well-known ports, ephemeral ports и как services bind/listen.
IPv4 — 32-битные адреса; частные диапазоны (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) за NAT для выхода в интернет. IPv6 — 128 бит, часто без NAT на edge. Сокет — (протокол, local IP, local port, remote IP, remote port).
Well-known ports: 80 HTTP, 443 HTTPS, 5432 PostgreSQL. Ephemeral ports (примерно 32768–60999 в Linux) расходуются на каждое исходящее TCP-соединение — сервисы с высоким churn могут их исчерпать.
import { createServer } from 'node:http';
createServer((req, res) => res.end('ok')).listen(3000, '0.0.0.0');
Привязка к `0.0.0.0` слушает все интерфейсы; контейнеры и облако добавляют overlay IP и security groups, фильтрующие порты независимо от приложения.
На интервью: NAT, чем localhost отличается от DNS-имён контейнеров, конфликты портов при deploy, согласование health-check портов.
Типовые ошибки: listen только на localhost в Kubernetes; путаница host port и container port; firewall блокирует mesh-трафик.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Частные и публичные диапазоны адресов.
- Симптомы исчерпания ephemeral ports.
- Адрес listen под среду развёртывания.
- Health checks на реальных listen ports.