Une socket est un point logiciel qui relie deux processus via une adresse IP et un port, ou un chemin local, pour échanger des données en mode flux (TCP) ou datagramme (UDP).
📖 Définition
Une socket est un point de terminaison logiciel permettant la communication bidirectionnelle entre deux processus, localement ou via un réseau. Pour le réseau Internet, elle associe une adresse IP et un numéro de port (selon RFC 9293 pour TCP). Pour une communication locale (Unix domain socket), elle se lie à un chemin du système de fichiers ou à un espace de noms abstrait. L'API POSIX socket() crée ce point via int socket(int domain, int type, int protocol), retournant un descripteur de fichier. Les sockets de type SOCK_STREAM s'appuient sur TCP pour établir une connexion fiable, orientée flux, avec contrôle d'erreurs et d'ordre, idéale pour HTTP/HTTPS. À l'inverse, SOCK_DGRAM utilise souvent UDP pour échanger des datagrammes sans connexion, sans garantie de livraison ni d'ordre, utile pour DNS ou la voix sur IP. Les Unix domain sockets servent à la communication interprocessus locale avec des permissions du système de fichiers et un surcoût moindre que TCP/IP, tout en offrant des modes flux ou datagramme.
💬 En termes simples
L'adresse IP est l'adresse d'une maison, le port est le numéro d'appartement, et la socket est la prise de contact entre les deux.
🎯 Exemple concret
Un navigateur ouvre une socket TCP vers le port 443 d'un serveur pour charger un site en HTTPS ; le daemon Docker, lui, écoute sur un socket Unix local (/var/run/docker.sock).
💡 Le saviez-vous ?
Les Berkeley sockets proviennent de 4.2BSD, développé à l'Université de Californie à Berkeley ; le rapport "A 4.2BSD Interprocess Communication Primer" de Leffler, Fabry et Joy fut publié le 27 juillet 1983.
❓ Questions fréquentes
Quelle est la différence entre une socket et un port ?
Une socket et un port ne sont pas la même chose : le port est simplement un numéro (0 à 65535) associé à un protocole de transport sur une machine, servant à identifier un service (par exemple 443 pour HTTPS). La socket, elle, est l'extrémité logicielle concrète qu'un processus crée et manipule via l'API (un descripteur de fichier), avec un domaine (AF_INET, AF_INET6, AF_UNIX), un type (SOCK_STREAM, SOCK_DGRAM), un protocole, et souvent une paire adresse IP:port locale, parfois aussi l'extrémité distante pour une connexion TCP. Un même port peut être partageable selon l'option SO_REUSEPORT, alors que chaque socket reste un objet distinct avec ses propres tampons et états. En résumé, le port est une coordonnée ; la socket est l'outil logiciel qui l'exploite pour communiquer.
Une socket TCP et une socket UDP, est-ce pareil ?
Non. Une socket TCP (type SOCK_STREAM) établit une connexion et fournit un flux fiable et ordonné, avec retransmissions et contrôle de congestion ; elle utilise des appels comme connect/accept et send/recv orientés flux. Une socket UDP (type SOCK_DGRAM) est sans connexion : chaque datagramme est livré au mieux, peut être perdu, dupliqué ou réordonné, mais les limites de message sont préservées ; on emploie sendto/recvfrom et on gère soi-même les pertes. Dans les deux cas, TCP et UDP sont des protocoles de transport, la socket n'étant que le point de communication configuré par le système d'exploitation. Le choix entre les deux dépend des besoins de fiabilité, de latence et de surcharge de l'application.
Reçois chaque semaine le meilleur de l'actualité IA, directement dans ta boîte.
Pas de pourriel, désinscription en 1 clic.
✉️
Restez informé
Recevez nos sélections d'outils et articles directement dans votre boîte courriel.
🔐 Connexion rapide
Entrez votre courriel pour recevoir un code à 6 chiffres.
Pas besoin de mot de passe ni d'inscription. Entrez votre courriel, recevez un code par courriel, et c'est tout !
✓
Paramètres de confidentialité
Nous utilisons des témoins (cookies) pour assurer le bon fonctionnement du site, analyser le trafic et personnaliser le contenu. Vous pouvez gérer vos préférences ci-dessous.
Politique de confidentialité