Les sockets permettent la communication entre deux processus différents sur des machines identiques ou différentes. Pour être plus précis, c’est un moyen de parler à d’autres ordinateurs en utilisant des descripteurs de fichiers Unix standard. Sous Unix, chaque action d’E/S se fait en écrivant ou en lisant un descripteur de fichier. Un descripteur de fichier n’est qu’un entier associé à un fichier ouvert et il peut s’agir d’une connexion réseau, d’un fichier texte, d’un terminal ou autre chose.
Pour un programmeur, une socket ressemble et se comporte un peu comme un descripteur de fichier de bas niveau. En effet, des commandes telles que read() et write() fonctionnent avec les sockets de la même manière qu’avec les fichiers et les tuyaux.Les sockets
ont été introduits pour la première fois dans la version 2.1BSD, puis affinés dans leur forme actuelle avec la version 4.2BSD. La fonctionnalité sockets est maintenant disponible avec la plupart des versions système UNIX actuelles.
Où le socket est-il utilisé?
Un socket Unix est utilisé dans un framework d’application client-serveur. Un serveur est un processus qui exécute certaines fonctions à la demande d’un client. La plupart des protocoles au niveau de l’application tels que FTP, SMTP et POP3 utilisent des sockets pour établir une connexion entre le client et le serveur, puis pour échanger des données.
Types de prises
Il existe quatre types de prises disponibles pour les utilisateurs. Les deux premiers sont les plus couramment utilisés et les deux derniers sont rarement utilisés.Les processus
sont présumés communiquer uniquement entre des sockets du même type, mais aucune restriction n’empêche la communication entre des sockets de types différents.
-
Stream Sockets – La livraison dans un environnement en réseau est garantie. Si vous envoyez via le socket de flux trois éléments « A, B, C », ils arriveront dans le même ordre − « A, B, C ». Ces sockets utilisent TCP (Transmission Control Protocol) pour la transmission de données. Si la livraison est impossible, l’expéditeur reçoit un indicateur d’erreur. Les enregistrements de données n’ont pas de limites.
-
Sockets de datagrammes – La livraison dans un environnement en réseau n’est pas garantie. Ils sont sans connexion car vous n’avez pas besoin d’avoir une connexion ouverte comme dans les sockets de flux − vous créez un paquet avec les informations de destination et l’envoyez. Ils utilisent UDP (User Datagram Protocol).
-
Sockets bruts – Ils permettent aux utilisateurs d’accéder aux protocoles de communication sous-jacents, qui prennent en charge les abstractions de socket. Ces sockets sont normalement orientés datagrammes, bien que leurs caractéristiques exactes dépendent de l’interface fournie par le protocole. Les sockets raw ne sont pas destinés à l’utilisateur général; ils ont été fournis principalement à ceux qui souhaitent développer de nouveaux protocoles de communication ou accéder à certaines des installations les plus cryptiques d’un protocole existant.
-
Sockets de paquets séquencés – Ils sont similaires à un socket de flux, à l’exception des limites d’enregistrement préservées. Cette interface est fournie uniquement dans le cadre de l’abstraction de socket des systèmes réseau (NS) et est très importante dans la plupart des applications NS sérieuses. Les sockets de paquets séquencés permettent à l’utilisateur de manipuler les en-têtes Sequence Packet Protocol (SPP) ou Internet Datagram Protocol (IDP) sur un paquet ou un groupe de paquets, soit en écrivant un en-tête prototype avec les données à envoyer, soit en spécifiant un en-tête par défaut à utiliser avec toutes les données sortantes, et permet à l’utilisateur de recevoir les en-têtes sur les paquets entrants.
Quelle est la prochaine étape ?
Les chapitres suivants sont destinés à renforcer vos bases et à préparer une base avant de pouvoir écrire des programmes serveur et client à l’aide de socket. Si vous souhaitez directement sauter pour voir comment écrire un programme client et serveur, vous pouvez le faire, mais ce n’est pas recommandé. Il est fortement recommandé d’y aller étape par étape et de compléter ces quelques chapitres initiaux pour créer votre base avant de passer à la programmation.