Лучший диапазон номеров портов TCP для внутренних приложений [закрыт]
Я работаю в месте, где каждое из наших внутренних приложений работает на отдельном экземпляре Tomcat и использует определенный TCP-порт. какой диапазон портов IANA лучше всего использовать для этих приложений, чтобы избежать конфликтов номеров портов с любым другим процессом на сервере?
на основе http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml, это варианты, как я сейчас вижу они:
- Системные порты (0-1023): я не хочу использовать ни один из этих портов потому что сервер может запускать службы на стандартных портах в этом диапазон
- пользовательские порты (1024-49151): учитывая, что приложения являются внутренними, я не собираюсь просить IANA зарезервировать номер для любого из наших приложений. Однако я хотел бы уменьшить вероятность того, что один и тот же порт будет использоваться другим процессом, например, Oracle Net Listener на 1521.
- динамические и/или частные порты (49152-65535): этот диапазон идеально подходит для пользовательских портов. Моя единственная забота, если это произойдет:
a. я настраиваю одно из моих приложений для использования порта X
б. Приложение в течение нескольких минут или часов (в зависимости от характера приложения), оставив порт неиспользованный какое-то время
c. операционная система выделяет номер порта X другому процессу, например, когда этот процесс действует как клиент требуется TCP-соединение с другим сервером. Это удается, учитывая, что он попадает в динамический диапазон и X в настоящее время не используется в операционной системе, и
d. приложение не запускается, потому что порт X уже используется
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 найдите маркер без назначения.