Як слід вирішити вибір порту TCP / IP за замовчуванням для нової послуги?


110

Розробляючи додаток, який прослуховуватиме порт TCP / IP, як слід піти про вибір порту за замовчуванням? Припустимо, що ця програма буде встановлена ​​на багатьох комп’ютерах і бажано уникати конфліктів портів.


1
Це краще , відповів тут: stackoverflow.com/questions/10476987 / ...
matt2000

Відповіді:


49

Зайдіть сюди і виберіть порт із описомUnassigned


11
Ви припускаєте, що він вибере порт під 100?
mpen

3
Яку вибрати?
Оуен

1
Якщо всі розробники йдуть за такою логікою, це означатиме, що всі нові сервіси збираються навколо кількох непризначених портів. Яка ймовірність, що служба працює на призначеному порту проти непризначеному порту. (Вибачте, якщо я не розкриваю комерційну таємницю :)
hultqvist

1
Якщо ви шукаєте порт для використання на внутрішній мережі , то , будь ласка , розглянути цей відповідь на подібне питання: stackoverflow.com/questions/218839 / ...
adrianwadey

32

Перший крок: подивіться список IANA :

Там ви побачите в кінці списку

"Динамічні та / або приватні порти - це від 49152 до 65535"

тож це були б ваші кращі ставки, але як тільки ви виберете один, ви завжди можете на ньому гугл, щоб побачити, чи є достатньо популярний додаток, який вже "заявляв" на нього


8
Але чи не використання динамічного порту не дозволить мені відкрити переривчасті (хоча і рідкісні) конфлікти портів? Можливо, безпечніше використовувати порт у зареєстрованому діапазоні, який не призначений або призначений незрозумілому додатку.
Кевін Вонг,

4
якщо ви явно не зареєструєте свій вибір порту в IANA, ви запускаєте ті самі конфліктні шанси, використовуючи "UNASSIGNED", що я думаю. Насправді, оскільки існує безліч непризначених у нижньому кінці, вони, ймовірно, будуть більш імовірними IMHO
curtisk

2
Завжди почніть з непризначеного діапазону, з можливістю налаштовувати порт користувача / адміністратора для вирішення можливих конфліктів. ТІЛЬКО, якщо ваша програма досягає широкого використання (думаю, що BitTorrent або інше велике використання), якщо ви дійсно подумаєте про подання заявки на призначений порт. В іншому випадку залишайтеся поза призначеним діапазоном. Якщо це щось суто внутрішнє / особисте, тоді просто документуйте порти, якими користуються різні сервіси, і вам слід добре, доки люди зможуть їх шукати десь в Інтернеті. Подумайте про приватний / динамічний діапазон, подібний до IP-адрес без маршрутизації - вони ідеально підходять для малого / приватного використання.
jefflunt

3
Просто не робіть помилки, вважаючи, що вашому додатку потрібен порт, призначений IANA, оскільки ви думаєте, що ваш додаток вибухне у використанні до того, як він насправді стане. :)
jefflunt

7
Щодо динамічного діапазону, я думаю, що "конфліктний" питання, можливо, запитував, чи не використовує ОС цей діапазон для ефемерних портів (як слід), чи не виникне конфлікт із обраним вами портом, якщо ОС випадково вирішить використовувати цей порт, наприклад, для якогось вихідного з'єднання. (Як я розумію, випадкове використання цього діапазону - це ефемерні порти.) Дивіться це інше питання, яке детальніше пояснює проблему.
Гаррет Вілсон

7

Якщо широко використовуваний, ви маєте на увазі, що хочете захистити від інших людей, які його використовують у майбутньому, ви можете подати заявку, щоб IANA позначила його як зарезервоване для вашого додатка тут



2

Напевно, ви хочете уникати використання портів із цього списку (Wikipedia).

Я просто вибрав би один, і як тільки додаток буде використано масою, номер порту стане розпізнаваним та включений до таких списків.


2

Як згадують інші, перевірте IANA.

Потім перевірте свої локальні системи / тощо / послуги, щоб побачити, чи вже є користувацькі порти, які вже використовуються.

І будь ласка, не жорстко кодуйте це. Переконайтеся, що це можливо налаштувати, так чи інакше - якщо ні з якої іншої причини ви хочете мати можливість декількох розробників, які використовують свої локалізовані збірки одночасно.


1

Вибір непризначеного зі списку IANA, як правило, достатній, але якщо ви говорите про комерційно випущений продукт, вам дійсно слід звернутися до IANA, щоб отримати його, призначений вам. Зауважте, що процес цього простий, але повільний; востаннє, коли я звернувся за одним, минув рік.


1

Якщо це для додатка , яке ви припускаєте використовувати широко, то зареєструвати номер тут так ніхто інший його використовує.

В іншому випадку просто виберіть невикористаний.

Проблема використання одного в динамічному діапазоні полягає в тому, що він може бути недоступним, оскільки він може використовуватися для динамічного номера порту.


0

Скористайтеся списком iana. Завантажте файл csv з:

https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv

і використовувати цей скрипт оболонки для пошуку незареєстрованих портів:

for port in {N..M}; do if ! grep -q $port service-names-port-numbers.csv; then echo $port;fi; done;

і поставте 2 числа замість N і M.


-1

Ну, ви можете посилатися на деякі часто використовувані номери портів тут і постарайтеся не використовувати чужий.

Якщо під "відкритим для широкої публіки" ви маєте на увазі відкриття портів у власних системах, я б поспілкувався з вашими системними адміністраторами про те, з якими портами їм комфортно робити це.



-1

Виберіть порт за замовчуванням, який не заважає найпоширенішим демонам і серверам. Також переконайтеся, що номер порту не вказаний як вектор атаки на якийсь вірус - деякі компанії мають сувору політику, коли вони блокують такі порти, незважаючи ні на що. І останнє, але не менш важливо, переконайтеся, що номер порту настроюється.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.