Qu'est-ce qu'une prise?
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 est juste 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.
Pour un programmeur, une socket ressemble et se comporte comme un descripteur de fichier de bas niveau. C'est parce que les commandes telles que read () et write () fonctionnent avec les sockets de la même manière qu'elles le font avec les fichiers et les tubes.
Les sockets ont été introduits pour la première fois dans 2.1BSD et ensuite raffinés dans leur forme actuelle avec 4.2BSD. La fonction sockets est désormais disponible avec la plupart des versions actuelles du système UNIX.
Où Socket est-il utilisé?
Un socket Unix est utilisé dans un cadre d'application client-serveur. Un serveur est un processus qui exécute certaines fonctions à la demande d'un client. La plupart des protocoles de niveau application tels que FTP, SMTP et POP3 utilisent des sockets pour établir la connexion entre le client et le serveur, puis pour échanger des données.
Types de socket
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 supposés communiquer uniquement entre les 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 par 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.
Datagram Sockets- 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 Stream Sockets - vous créez un paquet avec les informations de destination et l'envoyez. Ils utilisent UDP (User Datagram Protocol).
Raw Sockets- 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 datagramme, bien que leurs caractéristiques exactes dépendent de l'interface fournie par le protocole. Les sockets bruts 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 pour accéder à certaines des fonctionnalités les plus cryptiques d'un protocole existant.
Sequenced Packet Sockets- Ils sont similaires à une socket de flux, à l'exception du fait que les limites d'enregistrement sont préservées. Cette interface est fournie uniquement dans le cadre de l'abstraction de socket NS (Network Systems) et est très importante dans les applications NS les plus sérieuses. Les sockets de paquets séquencés permettent à l'utilisateur de manipuler les en-têtes SPP (Sequence Packet Protocol) 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?
Les prochains chapitres 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 voulez directement voir comment écrire un programme client et serveur, vous pouvez le faire, mais ce n'est pas recommandé. Il est fortement recommandé de procéder étape par étape et de compléter ces quelques premiers chapitres pour faire votre base avant de passer à la programmation.