Que sont les sockets et ports en réseau ? La plomberie de la communication Internet
Sockets et ports sont la couche d'adressage qui permet à plusieurs apps de partager une connexion réseau. Voici le modèle mental.
Socket = Poignée d'extrémité
Un socket est un objet géré par l'OS représentant une extrémité d'un canal de communication bidirectionnel. Pensez : une prise téléphone au mur — c'est l'interface, pas la conversation.
- Créé par l'app via syscall (
socket()). - Lié à IP + port (local) et connecté à IP distante + port.
- Identifié par descripteur de fichier (entier) dans le processus.
- Supporte flux (TCP) ou datagrammes (UDP).
Port = Numéro de canal virtuel
Un port (0–65535) est une sous-adresse logique sur une IP. Il distingue les services sur le même hôte.
- Bien connus (0–1023) : HTTP 80, HTTPS 443, SSH 22, DNS 53, SMTP 25.
- Enregistrés (1024–49151) : MySQL 3306, PostgreSQL 5432, RDP 3389.
- Éphémères (49152–65535) : Côté client auto-assignés pour connexions sortantes.
Comment ils marchent ensemble
Tuple = (IP source, port source, IP dest, port dest, protocole) identifie unique une connexion.
- Serveur :
bind(0.0.0.0, 443)→listen()→accept()crée nouveau socket par client. - Client :
connect(dst_ip, 443)→ OS choisit port source éphémère. - Multiples clients → même port serveur, ports source différents = multiplexage.
Port Forwarding (NAT)
Routeur mappe WAN_IP:port_ext → LAN_IP:port_int. Permet entrant vers serveur interne.
Analogie
- IP = adresse bâtiment
- Port = numéro appartement
- Socket = la porte + interphone réelle (une par conversation)
- Protocole = langue parlée (TCP = enregistré, fiable ; UDP = crie-et-espère)
Sockets sont l'API ; ports sont l'espace de noms. Les deux essentiels.
