vpsguru Обновлено 22.07.2026

TCP-порт — что это такое простыми словами: диапазоны и как проверить порт на сервере

Обновлено 18 сентября 2026 Чтение 10 мин Раздел: Словарь терминов: сеть, порты и работа с VPS

Разбираемся, что такое TCP-порт, зачем серверу нужны тысячи пронумерованных «дверей» и как узнать, какие из них открыты. Материал входит в словарь терминов и пригодится, если вы настраиваете firewall, SSH или веб-сервер на своём VPS впервые.

TCP-порт — что это такое простыми словами: диапазоны и как проверить порт на сервере

Коротко

Главные выводы статьи о теме «TCP-порт» в семи пунктах:

  • Всего существует 65 536 номеров TCP-портов — от 0 до 65 535
  • Известные (well-known) порты занимают диапазон 0–1023
  • Динамические порты выделяются из диапазона 49 152–65 535
  • TCP-соединение устанавливается за 3 шага: SYN, SYN-ACK, ACK
  • Порт 22 по умолчанию используется для SSH, порт 443 — для HTTPS
  • Заголовок TCP-пакета занимает минимум 20 байт против 8 байт у UDP
  • Порты ниже 1024 на Linux требует прав root для запуска сервиса

Что такое TCP-порт простыми словами

TCP-порт — это числовой идентификатор, который указывает, какая программа на сервере должна принять входящее соединение. Протокол TCP (Transmission Control Protocol) отвечает за гарантированную доставку данных: пакеты приходят в исходном порядке и без потерь, в отличие от протокола UDP, который данные не проверяет и не пересылает повторно. Всего существует 65 536 номеров портов — от 0 до 65 535.

Удобная аналогия: IP-адрес сервера — это адрес дома, а порт — номер конкретной квартиры в этом доме. Почтальон (сетевой пакет) находит дом по адресу, а квартиру — по номеру, и именно туда попадает письмо, а не к соседям. Так и данные приходят на сервер по IP-адресу, а порт определяет, какому именно сервису их передать.

За надёжность TCP платит размером заголовка: он занимает минимум 20 байт против 8 байт у заголовка UDP. Эти дополнительные байты хранят номера пакетов, контрольные суммы и данные для подтверждения доставки. Часть портов закреплена за конкретными сервисами по умолчанию, и три из них встречаются чаще всего:

  • Порт 22 — используется для SSH, удалённого подключения к серверу
  • Порт 80 — используется для обычного HTTP-трафика
  • Порт 443 — используется для HTTPS, защищённого соединения по протоколу TLS

Если вы настраиваете сервер впервые и не хотите разбираться в тонкостях портов вручную, проще заказать VPS с готовой настройкой и начать с уже открытых нужных портов.

Как работает TCP-порт: сокет и рукопожатие

Сам по себе TCP-порт — это просто число. Чтобы данные дошли до нужной программы, операционная система связывает вместе IP-адрес, номер порта и протокол — эта тройка называется сокетом. Например, сокет 192.0.2.10:443/tcp однозначно указывает на конкретный процесс на конкретном сервере, а не просто на машину в сети.

Перед обменом данными по протоколу TCP (Transmission Control Protocol, протокол управления передачей) две стороны договариваются о соединении за 3 шага — это называется тройным рукопожатием (three-way handshake). Клиент отправляет пакет с флагом SYN, сервер отвечает пакетом SYN-ACK, после чего клиент подтверждает связь пакетом ACK. Только после этого начинается передача данных, а служебный заголовок каждого TCP-пакета занимает минимум 20 байт.

Установленные соединения видно в выводе утилиты ss или устаревшей netstat. Строка вида tcp ESTAB 0 0 192.0.2.10:22 198.51.100.5:51422 показывает локальный порт 22, который на Linux требует прав root, и удалённый порт 51422, выбранный клиентом из динамического диапазона. Точно так же выглядит соединение по порту 443 для HTTPS.

Несколько важных деталей о нумерации:

  • Номер порта — это одно и то же число независимо от версии протокола IP, разница между IPv4 и IPv6 на порты не влияет.
  • Локальный порт в примере выше — 22, удалённый — 51422.
  • Рукопожатие всегда состоит именно из трёх пакетов: SYN, SYN-ACK, ACK.
Схема TCP-рукопожатия SYN SYN-ACK ACK
Как устанавливается TCP-соединение: три шага рукопожатия

Какие бывают TCP-порты: диапазоны и популярные номера

