Назначение портов TCP / IP для внутреннего использования приложений

Я написал службу WCF, размещенную службой Windows, и ей необходимо прослушивать известный порт TCP / IP. Из какого диапазона я могу безопасно выделить порт для использования в моей организации? Этот порт будет встроен в конфигурационные файлы для службы и клиентов, которые потребляют эту услугу.

Выберите номер порта с 49152 по 65535.

IANA публикует список назначенных портов.

http://www.iana.org/assignments/port-numbers

Динамические и / или частные порты – это от 49152 до 65535. Это диапазон, от которого вы ДОЛЖНЫ выбрать порт для своих внутренних приложений. Конечно, можно использовать любой порт, принадлежащий одному из непризнанных диапазонов в опубликованном списке. Но имейте в виду, что, выбирая номер порта из этих неназначенных диапазонов, нет никакой гарантии, что выбранный вами порт не будет зарезервированным портом в будущем.

НЕОБХОДИМЫ ИСПОЛЬЗОВАТЬ НОМЕРА НЕОБХОДИМОГО ПОРТА. ИАНА НАПРАВЛЯЕТ НОМЕР ДЛЯ ПОРТА ПОСЛЕ УТВЕРЖДЕНИЯ ВАШЕГО ПРИМЕНЕНИЯ.

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

Этот порт будет встроен в конфигурационные файлы для службы и клиентов, которые потребляют эту услугу.

Это позволит избежать головных болей в случае, если какое-либо другое третье лицо, которого вы не можете использовать, использует ваш номер порта. Если это произойдет, вы просто продолжаете и меняете его в файле конфигурации, и он просто работает.

Порты 0-1023 – это хорошо известные порты и назначаются IANA. Они должны использоваться только для назначенных протоколов в общедоступных сетях.

Порты 1024-65535 обычно назывались номерами зарегистрированных портов (см. Rfc1700 ), но теперь разделены на две области (см. Rfc6335 ).

Порты 1024-49151 являются пользовательскими портами и используются для собственных протоколов.

Порты 49152-65535 являются динамическими портами и не должны быть предписаны протоколу.

Пользовательские порты могут использоваться для любого протокола, но есть конечное число, поэтому ваше использование будет конфликтовать с кем-то, кто-то использует в какой-либо сети где-нибудь. IANA ведет учет зарегистрированных номеров портов (0-49151). Если ваш протокол будет использоваться в общедоступных сетях, вам необходимо изучить его в IANA. Если вы используете его только в своей собственной сети, выберите порт в этой области (1024-49151) и проверьте этот порт на регистр IANA, чтобы убедиться, что он не используется протоколом, который может использоваться в вашей сети. Для частного использования, вероятно, лучше выбрать номер, назначенный протоколу, который, как вы знаете, не будет использоваться, чем выбрать тот, который не назначен, и поэтому может быть назначен в будущем.

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

В дополнение к другим предложениям по выбору общего порта приложений я бы предложил вам настроить порт в вашем приложении. Жестко кодированные номера портов – плохая идея, особенно если позже вы обнаружите конфликт порта с другим приложением и вам нужно изменить свой.

Краткий ответ: избегайте всего, вплоть до 1023 или более 49152, и проверьте выбранный порт на услуги в вашей сети.

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

Но (чтобы я мог добавить что-то к другим предложениям, которые появились во время набора текста), убедитесь, что вы легко меняете! Если это в файлах конфигурации, сделайте это очевидным. Запишите его и укажите на устранение неполадок. Это то, что может пойти не так, так что упростите отладку, если нужно изменить.

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

Как правило, порт с большими номерами доступен, и я предлагаю их, но они могут быть заблокированы брандмауэрами.

В примечании не забудьте проверить этот порт netstat / a / n, чтобы узнать, используется ли его другим приложением или нет. Я выяснил, что Vista использовала 49152 …. для некоторой причины уровня приложения. В основном, поскольку большинство слушателей системного уровня не реализуют совместное использование портов, очень безопасно использовать те порты, которые вообще не используются.

иметь хороший день программирования AMir

Interesting Posts

Организация модульных тестов Django

Узнайте, если файл старше 4 часов в пакетном файле

Почему String.split требует, чтобы разделитель строк был экранирован?

Является ли практика возвращения ссылочной переменной C ++ злом?

Отображение нескольких аннотаций в MKMapView

Прозрачная командная строка в Vista?

Как извлечь один столбец csv-файла

Как подключить этот ноутбук SATA HDD к обычным настольным SATA-кабелям?

Переместить дом в раздел или изменить размер дома, чтобы он соответствовал разделу

SEVERE: MessageBodyWriter не найден для типа носителя = application / json, type = class com.jersey.jaxb.Todo, genericType = class com.jersey.jaxb.Todo

boost :: spirit :: qi повторение синтаксического анализа на выходе

Может ли атрибут DebuggerDisplay применяться к типам, которые не принадлежат?

Как работают DNS-серверы?

PyQt QProgressBar не работает, когда я использую его с Selenuim

Почему вызов функции требует имя параметра в Swift?

Давайте будем гением компьютера.