Skip to main content

Чи можуть кілька застосунків використовувати один порт?

Основне правило

В один і той самий момент часу один порт + один протокол (TCP або UDP) може бути зайнятий лише одним застосунком.

Це потрібно, щоб операційна система:

  • однозначно знала
  • якому процесу передавати вхідні дані

Як це виглядає на практиці

TCP (найчастіший випадок)

  • Один сервер:
    • слухає один порт (наприклад, 80 або 443)
  • Багато клієнтів:
    • підключаються до цього порту
    • кожен клієнт використовує свій тимчасовий (ephemeral) порт

Важливо:

  • сервер - одне застосування
  • порт - один
  • з'єднань - багато

Це не кілька застосунків, а одне застосування з безліччю з'єднань.


Чому два різні застосунки не можуть просто ділити порт

Якщо б:

  • два різні застосунки
  • слухали один і той самий TCP-порт

ОС:

  • не змогла б визначити
  • якому застосунку віддати вхідний сегмент

Тому ОС забороняє це типово.


Винятки і нюанси

1. UDP + спеціальні налаштування

В UDP можливо:

  • дозволити кільком застосункам
  • слухати один порт (через спеціальні опції сокетів)

Але:

  • це рідкісний і специфічний випадок
  • використовується в особливих сценаріях (наприклад, multicast)

2. Різні протоколи

TCP і UDP - різні простори портів.

Тому:

  • один застосунок може слухати TCP 53
  • інший - UDP 53

І це нормально.


3. Різні IP-адреси

Якщо у сервера:

  • кілька IP-адрес

То:

  • різні застосунки можуть слухати
    • один і той самий порт
    • але на різних IP

Приклад:

192.168.1.10:80 → застосунок A 192.168.1.20:80 → застосунок B

Ключова ідея

ОС розрізняє з'єднання за:

IP + порт + протокол

А для TCP-з'єднань - за повною парою:

(IP клієнта, порт клієнта) ↔ (IP сервера, порт сервера)

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.