Vous êtes sur la page 1sur 6

RES201

Les couches hautes

Introduction aux rseaux IP Couches hautes

application transport routage accs

HTTP

SMTP IP

FTP

DNS

TCP 802.3

UDP 802.11

Thomas Bonald
thomas.bonald@telecom-paristech.fr

RES201
1 T. Bonald RES201 Les couches hautes

Architecture client serveur


RFC 2616 Client HTTP Serveur HTTP Types de requte : GET, POST, PUT, DELETE, ... Types de rponse : 200, 301, 302, 400, 404, 505, ...
GET / HTTP/1.1 Host: www.telecom-paristech.fr

Exemple du courrier lectronique


SMTP POP3 SMTP SMTP SMTP HTTP IMAP Protocol SMTP POP3 IMAP Port 25 110 143 RFC 5321 1939 3501

SMTP

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

SMTP

T. Bonald

RES201

Les couches hautes

T. Bonald

RES201

Les couches hautes

Les couches hautes


Le

Deux classes de trafic


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

application transport routage accs

HTTP

SMTP IP

FTP

DNS

TCP 802.3

UDP 802.11

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

T. Bonald

RES201

Les couches hautes

RES201

Deux classes de transport


TCP

Les couches hautes

(Transmission Control Protocol) transport fiable, mode connect contrle derreur, de flux, de congestion RFC 793, 1122, 2001
application

application transport routage accs UDP transport routage accs

HTTP

SMTP IP

FTP

DNS

TCP 802.3

UDP 802.11

UDP

(User Datagram Protocol) transport non fiable, mode non connect aucun contrle ! support du multicast RFC 768
T. Bonald RES201 Les couches hautes

TCP

T. Bonald

RES201

Les couches hautes

Les ports
Identifiants

Enttes TCP et UDP


TCP
source port! length!

dapplication pour multiplexer les diffrents flux

UDP
destination port! checksum!

HTTP 60103 55226 TCP

HTTP 80 TCP

FTP 21

HTTP TCP

216 = 65536 ports


60103, 80

HTTP TCP

80, 60103 Un flot applicatif = IP source, IP destination port source, port destination protocole (TCP ou UDP)
8 T. Bonald RES201 Les couches hautes 9 T. Bonald RES201 Les couches hautes

Attribution des ports


Trois www.iana.org/assignments/port-numbers plages ports standards (0 1023) ports enregistrs (1024 49151) ports dynamiques ou privs (49152 65535) Port Exemples de ports standards : 20, 21 22 23 25 53 80 110
RES201 Les couches hautes

Les sockets
Des

prises rseau pour faciliter le dveloppement d'applications


serveur.fr connexion TCP serveur.fr sur le port 12345 coute sur le port 12345 TCP UDP

Protocol FTP SSH Telnet SMTP DNS HTTP POP3


11

TCP

UDP

58123, 12345

10

T. Bonald

T. Bonald

RES201

Les couches hautes

RES201

Programmation socket en C
Client
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); ! }

Programmation socket en java


Serveur Client
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();! }!

PORT!

PORT!

Serveur
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();! }! }!

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); ! }! }!

12

T. Bonald

RES201

Les couches hautes

13

T. Bonald

RES201

Les couches hautes

Les couches hautes

Connexion TCP
Circuit

application transport routage accs

HTTP

SMTP IP

FTP

DNS

virtuel dans le rseau phase initiale de connexion (three-way handshake) ... pour fiabiliser le transfert des donnes
SYN SYN ACK ACK

TCP 802.3

UDP 802.11

temps
14 T. Bonald RES201 Les couches hautes 15 T. Bonald RES201

temps
Les couches hautes

Algorithme stop-and-wait
Principe

Contrle fentre
Principe

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 Exemple : Dbit maximal : MTU / RTT = 240 kbit/s avec : MTU = 1500 octets RTT = 50 ms

stop-and-wait, mais pour un ensemble de paquets la taille de la fentre est annonce par la destination
1 2 3 4 5 6 7 8 9 10 11 12

Exemple : Dbit maximal : W / RTT = 10 Mbit/s avec : W = 64 ko RTT = 50 ms

16

T. Bonald

RES201

Les couches hautes

17

T. Bonald

RES201

Les couches hautes

RES201

Pertes et retransmissions
2

Donnes et acquittements
DATA GET

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

HTTP TCP

HTTP ACK DATA <html> TCP

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

18

T. Bonald

RES201

Les couches hautes

19

T. Bonald

RES201

Les couches hautes

Retour sur lentte TCP


fichier 010010001110100010100001... 0010111110101001000101...

Dtection de perte de paquets


Temporisation

estimation du dlai aller-retour, avec une marge pour viter les retransmissions inutiles...
rtt_mean = (1-a) * rtt_mean + a * rtt! rtt_dev = (1-b) * rtt_dev + b * (rtt rtt_mean)! timer = rtt_mean + 4* rtt_dev ! a = .125 b = .25

n du premier octet envoy dans ce paquet n du premier octet attendu

fentre maximale 216 ~ 64 ko

dbut / fin de connexion


20 T. Bonald RES201 Les couches hautes 21 T. Bonald RES201 Les couches hautes

Du contrle de flux au contrle de congestion


Fentre variable
Principe

lorigine TCP conu pour le contrle de flux ! fentre fixe les annes 80... premiers phnomnes de congestion introduction de la fentre variable

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! ! each LOSS! ssth=cwnd/2! cwnd=1! !

Dans

22

T. Bonald

RES201

Les couches hautes

23

T. Bonald

RES201

Les couches hautes

RES201

Exemple

Les couches hautes

congestion avoidance

application transport routage perte accs

HTTP

SMTP IP

FTP

DNS

TCP 802.3

UDP 802.11

slow-start

24

T. Bonald

RES201

Les couches hautes

25

T. Bonald

RES201

Les couches hautes

Nommage des machines


www.enst.fr Caractristiques

Domain Name System DNS


Une

organisation hirarchique gestion des Top Level Domains (TLD) par lIANA
generic com edu gov org net domaine mit machine wikipedia enst us countries jp uk fr

machine domaine

base de donnes hirarchique et distribue 3 classes de serveurs (racine, TLD, autorit) requtes itratives mise en cache UDP port 53
racine com edu gov org net us jp uk fr

deezer

mit

wikipedia

enst

google

smtp

www

www

goudurix smtp www

gestion des alias partage de charge


27 T. Bonald RES201 Les couches hautes

26

T. Bonald

RES201

Les couches hautes

Localisation des racines DNS

Format des entres DNS

Type A CNAME MX NS NS 130 sites 53 pays 13 serveurs :


A.root-servers.net B.root-servers.net ... M.root-servers.net
28 T. Bonald RES201 Les couches hautes 29 T. Bonald

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

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

+ TTL = dure de vie d'une entre dans un cache (en secondes)

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
T. Bonald RES201 Les couches hautes

30