Une socket est l’une des technologies les plus fondamentales de la programmation réseau. Les sockets permettent aux applications logicielles réseau de communiquer à l'aide de mécanismes standard intégrés au matériel réseau et aux systèmes d'exploitation.
Bien que cela puisse sembler être simplement une autre caractéristique du développement de logiciels Internet, la technologie de socket existait bien avant le Web. De plus, bon nombre des applications logicielles réseau les plus populaires d'aujourd'hui reposent sur des sockets.
Ce que les sockets peuvent faire pour votre réseau
Une socket représente une seule connexion entre exactement deux logiciels (un soi-disant point à point lien). Plus de deux logiciels peuvent communiquer avec des systèmes client / serveur ou distribués à l'aide de plusieurs sockets. Par exemple, de nombreux navigateurs Web peuvent communiquer simultanément avec un seul serveur Web via un groupe de sockets créés sur le serveur.
Les logiciels basés sur des sockets s'exécutent généralement sur deux ordinateurs distincts du réseau, mais les sockets peuvent également être utilisés pour communiquer localement ( interprocessus ) sur un seul ordinateur. Les sockets sont bidirectionnel , ce qui signifie que l’un ou l’autre côté de la connexion est capable d’envoyer et de recevoir des données. Parfois, une application qui initie la communication est appelée "client" et l'autre application, "serveur", mais cette terminologie crée une confusion dans la mise en réseau poste à poste et doit généralement être évitée.
API de sockets et bibliothèques
Plusieurs bibliothèques implémentant des interfaces de programmation d'application (API) standard existent sur Internet. Le premier package grand public - la bibliothèque de sockets Berkeley est encore largement utilisée sur les systèmes UNIX. Une autre API très courante est la bibliothèque Windows Sockets (WinSock) pour les systèmes d'exploitation Microsoft. Par rapport aux autres technologies informatiques, les API de socket sont bien matures: WinSock est utilisé depuis 1993 et les sockets Berkeley depuis 1982.
Les API de socket sont relativement petites et simples. La plupart des fonctions sont similaires à celles utilisées dans les routines d’entrée / sortie de fichier telles que lis(), écrire(), et Fermer(). Les appels de fonction à utiliser dépendent du langage de programmation et de la bibliothèque de socket choisis.
Types d'interface de socket
Les interfaces de socket peuvent être divisées en trois catégories:
- Courant les sockets, le type le plus courant, exigent que les deux parties communicantes établissent d’abord une connexion socket, après quoi toutes les données transmises par cette connexion arriveront dans le même ordre dans lequel elles ont été envoyées - modèle de programmation par connexion .
- Datagramme les sockets offrent une sémantique "sans connexion". Avec les datagrammes, les connexions sont implicites plutôt qu'explicites comme avec les flux. L'une ou l'autre partie envoie simplement des datagrammes selon les besoins et attend que l'autre réponde; les messages peuvent être perdus lors de la transmission ou reçus dans l’ordre, mais c’est la responsabilité de l’application et non les sockets de s’occuper de ces problèmes. L'implémentation de sockets de datagramme peut donner à certaines applications une amélioration des performances et une flexibilité supplémentaire par rapport à l'utilisation de sockets de flux, ce qui justifie leur utilisation dans certaines situations.
- Le troisième type de prise - le brut socket - contourne le support intégré de la bibliothèque pour les protocoles standard tels que TCP et UDP. Les sockets bruts sont utilisés pour le développement de protocoles de bas niveau personnalisés.
Prise en charge des sockets dans les protocoles réseau
Les sockets réseau modernes sont généralement utilisés avec les protocoles Internet - IP, TCP et UDP. Les bibliothèques implémentant des sockets pour Internet Protocol utilisent TCP pour les flux, UDP pour les datagrammes et IP lui-même pour les sockets bruts.
Pour communiquer sur Internet, les bibliothèques de socket IP utilisent l'adresse IP pour identifier des ordinateurs spécifiques. De nombreuses parties d’Internet fonctionnent avec des services de nommage, de sorte que les utilisateurs et les programmeurs de sockets puissent travailler avec les ordinateurs par nom ( par exemple. , "thiscomputer.wireless.about.com") au lieu de par adresse ( par exemple. , 208.185.127.40). Les sockets de flux et de datagramme utilisent également des numéros de port IP pour distinguer plusieurs applications les unes des autres. Par exemple, les navigateurs Web sur Internet savent utiliser le port 80 comme port par défaut pour les communications socket avec des serveurs Web.