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.