Socket

Une socket est connue comme un type de logiciel qui agit comme un point d'extrémité qui fonctionne en établissant une liaison de communication réseau bidirectionnelle entre l'extrémité du serveur et le programme de réception du client.[1] On l'appelle aussi souvent un point d'aboutissement dans un canal de communication bidirectionnel. Ces sockets sont réalisés et mobilisés en même temps qu'un ensemble de requêtes de programmation identifiées comme appels de fonction, qui est techniquement appelé interface de programmation d'application (API). Une socket est capable de simplifier le fonctionnement d'un programme car les programmeurs n'ont plus qu'à se soucier de manipuler les fonctions de la socket, ce qui leur permet de compter sur le système d'exploitation pour transporter correctement les messages sur le réseau.[2]

Fonctionnalité

Typiquement, une socket respecte un flux spécifique d'événements pour qu'elle fonctionne. Pour un modèle client-serveur orienté connexion, la socket du processus serveur attend la demande d'un client. Pour ce faire, le serveur doit d'abord établir une adresse que les clients peuvent utiliser pour trouver et se connecter au serveur. Lorsqu'une connexion est établie avec succès, le serveur attend que les clients demandent un service. L'échange de données client-serveur aura lieu si le client se connecte au serveur via la socket. Le serveur répondra alors à la demande du client et lui enverra une réponse.[3]

La plupart du temps, les URL et leurs connexions sont utilisées pour accéder à Internet. Les programmes nécessiteront un simple lien de communication entre le client et le serveur du programme. Ce rôle est associé à un socket qui aidera à lier les extrémités client et serveur du programme. Si un client commence à établir une communication avec le serveur, une connexion fiable entre le serveur et le client sera établie par le canal de communication TCP. Avec ce type de communication, le client et le serveur peuvent lire ou écrire sur des sockets qui sont liés à un canal de communication spécifique.[^04]

Types de prises

Les types de prises suivants sont différents :

Prises pour datagrammes

Il s'agit d'un type de prise réseau qui fournit un point sans connexion pour envoyer et recevoir des paquets de données. Chaque paquet envoyé à partir d'une prise datagramme est acheminé et livré individuellement. Il peut également être utilisé pour l'envoi et la réception de messages radiodiffusés.

Prises brutes

Cette prise permet d'accéder au fournisseur de transport sous-jacent. Ceux-ci sont capables de fournir aux utilisateurs l'accès aux protocoles de communication sous-jacents qui supportent les abstractions de socket. Normalement, ils sont orientés datagrammes même si leurs caractéristiques exactes dépendent de l'interface fournie par le protocole. Ils ne sont pas destinés à un usage général, mais ils ont été fournis principalement pour ceux qui sont intéressés à développer de nouveaux protocoles de communication ou à l'utilisation pour avoir accès à certaines installations cryptiques de protocoles qui existent déjà.

Prises de paquets séquencées

Il s'agit toutefois d'une prise de courant semblable à une prise de courant, à l'exception du fait que les limites de l'enregistrement sont préservées. Ce type de socket permet aux utilisateurs de manipuler les en-têtes du protocole de paquets de séquence (SPP) ou du protocole de datagramme Internet (IDP) sur un paquet ou même un groupe de paquets. Cette socket permet également à l'utilisateur de recevoir des en-têtes pour les paquets entrants.

Prises de courant

Ce type de socket s'appuie sur TCP pour transmettre les données. Si la livraison des données est impossible, l'expéditeur recevra un indicateur indiquant que la connexion a entraîné une erreur. Les enregistrements de données n'ont pas de limites.[4] Cette socket fournit un flux de données orienté connexion, séquencé et unique, sans limites d'enregistrement, avec des mécanismes bien définis pour créer et/ou détruire des connexions et pour détecter les erreurs. Il transmet des données fiables, dans l'ordre et sans capacités hors bande. Les processus sont présumés ne communiquer qu'entre des sockets du même type mais il n'y a aucune restriction qui empêche la communication entre ces sockets de types différents.

Prise active

Il s'agit d'une connexion de socket avec les sockets actives à distance via une connexion de données ouverte. Si cette connexion est fermée, les prises actives en chaque point seront également détruites. Ceci est utilisé par les clients qui souhaitent initier des demandes de connexion pour se connecter. Cependant, cette prise active peut également être transformée en prise passive en liant un nom à la prise avec le bind-macro et en indiquant une volonté d'accepter des connexions avec le listen-macro.

Prise passive

Cette prise n'est pas connectée mais attend une connexion entrante qui va générer une nouvelle prise active. Ceci est utilisé par les serveurs afin d'accepter les demandes de connexion avec la macro-connexion. Cette prise passive ne peut pas être utilisée pour initier des demandes de connexion. Les concepts de prises actives et passives pour prises de courant ne s'appliquent pas aux autres types de prises, comme la prise datagramme.[5]

Ports et prises

Une socket est une interface pour envoyer et recevoir des données sur un port spécifique alors qu'un port est une valeur numérique assignée à un processus spécifique ou à une application dans l'appareil.[6] Même s'il existe une relation étroite entre une socket et un port, la socket n'est pas réellement un port. Chaque port peut avoir une seule prise passive attendant les connexions entrantes et plusieurs prises actives, chacune correspondant à une connexion ouverte dans le port.[1:1] De nos jours, la prise de courant rend la communication plus facile et plus efficace. Il permet d'établir une connexion entre deux processus différents sur la même machine ou sur des machines différentes. En termes simples, c'est une façon de parler à un autre ordinateur.

Histoire

L'utilisation du terme "Socket" a commencé en 1971 où il a été utilisé lors du développement d'ARPANET. La plupart des prises mises en œuvre aujourd'hui sont basées sur les prises Berkerley, qui ont été développées en 1983. Les prises utilisées pour établir une connexion Internet sont toutefois calquées sur les modèles Winsock fabriqués en 1991. Les prises Berkerley sont également connues sous le nom de prise BSD. En 1989, Berkerley a publié des versions de son système d'exploitation et de sa bibliothèque réseau sans contraintes de licence. D'autres premières implémentations ont été écrites pour TOPS-20, MVS, VM et IBM-DOS.


  1. https://www.techopedia.com/definition/16208/socket ↩︎ ↩︎

  2. https://www.webopedia.com/TERM/S/socket.html ↩︎

  3. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/howdosockets.htm ↩︎

  4. https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm ↩︎

  5. https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.hala001/astream.htm ↩︎

  6. http://pediaa.com/difference-between-socket-and-port/ ↩︎