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

StackOverflow https://stackoverflow.com/questions/218839

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

  

НЕ НАЗНАЧЕННЫЕ НОМЕРА ПОРТА НЕ ДОЛЖНЫ БЫТЬ   ИСПОЛЬЗУЕМЫЙ. IANA НАЗНАЧИТ НОМЕР   ДЛЯ ПОРТА ПОСЛЕ ВАШЕЙ ЗАЯВКИ   БЫЛО УТВЕРЖДЕНО.

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

  

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

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

Другие советы

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

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

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

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

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

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

Краткий ответ. Избегайте всего, что включает в себя до 1023 включительно или более 49152 включительно, и проверьте выбранный порт на соответствие службам в вашей сети.

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

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

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

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

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

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

хорошего дня программирования АМИРА

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top