Que sont les numéros de port et les sockets ?
Dans les communications Internet, l'adresse IP ne suffit pas à déterminer complètement la destination de communication.
L'adresse IP sert à trouver l'interlocuteur sur le réseau. Mais dans un même serveur ou appareil, plusieurs communications fonctionnent en même temps : Web, DNS, e-mail, application de messagerie, synchronisation cloud, etc.
Même si l'adresse IP de destination est connue, cela ne suffit donc pas à savoir « à quel service ou à quelle application remettre cette communication ».
Les numéros de port servent à cette distinction.
L'adresse IP seule ne distingue pas les applications
L'adresse IP indique la position de l'interlocuteur sur le réseau.
Par exemple, lorsque vous accédez à un serveur web, la communication se dirige d'abord vers l'adresse IP de ce serveur. Mais côté serveur, il peut y avoir non seulement un serveur web, mais aussi DNS, e-mail, service d'administration, serveur d'API, etc.
Dans ce cas, l'adresse IP seule ne permet pas de décider « quel service du serveur doit recevoir la communication ».
C'est pourquoi, dans la couche transport comme TCP ou UDP, les numéros de port sont utilisés pour distinguer la destination de remise de la communication.
Le numéro de port distingue les entrées de communication
Un numéro de port est un nombre utilisé dans les communications TCP ou UDP.
On explique souvent qu'un numéro de port est une « entrée de communication ». Cette compréhension est globalement correcte. Plus précisément, un numéro de port est un identifiant que l'OS utilise pour répartir la communication vers le bon processus ou service.
Par exemple, même pour une communication destinée à la même adresse IP, un port de destination 443 indique généralement un serveur web HTTPS, 53 un serveur DNS, et 25 un service lié à la livraison d'e-mails.
| Usage | Numéro de port courant | Protocole principal | Explication |
|---|---|---|---|
| HTTP | 80 | TCP | Souvent utilisé pour les communications web non chiffrées |
| HTTPS | 443 | TCP / UDP | HTTPS ordinaire utilise TCP ; HTTP/3 utilise QUIC au-dessus de UDP |
| DNS | 53 | UDP / TCP | UDP est fréquent pour les requêtes ordinaires ; TCP est aussi utilisé pour les grandes réponses ou certains usages |
| SMTP | 25 | TCP | Utilisé principalement pour la livraison entre serveurs de courrier |
| SMTP Submission | 587 | TCP | Utilisé pour l'envoi depuis un client de messagerie vers un serveur d'envoi |
| IMAPS | 993 | TCP | Utilisé pour recevoir du courrier par IMAP protégé par TLS |
Il existe des numéros de port standards fréquemment utilisés. Toutefois, un numéro de port ne garantit pas absolument le type de service.
Par exemple, le port 443 est généralement utilisé pour HTTPS, mais selon la configuration du serveur, une autre application peut aussi utiliser le port 443. À l'inverse, un serveur web peut fonctionner sur un port non standard.
Autrement dit, le numéro de port est un indice fort pour déduire l'objectif de la communication, mais il ne permet pas à lui seul de conclure complètement sur le contenu.
Pourquoi plusieurs services peuvent fonctionner sur un seul serveur
Les numéros de port permettent de faire fonctionner plusieurs services en même temps sur un seul serveur.
Par exemple, si un serveur possédant la même adresse IP fournit en même temps HTTPS, DNS et un service de livraison d'e-mails, chaque service peut écouter sur un numéro de port différent.
| Adresse IP de destination | Numéro de port de destination | Protocole de communication | Exemple de destination de remise |
|---|---|---|---|
| Adresse IP du même serveur | 443 | TCP | Serveur web HTTPS |
| Adresse IP du même serveur | 53 | UDP / TCP | Serveur DNS |
| Adresse IP du même serveur | 25 | TCP | Service de livraison entre serveurs de courrier |
| Adresse IP du même serveur | 587 | TCP | Service Submission pour l'envoi d'e-mails |
Ainsi, l'adresse IP sert à trouver l'hôte de communication, tandis que le numéro de port sert à distinguer à quel service de cet hôte remettre la communication.
Toutefois, en réalité, le jugement ne se fait pas seulement avec « l'adresse IP » ou seulement avec « le numéro de port ». Le protocole de communication, TCP ou UDP, est aussi important.
Même avec le même port 53, UDP 53 et TCP 53 sont traités comme des communications différentes.
Un seul appareil peut aussi faire communiquer plusieurs applications en même temps
Les numéros de port ne sont pas utilisés seulement côté serveur. Ils sont aussi utilisés sur le PC ou le smartphone de l'utilisateur.
Par exemple, supposons que sur un même PC vous ouvriez un navigateur, utilisiez une application de messagerie, synchronisiez un stockage cloud et vérifiiez les mises à jour de l'OS. Plusieurs communications se produisent alors simultanément dans l'appareil.
L'OS doit distinguer chaque communication et remettre les données revenues à la bonne application.
Cette distinction utilise aussi la combinaison de l'adresse IP source, du numéro de port source, de l'adresse IP de destination, du numéro de port de destination et du protocole de communication.
Une communication est distinguée par cinq informations
Pour comprendre les communications TCP ou UDP, les cinq informations suivantes sont importantes.
| Information | Signification | Exemple |
|---|---|---|
| Adresse IP source | Adresse IP du côté qui envoie la communication | Adresse IP de l'appareil de l'utilisateur |
| Numéro de port source | Numéro de port utilisé du côté qui commence la communication | Numéro temporairement attribué côté appareil |
| Adresse IP de destination | Adresse IP du côté qui reçoit la communication | Adresse IP du serveur web |
| Numéro de port de destination | Numéro de port du service qui reçoit la communication | 443 pour HTTPS, etc. |
| Protocole de communication | Type comme TCP ou UDP | TCP, UDP |
Cette combinaison de cinq informations est appelée 5-tuple.
Par exemple, lorsque le navigateur se connecte à un serveur web HTTPS, le port de destination est souvent 443. En revanche, le port source est attribué à chaque communication du côté de l'appareil utilisateur.
Ce numéro de port source permet de distinguer plusieurs communications même lorsqu'elles partent du même appareil vers le même serveur web.
Port de destination et port source ont des rôles différents
Pour comprendre les numéros de port, il est important de distinguer le port de destination et le port source.
| Type | Rôle principal | Exemple |
|---|---|---|
| Numéro de port de destination | Indique le service de destination | 443 pour HTTPS, 53 pour DNS |
| Numéro de port source | Distingue à quelle communication renvoyer la réponse | Numéro temporairement attribué côté appareil |
Lorsque vous accédez à un site web, votre appareil envoie souvent la communication vers le port de destination 443. Mais pour recevoir la réponse, un numéro de port source est aussi nécessaire côté appareil.
Du point de vue du serveur, la destination de la réponse est « l'adresse IP de l'utilisateur et le numéro de port utilisé côté utilisateur ».
Ce mécanisme permet à un seul appareil de gérer plusieurs communications en même temps.
Qu'est-ce qu'un socket ?
Un socket est une manière de représenter une entrée et une sortie pour traiter une communication réseau.
Dans le monde de la programmation, un socket est un mécanisme par lequel une application demande à l'OS de créer ce dont elle a besoin pour communiquer sur le réseau. Toutefois, pour comprendre la structure de communication, il est plus facile de voir un socket comme un « point terminal de communication représenté par une combinaison d'adresse IP, de numéro de port et de protocole de communication ».
Par exemple, côté serveur, le serveur web crée un état où il « écoute sur le port TCP 443 ». Cela signifie que le serveur prépare une entrée d'écoute pour recevoir des communications HTTPS.
Côté client, lorsqu'une application comme le navigateur commence une communication, l'OS lui attribue un numéro de port source.
| Position | Vue du socket | Exemple |
|---|---|---|
| Côté serveur | Écouter avec une adresse IP, un numéro de port et un protocole précis | Attendre HTTPS sur TCP 443 |
| Côté client | Gérer la connexion avec un port source pour chaque communication | Le navigateur se connecte depuis un port source temporaire |
| Communication complète | Identifier une communication par la combinaison source et destination | IP source, port source, IP destination, port destination, protocole |
Strictement parlant, le sens du mot socket change légèrement selon le contexte.
Il peut désigner le socket par lequel un serveur attend les connexions, ou le point terminal de communication après l'établissement d'une connexion réelle. De plus, le traitement des sockets diffère entre une communication qui crée une connexion comme TCP et une communication qui n'en crée pas comme UDP.
Mais comme base, il suffit de comprendre qu'il s'agit d'une « entrée de communication sur l'OS qu'une application utilise pour traiter une communication réseau ».
Le sens des ports change aussi entre TCP et UDP
Les numéros de port sont utilisés avec TCP comme avec UDP, mais la nature de la communication diffère.
TCP est une méthode qui établit une connexion avant d'envoyer et recevoir des données. Il est utilisé dans de nombreuses communications, comme le HTTPS web, l'envoi d'e-mails ou SSH.
UDP est une méthode qui ne suppose pas l'établissement d'une connexion comme TCP. Il est utilisé pour les requêtes DNS, QUIC, les communications en temps réel, etc.
| Élément | TCP | UDP |
|---|---|---|
| Nature de la communication | Communique après établissement d'une connexion | Ne suppose pas l'établissement d'une connexion |
| Rôle du numéro de port | Utilisé pour identifier le service de destination et la communication | Utilisé pour distinguer la destination de remise des données |
| Exemples représentatifs | HTTPS, SSH, SMTP, IMAPS | DNS, QUIC, une partie des communications en temps réel |
Même avec le même numéro de port, TCP et UDP sont traités comme des communications différentes.
Par exemple, TCP 443 et UDP 443 utilisent le même nombre « 443 », mais comme le protocole de communication diffère, l'OS et les équipements réseau les traitent comme des choses distinctes.
Voir un numéro de port permet de déduire l'objectif de la communication
Comprendre les numéros de port rend les journaux de communication et le comportement du réseau plus lisibles.
Par exemple, si le port de destination est 443, il peut s'agir d'une communication web comme HTTPS ou HTTP/3. Si le port de destination est 53, il peut s'agir d'une requête DNS. Si le port de destination est 587, il peut s'agir d'une communication liée à l'envoi d'e-mails.
Cependant, le numéro de port seul ne permet pas de juger complètement le contenu de la communication.
Dans les communications chiffrées, le contenu devient difficile à voir. Il est aussi possible de faire fonctionner un service sur un port non standard. De plus, sur un port largement autorisé comme 443, des communications autres que le Web peuvent circuler.
Le numéro de port est donc un « élément pour déduire l'objectif de la communication », et non une « information qui prouve le contenu lui-même ».
Numéros de port et compréhension de l'anonymat
, , DNS, HTTPS et d'autres mécanismes fonctionnent eux aussi, en réalité, avec une combinaison d'adresse IP, de numéro de port et de protocole de communication.
Par exemple, HTTPS utilise souvent le port 443. DNS utilise souvent le port 53. Les VPN utilisent des numéros de port et protocoles différents selon la méthode. Tor change aussi d'apparence selon l'environnement d'utilisation et la destination.
Pour réfléchir à l'anonymat et à la vie privée, le contenu de la communication n'est pas le seul élément important ; les informations visibles à l'extérieur de la communication comptent aussi.
Même si le contenu de la communication est chiffré, les informations suivantes peuvent être visibles selon le point d'observation.
| Information pouvant être visible | Signification | Point d'attention |
|---|---|---|
| Adresse IP de destination | Vers quel serveur la communication se dirige | Avec un CDN ou un proxy, elle peut ne pas correspondre au service final |
| Numéro de port de destination | Quel type de communication cela semble être | Le port 443 ne signifie pas forcément navigation web ordinaire |
| Protocole de communication | TCP, UDP, etc. | HTTP/3 utilise aussi UDP 443 pour une communication web |
| Volume de communication | Quelle quantité de données est envoyée et reçue | Le volume peut être observé même si le contenu est chiffré |
| Moment de communication | Quand la communication a eu lieu | Peut servir à déduire des comportements |
Autrement dit, les numéros de port ne décident pas eux-mêmes de l'anonymat, mais ils sont importants pour comprendre la structure de la communication.
Si l'on peut organiser « quelle application communique, vers quelle adresse IP, avec quel protocole et quel numéro de port », il devient plus facile de comprendre aussi le comportement de VPN, Tor, DNS, HTTPS, etc.
Ici, on se limite à la structure de communication
Comprendre les numéros de port et les sockets change beaucoup la façon de voir le réseau. Toutefois, nous n'entrons pas ici en profondeur dans les sujets suivants.
| Sujet non traité | Raison |
|---|---|
| Programmation socket | Sujet proche de l'implémentation, qui s'éloigne de la compréhension de la structure de communication |
| Détails des ports temporaires | Le périmètre devient trop large si l'on traite les plages d'attribution et comportements propres à chaque OS |
| Détails des tables NAT | Cela entrerait dans les traitements de traduction des routeurs et pare-feu |
| Pratique du scan de ports | Cela deviendrait une discussion concrète de méthodes d'attaque ou de diagnostic, hors objectif de cet article |
Le point important ici est que l'adresse IP seule ne suffit pas à distinguer la communication, et que les numéros de port et le protocole permettent de gérer la destination de remise et le retour des communications.
Résumé
L'adresse IP est l'information qui permet de trouver l'interlocuteur sur le réseau.
Cependant, plusieurs services et applications communiquent en même temps sur un seul appareil ou serveur. L'adresse IP seule ne permet donc pas de décider à quelle application ou quel service remettre la communication.
Le numéro de port est un nombre utilisé dans les communications TCP ou UDP, et l'OS l'utilise pour répartir la communication vers le service ou l'application appropriés.
Sur le Web, les ports 80 et 443 peuvent être utilisés ; pour DNS, le port 53 ; pour les usages liés à l'e-mail, les ports 25, 587, 993, etc. Toutefois, le numéro de port seul ne permet pas de conclure entièrement sur le contenu de la communication.
Une communication est identifiée par la combinaison de l'adresse IP source, du numéro de port source, de l'adresse IP de destination, du numéro de port de destination et du protocole de communication. Comprendre cette combinaison permet de comprendre pourquoi plusieurs applications peuvent communiquer en même temps sur un seul appareil et pourquoi plusieurs services peuvent fonctionner sur un seul serveur.
Un socket est une entrée de communication qu'une application utilise pour traiter une communication réseau. Pour comprendre la structure de communication, il est plus facile de le voir comme un point terminal de communication combinant adresse IP, numéro de port et protocole.
Comprendre les numéros de port et les sockets aide à lire vers où une communication se dirige, à quel service elle arrive et comme quelle communication elle est gérée. C'est aussi une base importante pour comprendre la structure des communications HTTPS, DNS, VPN, Tor, etc.
Outils liés
WhatIsMyIP
Ressource externe liée à cet article. Ouvrez-la seulement si elle correspond à votre situation et à votre modèle de menace.
Pourquoi il est listé ici: Elle peut aider sur le sujet de l’article, mais elle se situe hors d’Anonymity Sense et doit être vérifiée avant usage.