Где документация, в которой говорится, что исходный порт TCP и UDP должен быть более 1024 и случайным?

11

Мне трудно найти, где задокументировано, что порт источника должен быть случайным и находиться в диапазоне 1024-65535.

В каком RFC это задокументировано?

Редактировать:
Первая ссылка для привилегированных портов находится в RFC2623.
Кажется, это больше зависит от реализации TCP / IP и является стандартом де-факто.

IANA назначает номера портов (RFC1700)

Мирча Вуцовичи
источник
1
FYR - RFC 1700 (STD 2) имеет дело только с назначением портов прослушивателя (где службы прослушивают соединения). Это не касается выбора исходного порта подключающегося сервера.
voretaq7
Да, но следствие того, что вы "ДОЛЖНЫ" использовать зарегистрированные порты, заключается в том, что вы не должны использовать их для других целей. Вот почему я упомянул это.
Мирча Вутцовичи
2
iana.org/assignments/service-names-port-numbers/… рассказывает о динамических и / или частных портах (49152-65535). Таким образом, кажется, что клиент должен использовать порт из этого диапазона.
Мирча Вутцовичи

Ответы:

13

Возможно, вы ищете RFC 6056 - Рекомендации по рандомизации портов транспортного протокола («Наилучшая текущая практика»).

Технически нет требования , чтобы эфемерный порт был> 1024 или случайным (вы могли бы создать систему, которая всегда инициирует соединения от порта 12, потому что вам нравится номер 12), это просто не «нормально» (и это ужасная идея для множество причин, некоторые из которых описаны в этом RFC).

voretaq7
источник
Похоже, что эфемерные порты должны быть> = 49152. Но ваш ответ наиболее близок к моему вопросу.
Мирча Вутцовичи
3

RFC 6335 объясняет это:

Порты в диапазоне динамических портов (49152-65535) специально выделены для локального и динамического использования и не могут быть назначены через IANA. Прикладное программное обеспечение может просто использовать любой динамический порт, который доступен на локальном хосте, без какого-либо назначения. С другой стороны, прикладное программное обеспечение НЕ ДОЛЖНО предполагать, что определенный номер порта в диапазоне динамических портов всегда будет доступен для связи в любое время, и поэтому номер порта в этом диапазоне НЕ ДОЛЖЕН использоваться в качестве идентификатора службы.

Зарезервированные порты:

Порты в диапазоне пользовательских портов (1024-49151) доступны для назначения через IANA и МОГУТ использоваться в качестве идентификаторов услуг при успешном назначении.

Порты в диапазоне системных портов (0-1023) также доступны для назначения через IANA. Поскольку диапазон системных портов является наименьшим и наиболее плотно назначенным, требования для новых назначений более строгие, чем для диапазона пользовательских портов, и будут предоставляться только в соответствии с процедурами «Проверка IETF» или «Утверждение IESG» RFC5226 .

Введение объясняет путаницу:

В течение многих лет назначение новых имен служб и значений номеров портов для использования с протоколом управления передачей (TCP) [RFC0793] и протоколом пользовательских дейтаграмм (UDP) [RFC0768] имело далеко не
четкие рекомендации.

Кажется, что Windows XP не следует RFC6335, но Solaris 10 делает.

Мирча Вуцовичи
источник
1

То, что сказал voretaq7 наряду с этим, но, будучи педантичным, есть техническое требование. Исторически демоны / серверы в * nix работают на портах <1024 (называя их системными портами), таким образом, чтобы избежать конфликта, исходные порты (пользовательские порты)> 1024 (или, если быть точным, 1024 - 49151), однако это не всегда Дело, как вы говорите, и это зависит от реализации. В целом, приведенная выше ссылка дает список RFC, но, вероятно, наиболее конкретным является RFC5226, который описывает процесс «экспертизы» IANA.

пользователь
источник
Некоторые реализации сервера NFS требуют, чтобы клиент NFS использовал порт <1024. Таким образом, технически всегда можно было использовать все порты в качестве исходного порта. То, что я прошу, это документ, который просят использовать для портов более 1024. Кажется, что на самом деле клиент должен использовать порты более 49152.
Мирча Вутковичи,
1
Это не опровергает мой ответ. См. Здесь unix.stackexchange.com/questions/16564/… Почему назначение IANA и RFC 6056 не покрывают вас? После того, как вы всегда можете дать рекомендации, никто не мешает вам реализовать веб-браузер, который будет использовать порт 80 в качестве порта источника
пользователь
1
Будучи одинаково педантичным, не требуется , чтобы привилегированные или «общеизвестные» порты не использовались в качестве порта-источника (см. Контрпример Мирчи с привилегированными портами NFS) - это обычно не делается по причинам, которые вы упомянули, но это также не запрещено. AFAIK согласно RFC TCP и UDP, любой неиспользуемый порт является честной игрой в качестве исходного порта. Правила, которые мы придумываем, предназначены для нашего удобства :-)
voretaq7