Rأ©seaux - htons (host to network short) htonl (host to network long) ntohs (network to host...
date post
24-Aug-2020Category
Documents
view
0download
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