IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Protocoles Discussion :

Définition d'un Socket


Sujet :

Protocoles

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut Définition d'un Socket
    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.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    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.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    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.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    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

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    en fait je citerais un autre morceau de la définition wikipédia pour ma part :
    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>
    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 :
    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];
    };
    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"

    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>

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    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
    Une traduction possible de "socket" est "prise femelle" (une prise mâle, c'est un plug).
    Je laisse libre cours à l'imagination du lecteur pour une définition simple et imagée

    Steph

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    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

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Sur quelle couche du modèle OSI se situe les sockets ?

  9. #9
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    Sur quelle couche du modèle OSI se situe les sockets ?
    Au dessus de la couche 4 dans 99% des cas de figure

    Toutefois, il est possible de se positionner au dessus de 2 ou 3 avec des socket pour créer des "raw socket" et donc manipuler complètement les entêtes IP (nécessite le privilège root sur les machines Unix)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Je peux dire que : socket = API réseau ?

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    Je peux dire que : socket = API réseau ?
    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)

  12. #12
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    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

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  2. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 01/08/2002, 16h40
  3. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40
  4. Définition de "Métalangage"
    Par No dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 19/07/2002, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo