Vous êtes sur la page 1sur 6

RES201

Les couches hautes

Introduction aux rseaux IP


Couches hautes

HTTP

application

SMTP

TCP

transport

FTP

DNS

UDP
IP

routage
802.3

accs

802.11

Thomas Bonald
thomas.bonald@telecom-paristech.fr

RES201
1

T. Bonald

Architecture client serveur


RFC 2616
Client HTTP

RES201

Les couches hautes

Exemple du courrier lectronique

Types de requte :

SMTP

GET, POST, PUT, DELETE, ...

Serveur HTTP

Types de rponse :

POP3

Protocol

Port

RFC

SMTP
POP3
IMAP

25
110
143

5321
1939
3501

200, 301, 302, 400, 404, 505, ...


SMTP

GET / HTTP/1.1
Host: www.telecom-paristech.fr

SMTP

T. Bonald

SMTP

SMTP

HTTP/1.1 200 OK
...
<html>
...
</html>

Les couches hautes

T. Bonald

Les couches hautes

RES201

HTTP

0100001

802.3

accs

T. Bonald

FTP

000...
transfert de fichiers
fichiers transfrer en entier
seule la dure totale de transfert compte
exemples : email, Web, partage de fichiers

DNS

UDP
IP

routage

SMTP

TCP

RES201

Les couches hautes

Deux classes de trafic


Le

transport

IMAP

HTTP

RES201

application

SMTP

802.11

Les couches hautes

Le transfert de donnes
en temps-rel
donnes gnrs en direct
le dlai de chaque paquet compte
exemples : tlphonie, live streaming, jeux
T. Bonald

RES201

Les couches hautes

RES201

Deux classes de transport

Les couches hautes

TCP

(Transmission Control Protocol)


transport fiable, mode connect
contrle derreur, de flux, de congestion
RFC 793, 1122, 2001
TCP

UDP

(User Datagram Protocol)


transport non fiable,
mode non connect
aucun contrle !
support du multicast
RFC 768

T. Bonald

RES201

UDP

transport

transport

routage

routage

accs

SMTP

TCP

FTP

DNS

UDP
IP

802.3

802.11

accs

Les couches hautes

T. Bonald

Les ports

RES201

Les couches hautes

Enttes TCP et UDP


TCP

Identifiants

dapplication
pour multiplexer les diffrents flux

HTTP

HTTP
80

55226

60103

HTTP

application
application

TCP

FTP
21

destination port!

length!

checksum!

216 = 65536 ports

HTTP

TCP

UDP
source port!

TCP

HTTP
TCP

60103, 80

80, 60103
Un flot applicatif = IP source, IP destination
port source, port destination
protocole (TCP ou UDP)
8

T. Bonald

RES201

Les couches hautes

T. Bonald

Attribution des ports


www.iana.org/assignments/port-numbers
plages
ports standards (0 1023)
ports enregistrs (1024 49151)
ports dynamiques ou privs (49152 65535)

10

T. Bonald

RES201

Les couches hautes

Les sockets

Trois

Exemples de
ports standards :

RES201

Port

Protocol

20, 21
22
23
25
53
80
110

FTP
SSH
Telnet
SMTP
DNS
HTTP
POP3
Les couches hautes

Des

prises rseau
pour faciliter le dveloppement d'applications
serveur.fr
connexion TCP
serveur.fr sur le port
12345

TCP

coute
sur le port
12345

UDP

TCP

UDP

58123, 12345

11

T. Bonald

RES201

Les couches hautes

RES201

Programmation socket en C
PORT!

Client

int main(void){!
...!
!
socketWelcome=socket(PF_INET,SOCK_STREAM,0);!
source.sin_family=AF_INET; !
source.sin_addr.s_addr=htonl(INADDR_ANY);!
source.sin_port=htons(PORT);!
!
bind(socketWelcome,...);!
!
listen(socketWelcome, 5);
!
!
while (1) {!
socketData = accept(socketWelcome,...);!
read(socketData,message,NCAR);!
fputs(message, stdout); !
write(socketData,message,strlen(message));!
close(socketData); !
}!
}!

T. Bonald

RES201

Serveur

public class TCPClient {!


...!
!
Socket datasock = new Socket(IPADDRESS,PORT);!
BufferedReader textin = new ...!
PrintWriter textout = new ...!
System.out.println("Connexion = " + datasock);
!
!!
System.out.print("Message = ");!
BufferedReader stdin = new ...
!
String message = stdin.readLine();!
!
!!
textout.println(message);
!
message = textin.readLine();
!
System.out.println("Echo = " + message);
!
!
!!
textin.close();!
textout.close();!
datasock.close();!
}!

13

Les couches hautes

PORT!

Client

Serveur

int main(void){!
...!
!
socketData=socket(PF_INET,SOCK_STREAM,0);!
dest.sin_family=AF_INET;!
dest.sin_addr.s_addr=inet_addr(IPADDRESS);!
dest.sin_port = htons(PORT);!
!
connect(socketData,...);!
!
!
!
printf("Message = ");!
fgets(message,NCAR,stdin); !
write(socketData,message,strlen(message));!
read(socketData,echo,NCAR);!
printf("Echo = ");!
fputs(echo, stdout); !
close(socketData); !
}

12

Programmation socket en java

Les couches hautes

T. Bonald

RES201

