Socket

Définition, exemples et bonnes pratiques

À retenir

  • C'est le point de terminaison d'un flux de données entre deux processus.
  • Un socket réseau est identifié par la combinaison d'une adresse IP et d'un numéro de port.
  • Il peut être local (sur la même machine) ou distant (via Internet).

Un socket est une interface logicielle qui agit comme une prise virtuelle pour permettre à deux programmes de communiquer entre eux. Imaginez un interphone : chaque appareil possède un point d'entrée et de sortie (le socket) qui permet d'échanger des voix, que les personnes soient dans des pièces voisines ou dans des villes différentes.

Étymologie

Le mot vient de l'anglais socket, signifiant « prise » ou « douille ». En informatique, ce concept a été popularisé par le système Unix BSD dans les années 1980 (Berkeley sockets) pour créer un standard permettant aux logiciels de se connecter à un réseau aussi facilement qu'on branche une lampe dans une prise électrique.

Exemples d'usage

  • Une connexion TCP établie par votre navigateur Web pour récupérer les images d'un site sur un serveur distant.
  • Un Socket Unix utilisé pour faire communiquer deux logiciels installés sur le même ordinateur de manière très rapide.
  • Une connexion UDP utilisée par un jeu vidéo en ligne pour envoyer la position des joueurs en temps réel.

Cas d'usage

Les sockets sont omniprésents dès qu'il y a échange de données : dans le développement d'applications web (WebSockets pour le temps réel), la gestion de bases de données, la téléphonie sur IP (VoIP) ou encore le pilotage d'objets connectés.

Bonnes pratiques

Il est essentiel de toujours fermer un socket après son utilisation pour éviter les fuites de ressources. En programmation, il faut également gérer les délais d'attente (timeouts) pour éviter qu'un programme ne reste bloqué indéfiniment si la connexion réseau est perdue.

Synonymes

connecteur logiciel point de terminaison interface de communication

Conseil

Pour bien comprendre les sockets, commencez par pratiquer avec le protocole TCP (plus simple car il gère les erreurs tout seul) avant de passer à l'UDP. Utilisez des outils comme netstat ou ss sur votre système pour voir les sockets actuellement ouverts sur votre ordinateur.

Questions fréquentes

Un socket est-il forcément lié à Internet ?

Non, il existe des sockets locaux (Unix domain sockets) qui servent uniquement à la communication interne d'un ordinateur sans passer par la carte réseau.

Quelle est la différence avec un port ?

Le port est un numéro (comme un numéro d'appartement), alors que le socket est la connexion établie elle-même (le canal de discussion ouvert vers cet appartement).