La notion de sockets 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 Processus 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:
- Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP. Dans ce
mode de communication, une connexion durable est établie entre les deux processus, de telle façon que la socket de
destination n'est pas nécessaire à chaque envoi de données.
- Le mode non connecté (analogue à une communication par courrier), utilisant le protocole UDP. Ce mode
nécessite l'adresse de destination à chaque envoi, et aucun accusé de réception n'est donné.
Les sockets sont généralement implémentées en langage C, et utilisent des
fonctions et des structures disponibles dans la librairie <sys/socket.h>.
Les sockets se situent juste au-dessus de la couche transport du modèle OSI (protocoles udp ou TCP),
elle-même utilisant les services de la couche réseau (protocole IP / ARP)
Modèle des sockets |
Modèle OSI |
Application utilisant les sockets |
Application |
Présentation |
Session |
UDP/TCP |
Transport |
IP/ARP |
Réseau |
Ethernet, X25, ... |
Liaison |
Physique |
|