public class TCPServer {!


...!
!
ServerSocket welsock = new ServerSocket(PORT); !
!
while (true) {!
Socket
datasock = welsock.accept();
!
System.out.println("Connexion = " + datasock);!
!
BufferedReader intext = new ...!
PrintWriter outtext = new ...!
!
String message = intext.readLine();
!
System.out.println("Message = " + message); !
outtext.println(message); !
!
intext.close();!
outtext.close();!
datasock.close();!
}!
}!

Les couches hautes

Connexion TCP
Circuit

HTTP

application

SMTP

TCP

transport

FTP

virtuel dans le rseau


phase initiale de connexion
(three-way handshake)
... pour fiabiliser le transfert des donnes

DNS

UDP

SYN

IP

routage
802.3

accs

802.11

SYN ACK
ACK

temps

temps
14

T. Bonald

RES201

Les couches hautes

15

Algorithme stop-and-wait

Les couches hautes

Contrle fentre
stop-and-wait, mais pour un ensemble de paquets
la taille de la fentre est annonce par la destination

un paquet nest envoy que lorsque le prcdent a


t acquitt
un paquet est retransmis sil nest acquitt aprs un
certain dlai (Automatic Repeat reQuest ARQ)
DATA
ACK

T. Bonald

RES201

Principe

Principe

16

T. Bonald

RES201

Exemple :

10 11 12

Exemple :

Dbit maximal :
MTU / RTT = 240 kbit/s

Dbit maximal :
W / RTT = 10 Mbit/s

avec :
MTU = 1500 octets
RTT = 50 ms

avec :
W = 64 ko
RTT = 50 ms

Les couches hautes

17

T. Bonald

RES201

Les couches hautes

RES201

Pertes et retransmissions

Donnes et acquittements
DATA

options
acquittements slectifs,
retransmission des paquets manquants
acquittements cumulatifs, retransmission de tous
les paquets depuis le dernier manquant (Go-Back-N)
la solution adopte pour TCP

GET

HTTP

HTTP

ACK

TCP

TCP

DATA
<html>

10 11 12
ACK
Toute la signalisation TCP (SYN, ACK, etc.) utilise des paquets TCP "nus"

18

T. Bonald

RES201

Les couches hautes

19

Retour sur lentte TCP

T. Bonald

RES201

Les couches hautes

Dtection de perte de paquets

fichier

Temporisation

010010001110100010100001... 0010111110101001000101...

estimation du dlai aller-retour, avec une marge


pour viter les retransmissions inutiles...

n du premier octet envoy


dans ce paquet

rtt_mean = (1-a) * rtt_mean + a * rtt!


rtt_dev = (1-b) * rtt_dev + b * (rtt rtt_mean)!
timer = rtt_mean + 4* rtt_dev
!

n du premier octet attendu

a = .125
b = .25

fentre maximale
216 ~ 64 ko

dbut / fin de connexion


20

T. Bonald

RES201

Les couches hautes

21

Du contrle de flux
au contrle de congestion
lorigine
TCP conu pour le
contrle de flux !
fentre fixe

on part dune fentre minimale (slow-start)


on augmente rapidement et on cherche la limite
(congestion avoidance)
if (cwnd < ssth)!
each ACK cwnd+=1!
else!
each ACK cwnd+=1/cwnd!
!

les annes 80...


premiers phnomnes
de congestion
introduction de la
fentre variable

RES201

Les couches hautes

Principe

Dans

T. Bonald

RES201

Fentre variable

22

T. Bonald

Les couches hautes

each LOSS!
ssth=cwnd/2!
cwnd=1!
!

23

T. Bonald

RES201

Les couches hautes

RES201

Exemple

Les couches hautes

congestion
avoidance

HTTP

application

SMTP

TCP

transport

DNS

IP

routage
perte

FTP

UDP

802.3

accs

802.11

slow-start

24

T. Bonald

RES201

Les couches hautes

25

Nommage des machines

T. Bonald

RES201

Domain Name System DNS


www.enst.fr

Caractristiques

Une

base de donnes hirarchique et distribue


3 classes de serveurs (racine, TLD, autorit)
requtes itratives
mise en cache
UDP port 53

machine domaine

organisation hirarchique
gestion des Top Level Domains (TLD) par lIANA

racine

countries

generic
com edu gov org net

Les couches hautes

us

jp

uk

com edu gov org net

fr

us

jp

uk

fr

domaine

machine

26

smtp

T. Bonald

mit

wikipedia

www

www

RES201

enst

deezer

wikipedia

enst

google

gestion des alias


partage de charge

goudurix smtp www

Les couches hautes

mit

27

Localisation des racines DNS

T. Bonald

RES201

Les couches hautes

Format des entres DNS

Type

Nom

Valeur

A
CNAME
MX
NS
NS

vili.enst.fr
www.telecom-paristech.fr
telecom-paristech.fr
telecom-paristech.fr
telecom-paristech.fr

137.194.52.8
vili.enst.fr
smtp2.enst.fr
ns6.enst.fr
ns8-ext.enst.fr

130 sites
53 pays

+ TTL = dure de vie d'une entre


dans un cache (en secondes)

13 serveurs :
A.root-servers.net
B.root-servers.net
...
M.root-servers.net
28

T. Bonald

RES201

Les couches hautes

29

T. Bonald

RES201

Les couches hautes

RES201

En rsum...
A

retenir
l'architecture client serveur
le principe des ports
les sockets
le mode connect (TCP)
le service d'annuaire (DNS)

tester
communication directe avec un serveur
telnet www.google.fr 80!
programmation rseaux

30

T. Bonald

RES201

Les couches hautes

Vous aimerez peut-être aussi