Как выбрать номер открытого порта?

1850
GeneCode

Я установил easyPHP и открыл порт на брандмауэре, чтобы другие люди могли получить доступ к моему веб-серверу. Порт по умолчанию - 8888. Но мне интересно, как выбрать номер порта? Это действительно неоднозначно или существует «предпочтительный» диапазон номеров портов?

7
Вообще любой порт в порядке. Причина, по которой многие приложения используют порты, такие как 8888 или 8080, заключается в том, что это порты не уровня администратора, поэтому многие конечные пользователи без прав администратора могут просто запустить сервер. Это работает и для профессиональных веб-приложений. Но во многих случаях то, что происходит с этими приложениями, интерфейсный веб-прокси соединяет 8080 или 8888 с портом 80. Обычно для простоты доступа вам просто нужно использовать порт 80. Для чего-то еще потребуется что-то вроде `123.456.789.0: 8080` или` пример: 8080`. JakeGould 5 лет назад 1
@JakeGould Спасибо за ваш комментарий, это действительно помогло мне! GeneCode 5 лет назад 0
Возможно связанный вопрос: https://stackoverflow.com/questions/10476987/best-tcp-port-number-range-for-internal-applications glenneroo 5 лет назад 0

1 ответ на вопрос

23
davidgo

Номер порта представляет собой 16-разрядное целое число без знака, поэтому оно находится в диапазоне от 0 до 65535 (хотя 0 не может использоваться для TCP; это имеет особое значение для UDP).

Вы можете использовать практически любой номер порта в диапазоне, однако есть некоторые руководящие правила:

  1. (По крайней мере, в системах на основе Unix), только root может связываться с портами ниже 1024.
  2. В идеале вам не нужен порт, обычно связанный с другой общей службой, так как это может вызвать проблемы с некоторыми брандмауэрами.
  3. Расширение пункта (2) выше - по крайней мере, в системах Linux есть файл /etc/servicesсо списком общих служб - вы можете использовать его для руководства.

«Идеальным» портом для запуска службы HTTP является порт 80, а идеальным портом для HTTPS является 443, поскольку эти порты связаны с соответствующими службами. Если это нецелесообразно (и часто это не так - некоторые маршрутизаторы слишком глупы для обработки веб-интерфейса и перенаправления портов на один и тот же порт), то обычно выбирают «тематический» порт - порт 8080 довольно распространен, так как порт 8000

Четкий и краткий ответ. Спасибо. GeneCode 5 лет назад 0
В современных версиях Windows у вас должны быть привилегии администратора, чтобы привязать порты ниже 1024. enkryptor 5 лет назад 1
@enkryptor: Какие это версии? Это где-нибудь задокументировано? grawity 5 лет назад 0
@ Grawity Я считаю, что это Windows 7 и более поздние версии. Вы также можете дать разрешение пользователю без прав администратора для определенного URL-адреса с помощью `netsh http add urlacl` enkryptor 5 лет назад 0
@enkryptor У меня работает nginx на 80-м порту, ip не-localhost, и я не являюсь администратором в этой системе. Braiam 5 лет назад 0
@ Брайам хорош для тебя enkryptor 5 лет назад 0
@enkryptor: эта команда применяется только тогда, когда порт 80 используется http.sys (IIS и др.); это работает с точки зрения резервирования путей HTTP, а не портов TCP. grawity 5 лет назад 0
@ Grawity правильный, это только для http, поэтому он начинается с "netsh http" enkryptor 5 лет назад 0
Файл «служб» Windows, как ни странно, живет в `% SystemRoot% \ System32 \ drivers \ etc \ services`. Там, вероятно, есть интересное наследие WinSock и BSD. Но наиболее авторитетным источником является [Реестр номеров портов IANA] (https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml). Bob 5 лет назад 0
@Bob Оригинальный стек TCP / IP от Microsoft был более или менее прямым портом BSD-разъемов начала 1990-х годов. Michael Hampton 5 лет назад 0