Зарезервированные порты TCP/IP

Требуют ли зарезервированные порты TCP/IP, чтобы программа выполнялась и была привязана к порту? Если такая программа не запущена или не существует, может ли другая программа использовать этот порт? Например, в Linux порт 7 зарезервирован для эхо-сервера. Я предполагаю, что какая-то программа работает и привязана к порту 7 машины. Программа в основном повторяет ввод. Если эту программу остановить, будет ли освобожден порт 7?

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

Происходит ли то же самое для зарезервированных портов?

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


person Mars    schedule 06.03.2015    source источник


Ответы (3)


Требуют ли зарезервированные порты TCP/IP, чтобы программа выполнялась и была привязана к порту?

No.

Если такая программа не запущена или не существует, может ли другая программа использовать этот порт?

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

Например, в Linux порт 7 зарезервирован для эхо-сервера. Я предполагаю, что какая-то программа работает и привязана к порту 7 машины. Программа в основном повторяет ввод. Если эту программу остановить, будет ли освобожден порт 7?

да.

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

да.

Происходит ли то же самое для зарезервированных портов?

Ну конечно; естественно.

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

да.

Эти программы работают постоянно?

Либо бегут, либо не бегут. Вы спрашиваете об обеих ситуациях одновременно. Если вы имеете в виду «выполнение», то есть потребление ЦП, ответ — нет, они заблокированы в ожидании соединений, пока соединений нет.

person user207421    schedule 06.03.2015

доступны порты 1-65535, а порты в диапазоне 1-1023 являются привилегированными и используются для стандартных приложений.

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

sysctl -A | grep ip_local_port_range 

Диапазон портов Epeheral доступен для всех ваших клиентских сокетов.

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

Вы можете проверить доступность порта с помощью команды:

netstat -a | grep <port number>
person Steephen    schedule 06.03.2015

[EDIT] Идея зарезервированного порта заключается в том, что любое пользовательское программное обеспечение, которое вы пишете, должно избегать привязки к ним, чтобы не мешать установленной службе. Кроме того, пользователи без полномочий root в любом случае не могут привязать порты ниже 1024, многие из которых зарегистрированы в IANA (они же зарезервированы).

Нет требования, чтобы конкретный процесс был привязан к какому-либо порту. Порт — это просто системный ресурс. Обычно мастер inetd запускается в начале последовательности загрузки системы, привязывается к некоторым портам с низкими номерами и обрабатывает тривиальные службы, такие как эхо. Эти алгоритмы настолько просты и так редко используются на практике, что потребляют очень мало ресурсов. Вот почему вы не найдете отдельного процесса «эхо-сервер». Если вы читали справочную страницу inetd.conf:

http://www.freebsd.org/cgi/man.cgi?query=inetd.conf&sektion=5&manpath=FreeBSD%209.2-RELEASE

Утилита inetd также предоставляет несколько других «тривиальных» внутренних служб, используя внутренние подпрограммы. Этими службами являются «эхо», «отбрасывание», «зарядка» (генератор символов), «дневное время» (удобочитаемое время) и «время» (удобное для машинного представления время в виде количества секунд, прошедших с полуночи). 1 января 1900 г.).

person BaseZen    schedule 06.03.2015
comment
Идея зарезервированного порта заключается в том, что он находится в списке IANA, поэтому его может использовать только одна служба. Идея портов 1-1023 заключается в том, что к ним может привязываться только пользователь root. Это не одно и то же. Есть много зарезервированных портов выше 1023. - person user207421; 07.03.2015
comment
Список общеизвестных портов Номера портов находятся в диапазоне от 0 до 65536, но только порты с номерами от 0 до 1024 зарезервированы для привилегированных служб и обозначены как общеизвестные порты. Этот список известных номеров портов определяет порт, используемый серверным процессом в качестве его контактного порта. webopedia.com/quick_ref/portnumbers.asp - person BaseZen; 07.03.2015
comment
Точно. Зарезервировано для привилегированных пользователей. Произвольные веб-сайты не являются нормативными ссылками и не могут ничего «указывать». Это может сделать только IANA. Если вы воспользуетесь советом по вашей ссылке и обратитесь к RFC 1700, вы увидите, что реальный список на эту дату выходит далеко за рамки 1023, а сам RFC 1700 устарел много лет назад. - person user207421; 07.03.2015
comment
Не используйте форматирование кода для текста, который не является кодом. - person user207421; 27.05.2015