Почему TCP-порт 443 - это не обязательно один TCP-порт? Когда говорят… — Network Admin — TG.ME

Почему TCP-порт 443 - это не обязательно один TCP-порт?

Когда говорят «сервер слушает 443 порт», легко представить один socket, который принимает все HTTPS-соединения.

Но TCP идентифицирует соединение не только по порту назначения.

Для него важна комбинация:

src IP + src port + dst IP + dst port


Например, сервер слушает:

10.0.0.10:443


А клиенты создают:

10.0.1.20:49152 → 10.0.0.10:443 10.0.1.21:49153 → 10.0.0.10:443 10.0.1.22:49154 → 10.0.0.10:443


Все три соединения приходят на один :443, но TCP воспринимает их как разные соединения.

И именно поэтому веб-сервер может одновременно обслуживать тысячи клиентов через один порт.

Но есть ещё интереснее.

Один и тот же порт 443 могут одновременно слушать несколько процессов, если используется SO_REUSEPORT.

Например:

ss -lntp | grep :443


несколько worker-процессов могут иметь собственные listening sockets на одном IP:443.

Ядро само распределяет новые соединения между ними.

При этом уже установленное соединение не прыгает между процессами: выбранный socket становится владельцем конкретного TCP-потока.


Поэтому фраза «порт 443 занят веб-сервером» на практике скрывает сразу несколько уровней:

443 - номер порта
IP:443 - endpoint
4-tuple - конкретное TCP-соединение
socket - объект, через который процесс работает с этим соединением

Именно поэтому один:443 способен обслуживать огромное количество независимых TCP-соединений одновременно.

N.A.
👍6
August 19, 2026 2K 32