Где хранится IANA (реестр номеров портов)?

Мне интересно, где я могу получить доступ к реестру IANA?

Это реализовано в ОС?

Как приложения узнают, к какому порту подключаться, а точнее, где сравнивать номера портов?

В некоторых приложениях номера портов жестко запрограммированы, а в некоторых их вводите вы сами, но где именно выполняется сравнение?

Или все это основано на людях, и разработчики должны использовать порт 80, когда они знают, что будут подключаться к http-серверу?

Я не могу понять это, потому что есть хорошо известные порты, которые вы не можете использовать для своих приложений. Или ты можешь? Является ли порт свободным для использования, когда его не связывает ни один процесс? Итак, я мог бы использовать порт 80, 25, 443 или что-то еще под 1000, и все, что мне нужно для этого, это привилегии root?


person TisButAScratch    schedule 24.05.2015    source источник


Ответы (1)


У вас действительно есть два больших вопроса. Во-первых, где находится IANA. Ответ прост: http://iana.org

Но я думаю, что то, что вы действительно спрашиваете, находится в остальной части вашего поста. Файл, который вы ищете в системе, — это файл services. Обычно это /etc/services в системе стиля UNIX, хотя вы найдете его в C:\Windows\System32\drivers\etc в системах Windows.

Все, чем на самом деле является этот файл, — это файл сопоставления, позволяющий вам запрашивать службу по имени (скажем, «telnet», например) и переводить ее системой в номер порта (23).

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

У вас есть еще один вопрос о правах на использование портов. Во-первых, если вы используете Windows, такого понятия на самом деле нет. Идея «привилегированных» портов встречается и в других операционных системах (UNIX, VMS и т. д.). В этих системах вы должны быть root или эквивалентом OPERATOR. Это относится к портам меньше 1024, а не 1000.

Тем не менее, в 80-м порту нет ничего особенного, за исключением того, что там можно было бы найти веб-сервер.

person David Hoelzer    schedule 24.05.2015
comment
nc -tl 1023 nc: Отказано в доступе -- меньше 1024 - person Mitja; 11.08.2017
comment
Должно было быть ‹= - person David Hoelzer; 11.08.2017