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

13

Я создаю внутренний инструмент для совместной работы, который будет использовать центральный сервер (в интрасети) и один или несколько портов для связи с клиентами через сокеты. Я знаю, что многие порты зарезервированы для определенных целей, а другие традиционно используются для определенных типов трафика.

Как мне выбрать порт по умолчанию, который с наименьшей вероятностью был «заявлен» кем-то еще для своего инструмента? Есть ли база данных, которая идентифицирует все известные (даже нетрадиционные) порты?

Джейс Браунинг
источник
3
Как правило, это проблема, только если что-то уже использует порт на сервере. Однако порт должен быть настраиваемым. Я видел довольно много программ с жестко закодированными портами, а это не то, что вам нужно.
devicenull
@devicenull У меня определенно будет возможность переопределить значение по умолчанию.
Джейс Браунинг
3
Если ваша борода достаточно седая, вы можете использовать RPC и зарегистрировать свою конечную точку. msdn.microsoft.com/en-us/library/windows/desktop/…
Райан Райс
2
Если у вас нет веских причин не делать этого, лучше использовать существующие протоколы там, где это возможно. а) Естественно думать, что вы можете сделать лучше, для большинства людей это неправда. Но даже когда это возможно, достаточно ли лучше противодействовать б) сетевые инструменты / устройства уже настроены для работы с существующими стандартами. Добавление новых имеет барьер и объем работы для реализации.
JamesRyan
2
Для чего-то, что является внутренним сотрудничеством, все> 1024 и <32768 (должно защищать от эфемерных привязок портов) и НЕ перечисленное в реестре портов IANA будет в порядке, если вы будете эффективно взаимодействовать со своими внутренними узлами, которые вы взяли порт.
Мэтью Ифе

Ответы:

16

Да, IANA ведет официальный сервис и реестр номеров портов .

Процесс получения назначенного вам номера порта задокументирован в RFC 6335 . Процесс обзора требуется для любого назначения порта, но он намного более строг для портов <1024; такие назначения требуют (среди прочего), что ваш протокол задокументирован в RFC.

(Обратите внимание, что этот процесс является относительно новым и что существует много назначенных портов, которые были выделены.)

Для <1024 порты 1021 и 1022 зарезервированы для экспериментов; выше, для экспериментов вы можете просто использовать динамический порт> = 49152.

Майкл Хэмптон
источник
1
Ярлык для поиска «неназначенный»: iana.org/assignments/service-names-port-numbers/…
Джейс Браунинг
3

В большинстве случаев лучше просто использовать HTTP, так как рано или поздно появится межсетевой экран, который вам нужно пересечь. Большинство ОС позволяют разделить адресное пространство HTTP между процессами.

Ян Рингроз
источник
2
Я в замешательстве, я не могу использовать HTTP через любой порт? Я не хочу, чтобы по умолчанию :80или :8080потому что есть большая вероятность, что они уже будут использоваться. Разве мой вопрос еще не актуален?
Джейс Браунинг
@JaceBrowning, да, вы можете, но использование любого другого порта - это просто странная история :-). Любая приличная ОС позволит вам разделить пространство имен HTTP между приложениями.
Ян Рингроз