Socket (mot anglais qui signifie prise) est un terme informatique qui peut avoir plusieurs significations suivant qu’il est utilisé dans le cadre logiciel ou matériel.
Dans un contexte matériel, le socket, ou réceptacle de processeur, désigne le connecteur utilisé pour interfacer un processeur avec sa carte mère.
Contrairement aux processeurs ayant la forme d’une carte et fixés dans un slot assimilable à un slot d’extension, la plupart des sockets sont construits autour de l’architecture matricielle Pin Grid Array (PGA), dans laquelle les broches en dessous du processeur s'insèrent dans le socket.
Dans le contexte des logiciels, on peut le traduire par « connecteur réseau » ou « interface de connexion »[1].
Apparu dans les systèmes UNIX, un socket est un élément logiciel qui est aujourd’hui répandu dans la plupart des systèmes d’exploitation. Il s’agit d’une interface logicielle avec les services du système d’exploitation, grâce à laquelle un développeur exploitera facilement et de manière uniforme les services d’un protocole réseau.
Il lui sera ainsi par exemple aisé d’établir une session TCP, puis de recevoir et d’expédier des données grâce à elle. Cela simplifie sa tâche car cette couche logicielle, de laquelle il requiert des services en appelant des fonctions, masque le travail nécessaire de gestion du réseau, pris en charge par le système. Le terme socket désigne en pratique chaque variable employée dans un programme afin de gérer l’une des sessions.
La notion de socket a été introduite dans les distributions de Berkeley (un fameux système de type UNIX, dont beaucoup de distributions actuelles utilisent des morceaux de code), c’est la raison pour laquelle on parle parfois de sockets BSD (Berkeley Software Distribution).
Il s’agit d’un modèle permettant la communication inter processus (IPC - Inter Process Communication) afin de permettre à divers processus de communiquer aussi bien sur une même machine qu’à travers un réseau TCP/IP.
La communication par socket est souvent comparée aux communications humaines. On distingue ainsi deux modes de communication :
Les sockets sont implémentés dans différents langages (C, Java, ...) . En langage C, ils utilisent des fonctions et des structures disponibles dans la bibliothèque <sys/socket.h>
.
Les sockets se situent entre la couche réseau (incluse) et les couches applicatives du modèle OSI (protocoles UDP ou TCP utilisant IP / ARP).