Компьютерные сети

Порты: двери в компьютер

Ваш браузер открыл 30 вкладок, мессенджер качает файлы, Spotify играет музыку - и всё через один сетевой кабель и один IP-адрес. Как компьютер знает, какой пакет кому? Порты - система «квартирных номеров» для сетевого трафика.

  • **Веб-разработка:** понимание портов нужно для настройки серверов, работы с Docker, отладки CORS
  • **Безопасность:** файрволы работают с портами; открытые порты = потенциальные уязвимости
  • **DevOps:** проброс портов, конфликты портов, load balancing - ежедневные задачи

Предварительные знания

  • IP Addresses: the postal codes of the internet

Номера портов

**Порт** - это 16-битное число (0–65535), которое идентифицирует конкретное приложение или сервис на компьютере. Если IP-адрес - это адрес дома, то порт - это номер квартиры.

Диапазон портов делится на три категории: **Well-known** (0–1023) - системные, требуют root-прав; **Registered** (1024–49151) - для приложений; **Dynamic/Private** (49152–65535) - для клиентских соединений.

**Важно:** Порт существует только в контексте транспортного протокола. TCP:80 и UDP:80 - это разные порты! Веб-сервер может слушать TCP:80, а другой сервис - UDP:80.

Сколько всего возможных номеров портов?

Стандартные порты

**Well-known порты** (0–1023) зарезервированы для стандартных сервисов. IANA (Internet Assigned Numbers Authority) ведёт официальный реестр. Знание этих портов - базовый навык сетевика.

**Мнемоника:** HTTP = 80, HTTPS = 443. Разница +363. SSH = 22 (два «s» в названии = двойка). DNS = 53 (пять + три = восемь букв в «resolver»).

На каком порту работает HTTPS?

Сокеты - точки соединения

**Сокет** (socket) - это комбинация IP-адреса и порта, уникально идентифицирующая конечную точку соединения. Записывается как `IP:port`, например `192.168.1.100:443`.

**Ephemeral ports** (динамические порты) - порты из диапазона 49152–65535, которые ОС автоматически назначает клиентским соединениям. Каждое новое соединение получает свой уникальный порт.

Что уникально идентифицирует TCP-соединение?

Мультиплексирование

**Мультиплексирование** - способность одного сетевого интерфейса обслуживать множество соединений одновременно. Порты - ключевой механизм мультиплексирования на транспортном уровне.

**Эффективность:** Без портов каждому приложению нужен был бы отдельный IP. Благодаря мультиплексированию один сервер с одним IP может обслуживать миллионы одновременных соединений.

Порт - это физический разъём на компьютере

Сетевой порт - это логический номер, не физический. Физические порты (USB, Ethernet) - совсем другое

Путаница возникает из-за общего термина. Сетевой порт - число от 0 до 65535, которое идентифицирует сервис. Никакого отношения к разъёмам не имеет.

Что позволяет мультиплексирование на транспортном уровне?

Ключевые идеи

  • **Порт** - 16-битное число (0–65535), идентифицирующее сервис на хосте
  • **Well-known порты** (0–1023): HTTP=80, HTTPS=443, SSH=22, DNS=53
  • **Сокет** = IP + порт, 5-tuple уникально идентифицирует соединение
  • **Мультиплексирование** позволяет множеству приложений работать через один IP

Связанные темы

Порты - фундамент для понимания транспортных протоколов:

  • UDP — Использует порты для адресации дейтаграмм
  • TCP — Порты + sequence numbers для надёжной доставки
  • NAT — Трансляция портов при проходе через роутер

Вопросы для размышления

  • Почему нельзя запустить nginx на порту 80 без sudo?
  • Как веб-сервер обслуживает тысячи клиентов на одном порту 443?
  • Что произойдёт, если два приложения попытаются занять один порт?

Связанные уроки

  • net-14-udp — Порты используются UDP для мультиплексирования
  • net-15-tcp-basics — TCP-соединение идентифицируется парой src:port/dst:port
  • net-25-nat — NAT перезаписывает порты для маскировки адресов
  • net-42-firewall — Файрволы фильтруют трафик по портам
  • net-06-ip-intro — Порты работают поверх IP-адресации
  • alg-10-binary-search — Port lookup в ОС использует hash table - O(1) поиск
  • os-15-syscalls
Порты: двери в компьютер

0

1

Войти