Связь или соответствие между протоколом и номером порта в URL - PullRequest
0 голосов
/ 27 февраля 2012

Номер порта - это логическое соединение с конкретным программным обеспечением на аппаратном компьютере. Затем должна быть связь между набором программ на веб-сервере и номером порта, используемым в запрашиваемом URL-адресе. Однако, похоже, существует связь между номером порта и протоколом прикладного уровня (из Internet Protocol Suite ), таким как HTTP (80), FTP (21), Telnet (23) и т. Д. Почему это так?

Я упоминал похожий вопрос здесь на stackoverflow. Как ответил Аарон Маенпаа, между протоколом и портом нет строгой личной связи. Это просто соглашение используется. Мы можем также прослушивать HTTP на каком-то другом порту (скажем, 8080). Тогда как мы можем это сделать ??

Это приводит к другому вопросу. Как нам сопоставить пользовательскую серверную программу с каким-нибудь нестандартным номером порта TCP?

1 Ответ

0 голосов
/ 27 февраля 2012

Любое приложение может bind() к любому доступному порту, за исключением портов с низким номером, которые могут требовать административных привилегий. Нет абсолютно никакого принуждения того, какой тип приложения слушает какой номер порта, просто соглашение. Это связано с тем, что сам номер порта является просто 16-битным полем в заголовках пакетов, и у операционной системы нет практического способа узнать, что происходит на уровне приложения.

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

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

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

...