Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to...

29
1 (c) 2011 Omar geryville Réseaux : Programmation sockets Réseaux : Programmation avec l'API BSD/Sockets Mias2011.wordpress.com

Transcript of Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to...

Page 1: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

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

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

Mias2011.wordpress.com

Page 2: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

2Réseaux : Programmation sockets

Organisation du CoursOrganisation du CoursEnseignementEnseignement

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

EvaluationEvaluationCC : Projet à rendre en binômeCC : Projet à rendre en binômeExamen 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

Page 3: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

3Réseaux : Programmation sockets

Plan du CoursPlan du CoursChapitre 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

Page 4: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

4Réseaux : Programmation sockets

RéférencesRéférencesLivresLivres

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

URLsURLshttp://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

Page 5: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

5Réseaux : Programmation sockets

Chapitre 1Chapitre 1

Introduction

(c) 2011 Omar geryville

Page 6: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

6Réseaux : Programmation sockets

SocketSocket = Prise = PriseUn 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 distantsProtocoles 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 possiblesMais 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

Page 7: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

7Réseaux : Programmation sockets

Socket = API (issue de BSD)Socket = API (issue de BSD)Interface de programmationInterface de programmationInterface 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

Page 8: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

8Réseaux : Programmation sockets

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

Communiquer au travers de pseudo-fichiersCommuniquer au travers de pseudo-fichiersChaque 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

0123

i

fichier

fichier

socket

socket Réseau

disk

Processus Système

Chapitre 1 : Introduction

(c) 2011 Omar geryville

Page 9: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

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 serveurUne application socket = Une application socket = 2 programmes2 programmes (au moins) (au moins)

Un clientUn clientEtablit la connexionEtablit la connexion

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

Un serveurUn serveurAttend connexion(s)Attend connexion(s)

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

Chapitre 1 : Introduction

(c) 2011 Omar geryville

Page 10: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

10Réseaux : Programmation sockets

Client/Serveur : un modèle AsymétriqueClient/Serveur : un modèle AsymétriqueServeur : 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

Page 11: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

11Réseaux : Programmation sockets

Modes de FonctionnementModes de FonctionnementDeux 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éesFlot 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

Page 12: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

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 virtuelleEvite (à 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

Page 13: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

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 variablePb. 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éesLorsque 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

Page 14: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

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 destinataire peut lire en une fois le produit de plusieurs Le destinataire peut lire en une fois le produit de plusieurs écrituresécrituresTransmissions de longueur variables ?!Transmissions de longueur variables ?!

A la charge du programmeur (concepteur du protocole)A la charge du programmeur (concepteur du protocole)

Ex : en-tête = longueur(contenu) + contenuEx : en-tête = longueur(contenu) + contenu

Pas forcément plus compliqué...Pas forcément plus compliqué...

Ex : exp souhaite envoyer chaîne « truc »Ex : exp souhaite envoyer chaîne « truc »exp: envoi printf("%2d",strlen(« truc »))exp: envoi printf("%2d",strlen(« truc »))

exp: envoi « truc »exp: envoi « truc »

dest : reçoit scanf("%2d",&msg_len)dest : reçoit scanf("%2d",&msg_len)

dest : truc_buf = malloc(msg_len)dest : truc_buf = malloc(msg_len)

dest : fread(truc_buf,msg_len, ...)dest : fread(truc_buf,msg_len, ...)

Attention à éviterles décalages intempestifs !

Chapitre 1 : Introduction

(c) 2011 Omar geryville

Page 15: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

15Réseaux : Programmation sockets

Synchronisation Source/DestinationSynchronisation Source/DestinationMode de fonctionnement AsynchroneMode de fonctionnement Asynchrone

Capacité Capacité limitéelimitée de stockage à destination de stockage à destinationContrôle de flux ?Contrôle de flux ?

Aucun : à la charge du protocole sous-jacentAucun : à la charge du protocole sous-jacent

Possibilité de perdre des messages avec UDP ...Possibilité de perdre des messages avec UDP ...

Capacité de stockage (un peu) configurableCapacité de stockage (un peu) configurable

Le destinataire lit (consomme) les données reçues quand il Le destinataire lit (consomme) les données reçues quand il le souhaitele souhaite

Eventuellement très longtemps après leur réception...Eventuellement très longtemps après leur réception...

Possibilité de blocagePossibilité de blocageSi contrôle de flux (TCP)Si contrôle de flux (TCP)

Mode bloquant débrayableMode bloquant débrayable

Chapitre 1 : Introduction

(c) 2011 Omar geryville

Page 16: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

16Réseaux : Programmation sockets

A propos d'API...A propos d'API...Socket n'est pas la seule API !Socket n'est pas la seule API !

API concurrente sur System V API concurrente sur System V TLI (Transport Layer Interface)TLI (Transport Layer Interface)

Plus sophistiquéePlus sophistiquée

Apparue plus tardApparue plus tard

Donc moins connue/utilisée ...Donc moins connue/utilisée ...

Solaris (Sun) = System VSolaris (Sun) = System VObligation de programmer avec TLI sur SUN ??Obligation de programmer avec TLI sur SUN ??Non : librairie de compatibilitéNon : librairie de compatibilité

gcc reseau_simple.c –o reseau_simple gcc reseau_simple.c –o reseau_simple –lnsl–lnslgcc reseau_socket.c –o reseau_socket gcc reseau_socket.c –o reseau_socket –lsocket –lnsl–lsocket –lnsl

Chapitre 1 : Introduction

(c) 2011 Omar geryville

Page 17: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

17Réseaux : Programmation sockets

Chapitre 2Chapitre 2

Manipulations d'Adresses

(c) 2011 Omar geryville

Page 18: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

18Réseaux : Programmation sockets

Où chercher ?Où chercher ?Fichiers d'inclusionFichiers d'inclusion

<sys/types.h> <sys/types.h> types de données élémentaires (u_char, u_long, …)types de données élémentaires (u_char, u_long, …)

<sys/socket.h> <sys/socket.h> déclarations concernant les socketsdéclarations concernant les sockets

<netinet/in.h> <netinet/in.h> déclarations concernant le protocole IPdéclarations concernant le protocole IP

<netdb.h> : <netdb.h> : déclarations concernant la résolution d'adressesdéclarations concernant la résolution d'adresses

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 19: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

19Réseaux : Programmation sockets

Où chercher ?Où chercher ?ManuelManuel

byteorder(3)byteorder(3) Conversions d'entiers entre format natif et format réseauConversions d'entiers entre format natif et format réseau

inet(3)inet(3) Conversion d'adresse entre formats texte et binaireConversion d'adresse entre formats texte et binaire

gethostbyname(3)gethostbyname(3) Résolution d'adressesRésolution d'adresses

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 20: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

20Réseaux : Programmation sockets

Conversion entre Formats Natif et RéseauConversion entre Formats Natif et RéseauAdresse IP = entier 32 bitsAdresse IP = entier 32 bits

Tous les CPU ne comprennent pas les entiers 32 bits de la Tous les CPU ne comprennent pas les entiers 32 bits de la même façonmême façon Format MSB, LSB, mixtes …Format MSB, LSB, mixtes …

Une convention a été adoptée pour éviter les erreurs : Une convention a été adoptée pour éviter les erreurs : Adresse IP = 32 bits MSBAdresse IP = 32 bits MSB

Les machines qui n'ont pas la chance de calculer au Les machines qui n'ont pas la chance de calculer au format MSB doivent convertirformat MSB doivent convertir

Adresses IP (32 bits)Adresses IP (32 bits)

Numéros de port (16 bits)Numéros de port (16 bits)

Masques de réseaux, …Masques de réseaux, …

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 21: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

21Réseaux : Programmation sockets

Conversion entre Formats Natif et Réseau (2)Conversion entre Formats Natif et Réseau (2)Fonctions de conversion :Fonctions de conversion :

hhtotonnss ( (hosthost to  to networknetwork  shortshort))htonl (host to network long)htonl (host to network long)ntohs (network to host short)ntohs (network to host short)ntohl (network to host long)ntohl (network to host long)

On ne sait pas toujours si l'ordinateur que l'on On ne sait pas toujours si l'ordinateur que l'on programme est MSB …programme est MSB …

Conversion systématique !Conversion systématique ! Ces fonctions existent aussi sur les "bonnes" machines au Ces fonctions existent aussi sur les "bonnes" machines au format MSB : elle ne changent rien …format MSB : elle ne changent rien …

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 22: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

22Réseaux : Programmation sockets

Quand utiliser les fonctions de conversion ?Quand utiliser les fonctions de conversion ?A chaque fois que :A chaque fois que :

L'API nous fournit une donnée de type adresse/portL'API nous fournit une donnée de type adresse/portEx: réception d'un message venant de xxx.yyy.zzz.tttEx: réception d'un message venant de xxx.yyy.zzz.ttt

L'API demande une donnée de type adresse/portL'API demande une donnée de type adresse/portEx: envoyer datagramm vers port iiii de machine Ex: envoyer datagramm vers port iiii de machine xxx.yyy.zzz.ttt ...xxx.yyy.zzz.ttt ...

Attention aux calculs arithmétiques !Attention aux calculs arithmétiques !Exemple : scan de portsExemple : scan de ports

for (port=1024 ; port<2048 ; port++) ...for (port=1024 ; port<2048 ; port++) ...

port++ est juste Ssi port au format hostport++ est juste Ssi port au format host

En cas de doute : ne pas hésiter à utiliser des variables de En cas de doute : ne pas hésiter à utiliser des variables de nom explicite : nom explicite : hhport = ntohs(port = ntohs(nnport)port)

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 23: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

23Réseaux : Programmation sockets

Résolution d'AdressesRésolution d'AdressesFonctions d'interface avec le DNSFonctions d'interface avec le DNS

gethostname(char * gethostname(char * namename, size_t , size_t lenlen)) Retourne dans Retourne dans namename le nom de la machine courante le nom de la machine courante

struct hostent *gethostbyname(char * struct hostent *gethostbyname(char * namename)) Retourne une structure décrivant la machine de nom Retourne une structure décrivant la machine de nom namename

struct hostent *gethostbyaddr(char *struct hostent *gethostbyaddr(char *addraddr, int , int lenlen, int , int typetype))Retourne une structure (la même) décrivant la machine d'adresse Retourne une structure (la même) décrivant la machine d'adresse addraddr (format réseau)(format réseau)

lenlen = sizeof(addr) = sizeof(addr)

typetype = AF_INET = AF_INET

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 24: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

24Réseaux : Programmation sockets

La structure HostentLa structure Hostentstruct hostent {struct hostent {

// nom officiel// nom officielchar *h_name;char *h_name;// autres noms : vecteur de chaînes, dont le // autres noms : vecteur de chaînes, dont le // dernier élément est NULL// dernier élément est NULLchar **h_aliases; char **h_aliases; // type d'adresse (AF_INET) // type d'adresse (AF_INET) int h_addrtype;int h_addrtype;// longueur des adresses (32 bits = 4 si IP)// longueur des adresses (32 bits = 4 si IP)int h_length;int h_length;// Liste des adresses (terminée par NULL aussi)// Liste des adresses (terminée par NULL aussi)char **h_addr_list;char **h_addr_list;

};};Attention : horreur !Faux type char * (en fait void *)Cast délicat dans le cas d'@ IP...

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 25: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

25Réseaux : Programmation sockets

Structure d'adresseStructure d'adressestruct sockaddr {struct sockaddr {

u_shortu_short sa_family;sa_family; /* address family: AF_xxx value */ /* address family: AF_xxx value */ 

charchar sa_data [14];sa_data [14]; /* up to 14 bytes protocol specific address *//* up to 14 bytes protocol specific address */

};};

struct in_addr {struct in_addr {

u_longu_longs_addr;s_addr; /* 32 bit netid/hostid, network byte ordered *//* 32 bit netid/hostid, network byte ordered */

};};

struct sockaddr_in {struct sockaddr_in {

shortshort sin_family; sin_family;  /* AF_INET *//* AF_INET */

u_shortu_short sin_port;sin_port; /* 16 bit port number, net byte ordered *//* 16 bit port number, net byte ordered */

struct in_addrstruct in_addr sin_addr;sin_addr;

charchar sin_zero [8];sin_zero [8]; /* unused *//* unused */

};};

Chapitre 2 : Manipulations d'adresses

Type générique :jamais instancié

Type instancié dansle cas d'une @IP

(c) 2011 Omar geryville

Page 26: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

26Réseaux : Programmation sockets

Conversion d'adresses IPConversion d'adresses IP#include <sys/socket.h>#include <sys/socket.h>

#include <netinet/in.h>#include <netinet/in.h>

#include <arpa/inet.h>#include <arpa/inet.h>

unsigned long inet_addr (char * unsigned long inet_addr (char * ptrptr););

char * inet_ntoa (struct in_addr char * inet_ntoa (struct in_addr inaddrinaddr););

Conversion d’adresses internet entreConversion d’adresses internet entreChaîne au format “point décimal” Chaîne au format “point décimal” (ex: 192.168.0.1)(ex: 192.168.0.1)

Format binaire 4 octets (réseau)Format binaire 4 octets (réseau)

Chapitre 2 : Manipulations d'adresses

(c) 2011 Omar geryville

Page 27: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

27Réseaux : Programmation sockets

Chapitre 3Chapitre 3

Appels Systèmes Elémentaires

(c) 2011 Omar geryville

Page 28: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

28Réseaux : Programmation sockets

Synoptique en mode connectéSynoptique en mode connecté

socket ()

bind ()

listen ()

accept ()

read ()

write ()

bloque jusqu’à demande de connexion client

traitementde la requête

socket ()

connect ()

write ()

read ()

établissement de la connexion

requête

réponse

serveur

client

Chapitre 3 : Appels Systèmes élémentaires

(c) 2011 Omar geryville

Page 29: Réseaux - WordPress.comhtons (host to network short) htonl (host to network long) ntohs (network to host short) ntohl (network to host long) On ne sait pas toujours si l'ordinateur

29Réseaux : Programmation sockets

Synoptique en mode non connectéSynoptique en mode non connecté

socket ()

bind ()

recvfrom ()

sendto ()

bloque jusqu’à réception de requête client

traitementde la requête

socket ()

bind ()

sendto ()

recvfrom ()

requête

réponse

serveur

client

Chapitre 3 : Appels Systèmes élémentaires

(c) 2011 Omar geryville