Où est la documentation indiquant que le port source TCP et UDP doit être supérieur à 1024 et aléatoire?

11

J'ai du mal à trouver où il est documenté que le port source doit être aléatoire et compris entre 1024 et 65535.

Dans quel RFC est-ce documenté?

Edit: La
première référence pour les ports privilégiés se trouve dans RFC2623
Il semble que cela dépende davantage de l'implémentation TCP / IP et c'est une norme de facto.

L'IANA attribue les numéros de port (RFC1700)

Mircea Vutcovici
la source
1
FYR - RFC 1700 (STD 2) ne traite que de l'attribution des ports d' écoute (où les services écoutent les connexions). Il ne traite pas de la sélection du port source du serveur de connexion.
voretaq7
Oui, mais le corollaire que vous "DEVRIEZ" utiliser les ports enregistrés est que vous ne devez pas les utiliser pour d'autres choses. C'est pourquoi je l'ai mentionné.
Mircea Vutcovici
2
iana.org/assignments/service-names-port-numbers/… parle des ports dynamiques et / ou privés (49152-65535). Il semble donc que le client devrait utiliser un port de cette plage.
Mircea Vutcovici

Réponses:

13

Vous recherchez probablement RFC 6056 - Recommandations pour la randomisation des ports de protocole de transport ("Best Current Practice").

Techniquement, il n'est pas nécessaire que le port éphémère soit> 1024 ou aléatoire (vous pouvez créer un système qui établit toujours des connexions à partir du port 12 parce que vous aimez le numéro 12), ce n'est tout simplement pas "normal" de le faire (et une idée terrible pour un tas de raisons, dont certaines sont décrites dans ce RFC).

voretaq7
la source
Il semble que les ports éphémères devraient être> = 49152. Mais votre réponse est la plus proche de ma question.
Mircea Vutcovici
3

Le RFC 6335 explique cela:

Les ports de la gamme Dynamic Ports (49152-65535) ont été spécifiquement réservés pour une utilisation locale et dynamique et ne peuvent pas être attribués via IANA. Le logiciel d'application peut simplement utiliser n'importe quel port dynamique disponible sur l'hôte local, sans aucune sorte d'affectation. D'un autre côté, le logiciel d'application NE DOIT PAS supposer qu'un numéro de port spécifique dans la plage Dynamic Ports sera toujours disponible pour la communication à tout moment, et un numéro de port dans cette plage NE DOIT PAS être utilisé comme identifiant de service.

Les ports réservés:

Les ports de la plage des ports utilisateur (1024-49151) sont disponibles pour une affectation via IANA, et PEUVENT être utilisés comme identificateurs de service en cas d'affectation réussie.

Les ports de la plage des ports système (0-1023) sont également disponibles pour affectation via IANA. Étant donné que la plage des ports système est à la fois la plus petite et la plus dense, les exigences pour les nouvelles affectations sont plus strictes que celles de la plage des ports utilisateur et ne seront accordées que dans le cadre des procédures "IETF Review" ou "IESG Approval" RFC5226 .

L'introduction explique la confusion:

Pendant de nombreuses années, l'attribution de nouveaux noms de service et valeurs de numéro de port à utiliser avec le protocole TCP (Transmission Control Protocol) [RFC0793] et le protocole UDP (User Datagram Protocol) [RFC0768] a eu
des directives peu claires.

Il semble que Windows XP ne suive pas RFC6335, mais Solaris 10 le fait.

Mircea Vutcovici
la source
1

Ce que voretaq7 a dit avec cela, mais étant pédant, il y a une exigence technique. Historiquement, les démons / serveurs dans * nix s'exécutent sur des ports <1024 (en les appelant des ports système), donc afin d'éviter les conflits, les ports source (ports utilisateur) sont> 1024 (ou pour être précis 1024 - 49151) Cependant, ce n'est pas toujours le cas comme vous le dites et cela dépend de la mise en œuvre. Dans l'ensemble, le lien ci-dessus donne une liste des RFC mais probablement le plus spécifique est le RFC5226 qui décrit le processus "Expert Review" de l'IANA.

utilisateur
la source
Certaines implémentations de serveur NFS nécessitent que le client NFS utilise un port <1024. Donc, techniquement, il était toujours possible d'utiliser tous les ports comme port source. Ce que je demande, c'est un document qui demande à utiliser pour les ports au-dessus de 1024. Il semble qu'en réalité le client devrait utiliser les ports au-dessus de 49152.
Mircea Vutcovici
1
Cela ne réfute pas ma réponse. Voir ici unix.stackexchange.com/questions/16564/… Pourquoi est-ce que la mission IANA et la RFC 6056 ne vous couvrent pas? Une fois que vous pouvez toujours donner des recommandations, personne ne vous empêche d'implémenter un navigateur Web qui utilisera le port 80 comme port source
utilisateur
1
Étant également pédant, il n'est pas nécessaire que les ports privilégiés ou "bien connus" ne soient pas utilisés comme port source (voir le contre-exemple de Mircea avec les ports NFS privilégiés) - Ce n'est pas communément fait pour les raisons que vous avez mentionnées, mais ce n'est pas non plus interdit. AFAIK selon les RFC TCP et UDP, tout port inutilisé est un jeu équitable en tant que port source. Les règles que nous établissons en plus sont pour notre commodité :-)
voretaq7