Сетевой Цех
Основы сетей

Порты: зачем они нужны и что означают их номера

65 535 номеров, из которых в обычной жизни встречаются пара десятков. Разбираемся, откуда взялось это число и зачем вообще понадобились порты

Редакция «Сетевого Цеха»12 сентября 2026 г. (обновлено 23 сентября 2026 г.) 5 мин чтения

Зачем понадобились номера

На одном сервере обычно живёт не одна служба: веб-сервер, почта, SSH, база данных. IP-адрес у них общий — он принадлежит машине, а не программе. Порт и есть тот номер, который говорит, какой именно программе предназначены данные.

Под номер порта отведено 16 бит, отсюда диапазон от 0 до 65535. Номер есть и у отправителя, и у получателя: браузер, открывая сайт, обращается на порт 443 сервера, а себе берёт случайный высокий номер, чтобы понимать, какой вкладке отдать ответ.

Важно, что наборы портов у TCP и UDP независимы. Порт 53 TCP и порт 53 UDP — это два разных порта, и занять их могут разные программы. Именно поэтому в правилах фаервола протокол указывается всегда.

Три диапазона

Диапазон

Название

Кто использует

0–1023

Системные

Общеизвестные службы; в Linux занять такой порт может только привилегированный процесс

1024–49151

Зарегистрированные

Прикладные сервисы — базы данных, панели управления, ваши приложения

49152–65535

Динамические

Временные порты клиентских соединений

Ограничение на первый диапазон в Linux — не формальность, а мера безопасности: обычный пользователь не может поднять что-то своё на 80-м порту и притвориться веб-сервером системы. Побочный эффект знаком всем, кто запускал приложение и получал отказ в доступе на порту 443. Обходится это либо запуском через systemd с нужными правами, либо обратным прокси, либо разрешением конкретному исполняемому файлу занимать низкие порты.

Откуда берутся временные порты

Когда программа открывает исходящее соединение, система сама выбирает ей свободный номер из динамического диапазона. Закрытое соединение ещё некоторое время держит свой порт в состоянии TIME_WAIT — на случай опоздавших пакетов. На нагруженном сервере, который сам инициирует тысячи соединений в секунду, свободные номера могут кончиться, и это одна из причин загадочных отказов под нагрузкой при полном порядке с процессором и памятью.

Номера, которые стоит помнить

Порт

Служба

Замечание

22

SSH

Удалённый доступ к серверу

53

DNS

Обычно UDP, но для больших ответов и переноса зоны — TCP

67 и 68

DHCP

Сервер и клиент соответственно

80 и 443

HTTP и HTTPS

Сегодня почти всё — 443

123

NTP

Синхронизация времени, важнее, чем кажется

161

SNMP

Мониторинг сетевого оборудования

3389

RDP

Удалённый рабочий стол Windows

3306 / 5432

MySQL / PostgreSQL

Наружу такое не открывают

25, 465, 587

SMTP

Отправка почты; 25-й у домашних провайдеров обычно закрыт

Стоит помнить, что соответствие «номер — служба» это договорённость, а не закон. Никто не мешает повесить веб-сервер на 8080 или SSH на 2222; просто клиенты по умолчанию стучатся в стандартные номера, и нестандартный придётся указывать явно.

Кто занял порт и слушает ли служба вообще

Ситуация «адрес уже используется» при запуске службы — дело житейское. В Linux смотрим ss -tulpn, в Windows — netstat -an и затем по номеру процесса находим виновника в диспетчере задач. Чаще всего это предыдущая копия той же программы, которую забыли остановить.

Самая частая находка

Служба слушает 127.0.0.1 вместо 0.0.0.0. Локально всё работает, снаружи ничего не доступно, и ошибка выглядит как проблема сети, хотя сеть тут ни при чём. Смотреть нужно на левую колонку вывода: там либо конкретный адрес, либо звёздочка — «на всех интерфейсах».

Проверка снаружи

Проверить доступность порта с другой машины проще всего подключением: telnet host 443, nc -zv host 443 или в PowerShell Test-NetConnection host -Port 443. Ответ разделяет три случая: соединение установлено — всё хорошо; мгновенный отказ — порт закрыт, но узел отвечает; долгое молчание до таймаута — пакеты отбрасывает фаервол.

Стоит ли переносить SSH на нестандартный порт

Совет перевесить SSH с 22-го порта на какой-нибудь 2222 встречается постоянно, и спорят о нём столько же. От целевой атаки это не спасает — сканирование найдёт службу за считаные секунды, а баннер честно расскажет, что это SSH.

Зато заметно уменьшается объём фонового мусора в логах: боты, перебирающие пароли по всему интернету, в массе своей стучатся только в стандартный порт. Разница бывает в сотни записей за сутки, и в этом есть практический смысл: в чистом журнале проще заметить настоящую аномалию.

То есть смысл в переносе есть, но в тишине логов, а не в безопасности. Реальная защита — ключи вместо паролей, запрет входа под root и ограничение доступа по адресам; об этом подробно в чек-листе по серверу. Если же переносите порт, не забудьте про два практических момента: открыть новый порт в фаерволе до перезапуска службы и проверить, что вы не заняли номер, который уже использует что-то другое.

Как выглядит сканирование портов

Посмотреть на свой сервер глазами постороннего полезнее, чем кажется: список открытых наружу портов почти всегда оказывается длиннее ожидаемого. Делается это сканером, самый известный из которых — nmap.

Базовая проверка выглядит как nmap -Pn адрес — она пройдётся по тысяче популярных портов. Ключ -Pn говорит не полагаться на ping: узел может не отвечать на эхо-запросы, но прекрасно работать.

Три возможных состояния

  • open — порт принимает подключения, за ним живая служба.

  • closed — узел ответил отказом: порт свободен, но сам хост доступен.

  • filtered — ответа нет вообще, пакеты кто-то молча отбрасывает. Обычно это фаервол.

Разница между closed и filtered практическая: в первом случае фаервол до порта не добрался, во втором работает как надо. Сервер, у которого всё закрытое показывается как filtered, а открытым остаётся только нужное, настроен правильно.

И одно предупреждение: сканировать можно свои узлы и те, на которые есть явное разрешение. Массовое сканирование чужих адресов провайдеры вполне обоснованно считают недружелюбной активностью, а во многих странах это ещё и повод для разговора с юристами.