Prise réseau – Wikipedia – Serveur d’impression
UNE prise réseau est un point de terminaison interne pour l'envoi ou la réception de données dans un nœud d'un réseau informatique. Concrètement, il s'agit d'une représentation de ce noeud final dans un logiciel de réseau (pile de protocoles), telle qu'une entrée dans une table (liste du protocole de communication, de la destination, de l'état, etc.) et constitue une forme de ressource système.
Le terme prise est analogue aux connecteurs femelles physiques, la communication entre deux nœuds à travers un canal étant visualisée sous forme de câble avec deux connecteurs mâles se branchant sur des prises à chaque nœud. De même, le terme Port (un autre terme pour un connecteur femelle) est utilisé pour externe points finaux à un noeud, et le terme prise est également utilisé pour un point de terminaison interne de la communication interprocessus locale (IPC) (pas sur un réseau). Cependant, l'analogie est difficile, car la communication réseau n'a pas besoin d'être un pour un ou d'avoir un canal de communication dédié.
Un processus peut faire référence à un socket en utilisant un descripteur de socket, un type de poignée. Un processus demande d'abord à la pile de protocole de créer un socket, et la pile renvoie un descripteur au processus afin qu'il puisse identifier le socket. Le processus renvoie ensuite le descripteur à la pile de protocoles lorsqu'il souhaite envoyer ou recevoir des données à l'aide de ce socket.
Contrairement aux ports, les sockets sont spécifiques à un nœud; ils sont des ressources locales et ne peuvent être référencés directement par d'autres nœuds. En outre, les sockets ne sont pas nécessairement associés à une connexion persistante (canal) pour la communication entre deux nœuds, pas plus qu’il n’existe nécessairement un seul autre point de terminaison. Par exemple, un socket de datagramme peut être utilisé pour une communication sans connexion, et un socket de multidiffusion peut être utilisé pour envoyer à plusieurs nœuds. Toutefois, dans la pratique, pour les communications Internet, les sockets sont généralement utilisés pour se connecter à un terminal spécifique et souvent avec une connexion persistante.
Sommaire
Adresses de sockets[[[[modifier]
En pratique prise fait généralement référence à une prise dans un réseau IP (Internet Protocol) (une prise pouvant être appelée une Prise internet), en particulier pour le protocole de contrôle de transmission (TCP), protocole utilisé pour les connexions un à un. Dans ce contexte, les sockets sont supposés être associés à un environnement spécifique. adresse de la prise, à savoir l’adresse IP et un numéro de port pour le nœud local, et il existe une adresse de socket correspondante sur le nœud étranger (autre nœud), qui a elle-même une prise associée, utilisée par le processus étranger. L'association d'un socket à une adresse de socket s'appelle contraignant.
Notez que lorsqu'un processus local peut communiquer avec un processus étranger en envoyant ou en recevant des données vers ou depuis un serveur étranger. adresse de la prise, il n'a pas accès à l'étranger prise lui-même, ni ne peut utiliser l'étranger descripteur de socket, car ils sont tous deux internes au noeud étranger. Par exemple, dans une connexion entre 10 h 30, 40 h 40 et 50 60 70 70:88 (adresse IP locale: port local, adresse IP étrangère: port étranger), il y aura également à chaque extrémité une prise associée, correspondant à la représentation interne. de la connexion par la pile de protocoles sur ce nœud. Celles-ci sont référencées localement par des descripteurs de sockets numériques, disons 317 d'un côté et 922 de l'autre. Un processus sur le noeud 10.20.30.40 peut demander à communiquer avec le noeud 50.60.70.80 sur le port 8888 (demande que la pile de protocoles crée un socket pour communiquer avec cette destination), et une fois qu'il a créé un socket et reçu un descripteur de socket (317) , il peut communiquer via cette prise en utilisant le descripteur (317). La pile de protocoles transmettra ensuite les données vers et depuis le noeud 50.60.70.80 sur le port 8888. Cependant, un processus sur le noeud 10.20.30.40 ne peut pas demander à communiquer en fonction du descripteur de socket étranger (par exemple, "socket 922" ou "socket 922 sur noeud 50.60.70.80 ") car ils sont internes au noeud étranger et ne sont pas utilisables par la pile de protocoles sur le noeud 10.20.30.40.
la mise en oeuvre[[[[modifier]
Une pile de protocoles, généralement fournie aujourd'hui par le système d'exploitation (plutôt que sous la forme d'une bibliothèque séparée, par exemple), est un ensemble de services permettant aux processus de communiquer sur un réseau en utilisant les protocoles implémentés par la pile. L’interface de programmation d’application (API) utilisée par les programmes pour communiquer avec la pile de protocoles, à l’aide de sockets réseau, est appelée API de socket. Le développement de programmes d'application utilisant cette API s'appelle programmation de socket ou programmation réseau.
Les API de socket Internet sont généralement basées sur le standard de sockets Berkeley. Dans la norme Berkeley sur les sockets, les sockets sont une forme de descripteur de fichier (un fichier en raison de la philosophie Unix selon laquelle "tout est un fichier" et des analogies entre les sockets et les fichiers. Les deux ont des fonctions pour lire, écrire, ouvrir et fermer. En pratique, les différences signifient que l'analogie est tendue et que l'on utilise plutôt des interfaces différentes (envoi et réception) sur un socket. Dans une communication inter-processus, chaque extrémité a généralement son propre socket, mais ceux-ci peuvent utiliser différentes API: elles sont résumées par le protocole réseau.
Dans les protocoles Internet standard TCP et UDP, un adresse de la prise est la combinaison d’une adresse IP et d’un numéro de port, un peu comme l’une des extrémités d’une connexion téléphonique est la combinaison d’un numéro de téléphone et d’un poste particulier. Les sockets n’ont pas besoin d’adresse source, par exemple, pour l’envoi de données uniquement, mais si un programme lie un socket à une adresse source, le socket peut être utilisé pour recevoir les données envoyées à cette adresse. Sur la base de cette adresse, les sockets Internet transmettent les paquets de données entrants au processus d'application approprié.
Définition[[[[modifier]
Les distinctions entre un socket (représentation interne), un descripteur de socket (identifiant abstrait) et une adresse de socket (adresse publique) sont subtiles et ne sont pas soigneusement distinguées dans un usage quotidien. En outre, les définitions spécifiques d'un "socket" diffèrent entre les auteurs et font souvent référence spécifiquement à un socket Internet ou à un socket TCP.
Une prise Internet est caractérisée par au moins ce qui suit:
- adresse de socket locale, comprenant l'adresse IP locale et (pour TCP et UDP, mais pas IP) un numéro de port
- protocole: protocole de transport, par exemple, TCP, UDP, IP brute. Cela signifie que les points d'extrémité (locaux ou distants) avec les ports TCP 53 et UDP 53 sont des sockets distincts, alors que l'IP ne possède pas de ports.
Une socket qui a été connectée à une autre socket, par exemple lors de l’établissement d’une connexion TCP, possède également une adresse de socket distante.
Dans le système d'exploitation et l'application qui a créé un socket, un socket est désigné par une valeur entière unique appelée un descripteur de socket. Le système d'exploitation transfère les données utiles des paquets IP entrants à l'application correspondante en extrayant les informations d'adresse de socket à partir des en-têtes du protocole de transport et IP et en supprimant les en-têtes des données de l'application.
Dans l’appel à commentaires de l’IETF, les normes Internet, dans de nombreux manuels, ainsi que dans cet article, le terme prise fait référence à une entité uniquement identifiée par le numéro de socket. Dans d'autres manuels,[1] le terme prise fait référence à une adresse de socket locale, c’est-à-dire une "combinaison d’une adresse IP et d’un numéro de port". Dans la définition originale de prise dans la RFC 147, car elle était liée au réseau ARPA en 1971, "la socket est spécifiée comme un numéro 32 bits avec des sockets paires identifiant les sockets de réception et les sockets impairs identifiant les sockets émettrices." Aujourd'hui, cependant, les communications de socket sont bidirectionnelles.
Sur les systèmes d'exploitation de type Unix et Microsoft Windows, les outils de ligne de commande netstat et ss sont utilisés pour lister les sockets établis et les informations associées.
Exemple[[[[modifier]
Cet exemple, modélisé selon l'interface de socket Berkeley, envoie la chaîne "Hello, world!" via TCP vers le port 80 de l'hôte d'adresse 1.2.3.4. Il illustre la création d’un socket (getSocket), le connectant à l’hôte distant, l’envoi de la chaîne et enfin la fermeture du socket:
Socket mysocket = getSocket (type = "TCP") connect (mysocket, address = "1.2.3.4", port = "80") send (mysocket, "Hello, world!") fermer (mysocket)
Plusieurs types de prise Internet sont disponibles:
Prise de datagramme[[[[modifier]
UNE socket datagramme est un type de socket réseau qui fournit un point sans connexion pour envoyer ou recevoir des paquets de données.[2] Chaque paquet envoyé ou reçu sur un socket de datagramme est individuellement adressé et routé. L'ordre et la fiabilité ne sont pas garantis avec les sockets de datagrammes, de sorte que plusieurs paquets envoyés d'une machine ou d'un processus à un autre peuvent arriver dans n'importe quel ordre ou ne pas arriver du tout.
L'envoi d'émissions UDP sur un réseau est toujours activé sur un socket datagramme. Afin de recevoir des paquets de diffusion, un socket de datagramme doit être lié à l'adresse générique. Des paquets de diffusion peuvent également être reçus lorsqu'un socket de datagramme est lié à une adresse plus spécifique.
Prise de courant[[[[modifier]
UNE prise de flux est un type de socket réseau fournissant un flux de données unique, sans limites d’enregistrements, orienté connexion, séquencé et doté de mécanismes bien définis pour la création et la destruction de connexions et la détection d’erreurs.
Un socket de flux transmet les données de manière fiable, dans l’ordre et avec des capacités hors bande.
Sur Internet, les sockets de flux sont généralement implémentés sur TCP afin que les applications puissent s'exécuter sur tous les réseaux utilisant le protocole TCP / IP. SCTP peut également être utilisé pour les sockets de flux.
Prise crue[[[[modifier]
UNE prise crue est une prise réseau qui permet l'envoi et la réception directs de paquets IP sans aucun formatage de couche de transport spécifique au protocole.
Avec d'autres types de sockets, la charge utile est automatiquement encapsulée en fonction du protocole de couche de transport choisi (par exemple, TCP, UDP), et l'utilisateur de socket ne sait pas qu'il existe des en-têtes de protocole qui sont diffusés avec la charge utile. Lors de la lecture d'une socket brute, les en-têtes sont généralement inclus. Lors de la transmission de paquets à partir d'un socket brut, l'ajout automatique d'un en-tête est facultatif.
Les sockets bruts sont utilisés dans des applications liées à la sécurité telles que Nmap. Un cas d'utilisation possible pour les sockets brutes est la mise en œuvre de nouveaux protocoles de couche de transport dans l'espace utilisateur.[3] Les sockets bruts sont généralement disponibles dans les équipements réseau et utilisés pour les protocoles de routage tels que le protocole IGMPv4 (Internet Group Management Protocol) et le chemin OSPF (Open Shortest Path First), ainsi que dans le protocole ICMP (Internet Control Message Protocol) utilisé, entre autres, par l'utilitaire de ping.[4]
La plupart des interfaces de programmation d'applications (API), telles que celles basées sur les sockets Berkeley, prennent en charge les sockets bruts. Windows XP a été publié en 2001 avec la prise en charge des sockets brutes implémentée dans l'interface Winsock, mais trois ans plus tard, Microsoft limitait la prise en charge des sockets brutes par Winsock pour des raisons de sécurité.[5]
Autre[[[[modifier]
D'autres types de socket sont implémentés sur d'autres protocoles de transport, tels que SNA (Systems Network Architecture).[6] Voir aussi SDS de domaine Unix (UDS), pour la communication inter-processus interne.
Etats de socket dans le modèle client-serveur[[[[modifier]
Les processus informatiques fournissant des services d’application sont appelés serveurs et créent au démarrage des sockets au démarrage. état d'écoute. Ces prises attendent les initiatives des programmes clients.
Un serveur TCP peut desservir plusieurs clients simultanément, en créant un processus enfant pour chaque client et en établissant une connexion TCP entre le processus enfant et le client. Unique prises dédiées sont créés pour chaque connexion. Ce sont en établi état lorsqu'une connexion virtuelle socket-to-socket ou un circuit virtuel (VC), également appelé session TCP, est établi avec la socket distante, fournissant un flux d'octets duplex.
Un serveur peut créer plusieurs sockets TCP établis simultanément avec le même numéro de port local et la même adresse IP locale, chacun mappé à son propre processus serveur-enfant, desservant son propre processus client. Ils sont traités comme des sockets différents par le système d'exploitation, car l'adresse du socket distant (l'adresse IP du client et / ou le numéro de port) est différente. c’est-à-dire qu’ils ont des nuplets de paires de prises différents
Un socket UDP ne peut pas être dans un état établi, car UDP est sans connexion. Donc, netstat ne montre pas l'état d'un socket UDP. Un serveur UDP ne crée pas de nouveaux processus enfants pour chaque client servi simultanément, mais le même processus gère les paquets de données entrants provenant de tous les clients distants de manière séquentielle via le même socket. Cela implique que les sockets UDP ne sont pas identifiés par l'adresse distante, mais uniquement par l'adresse locale, bien que chaque message soit associé à une adresse distante.
Paires de douilles[[[[modifier]
Les sockets locaux et distants en communication sont appelés paires de prises. Chaque paire de sockets est décrite par un quadruplet unique composé d’adresses IP source et de destination et de numéros de port, c’est-à-dire des adresses de socket locales et distantes.[7][8] Comme indiqué dans la discussion ci-dessus, dans le cas TCP, un numéro de socket est attribué à chaque paire de sockets unique, alors que dans le cas UDP, un numéro de socket est attribué à chaque adresse de socket locale.
L'histoire[[[[modifier]
Le terme prise date de la RFC 147 (1971), où il a été utilisé dans ARPANET. Aujourd'hui, la plupart des implémentations de sockets sont basées sur des sockets Berkeley (1983) pour Internet, telles que Winsock (1991). Il existe d'autres implémentations d'API, telles que l'interface TLI (Transport Layer Interface) basée sur STREAMS.
En 1983, les sockets Berkeley, également connus sous le nom d'API de socket BSD, ont été créés avec le système d'exploitation Unix 4.2BSD (publié en 1983) en tant qu'API. Cependant, ce n’est qu’en 1989 que UC Berkeley a pu publier des versions de son système d’exploitation et de sa bibliothèque réseau libérées des contraintes de licence d’Unix, protégé par le droit d’auteur sur les droits d’auteur.[9]
En 1987, le TLI était l'interface de programmation d'application de réseau fournie par AT & T UNIX System V Release 3 (SVR3).[10] et continué dans la version 4 (SVR4).[11]
D'autres implémentations précoces ont été écrites pour TOPS-20,[12]MVS,[12]VM,[12]IBM-DOS (PCIP).[12][13]
Prises dans les équipements de réseau[[[[modifier]
Le socket est principalement un concept utilisé dans la couche de transport du modèle Internet. Les équipements de réseau tels que les routeurs et les commutateurs ne nécessitent pas d'implémentations de la couche transport, car ils fonctionnent au niveau de la couche liaison (commutateurs) ou de la couche internet (routeurs). Toutefois, les pare-feu réseau, les convertisseurs d'adresses réseau et les serveurs proxy avec état conservent une trace des paires de sockets actives. De plus, dans le cas de la mise en file d'attente, de la commutation de couche 3 et de la qualité de service (QoS) des routeurs, les flux de paquets peuvent être identifiés en extrayant des informations sur les paires de sockets. Les sockets bruts sont généralement disponibles dans les équipements réseau et sont utilisés pour les protocoles de routage tels que IGRP et OSPF, ainsi que dans le protocole ICMP (Internet Control Message Protocol).
Voir également[[[[modifier]
Références[[[[modifier]
- ^ Programme Cisco Networking Academy, Guide d'accompagnement CCNA 1 et 2, troisième édition, P.480, ISBN 1-58713-150-1
- ^ V. S. Bagad, I. A. Dhotre (2008), Réseaux informatiques (5ème édition révisée, 2010 ed.), Technical Publications Pune, p. 52
- ^ "raw (7): sockets brutes IPv4 – Page de manuel Linux". die.net.
- ^ "FAQ sur les réseaux IP bruts". faqs.org.
- ^ Ian Griffiths pour IanG on Tap. 12 août 2004. Raw Sockets Gone in XP SP2
- ^ www-306.ibm.com – Guide AnyNet sur les sockets sur SNA
- ^ books.google.com – Programmation réseau UNIX: l'API réseau de sockets
- ^ books.google.com – Conception de rootkits BSD: introduction au piratage du noyau
- ^ Wikipédia: prises Berkeley 2011-02-18
- ^ (Goodheart 1994, p. 11)
- ^ (Goodheart 1994, p. 17)
- ^ une b c ré historyofcomputercommunications.info – Livre: 9.8 TCP / IP et XNS 1981 – 1983
- ^ mit.edu – L'ordinateur de bureau en tant que participant réseau.pdf 1985
Liens externes[[[[modifier]







Commentaires
Laisser un commentaire