Всего существует 65 536 номеров TCP-портов — от 0 до 65 535. Их делят на три диапазона по правилам назначения. Понимать эту разбивку полезно, чтобы не занять чужой порт и не запускать сервис там, где его не ждут.

Известные (well-known) порты занимают диапазон 0–1023. Их закрепили за конкретными службами: например, порт 22 по умолчанию используется для SSH, а порт 443 — для HTTPS. Registered-порты идут с 1024 по 49 151 — их регистрируют разработчики конкретных приложений, например баз данных. Динамические порты выделяются из диапазона 49 152–65 535 и обычно достаются клиентским соединениям на время сессии.

Ниже — таблица с портами, которые встречаются чаще всего. Диапазон и назначение помогают быстро понять, к какой категории относится нужный вам порт.

Порт Служба Диапазон
22 SSH (Secure Shell, удалённый доступ) well-known
25 SMTP (Simple Mail Transfer Protocol, отправка почты) well-known
53 DNS (Domain Name System) well-known
80 HTTP well-known
443 HTTPS well-known
3306 MySQL registered
5432 PostgreSQL registered
6379 Redis registered

Подробнее о конкретном номере читайте в разборе порта 443 и его назначения. Порты ниже 1024 на Linux требуют прав root для запуска сервиса — обычным пользователем поднять веб-сервер на порту 80 не получится. Если нужен сервер с полным доступом к таким портам, выберите подходящий VPS.

Подобрать сервер для тестирования портов

Проверить работу портов на практике удобнее на собственном VPS — сравните тарифы и характеристики в подборке.

Открыть рейтинг VPS

Как проверить и открыть TCP-порт на сервере

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

Начинайте проверку на самом сервере, а заканчивайте с внешнего компьютера. Так вы сразу поймёте, где проблема: в сервисе, в локальном файрволе или в сетевых правилах провайдера. Команды ниже подходят для Ubuntu и Debian. Для них нужен доступ по SSH (Secure Shell) и права sudo.

Если своего сервера у вас пока нет, выберите VPS с root-доступом. VPS (Virtual Private Server) — это виртуальный выделенный сервер. На обычном виртуальном хостинге настроить файрвол не получится.

Как проверить и открыть TCP-порт по шагам:

  1. Посмотрите, какие порты слушает сервер: sudo ss -tulnp. Что значат ключи: -t — TCP, -u — UDP, -l — только слушающие порты, -n — номера вместо имён, -p — процесс. Запись 0.0.0.0:443 значит, что порт доступен на всех сетевых интерфейсах, а 127.0.0.1:5432 — что он принимает только локальные подключения. На старых системах используйте netstat -tulnp из пакета net-tools.
  2. Проверьте конкретный порт: nc -zv -w 5 127.0.0.1 443. Ответ succeeded значит, что сервис принимает соединения. Ключ -w 5 ограничивает ожидание 5 секундами. Если nc нет, подойдёт telnet 127.0.0.1 443.
  3. Откройте порт в UFW (Uncomplicated Firewall): sudo ufw allow 22/tcp, затем остальные нужные порты, например sudo ufw allow 443/tcp. Разрешите порт 22 до команды sudo ufw enable, иначе потеряете доступ по SSH.
  4. Проверьте правила: sudo ufw status verbose. Статус должен быть active, а в списке — строка 443/tcp ALLOW Anywhere.
  5. Если UFW не установлен, выведите правила iptables: sudo iptables -L INPUT -n --line-numbers. Если политика цепочки — DROP и разрешающего правила нет, трафик блокируется. Добавьте правило: sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT. Затем сохраните его командой sudo netfilter-persistent save из пакета iptables-persistent, иначе после перезагрузки правило пропадёт.
  6. Повторите проверку с домашнего компьютера: nc -zv -w 5 203.0.113.10 443, где вместо 203.0.113.10 укажите IP-адрес вашего сервера. Если на сервере порт отвечает, а снаружи нет, откройте его в панели провайдера: у многих хостеров есть отдельный сетевой файрвол.
Терминал с командами ss -tulnp и ufw allow для проверки TCP-портов
Проверка открытых портов через ss и открытие порта в ufw (иллюстрация интерфейса)

Ошибки при работе с TCP-портами

Большинство проблем с TCP-портами повторяются от новичка к новичку: чаще всего это заблокированный провайдером порт 25 или правило ufw, которое забыли применить. Ошибку легко принять за сбой сервера, хотя причина — в паре забытых команд или путанице между протоколами. Ниже разберём все по порядку.

