Académique Documents
Professionnel Documents
Culture Documents
Cyril Pain-Barre
IUT Informatique Aix-en-Provence
1/67
Cyril Pain-Barre
1/90
Limitations dIP :
pas dadressage des applications (client/serveur Web, client/serveur FTP, etc.) livraison des datagrammes non garantie duplication possible des datagrammes ! d es equencement possible des datagrammes erreurs possibles sur les donn ees pas de contr ole de ux
2/67
Cyril Pain-Barre
2/90
R ole du Transport
distinguent les applications au sein dun m eme h ote garantissent lind ependance des communications
3/67
Cyril Pain-Barre
3/90
Ladresse dune application Internet est le triplet : (adresse IP, protocole de transport, num ero de port)
4/67
Cyril Pain-Barre
4/90
applications UDP/TCP
applications TCP
TFTP
...
53
DNS
...
53
FTP
SMTP
HTTP
...
69
selon Port
21
25
80
UDP
TCP
17
IP
5/67
Cyril Pain-Barre
5/90
6/67
Cyril Pain-Barre
6/90
Services dUDP
Utilise IP pour acheminer les messages dun ordinateur ` a un autre. Service rendu :
adressage des applications par num ero de port multiplexage/d emultiplexage par num eros de port contr ole facultatif de lint egrit e des donn ees
Un programme utilisant UDP doit g erer lui-m eme ces probl` emes !
7/67
Cyril Pain-Barre
7/90
En-t ete : pas doption possible, nombre xe doctets = 8 Donn ees : nombre variable doctets ( 65 535)
bits : 0 1 1 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 entte
taille variable
Donnes
8/67
Cyril Pain-Barre
8/90
Cyril Pain-Barre
9/90
10/90
M eme calcul que IP sur tout le datagramme UDP (bourrage eventuel 1 octet ` a 0) + pseudo en-t ete UDP Pseudo en-t ete UDP (interaction avec IP) : (12 octets)
bits : 0 1 1 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Cyril Pain-Barre
11/90
Cyril Pain-Barre
12/90
Le serveur re co t le message du client, ainsi que son adresse. Il peut alors traiter le message et r epondre au client. Selon le protocole, la discussion peut se poursuivre, ou sarr eter l` a.
Cyril Pain-Barre Transport UDP et TCP
13/67
13/90
14/67
Cyril Pain-Barre
14/90
y UDP Hte C
15/67
Cyril Pain-Barre
15/90
x UDP Hte A
69 UDP Hte B
y UDP Hte C
Transport UDP et TCP
16/67
Cyril Pain-Barre
16/90
Exemple Envoi par un client DHCP dun message ` a tous les serveurs DHCP du r eseau local. Ladresse destination du message DHCP est (255.255.255.255, UDP, 67)
17/67
Cyril Pain-Barre
17/90
18/67
Cyril Pain-Barre
18/90
Bien souvent les applications ont besoin d echanger de gros volumes de donn ees de mani` ere able Exemples : FTP, SMTP, HTTP, . . . Il est toujours possible dorir ce service en sappuyant sur un service non able non connect e comme IP ou UDP Pour cela, on a besoin de quelques el ements essentiels :
les accus es de r eception (ACK) des temporisateurs : alarmes qui expirent (timeout) la num erotation des paquets (ou donn ees)
19/67
Cyril Pain-Barre
19/90
Rseau
Rcepteur
Cyril Pain-Barre
20/90
Temporisateurs
Des paquets peuvent etre perdus dans le r eseau Si paquet perdu , pas dACK donc blocage Utilisation dun timer arm e lors de l emission du paquet :
si expire, renvoie le paquet si r eception ACK avant expiration, d esactivation du timer
metteur
mission paquet 1 + armement timer
Rseau
Rcepteur
envoi de lACK
21/67
Cyril Pain-Barre
21/90
Rseau
Rcepteur
envoi de lACK
mission paquet 3
Le paquet 1 est accept e deux fois par le r ecepteur ! Le deuxi` eme ACK est pris pour celui du paquet 2 ! Mais si timer trop long, on perd en ecacit e. . .
Cyril Pain-Barre Transport UDP et TCP
22/67
22/90
Rseau
Rcepteur
envoi de lACK
mission paquet 2
Cyril Pain-Barre
23/90
Rseau
Rcepteur
mission paquet 2
24/67
Cyril Pain-Barre
24/90
Rseau
Rcepteur
24/67
Cyril Pain-Barre
25/90
...
envoi autoris
envoi interdit
un temporisateur par paquet emis la r eception du ACK du premier paquet de la fen etre la fait glisser :
la fentre a gliss
1 acquitts 2 3 4 5 6 7 8 9 10 11
...
envoys
envoi autoris
envoi interdit
25/67
Cyril Pain-Barre
26/90
Rseau
Rcepteur
26/67
Cyril Pain-Barre
27/90
Si un paquet de donn ees est perdu, deux possibilit es : rejet total (ou global) rejet s electif
27/67
Cyril Pain-Barre
28/90
Rseau
Rcepteur
rejet : envoi de lACK n3 rejet : envoi de lACK n3 rejet : envoi de lACK n3 rejet : envoi de lACK n3
28/67
29/90
...
...
29/67
Cyril Pain-Barre
30/90
metteur
mission paquet 1 mission paquet 2 mission paquet 3 mission paquet 4 mission paquet 5 mission paquet 6 mission paquet 7 mission paquet 8 mission paquet 9 mission paquet 10 mission paquet 11 mission paquet 12 rmission paquet 2 mission paquet 13 mission paquet 14 mission paquet 15 mission paquet 16
Rseau
Rcepteur
gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 gard : envoi de lACK n1 rejet : envoi de lACK n1 accept : envoi de lACK n11 gard : envoi de lACK n11 gard : envoi de lACK n11
mission paquet 17
30/67
Cyril Pain-Barre
31/90
Rseau
Rcepteur
31/67
Cyril Pain-Barre
32/90
Pour une transmission bidirectionnelle : equiper les deux c ot es de fen etres d emission et de r eception pas forc ement de m eme taille de chaque c ot e! am elioration par superposition ou piggybacking : les paquets de donn ees contiennent un indicateur ACK (oui ou non le paquet contient aussi un ACK) et un champ no ACK :
...
ACK Num ACK Num Paquet Donnes
32/67
Cyril Pain-Barre
33/90
33/67
Cyril Pain-Barre
34/90
Orient e connexion : transfert de ots doctets. La suite doctets remise au destinataire est la m eme que celle emise Circuits virtuels : une fois une connexion demand ee et accept ee, les applications la voient comme un circuit d edi e Transferts tamponn es : quelle que soit la taille des blocs de donn ees emis par les applications, TCP est libre de les d ecouper ou de les regrouper Connexions non structur ees : pas de fronti` ere plac ee par TCP entre les messages emis par les applications Connexions full-duplex : les donn ees s echangent dans les deux sens mais un sens de transmission peut etre lib er e par l emetteur
34/67
Cyril Pain-Barre
35/90
Une fois la connexion etablie, le serveur et le client doivent lutiliser pour envoyer/recevoir des messages. TCP est charg e dassurer la abilit e de la connexion (notamment soccupe des acquittements/ retransmissions)
Cyril Pain-Barre Transport UDP et TCP
35/67
36/90
les ports [1024, 49151] sont enregistr es (mais peuvent etre utilis es) les ports [49152, 65535] sont dits dynamiques et/ou ` a usage priv e
Cyril Pain-Barre Transport UDP et TCP
36/67
37/90
38/90
Ports et connexions
Plus complexe quUDP car un port peut etre utilis e pour plusieurs connexions simultan ement :
un serveur peut accepter plusieurs clients ` a la fois : chaque appel daccept() retourne une nouvelle connexion utilisant le port du serveur plus rare, un client peut aussi utiliser son port pour etablir plusieurs connexions (mais pas vers la m eme adresse serveur)
En dehors des SAP douverture passive, TCP g` ere surtout des objets connexion Une connexion est identi ee par le quadruplet form e avec ladresse de ses deux extr emit es : (adresse IP locale, port local, adresse IP distante, port distant) Les connexions sont g er ees ind ependamment les unes des autres Chaque connexion dispose de ses propres tampons en emission/ r eception et de chaque c ot e
38/67
Cyril Pain-Barre
39/90
Interface TCP
TCP
Hte B (139.124.187.4)
39/67
Cyril Pain-Barre
40/90
port 80
TCP
Hte B (139.124.187.4)
39/67
Cyril Pain-Barre
41/90
Interface TCP
port 80
TCP
Hte A (32.128.54.97)
TCP
Hte B (139.124.187.4)
39/67
Cyril Pain-Barre
42/90
Interface TCP
port 80
TCP
Hte A (32.128.54.97)
TCP
Hte B (139.124.187.4)
39/67
Cyril Pain-Barre
43/90
AppliB (serveur)
socket E connexion #1 R socket
(client)
socket R
Interface TCP
port 4321
port 80
TCP
Hte A (32.128.54.97)
TCP
Hte B (139.124.187.4) Connexion #1 : (139.124.187.4, 80) et (32.128.54.97, 4321)
39/67
Cyril Pain-Barre
44/90
AppliB (serveur)
socket
Interface TCP
port 4321
port 80
TCP
Hte A (32.128.54.97)
TCP
Hte B (139.124.187.4) Connexion #1 : (139.124.187.4, 80) et (32.128.54.97, 4321)
39/67
Cyril Pain-Barre
45/90
AppliB (serveur)
socket
C1 (client)
port 4321
port 80
TCP
Hte A (32.128.54.97)
TCP
Hte B (139.124.187.4) Connexion #1 : (139.124.187.4, 80) et (32.128.54.97, 4321)
TCP
Hte C (195.10.134.12)
39/67
Cyril Pain-Barre
46/90
AppliB (serveur)
socket E socket R connexion #2 E
C1 (client)
socket R
port 4321
port 80
port 5678
TCP
Hte A (32.128.54.97)
TCP
Hte B (139.124.187.4) Connexion #1 : (139.124.187.4, 80) et (32.128.54.97, 4321) Connexion #2 : (139.124.187.4, 80) et (195.10.134.12, 5678)
TCP
Hte C (195.10.134.12)
39/67
Cyril Pain-Barre
47/90
pour TCP une connexion sert ` a transmettre des ots doctets dans les deux sens les ots sont transmis par des segments (PDU de TCP) un segment est transmis par un seul datagramme IP (sauf fragmentation pendant lacheminement) l emetteur transmet ` a TCP des blocs de donn ees de taille quelconque le r ecepteur r ecup` ere des blocs de donn ees de taille quelconque mais le nombre doctets transport es par un segment est d ecid e par TCP :
pour des raisons decacit e pour la r egulation de ux
40/67
Cyril Pain-Barre
48/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
49/90
AppliB
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
50/90
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
51/90
AppliB
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
52/90
socket E R
socket E R
socket
connexion tablie
placement dans le tampon dmission
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
53/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
54/90
socket E R
socket E R
socket
connexion tablie
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
55/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
entte IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
56/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
traverse du rseau (fragmentation possible)
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
57/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
traverse du rseau (fragmentation possible)
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
58/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
59/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
60/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
61/90
socket E R
socket E R
socket
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
62/90
AppliB
connexion tablie
port 4321
port 80
TCP
TCP
IP
IP
Hte A (32.128.54.97)
Hte B (139.124.187.4)
41/67
Cyril Pain-Barre
63/90
...
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
...
Chaque c ot e de la connexion poss` ede une fen etre d emission et une fen etre de r eception Les acquittements peuvent transiter avec les donn ees (superposition)
42/67
Cyril Pain-Barre
64/90
diminution : lors du glissement, B diminue sa fen etre (sans exclure les octets qui y etaient d ej` a)
65/90
entte
Checksum
taille variable
taille variable
Donnes
44/67
Cyril Pain-Barre
66/90
entte
Checksum U R G
taille variable
6 bits
taille variable
Donnes
44/67
Cyril Pain-Barre
67/90
entte
Fentre
taille variable
octet de donnes
Options TCP (ventuelles)
Bourrage premier octet
taille variable
Donnes
45/67
Cyril Pain-Barre
68/90
entte
Port TCP Destination multiplier par 4 pour Numro de Squence longueur de lentte ( cause des options) Numro dAccus de Rception
Flags
LET
Rserv
Checksum
taille variable
taille variable
Donnes
46/67
Cyril Pain-Barre
69/90
entte
Checksum
taille variable
taille variable
47/67
Cyril Pain-Barre
70/90
M eme calcul que IP/UDP (bourrage eventuel 1 octet ` a 0) + pseudo en-t ete TCP Pseudo en-t ete TCP (interaction avec IP) : (12 octets)
bits : 0 1 1 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Cyril Pain-Barre
71/90
Type (2)
Chaque c ot e indique la taille max des donn ees des segments quil veut recevoir, appel ee MSS (Maximum Segment Size) :
souvent MTU - 40 (en-t etes IP et TCP sans option) d ependant de la taille des buers de reception par d efaut 536 (576 octets pour le datagramme IP)
Lid eal est le plus grand tel quaucun datagramme nest fragment e
49/67
Cyril Pain-Barre
72/90
Pointeur Urgent
50/67
Cyril Pain-Barre
73/90
Remise forc ee
Application emettrice demande de ne pas retarder l emission des donn ees, plut ot que de tamponner Particuli` erement utile dans le cas dun terminal virtuel : apr` es le retour ` a la ligne, il faut envoyer, voire m eme pour chaque caract` ere tap e ou d eplacement de souris (X-Window) TCP emetteur place le bit PSH ` a1:
flags (6 bits) U R G A C K P S H R S T S Y N F I N
Le TCP r ecepteur doit remettre les donn ees au plus vite (ne pas tamponner dans sa m emoire)
51/67
Cyril Pain-Barre
74/90
Acquittements et Retransmissions
Le bit ACK ` a 1 indique que le champ Num ero dAccus e de R eception doit etre utilis e
flags (6 bits) 32 bits U R G A C K P S H R S T S Y N F I N
Un segment non acquitt e est retransmis apr` es timeout Un segment retransmis peut contenir plus de donn ees que le pr ec edent Num ero ACK nacquitte pas le segment : indique le num ero du prochain octet attendu LACK est cumulatif : a des avantages et des inconv enients Rejet global ou s electif (le plus courant) En pratique l emetteur ne renvoie que le premier segment non acquitt e
52/67
Cyril Pain-Barre
75/90
Rception SYN mission SYN sq=y, ACK x+1 Rception SYN, ACK mission ACK y+1 (connexion tablie) Rception ACK (connexion tablie)
Permet dignorer des demandes retard ees R esoud aussi les connexions simultan ees des deux c ot es Num ero de S equence choisi (presque) al eatoirement dans chaque sens
53/67
Cyril Pain-Barre
76/90
Connexion lib er ee lorsque chaque c ot e a indiqu e quil navait plus de donn ees ` a emettre :
metteur mission FIN sq=x Rception FIN mission ACK x+1 Rception ACK plus de donnes vers rcepteur des donnes peuvent tre transmises mission FIN sq=y, ACK x+1 Rseau Rcepteur
Rception FIN mission ACK y+1 Armement timer Rception ACK Armement timer
` la n, un temporisateur est utilis A e pour laisser le temps aux segments retard es darriver ou d etre d etruits Puis les donn ees relatives ` a la connexion sont d etruites
Cyril Pain-Barre Transport UDP et TCP
54/67
77/90
Signie quil a y eu un probl` eme grave Connexion lib er ee imm ediatement Donn ees non trait ees/segments retard es sont perdus Applications sont inform ees Utilis e aussi pour refuser une demande de connexion
55/67
Cyril Pain-Barre
78/90
Temporisation et retransmission
Un segment (donn ees) non acquitt e doit etre retransmis Probl` emes importants sur Internet :
comment calculer/estimer le RTT (Round Trip Time) ? quelle dur ee du temporisateur ?
56/67
Cyril Pain-Barre
79/90
Cyril Pain-Barre
80/90
Cyril Pain-Barre
81/90
Probl` eme : si un segment est retransmis et un ACK re cu, doit-il etre pris pour le premier ou le dernier segment ? Selon le choix, le calcul de RTT et de T peut etre grandement fauss e! Algorithme de Karn (radio amateur) :
Ne pas mesurer M pour un segment retransmis Mais augmenter T , selon la formule : T =T o` u g en eralement vaut 2.
59/67
Cyril Pain-Barre
82/90
Il reste des situations impossibles ` a pr evoir mais la r eaction est g en eralement tr` es bonne.
60/67
Cyril Pain-Barre
83/90
Soit une application qui ne lit les donn ees quoctet par octet L emetteur envoie susamment doctets pour remplir le tampon de r eception Le TCP r ecepteur envoie une taille de fen etre nulle Lorsque lapplication lit un octet, TCP enverra une taille de fen etre de 1 L emetteur peut alors envoyer 1 octet ! Puis taille de fen etre 0 etc. Cest pas mieux si cest l emetteur qui envoie de lui-m eme des petits segments !
61/67
Cyril Pain-Barre
84/90
ceci m eme en cas de PUSH ! Il est parfois n ecessaire de d esactiver lalgo de Nagle, notamment pour X-Window (il faut envoyer les mouvements de la souris de suite et non les tamponner. . . ).
Cyril Pain-Barre Transport UDP et TCP
62/67
85/90
TCP et la congestion
La congestion produit des retards importants et des pertes de datagrammes Retransmettre des segments retard es/d etruits aggrave la congestion jusqu` a leondrement congestif TCP en tient compte et cherche ` a eviter la congestion et r eagit en cas de congestion :
d emarrage lent diminution dichotomique
N ecessite la gestion dune fen etre de congestion Fen etre utilis ee = min(Fen etre r ecepteur, Fen etre congestion)
63/67
Cyril Pain-Barre
86/90
Au d ebut de la connexion ou suite ` a une congestion, eectuer un d emarrage lent avec fen etre congestion = 1 segment D emarrage lent : pour chaque segment acquitt e, augmenter de 1 segment la fen etre de congestion lent mais croissance exponentielle !
64/67
Cyril Pain-Barre
87/90
TCP estime que la perte dun segment est due ` a la congestion Si segment perdu, xer un seuil ` a la moiti e de la fen etre de congestion (taille mini = 1 segment) Augmenter la temporisation (algo de Karn) Recommencer un d emarrage lent jusqu` a atteindre le seuil phase d evitement de congestion : ` a partir du seuil, naugmenter que de 1 segment pour lensemble des segments acquitt es (croissance lin eaire)
65/67
Cyril Pain-Barre
88/90
9 8 7 6 5 4 3 2 1
T et tim
er
10
er
jour RT
tim
et
TT
mise
j ou
mi se
is e
jo ur R
rR
TT
et
tim
er
temps
dmarrage lent
vitement congestion
dmarrage lent
vitement congestion
66/67
Cyril Pain-Barre
89/90
Dbut
Ferm
Ouverture passive
action :
ACK, SYN, etc. : envoi segment - : rien tempo : temporisation de 2 fois la dur ee de vie dun segment
Fermer / FIN
Attente FIN / ACK Fermer Fermer / FIN Dernier ACK ACK / tempo
90/90