Bonjour,
J'essaie de comprenddre ce qu'est un Socket en TCP/IP et je vois pas mal de définitions différentes sur le net.
Quelqu'un pourrait me donner une définition simple et imagée ?
Merci.
Bonjour,
J'essaie de comprenddre ce qu'est un Socket en TCP/IP et je vois pas mal de définitions différentes sur le net.
Quelqu'un pourrait me donner une définition simple et imagée ?
Merci.
La définition de wikipédia me semble pertinente
un socket est [...] une interface logicielle avec les services du système d’exploitation, grâce à laquelle un développeur exploitera facilement et de manière uniforme les services d’un protocole réseau.
Il lui sera ainsi par exemple aisé d’établir une session TCP, puis de recevoir et d’expédier des données grâce à elle. Cela simplifie sa tâche car cette couche logicielle, de laquelle il requiert des services en appelant des fonctions, masque le travail nécessaire de gestion du réseau, pris en charge par le système. Le terme socket désigne en pratique chaque variable employée dans un programme afin de gérer l’une des sessions.
J'ai bien compris la notion d'adresse ip, de port et de couche TCP.
Mais les sockets ? C'est une zone tampon dans laquelle on écrit le flux de données entrant ?
La définition de Wikipédia n'est pas destiné aux débutants.
Dans le monde TCP/IP, une socket définit un "point d'entrée" dans le stack TCP/IP de l'OS. La socket est caractérisée par un port TCP/UDP et lorsqu'elle est créée, la machine "écoute" au travers de cette socket pour traiter les demandes de connexion et d'échange de données.
Conceptuellement, on peut dire qu'une socket permet de "canaliser" le flux entrant relatif à un certain port TCP/UDP.
Steph
salut,
en fait je citerais un autre morceau de la définition wikipédia pour ma part :
voilà donc ce que c'est, c'est un terme qui initialement appartient au domaine de la programmation et désigne une sorte de "connecteur" réseau, le tout à travers une structure de données définie dans <sys/socket.h>, cette structure c'est sockaddr_in et qui ressemble à ça :Dans le contexte des logiciels, on peut le traduire par « connecteur réseau » ou « interface de connexion »
(...)
Les sockets sont généralement implémentés en langage C, et utilisent des fonctions et des structures disponibles dans la bibliothèque <sys/socket.h>
programmatiquement c'est ça, par extension et/ou abus de langage -et notamment parceque sous linux "tout est fichier" y compris les sockets- ça devient également un descripteur (un entier) renvoyé par la fonction socket(2), laquelle nous dit-on "crée un point de communication"
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 struct sockaddr_in { short sin_family; // détermine la famille de la socket, internet ou unix typiquement u_short sin_port; // ici on précise le numéro du port struct in_addr sin_addr; // et là une sous-structure dans laquelle sera précisée l'adresse IP char sin_zero[8]; };
on sent bien -à mon sens, mais je peux me tromper- qu'on tourne autour d'un même truc, impliquant ce qu'on pourrait définir intellectuellement comme une espèce de "point d'accroche" réseau mais rien de vraiment palpable, et est en fait une notion de programmation, au mieux une structure interne du programme (et du noyau) faisant intervenir classiquement un couple <addresse:port>
Une socket est une interface logicielle (issue de Unix mais on retrouve cette notion sous Windows). Elle n'a de sens que sur la machine locale.
Une socket est reliée par un canal virtuel ou physique (le réseau) à une autre socket sur une autre machine (voire la même machine pour les communication interprocess qui ne passent pas par le réseau).
Tout ce que tu va écrire dans cette socket (méthode write) sera reçu à l'autre bout (méthode read) et vice versa.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Sur quelle couche du modèle OSI se situe les sockets ?
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
oui et non...
plutôt non parce-qu’une API désigne en général un ensemble de fonctions, un socket est une structure, un "étuis" dans lequel on met l'adresse IP et le port (source et/ou destination)
et on pourrait dire "oui" parce-que la fonction socket() fait partie de l'API réseau fournie par le noyau linux (de fait la structure sockaddr aussi)
Très d'accord avec la réponse précédente.
Je dirais que socket fait partie de l'API réseau. Mais il y a 2 choses qui portent le même nom :
- la socket qui est la structure de données sous jacente (IP Src, Ip Dst, port Src, port Dst, protocole et bien d'autres choses comme la taille de la fenêtre TCP et d'autres bricoles)
- l'API socket (socket(), read(), write(), listen(), accept(), ...) qui par abus de langage porte le nom de la structure (après tout, dans le monde Windows, il y a une API qui s'appelle WinSock
Donc c'est un peu les deux
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Partager