Définition
Une abstraction de la couche transport qui associe un processus applicatif à un ou plusieurs identifiants réseau (généralement une adresse IP et un port) et, dans les protocoles orientés connexion, définit un des points de terminaison d’une session transport ; un socket est une poignée gérée par le système d’exploitation par laquelle une application envoie et reçoit des unités de protocole (par ex. segments TCP ou datagrammes UDP).
Principe
Principe
Un socket identifie de manière unique le point de terminaison transport d’une application sur un hôte par le tuple d’identifiants locaux (adresse, port) et le protocole de transport ; le système d’exploitation gère l’état et les permissions du socket, de sorte que la joignabilité et la sémantique de session de l’application dépendent des liaisons et du cycle de vie du socket.
Démonstration
Démonstration
Scénario Illustratif → Un processus serveur lie 0.0.0.0:443 et écoute (Situation). Le SE alloue un socket et l’associe au processus en écoute (Reconnaissance). Lorsqu’un client se connecte, le SE crée une instance de socket distincte pour cette connexion (Action). Les données applicatives transitent par ces poignées socket ; la fermeture du socket met fin à la session transport (Conséquence).
Mauvaise application
Mauvaise application
Interprétation Erronée → Considérer un socket comme identique à une adresse de couche réseau. Pourquoi cela semble plausible : les sockets contiennent des adresses IP. Erreur sémantique : ignorer la dimension port et protocole et le caractère local au processus des sockets. Interprétation correcte : les sockets sont des abstractions de la couche transport, liées au processus, combinant adresse, port, protocole et état.
Conséquence
Conséquence
Les politiques réseau, l’affectation des ports et le filtrage applicatif opèrent au niveau des sockets ; des hypothèses incorrectes sur l’identité ou la durée de vie des sockets peuvent entraîner des conflits de ports, une exposition involontaire de services ou des échecs de connexion.
Inversion
Inversion
Dans les usages sans connexion (UDP) ou lorsqu’un socket est lié à des adresses génériques, un socket ne représente pas une session persistante un‑à‑un ; la NAT et le remappage de ports peuvent encore découpler un 5‑tuple externe d’un socket interne, modifiant la façon d’appliquer la joignabilité et l’audit.
Limite
Limite
Clairement dans : Un quadruplet TCP (IP locale, port local, IP distante, port distant) qui identifie un socket de connexion. Cas liminaire : Un serveur lié à 0.0.0.0 créant des sockets par connexion lors de l’accept. Clairement hors : Une adresse MAC ou une interface physique dépourvue de sémantique de port de transport n’est pas un socket.
Tension sémantique
Tension sémantique
Socket ↔ Point de Terminaison : Les sockets sont des identifiants transport locaux au processus tandis que les points de terminaison peuvent être plus larges (dispositif, processus ou URI logique) ; les décisions de sécurité et de politique doivent concilier le cycle de vie des sockets avec l’identité de plus haut niveau.
Synthèse
Synthèse
Un socket est une construction du système d’exploitation qui mappe l’intention de communication d’une application sur des identifiants transport et réseau ; comprendre les sockets explique pourquoi la joignabilité applicative, la gestion des ports et l’état par‑connexion sont des préoccupations locales à l’hôte.