You are on page 1of 27

Sockets

Complment de cours

GPA-785
cole de Technologie Suprieure

Communication client / serveur


travers des sockets

z Introduction
z Les couches du modle TCP / IP
z Encapsulation et dcapsulation de donnes travers
les couches du modle TCP / IP
z Schma dadressage dans le modle TCP / IP
z Programmation des sockets dans lenvironnement
Windows
z Les sockets en mode TCP (orient connection)
z Les sockets en mode UDP (sans connection)

2 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Introduction

z Dans un modle client / serveur une application se


divise en deux parties :
serveur : un programme qui sexcute sur un
rseau dordinateurs et qui est capable d offrir un
service. Le serveur reoit une requte travers le
rseau, effectue le traitement ncessaire et retourne
le rsultat de la requte.
client : un programme qui envoi la requte au
serveur et attend la rponse.
Ncessit d une communication inter-processus
(IPC)
3 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Exemple de communication
client / serveur

Envoi dune requte

Envoi dune rponse

Client
Serveur de base de donnes
4 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Dfinition dun socket

z Un socket est une structure de donnes abstraite qui est


utilise pour tablir un canal de communication
permettant lenvoi et la rception dinformations entre
des processus qui sexcutent dans un environnement
distribu.
z Linterface Berkeley Socket a t introduite au dbut
des annes 80 et permet une communication inter-
processus dans lenvironnement Unix.
z Linterface Winsock a t dvelopp rcemment et
permet une communication inter-processus dans
lenvironnement Windows TCP / IP.
5 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Les couches du modle TCP / IP

Diffrence darchitecture entre


Couche Application
les modles TCP / IP et OSI :
Couche Prsentation
Couche Application
Couche Session
Couche Transport
Couche Transport
Couche Internet
Couche Rseau
Couche Physique
Couche Liaison
TCP / IP
Couche Physique
6 GPA-785 OSI Mohamed Cheriet
cole de Technologie Suprieure

Encapsulation et dcapsulation de
donnes dans TCP / IP
Application Application
Source Destination

Donnes Donnes

En-tte Donnes En-tte Donnes


Transport Transport

En-tte En-tte Donnes En-tte En-tte Donnes


Internet Transport Internet Transport

En-tte En-tte En-tte Donnes En-tte En-tte En-tte Donnes


physique Internet Transport physique Internet Transport

7 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Adresses rseau

z Chaque ordinateur connect un rseau


possde au moins deux adresses uniques :
Une adresse ethernet de 48 bits assigne par le
manufacturier. Elle est crite en notation
hexadcimale et les six groupes de 8 bits sont
spars par un `:`.
Une adresse Internet (IP) de 32 bits assigne par le
centre dinformation rseau qui gre labonnement.
Elle est crite en notation dcimale et les quatre
groupes de 8 bits sont spars par un `.`.

8 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Schma dadressage dans TCP / IP

z Adressage universel : chaque ordinateur


connect un rseau TCP / IP possde une
adresse qui lidentifie de faon unique.
z Chaque ordinateur possde une adresse
Internet (IP) compose de 32 bits.
z Ladresse IP contient assez dinformation pour
identifier de faon unique un rseau donn et
un ordinateur spcifique sur le rseau.

9 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les diffrentes classes de rseaux

z Il existe 5 classes de rseau dont trois (A, B, C) sont


pour un usage gnral et les deux autres (D, E) sont
rserves pour un usage spcial.
Bit 31 Bit 0
ID classe ID rseau ID hte

Format dune adresse IP

10 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Format des classes A, B et C

31 30 24 23 0
z Classe A :
0 ID rseau ID hte

126 rseaux et 16 777 214 htes par rseau


z Classe B : 31 30 29 16 15 0
1 0 ID rseau ID hte

z
16 382
Classe C : rseaux et 65 534 htes par rseau
31 30 29 28 87 0
1 1 0 ID rseau ID hte

11 GPA-785
2 097 150 rseaux et 254 htes par rseau Mohamed Cheriet
cole de Technologie Suprieure

Association dun nom de domaine


une adresse IP

z Un nom de domaine est organis sous forme dune


structure hirarchique :
Un code didentification de lorganisation (com pour
commercial, edu pour education, gov pour gouvernement,
etc).
Un code didentification du pays (fi pour Finlande, ca pour
Canada, us pour les tats Unis, etc).
Un code didentification dun sous domaine (polymtl).
Le nom de la machine hte.

12 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Association dun numro de port un


processus

z Pour effectuer une communication inter-processus il


faut identifier de faon unique les processus. Un
numro de port de 16 bits est associ chaque
processus.
z La couche Internet utilise ladresse IP pour transfrer
des donnes dun ordinateur un autre.
z La couche Transport utilise le numro de port pour
livrer les donnes au processus appropri sur
lordinateur de destination.

13 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les principaux protocoles de la


couche transport

z Protocole UDP (User Datagram Protocol)


Lentte est minimale.
La livraison des donnes nest pas fiable.
Pas besoin dtablir une connexion.
z Protocole TCP (Transmission Control Protocol)
Le total de contrle (checksum) est calcul et inclu dans
chaque paquet.
La livraison des donnes est fiable.
tablir la connexion avant la transmission de donnes.

14 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Format dun message UDP

Port source Port destination


Taille Checksum
Donnes

Le champ Checksum est optionnel. Il est mis


zro lorsquil nest pas utilis. Si le total de
contrle nest pas effectu par le protocole UDP
aucun contrle nest effectu sur les donnes
puisque le protocole IP effectue le checksum sur
lentte IP et non sur le champ de donnes
15 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Format dun message TCP


Port source Port destination
Numro de squence
Numro daccus de rception

Offset Reserved Flags Fentre


Checksum Pointeur urgent
Options Padding
Donnes

Les champs supplmentaires (voir Stallings pp. 611) permettent


dassurer la fiabilit de la transmission des donnes
16 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Programmation des sockets sous


lenvironnement Windows
Application Windows

Couche de communication haut niveau (RPC)


Interface WINSOCK.DLL
Couche du protocole TCP /IP
Contrleur de paquets Protocole SLIP ou
(NDIS ou ODI) PPP
Contrleur de carte Contrleur de port en
rseau srie

Architecture des couches dans Winsock

17 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Initialisation et fermeture dune


communication sous Windows

z Fichiers ncessaires :
winsock.lib
winsock.h
winsock.dll
z WSAStartup ( ) permet dinitialiser winsock.dll et de
confirmer que la version winsock.dll est compatible
avec lapplication considre.
z WSACleanup ( ) est utilise pour mettre fin
lutilisation de Winsock par une application donne.

18 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Communication client / serveur en


mode TCP
serveur : socket ( ) client :
bind ( )
listen ( )

wait
socket ( )
connect ( )
accept ( )
send ( ) / recv ( ) send ( ) / recv ( )
closesocket ( ) closesocket ( )
19 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Les fonctions principales

z socket ( ) permet de crer une socket pour tablir un


cannal de communication. Ses arguments spcifient :
af : la famille dadresses qui est AF_INET pour Winsock 1.1.
type : le type de socket qui est SOCK_STREAM en mode
TCP et SOCK_DGRAM en mode UDP.
protocole : la valeur de protocole est gnralement mise
zro pour considrer le protocole par dfaut correspondant au
type spcifi.

20 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les fonctions principales (suite)

z bind ( ) permet dassocier un nom au descripteur de


socket retourn par la fonction socket ( ). Ses
arguments sont :
le descripteur s de la socket considre.
Un pointeur addr vers ladresse ou le nom assign.
La taille namelen de la structure vers laquelle pointe addr.
z Des fonctions de conversion dadresses sont utilises
pour passer d une reprsentation binaire une
reprsentation ASCII et inversement.

21 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les fonctions principales (suite)

z Listen ( ) permet dcouter des connections une


socket de la part des applications client. Ses
arguments sont :
s : le descripteur de la socket travers laquelle on veut
couter.
backlog : le nombre de connections que lapplication serveur
peut grer en file dattente avant de les traiter. La valeur de
backlog est entre 1 et 5. La valeur de cet argument permet
de prvenir la couche WinSock du nombre de ressources
quelle peut allouer.

22 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les fonctions principales (suite)

z accept ( ) permet daccepter la connection dun client


un serveur. Ses arguments sont :
s : le descripteur de la socket sur laquelle on accepte la
connection demande.
addr : est un pointeur vers la structure qui accepte ladresse
du client.
addrlen : est la taille de la structure vers laquelle pointe addr.
z La fonction accept ( ) retourne le descripteur de la socket utilise
pour communiquer avec le client car la socket dorigine doit rester
libre pour attendre dautres connections.

23 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les fonctions principales (suite)

z connect ( ) permet un client de se connecter


un serveur. Ses arguments sont :
s : le descripteur de la socket utiliser pour tablir
la connexion.
name : ladresse du serveur sur lequel le client veut
se connecter.
namelen : la longueur de name.
z Contrairement une socket serveur Winsock peut
assigner nimporte quel port un client. getsockname
( ) peut tre utilis pour connatre le port assign.

24 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Les fonctions principales (suite)

z send ( ) et recv ( ) permettent respectivement


denvoyer et de recevoir des donnes travers une
socket. Leurs arguments sont :
s : le descripteur de la socket travers laquelles les donnes
seront envoyes ou reues.
buf : le pointeur vers un buffer qui contient les donnes
transmettre ou qui est destin pour recevoir les donnes.
len : le nombre doctets du buffer.
flags : pour spcifier certaines options lors de lenvoi ou de la
rception.

25 GPA-785 Mohamed Cheriet


cole de Technologie Suprieure

Communication client / serveur en


mode UDP

serveur : socket ( ) client :

bind ( ) socket ( )

sendto ( ) / recvfrom ( ) sendto ( ) / recvfrom ( )

closesocket ( ) closesocket ( )
26 GPA-785 Mohamed Cheriet
cole de Technologie Suprieure

Les fonctions principales (suite)

z sendto ( ) et recvfrom ( ) permettent


respectivement denvoyer et de recevoir des
datagrammes. Leurs arguments sont :
s, buf, len, et flags comme dans send ( ) et recv ( ).
to ou from : est un pointeur vers ladresse internet de
la socket travers laquelle on reoit ou on envoie.
tolen ou fromlen : est la taille de ladresse de
rception ou denvoi.
z closesocket ( ) permet de librer la socket
utilise la fin de la communication.
27 GPA-785 Mohamed Cheriet

You might also like