Лучший диапазон номеров портов TCP для внутренних приложений [закрыт]


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

на основе http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml, это варианты, как я сейчас вижу они:

  1. Системные порты (0-1023): я не хочу использовать ни один из этих портов потому что сервер может запускать службы на стандартных портах в этом диапазон
  2. пользовательские порты (1024-49151): учитывая, что приложения являются внутренними, я не собираюсь просить IANA зарезервировать номер для любого из наших приложений. Однако я хотел бы уменьшить вероятность того, что один и тот же порт будет использоваться другим процессом, например, Oracle Net Listener на 1521.
  3. динамические и/или частные порты (49152-65535): этот диапазон идеально подходит для пользовательских портов. Моя единственная забота, если это произойдет:

    a. я настраиваю одно из моих приложений для использования порта X
    б. Приложение в течение нескольких минут или часов (в зависимости от характера приложения), оставив порт неиспользованный какое-то время
    c. операционная система выделяет номер порта X другому процессу, например, когда этот процесс действует как клиент требуется TCP-соединение с другим сервером. Это удается, учитывая, что он попадает в динамический диапазон и X в настоящее время не используется в операционной системе, и
    d. приложение не запускается, потому что порт X уже используется

3 68

3 ответа:

Я не понимаю, почему тебя это волнует. Кроме правила привилегий" не использовать порты ниже 1024", вы должны иметь возможность использовать любой порт, потому что ваши клиенты должны быть настроены для разговора с любым IP-адресом и портом!

если это не так, то они не очень хорошо сделано. Вернитесь и сделайте их правильно : -)

другими словами, запустите сервер по IP-адресу X и порт Y затем настройте клиенты с этой информацией. Тогда, если вы найдете вас должны запустите другой сервер на X конфликты с Y, просто повторно настроить сервер и клиенты для использования нового порта. Это верно независимо от того, являются ли ваши клиенты кодом или люди, вводящие URL-адреса в браузер.

Я, как и вы, не стал бы пытаться получить номера, назначенные IANA, так как это должно быть для услуг, настолько распространенных, что многие,много среды будут использовать их (думаю, SSH или FTP или TELNET).

сеть код сеть и, если вы хотите, чтобы ваши серверы на порту 1234 (или даже порты TELNET или FTP, если на то пошло), это ваш бизнес. Например, в нашей области разработки мэйнфреймов порт 23 используется для сервера терминалов 3270, который значительно отличается от telnet. Если вы хотите подключиться к UNIX стороне мэйнфрейма, вы используете порт 1023. Это иногда раздражает, если вы используете клиенты telnet без указания порта 1023, так как он подключает вас к серверу, который ничего не знает протокол telnet-мы должны вырваться из клиента telnet и сделать это правильно:

telnet big_honking_mainframe_box.com 1023

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

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

Так как это stackoverflow.com страница занимает очень высокое место в моем поиске по этой теме, я решил, что буду размещать самые большие диапазоны здесь для всех, кто заинтересован. Они предназначены как для TCP, так и для UDP, где количество портов в диапазоне составляет не менее 500.

Total   Start   End
829     29170   29998
815     38866   39680
710     41798   42507
681     43442   44122
661     46337   46997
643     35358   36000
609     36866   37474
596     38204   38799
592     33657   34248
571     30261   30831
563     41231   41793
542     21011   21552
528     28590   29117
521     14415   14935
510     26490   26999

Источник (через кнопку загрузки CSV):

http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

короткий ответ: используйте неназначенный пользовательский порт

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

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

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

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

огромный документ со всеми назначениями портов, включая пользовательские порты, находится здесь: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt найдите маркер без назначения.