voila j'aurais aimé savoir la différence entre, tout d'abord, une socket et une extrémité internet, et ensuite, entre une socket et un numéro de descripteur d'entrée-sortie ?
merci d'avance pour vos réponses
voila j'aurais aimé savoir la différence entre, tout d'abord, une socket et une extrémité internet, et ensuite, entre une socket et un numéro de descripteur d'entrée-sortie ?
merci d'avance pour vos réponses
Aller, je me lance
Une socket (cela vient de l'anglais qui veut dire "point de connexion", par analogie avec une prise de courant), c'est un objet géré par le noyau qui sert à dialoguer le réseau.
En général, une socket est identifiée par un identifiant unique, un numéro. Le noyau Linux attribue à cette socket un numéro qui est aussi un descripteur d'entrées/sortie ce qui permet d'utiliser les même fonctionnalités (ou du moins, un grand ensemble) que les entrées/sorties.
Quant à l'extémité internet, c'est un peu plus flou. J'aurais tendence à dire qu'une communication entre 2 process est établie au travers d'un tuyau réseau. Ce tuyau possède 2 extrémités et chaque tuyau est identifié de manière unique par 5 paramètres
- l'adresse source, c'est l'adresse IP de celui qui a initié la communication
- l'adresse destination, c'est c'est l'adresse IP de l'autre extrémité
- le protocole (TCP, UDP, ICMP et il y en a d'autres qui n'utilisent pas nécessairement le protocole IP)
- le port destination, il correspond à un numéro de service que l'adresse source tente de joindre sur l'adresse de destination. Ces numéro de ports sont des valeurs définie dans le RFC 1700 par exemple (telnet=23, ftp=20 et 21, http=80, smtp=25 et plein d'autres comme cela). Suivant le protocole utilisé (ICMP par exemple) le numéro de port n'a pas de sens et n'est pas utilisé.
- le port source, c'est le numéro de service en local mais cela n'a pas du tout le même sens que pour le numéro de port destination, c'est juste utilisé comme un identifiant (pour faire simple).
- le port source,
J'espère que cela répond à une partie de tes questions
Le terme "extrémité internet", ça me fait penser au terme anglais EndPoint.
En TCP, un EndPoint est déterminé par l'adresse IP de la machine et le port TCP utilisé. Donc, un socket TCP serait lié à un endpoint sur chaque machine.
Précisions pour socket et descripteur:
- Sur tout système unixoïde, en effet, un socket est un descripteur d'entrées/sorties, ce qui permet d'utiliser les fonctions read() et write() dessus sur un tel système.
- Sous Windows, on utilise des handles à la place. Les "descripteurs" tels qu'on les vois sous *n*x (avec les fonctions open(), read(), write(), etc) sont en fait une surcouche gérée par la bibliothèque runtime C, où chaque descripteur encapsule un handle, tout comme chaque FILE* encapsule un descripteur. L'OS lui-même n'en a pas connaissance, car pour lui, tout est handle.
C'est pourquoi sous Windows, seules les fonctions liées aux sockets (recv(), send()) marchent dessus, read() et write() n'étant pas conçues pour le même type de ressource. Pour la même raison, sous Windows select() marche uniquement pour les sockets, et pas pour l'entrée standard.
c'est a peu des choses prés, la définition exacte d'une socket.
a l'exception qu'on ne parle pas de socket si on est pas sur la couche Transport (voir modèle en couche Internet) d'où le fait qu'icmp ne cadre pas avec la définition.
le file descriptor, c'est un numéro (sur windows et unixoide du moins, je ne m'avance pas a parler des autres systemes) attribue par ton Os a un socket, un fichier ouvert, un pipe ...
c'est juste un numéro que ton OS feras correspondre avec ta socket.
un end point est en fait l'entité sur la couche transport (Internet Model) qui est au bout de la communication ex: une machine a un bout d'une socket (source ou destination) est un end point.
avec un peu de travail, ca pourrait completer la FAQ reseau!
non, une socket defini 2 EndPoint/machines (depart et arrive) mais le socket n'appartiens qu'a une machine - l'autre machine as un socket similaire avec la source et la destination (port et addresse) "inversees"
dans le concret:
Socket sur le EndPoint Alice :
Source: Alice
Destination: Bob
Port Source: 60000
Port Destination: 80
Protocole: TCP
Socket sur le EndPoint Bob :
Source: Bob
Destination: Alice
Port Source: 80
Port Destination: 60000
Protocole: TCP
fin, c'est un peu du chipotage toussa quand même
Je rectifie, un socket est effectivement sur 1 seule machine, l'autre extrémité, c'est un autre socket sur l'autre machine. J'avais un peu mélangé Endpoint et canal
Tout à fait car tout le monde se comprend mais c'est toute la difficulté d'écrire une phrase non equivoque (pour mettre dans la FAQ par exemple).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager