Сколько всего может быть TCP/UDP портов?

«Сколько всего может быть TCP/UDP портов?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Номера портов в TCP и UDP — это 16-битные беззнаковые целые числа. Следовательно, общий диапазон составляет от 0 до 65535, что дает 65536 возможных портов.

Они разделены на три категории:

  1. Well-known ports (0-1023): Закреплены за системными службами (например, 22-SSH, 80-HTTP, 443-HTTPS). Для их использования обычно требуются права root.
  2. Registered ports (1024-49151): Могут быть зарегистрированы IANA для приложений (например, 3306 для MySQL, 5432 для PostgreSQL).
  3. Dynamic/Private ports (49152-65535): Используются клиентами для временных (ephemeral) соединений. Когда клиент инициирует соединение с сервером, ОС обычно выбирает свободный порт из этого диапазона.

Практическое значение для DevOps:

  • При настройке Security Groups в облаке или файрволов (iptables, nftables) вы явно разрешаете трафик на определенные порты.
  • В Kubernetes Service определяет порт, на котором он доступен внутри кластера и снаружи (NodePort — также из диапазона 30000-32767).
  • Утилита netstat или ss помогает диагностировать, какие порты слушаются.

Пример проверки открытых портов на хосте:

# Показать все слушающие TCP-порты
ss -tlnp
# Показать процессы, использующие порт 80
sudo lsof -i :80