Сколько процессов может прослушивать определенный порт?

Сколько процессов может прослушиваться на определенном порту, таком как 80? и как дочерние процессы какого-либо приложения могут использовать один и тот же порт для прослушивания? Есть ли разница между прослушиванием порта или установкой прослушивающего соединения?

2 Solutions collect form web for “Сколько процессов может прослушивать определенный порт?”

В: Сколько процессов может прослушиваться на конкретном порту?

A: столько, сколько вы можете создать.

Однако, по крайней мере, для сокетов SOCK_STREAM и, если вы не используете параметр SO_REUSEPORT (новый в Linux 3.9), процесс не может привязать сокет к локальной конечной точке (адрес + порт для TCP, имя файла для Unix …), если уже есть другой сокет (или прослушивание на этом порту с подстановочным адресом).

Поэтому, если вы не используете SO_REUSEPORT, единственный способ прослушивания разных процессов на одном и том же порту – иметь соответствующие дескрипторы файлов, указывающие на то же самое описание открытого файла (в тот же сокет).

Это происходит автоматически, когда вы выполняете процесс fork() . Если fd 3 указывает на прослушивающий TCP-сокет по подстановочному адресу и порту 12345, оба процесса после того, как fork будет прослушивать этот порт на этом fd (синтаксис zsh ниже):

 $ zmodload zsh/net/tcp $ ztcp -ld 3 12345 $ sleep 10 & $ lsof -ni tcp:12345 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME zsh 26277 stephane 3u IPv4 506354 0t0 TCP *:12345 (LISTEN) sleep 26988 stephane 3u IPv4 506354 0t0 TCP *:12345 (LISTEN) 

Для процессов, которые не связаны друг с другом, единственный способ (который я знаю) для процесса получить доступ к этому SCM_RIGHT сокету должен был бы использовать механизм SCM_RIGHT для передачи fds (в ​​действительности более похожим на описания открытых файлов ) между процессами с использованием сокетов домена unix.

Вы заметите, что один аргумент для listen() – это отставание .

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

Тогда первый процесс, который accept() на любом из fds, указывающих на прослушивающий сокет (или любой из прослушивающих сокетов с SO_REUSEPORT ), получит входящее соединение. accept() создает новый сокет и возвращает новый fd в этот socket . В свою очередь, этот fd можно дублировать (новый fd, указывающий на один и тот же сокет), а детские процессы наследуют этот подключенный сокет, как если бы он прослушивал.

В этом ответе обсуждается TCP на IPv4.

Только один процесс может прослушивать новые подключения. Вы получите сообщение об ошибке «адрес уже используется», если несколько процессов пытаются утверждать один и тот же порт.

Это полностью отличается от количества процессов, которые активно используют этот порт.

Посмотрите следующий результат:

 remote local state *:* - 4.3.2.1:5000 LISTENING 1.2.3.4:12345 - 4.3.2.1:5000 CONNECTED 4.5.6.7:83247 - 4.3.2.1:5000 CONNECTED 

То, что должно быть уникальным, – это 4-кортеж (remote-ip, remote-port, local-ip, local-port) . Поскольку (remote-ip, remote-port) в состоянии LISTENING является *:* , может прослушиваться только один процесс.

Приложение-слушатель начнет новый поток / задачу / процесс для каждого входящего соединения.

  • Расширение обмена на Centos
  • Как я могу сказать, что xfs_repair застрял или все еще работает?
  • Храните живой клон машины в другой
  • Регистр библиотеки rpmbuild для 'require'
  • Linuxwacom xsetwacom / xorg.conf
  • Кластер Mariadb не запускается при перезагрузке
  • Вытащить всю измененную память процесса из-под свопа
  • Почему версия программного обеспечения i386 устанавливается в системе x86_64?
  • как установить kdm на CentOS 7
  • Что означает для идентификатора файла
  • От Ubuntu до Debian или CentOS
  • Как я могу просмотреть мою гостевую файловую систему virtualix guest в файле / текстовом редакторе Windows?
  • Interesting Posts

    Как сгенерировать записи SSHFP с помощью OpenWrt / Dropbear?

    Могу ли я как-то добавить «&& prog2» к уже запущенному prog1?

    Как найти файлы, которые были созданы / изменены / доступны перед перезагрузкой?

    `su` и` sudo bash` дают корневое приглашение, которое не будет выполнять какую-либо команду

    Свяжите зависимость в Synaptic с уже установленной из источника

    xscreensaver и раскладки клавиатуры

    Какой инструмент может сказать мне дистрибутив Linux, который работает, когда uname является общим?

    Как остановить openconnect от изменения настроек DNS

    Ошибка создания пакета Debug

    Не будет standby, usb_bluetooth откажется заморозить

    Миксер Alsa включит проблему на ноутбуке Thinkpad

    Как сделать подсказку с каждым нажатием клавиши / символом?

    Печать только N-й строки перед каждой строкой, соответствующей шаблону

    Как переместить окно до уровня его родительского окна в i3wm?

    ip6tables разрешает трафик IPv6 с OpenVPN через мой VPS

    Linux и Unix - лучшая ОС в мире.