Rأ©seaux - htons (host to network short) htonl (host to network long) ntohs (network to host...

download Rأ©seaux - htons (host to network short) htonl (host to network long) ntohs (network to host short)

If you can't read please download the document

  • date post

    24-Aug-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Rأ©seaux - htons (host to network short) htonl (host to network long) ntohs (network to host...

  • 1(c) 2011 Omar geryville Réseaux : Programmation sockets

    Réseaux : Programmation avec l'API BSD/Sockets

    Mias2011.wordpress.com

  • 2Réseaux : Programmation sockets

    Organisation du CoursOrganisation du Cours EnseignementEnseignement

    3 x 2h de Cours3 x 2h de Cours 3 x 4h de TP3 x 4h de TP

    EvaluationEvaluation CC : Projet à rendre en binômeCC : Projet à rendre en binôme Examen 2hExamen 2h

    Pré-requis Pré-requis indispensablesindispensables (à réviser d'urgence !) (à réviser d'urgence !) Programmation C : pointeurs, malloc, ... + makefile, ...Programmation C : pointeurs, malloc, ... + makefile, ... Programmation système : fork, signauxProgrammation système : fork, signaux

    Avant-propos

    (c) 2011 Omar geryville

  • 3Réseaux : Programmation sockets

    Plan du CoursPlan du Cours Chapitre 1 : IntroductionChapitre 1 : Introduction

    Chapitre 2 : Manipulations d'adressesChapitre 2 : Manipulations d'adresses

    Chapitre 3 : Appels Systèmes ElémentairesChapitre 3 : Appels Systèmes Elémentaires

    Chapitre 4 : Appels Systèmes AvancésChapitre 4 : Appels Systèmes Avancés

    Chapitre 5 : Techniques de Communication AvancéesChapitre 5 : Techniques de Communication Avancées

    Avant-propos

    (c) 2011 Omar geryville

  • 4Réseaux : Programmation sockets

    RéférencesRéférences LivresLivres

    W. R. Stevens : « Unix Network Programming », Prentice-W. R. Stevens : « Unix Network Programming », Prentice- Hall 1990Hall 1990 J.-M. Rifflet : « La Communication sous UNIX », MassonJ.-M. Rifflet : « La Communication sous UNIX », Masson D. Comer : « Internetworking with TCP/IP », Prentice HallD. Comer : « Internetworking with TCP/IP », Prentice Hall

    URLsURLs http://www.urec.fr/cours/ (unité réseaux du CNRS)http://www.urec.fr/cours/ (unité réseaux du CNRS) http://www.ecst.csuchico.edu/~beej/guide/net/html/http://www.ecst.csuchico.edu/~beej/guide/net/html/

    Avant-propos

    (c) 2011 Omar geryville

  • 5Réseaux : Programmation sockets

    Chapitre 1Chapitre 1

    Introduction

    (c) 2011 Omar geryville

  • 6Réseaux : Programmation sockets

    SocketSocket = Prise = Prise Un moyen de « brancher » des processus entre-euxUn moyen de « brancher » des processus entre-eux

    Communication dite « par échange de messages »,Communication dite « par échange de messages », ((Message PassingMessage Passing))

    Message = 1 caractère (stream) ou plusieurs (datagramm)Message = 1 caractère (stream) ou plusieurs (datagramm)

    S'oppose à d'autre formes tq. Mémoire (Virt.) PartagéeS'oppose à d'autre formes tq. Mémoire (Virt.) Partagée

    Connexion de processus locaux (IPC)Connexion de processus locaux (IPC) Protocol interne « Unix »Protocol interne « Unix »

    Ex: DISPLAY=:0.0Ex: DISPLAY=:0.0

    Connexion de processus distantsConnexion de processus distants Protocoles de la famille TCP/IPProtocoles de la famille TCP/IP

    Telnet, rlogin, ssh, ftp, http, nslookup, ...Telnet, rlogin, ssh, ftp, http, nslookup, ...

    Autres protocoles possiblesAutres protocoles possibles Mais rarement utilisés car « TCP/IP » standard de faitMais rarement utilisés car « TCP/IP » standard de fait

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 7Réseaux : Programmation sockets

    Socket = API (issue de BSD)Socket = API (issue de BSD) Interface de programmationInterface de programmation Interface avec le systèmeInterface avec le système

    Application

    Sockets

    Transport

    Network

    Data Link

    Physical

    TCP

    IP

    UDP

    IGMP

    Ethernet / ATM (ADSL)

    Unix

    Noyau Unix

    Matériel

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 8Réseaux : Programmation sockets

    Principe de Base de l'API SocketPrincipe de Base de l'API Socket Unix = Fichiers + ProcessusUnix = Fichiers + Processus

    Communiquer au travers de pseudo-fichiersCommuniquer au travers de pseudo-fichiers Chaque socket est associé à un descripteurChaque socket est associé à un descripteur

    Fonctionnement similaire aux FIFO (bi-directionnelles)Fonctionnement similaire aux FIFO (bi-directionnelles) Envoyer = écrire dans le descripteurEnvoyer = écrire dans le descripteur

    Recevoir = lire dans le descripteurRecevoir = lire dans le descripteur

    0 1 2 3

    i

    fichier

    fichier

    socket

    socket Réseau

    disk

    Processus Système

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 9Réseaux : Programmation sockets

    Modèle Client/ServeurModèle Client/Serveur

    Client Serveur

    1 - Requête

    2 - Réponse

    Programmation socket = modèle client serveurProgrammation socket = modèle client serveur Une application socket = Une application socket = 2 programmes2 programmes (au moins) (au moins)

    Un clientUn client Etablit la connexionEtablit la connexion

    Envoie une requête (demande service)Envoie une requête (demande service)

    Un serveurUn serveur Attend connexion(s)Attend connexion(s)

    Traite requête(s)Traite requête(s)

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 10Réseaux : Programmation sockets

    Client/Serveur : un modèle AsymétriqueClient/Serveur : un modèle Asymétrique Serveur : normalement capable de (prévu pour) traiter Serveur : normalement capable de (prévu pour) traiter plusieurs requêtesplusieurs requêtes

    Eventuellement en parallèle !Eventuellement en parallèle !

    Client : connexion (ponctuelle) vers un serveurClient : connexion (ponctuelle) vers un serveur

    ServeurClient

    Client Client Client

    hôte 1

    hôte 2 hôte 3

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 11Réseaux : Programmation sockets

    Modes de FonctionnementModes de Fonctionnement Deux Deux modes de connexionmodes de connexion

    Mode connectéMode connecté : l'interlocuteur (au bout de la prise) : l'interlocuteur (au bout de la prise) ne ne change paschange pas

    Idée du « téléphone rouge »Idée du « téléphone rouge »

    Mode non connectéMode non connecté : : réutilisationréutilisation d'un d'un socket socket pour joindre pour joindre (successivement) différents interlocuteurs(successivement) différents interlocuteurs

    Deux types de Deux types de flots de donnéesflots de données Flot de Flot de caractèrescaractères (mode «  (mode « stream »stream »))

    UneUne lecture peut récupérer les données envoyées par lecture peut récupérer les données envoyées par plusieursplusieurs écritures (et inversement) écritures (et inversement)

    Flot de Flot de messagesmessages (mode «  (mode « datagramm »datagramm »)) UneUne écriture = écriture = UnUn message = message = UneUne lecture lecture

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 12Réseaux : Programmation sockets

    Quel mode de connexion choisir ?Quel mode de connexion choisir ? Mode connecté : logique avec protocole connectéMode connecté : logique avec protocole connecté

    En particulier TCPEn particulier TCP

    Mode non connecté : logique avec protocole non Mode non connecté : logique avec protocole non connectéconnecté

    En particulier UDPEn particulier UDP

    MAISMAIS : Mode connecté possible avec UDP ! : Mode connecté possible avec UDP ! Connexion virtuelleConnexion virtuelle Evite (à l'expéditeur) d'avoir à répéter le destinataire à Evite (à l'expéditeur) d'avoir à répéter le destinataire à chaque envoi...chaque envoi...

    Allège la programmation dans certains casAllège la programmation dans certains cas

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 13Réseaux : Programmation sockets

    Utilisation du mode «Flot de Messages»Utilisation du mode «Flot de Messages» Frontière de message conservée = Frontière de message conservée = information impliciteinformation implicite

    Exemple :Exemple : expéditeur : envoi (écrit) 10 octetsexpéditeur : envoi (écrit) 10 octets

    destinataire : lit 20 octetsdestinataire : lit 20 octets

    Résultat ?Résultat ? Destinataire Destinataire ne récupère que 10 octets !!ne récupère que 10 octets !!

    Utile lorsque les transmissions sont de longueur variableUtile lorsque les transmissions sont de longueur variable Pb. destinataire : combien de données lire la prochaine Pb. destinataire : combien de données lire la prochaine fois ??fois ??

    Solution : (tenter de) lire le maximum Solution : (tenter de) lire le maximum Aucun risque de déborder sur la réception suivanteAucun risque de déborder sur la réception suivante

    Attention : possibilité de perte « silencieuse » de donnéesAttention : possibilité de perte « silencieuse » de données Lorsque le destinataire ne lit pas assez de données...Lorsque le destinataire ne lit pas assez de données...

    Chapitre 1 : Introduction

    (c) 2011 Omar geryville

  • 14Réseaux : Programmation sockets

    Utilisation du mode «F lot de Caractères»Utilisation du mode «F lot de Caractères» Lectures et écritures sont décorréléesLectures et écritures sont décorrélées

    Le d