Первая ошибка: заблокирован исходящий порт 25

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

Как решить: напишите в поддержку с просьбой открыть порт или отправляйте почту через порт 587 с аутентификацией.

Вторая ошибка: правило ufw не применено

После команды ufw allow 8080/tcp соединение всё равно не проходит, потому что правило не применилось к активной сессии файрвола.

Как решить: выполните ufw reload или systemctl restart ufw.

Третья ошибка: путаница TCP и UDP

TCP и UDP — разные протоколы с раздельной нумерацией портов, и один номер может использоваться независимо. Например, DNS (система доменных имён) работает на порте 53 сразу по обоим: UDP — для обычных запросов, TCP — для больших ответов и синхронизации зон. Открыв только TCP 53, вы не решите проблему с UDP-запросами.

Четвёртая ошибка: Permission denied на порте 80

На Linux все порты из диапазона 0–1023 считаются известными (well-known) и требуют прав root, поэтому запуск сервиса от обычного пользователя заканчивается ошибкой.

Как решить: запускайте сервис через sudo или из-под systemd-юнита с правами root, выдайте бинарнику право слушать привилегированные порты командой setcap 'cap_net_bind_service=+ep' либо используйте порт выше 1024 с пробросом через обратный прокси.

Почти все эти ошибки решаются одной-двумя командами. Если разбираться с портами и файрволом каждый раз некогда, проще взять готовый VPS с преднастроенным файрволом и не тратить время на такие мелочи.

TCP-порт и UDP-порт: в чём разница

У TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) одинаковые номера портов: от 0 до 65 535. Но это два независимых набора. Служба, которая слушает порт 53/TCP, не примет запрос на 53/UDP. Поэтому в правилах файрвола всегда указывайте протокол: команда ufw allow 53/udp откроет только UDP.

Разница видна уже в заголовке пакета. Заголовок TCP занимает минимум 20 байт, а с опциями — до 60 байт. В нём хранятся номера последовательности, подтверждения и размер окна. Заголовок UDP весит всего 8 байт и содержит 4 поля: порт отправителя, порт получателя, длину и контрольную сумму.

Перед передачей данных TCP устанавливает соединение за 3 шага, нумерует байты и ждёт от получателя подтверждения ACK (acknowledgement). Потерянный пакет отправляется повторно, а данные собираются в исходном порядке. UDP отправляет датаграммы без соединения, подтверждений и повторов, поэтому работает быстрее и меньше нагружает сеть. Потери и перестановки пакетов при этом обрабатывает само приложение.

Как выбрать протокол:

  • TCP — когда важен каждый байт: HTTP (HyperText Transfer Protocol) на порту 80, HTTPS (HTTP Secure) на 443, SSH (Secure Shell) на 22, FTP (File Transfer Protocol) на 21.
  • UDP — когда важна скорость: DNS-запросы (Domain Name System) на порту 53, VoIP (Voice over IP) — голосовые звонки через интернет, онлайн-игры, видеотрансляции.
  • В звонке или игре пакет, который опоздал на 200 мс, уже бесполезен: проще пропустить его, чем ждать повторной отправки.
  • Чтобы узнать, какие порты слушает сервер, выполните ss -tlnp для TCP и ss -ulnp для UDP.
Сравнение заголовков TCP и UDP портов
TCP и UDP: разница в структуре заголовка пакета

Когда разбираться в номерах TCP-портов не обязательно

Глубокое понимание TCP-портов нужно не всем. Обычный пользователь браузера открывает сайты через порт 443 (HTTPS) или 80 (HTTP) автоматически — операционная система и браузер сами выбирают порт для соединения, вручную указывать номер не приходится.

На shared-хостинге без root-доступа управлять портами тоже не нужно: провайдер уже настроил веб-сервер, базу данных и почту, а межсетевой экран (firewall) администрирует хостинг-компания. То же касается управляемого VPS (виртуального выделенного сервера) с панелью управления вроде ISPmanager или cPanel — при установке приложения панель сама открывает нужный TCP-порт в файрволе и связывает его с сервисом. Вмешиваться в эти настройки вручную не только не обязательно, но и рискованно: одна ошибка в правиле файрвола способна закрыть доступ по SSH (порт 22) или остановить сайт.

Разбираться в портах стоит начать, когда возникает конкретная задача: запустить нестандартный сервис на произвольном порту, поднять несколько приложений на одном сервере или настроить проброс портов для собственного проекта. Для этого нужен полный доступ к firewall и правам root, которого нет на shared-хостинге и managed-тарифах.

Признаки того, что пора разобраться в портах:

  • Нужен свой сервис на порту вне диапазона 0–1023 — например, игровой сервер или API
  • Требуется одновременно несколько приложений на разных портах одного сервера
  • Хочется гибко настраивать правила iptables или ufw под свои задачи
  • Нужны права root для запуска сервисов на портах ниже 1024

Если вы узнали свою ситуацию в этом списке, пора переходить на сервер с полным контролем — подобрать VPS с root-доступом.

Частые вопросы

Что такое TCP порт простыми словами?
TCP-порт — это число от 0 до 65535, которое указывает конкретной программе на сервере, куда именно доставить данные внутри одного IP-адреса. Например, порт 443 отвечает за защищённые HTTPS-соединения, а порт 22 — за SSH. Без номера порта сервер не смог бы понять, какому из десятков запущенных сервисов адресован пакет.
Чем TCP-порт отличается от UDP-порта?
Оба используют одну и ту же нумерацию от 0 до 65535, но по-разному передают данные. TCP сначала устанавливает соединение через рукопожатие из трёх шагов и гарантирует доставку пакетов по порядку. UDP отправляет пакеты без подтверждения, поэтому работает быстрее, но подходит не для всех задач.
Какой порт использовать для SSH?
По умолчанию SSH работает на TCP-порту 22. Многие администраторы меняют его на нестандартный номер выше 1024, чтобы снизить количество автоматических атак на стандартный порт.
Как узнать, какие порты открыты на сервере?
На Linux-сервере это делает команда ss -tulnp или её более старый аналог netstat -tulnp — она показывает все TCP- и UDP-порты, которые слушают входящие соединения. Снаружи сервера порт можно проверить командой nc -zv или telnet.
Можно ли использовать один порт для нескольких программ?
Нет, один и тот же TCP-порт на одном IP-адресе не может одновременно слушать два разных процесса — система вернёт ошибку 'Address already in use'. Если порт занят, программе нужно либо освободить его, либо запуститься на другом номере.
Что такое порт 80 и порт 443?
Порт 80 используется для обычного HTTP-трафика без шифрования, а порт 443 — для защищённого HTTPS с TLS-сертификатом. Сегодня большинство сайтов работают через 443, а порт 80 чаще нужен только для редиректа на HTTPS.
Как открыть порт в файрволе на Ubuntu?
Проще всего использовать ufw: команда sudo ufw allow 22/tcp открывает порт 22 для TCP-трафика, а sudo ufw status показывает список активных правил. Если ufw не установлен, порт открывают напрямую через iptables.
Сколько всего TCP-портов существует?
Всего доступно 65 536 номеров портов — от 0 до 65 535. Они делятся на три диапазона: известные порты 0–1023, регистрируемые 1024–49151 и динамические 49 152–65 535.
Что делать, если порт не открывается?
Сначала проверьте, слушает ли его нужный процесс через ss -tulnp, затем — не блокирует ли его firewall на сервере (ufw status) и хостинг-провайдер на уровне сети. Часто провайдеры дополнительно блокируют исходящий порт 25, чтобы защититься от спам-рассылок.
Нужно ли менять порт SSH для безопасности?
Смена стандартного порта 22 не делает сервер неуязвимым, но заметно снижает число автоматических попыток подбора пароля ботами. Дополнительно стоит настроить вход по ключу и отключить вход под root.
Что такое проброс портов (port forwarding)?
Это перенаправление трафика с одного порта на другой — например, с внешнего порта роутера на внутренний порт сервера в локальной сети. Такой приём используют, чтобы получить доступ к сервису за NAT из интернета.
Влияет ли номер порта на скорость соединения?
Сам номер порта на скорость не влияет — важен протокол (TCP или UDP) и загруженность канала. TCP из-за подтверждений пакетов может быть чуть медленнее UDP при равных условиях, но это не связано с конкретным номером порта.

Итоговый чек-лист

Используйте этот список как финальную проверку: каждый пункт — короткий вывод из статьи выше. Отметьте для себя, что уже сделано, а что осталось.

  • Проверили, что номер порта входит в диапазон 0–65535
  • Определили нужный протокол: TCP или UDP
  • Открыли порт в firewall командой вида ufw allow
  • Проверили доступность порта изнутри через ss/netstat
  • Проверили доступность порта снаружи через nc или telnet
  • Убедились, что порт не занят другим процессом
  • Закрыли неиспользуемые порты для безопасности сервера

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

Источники

На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.