Мне трудно найти, где задокументировано, что исходный порт должен быть случайным и находиться в диапазоне 1024-65535.
В каком RFC это задокументировано?
Редактировать:
Первая ссылка на привилегированные порты находится в RFC2623.
Кажется, что это больше зависит от реализации TCP / IP и является стандартом де-факто.
IANA назначает номера портов (RFC1700)
Вы наверное ищете RFC 6056 - Рекомендации по рандомизации портов транспортного протокола («Лучшая текущая практика»).
Технически нет требование что эфемерный порт> 1024 или случайный (вы можете создать систему, которая всегда инициирует соединения с порта 12, потому что вам нравится номер 12), это просто не "нормально" (и ужасная идея по множеству причин, некоторые из них описаны в этом RFC).
В RFC 6335 объясняет это:
Порты в диапазоне динамических портов (49152-65535) были специально зарезервированы для локального и динамического использования и не могут быть назначены через IANA. Прикладное программное обеспечение может просто использовать любой динамический порт, доступный на локальном хосте, без какого-либо назначения. С другой стороны, прикладное программное обеспечение НЕ ДОЛЖНО предполагать, что определенный номер порта в диапазоне динамических портов всегда будет доступен для связи в любое время, и поэтому номер порта в этом диапазоне НЕ ДОЛЖЕН использоваться в качестве идентификатора службы.
Зарезервированные порты:
Порты из диапазона пользовательских портов (1024–49151) доступны для назначения через IANA и МОГУТ использоваться в качестве идентификаторов услуг после успешного назначения.
Порты из диапазона системных портов (0-1023) также доступны для назначения через IANA. Поскольку диапазон системных портов является как наименьшим, так и наиболее плотно назначенным, требования для новых назначений более строгие, чем требования для диапазона пользовательских портов, и будут предоставлены только в рамках процедур «Обзор IETF» или «Утверждение IESG». RFC5226.
Введение объясняет путаницу:
В течение многих лет назначение новых имен служб и значений номеров портов для использования с протоколом управления передачей (TCP) [RFC0793] и протоколом пользовательских дейтаграмм (UDP) [RFC0768] было менее
четкие инструкции.
Кажется, что Windows XP не соответствует RFC6335, но Solaris 10 соответствует.
Что voretaq7 сказал вместе с этот но для педантизма есть техническое требование. Исторически демоны / серверы в * nix работают на портах <1024 (называя их системными портами), таким образом, во избежание конфликта исходные порты (пользовательские порты)> 1024 (или, если быть точным, 1024 - 49151). Однако это не всегда случай, как вы говорите, и это зависит от реализации. В целом ссылка выше дает список RFC, но, вероятно, наиболее конкретным из них является RFC5226 в котором описывается процесс «экспертной оценки» IANA.