Faculté des sciences de Monastir LFI 3
Département des sciences informatiques 2017 - 2018
Couche Transport
TCP/UDP
LFI 3 1 Couche Transport
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrle de flux
– Gestion de la connexion
LFI 3 Couche Transport 2
Ouvrages de références
• Analyse Structurée des Réseaux, J. Kurose & K.
Ross, Pearson Education, 2002
• Réseaux, A. Tanenbaum, D. Wetherall,
Nouveaux Horizons, 5e édition, 2014
LFI 3 Couche Transport 3
Objectifs du cours
Nos objectifs:
• Comprendre les principes derrière les services de la
couche transport:
– Multiplexage/démultiplexage
– Transfert de donnée fiable
– Contrôle de flux
– Contrôle de congestion
• Apprendreles protocoles de la couche transport
d'internet:
– UDP: transport sans connexion
– TCP: transport orienté connexion
– Contrôle de congestion de TCP
LFI 3 Couche Transport 4
Le modèle OSI
Problématique ?
Réseau: Service de remise de paquets de machine à
machine
Comment faire passer ce service à un canal de
communication de processus à processus ?
LFI 3 Couche Transport 5
Services et protocoles transport
Le rôle de la couche transport peut être défini assez formellement
sous forme des quatre propriétés suivantes :
application
1. Transport de bout en bout transport
réseau
liaison réseau
Le service de transport permet la physique
réseau
liaison
physique
communication de deux utilisateurs liaison
physique
situés dans différents systèmes réseau
liaison
o émetteur: divise le message en physique réseau
liaison
segments, les passe à la couche physique
réseau
o récepteur: reforme le message à réseau
liaison
partir des segments obtenus de la physique
couche réseau application
transport
réseau
liaison
fournit une communication logique entre physique
les processus applicatifs exécutés sur des
sites différents
LFI 3 Couche Transport 6
Services et protocoles transport
2. Sélection d'une qualité de service
Le protocole de transport doit optimiser les ressources réseaux disponibles
pour atteindre la qualité de service souhaitée et ceci au moindre coût.
La notion de qualité de service est définie par la valeur de certains paramètres:
• délai d’établissement d'une connexion de transport
• probabilité d'échec de l'établissement d'une connexion
• débit des informations sur une connexion de transport
• taux d'erreur résiduel…
3. Transparence
Les informations sont échangées sur une connexion de transport
indépendamment de leur format, codage ou signification.
4. Adressage
Réaliser une correspondance entre l'adresse de transport d'un utilisateur
donné et l'adresse de réseau correspondante pour pouvoir initialiser la
communication.
LFI 3 Couche Transport 7
Transport vs. réseau
Couche réseau: analogie:
communication logique 5 enfants envoient des lettres à 5
entre sites autres enfants
Couche transport : • processus = enfants
communication logique • messages appli= lettres dans les
enveloppes
entre processus
• sites = maisons
– Construit sur les services de
• protocole transport= Ann et
la couche réseau
Bill
– Enrichit le service de la
• Protocole réseau = le service
couche réseau
postal
LFI 3 Couche Transport 8
Protocoles Transport Internet
Mode connecté : TCP (Transport Control Protocol)
o Phase de connexion / de transfert des données / déconnexion
o Contrôle de flux
o Contrôle des erreurs + acquittements + retransmission
o Garantie du séquencement
o Segmentation des messages
o Usage : Applications critiques
Mode non connecté : UDP (User Datagram Protocol)
o Overhead réduit par rapport à TCP (8 octets / 20 octets)
o Envoi direct des informations
o Support du multi-points
o Pas de garantie de séquencement
o Contrôle des erreurs
o Usage : Applications multimédias
LFI 3 Couche Transport 9
Protocoles Transport Internet
• Fiable, délivrance dans
application
l’ordre (TCP) transport
réseau
liaison
– Contrôle de congestion physique
réseau
liaison
réseau physique
– Contrôle de flux liaison
physique
– Connexion réseau
liaison
• Non fiable, dans le désordre: physique réseau
liaison
physique
UDP
– extension du protocole “best- réseau
liaison
effort” IP physique
application
• Services non disponibles: transport
réseau
– garantie des délais liaison
physique
– garantie largeur de bande
LFI 3 Couche Transport 10
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 11
Multiplexage/démultiplexage
Multiplexage
Demultiplexage sur le site rcpt : sur le site emetteur:
Assembler les données de
livre les segments reçus
plusieurs sockets, ajouter
à la bonne socket
un entête (utilisé ensuite
pour le demultiplexage),
= socket = process
P3 P1
P1 P2 P4 application
application application
transport transport transport
réseau réseau réseau
liaison liaison liaison
physique physique physique
site 2 site 3
site 1
LFI 3 Couche Transport 12
Principe du démultiplexage
• Le site reçoit des datagrammes
32 bits
– chaque datagramme a l’adresse IP
de l’émetteur et du destinataire source port # dest port #
– chaque datagramme (couche réseau)
contient un segment (couche Autres champs d’entête
transport)
– chaque segment a le numéro de port
de l’émetteur et du destinataire
(les numéros de port sont Données application
spécifiques à chaque applications)
(message)
• Les sites utilisent les adresses IP et les
numéros de port pour diriger les
segments vers la socket appropriée
Format segmentTCP/UDP
LFI 3 Couche Transport 13
Démultiplexage sans connexion
• Quand un site reçoit un
• Crée des sockets avec des segment UDP:
numéros de port: – contrôle le numéro de port du
DatagramSocket mySocket1 = new dest dans le segment
DatagramSocket(99111); – Dirige le segment UDP vers la
• Socket UDP identifiée par un socket attachée à ce numéro de
port
couple:
• Les datagrammes IP avec
(adresse IP dest, numéro port dest)
des adresses IP et/ou des
numéros de port d’émetteurs
différents sont dirigés vers la
même socket
LFI 3 Couche Transport 14
Mode sans connexion
DatagramSocket serverSocket = new DatagramSocket(6428);
P3 P1
P1
P2
PS: 6428 PS: 6428
PD: 9157 PD: 5775
PS: 9157 PS: 5775
client PD: 6428 PD: 6428 Client
serveur
IP: A IP: C IP:B
PS fournit “l’adresse de retour”
LFI 3 Couche Transport 15
Démultiplexage orienté connexion
• Socket TCP identifiée par • Un site serveur peut avoir
un 4-uplet: plusieurs sockets TCP
– Adresse IP source simultanément:
– #port source – Chaque socket est identifiée
– Adresse IP destination par son propre 4-uplet
– #port destination • Les serveurs WEB ont des
• Le site récepteur utilise tous sockets différentes pour
ces champs pour diriger le chaque client connecté
segment vers la socket
appropriée
LFI 3 Couche Transport 16
Démultiplexage orienté connexion
P3 P2 P4 P1
P1
PS: 80 PS: 80
PD: 9157 PD: 5775
PS: 9157 PS: 5775
client PD: 80 PD: 80 Client
serveur
IP: A IP: C IP:B
LFI 3 Couche Transport 17
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 18
UDP: User Data Protocol [RFC 768]
• Protocole de transport simple,
sans valeur ajoutée pourquoi UDP?
• Service “best effort”, les • Pas d’établissement de
segments UDP peuvent être: connexion (qui ajoute des
– Perdus délais)
– Livrés dans le désordre aux • Simple: sans état connexion à la
applications source et au receveur
• Sans connexion: • Entête de segment petit
– Pas de “poignée de main” • Pas de contrôle de congestion:
entre émetteur et récepteur UDP peut circuler aussi vite que
– Chaque segment UDP est possible
traité indépendamment des
autres
LFI 3 Couche Transport 19
Entête UDP
• Utilisé pour les flux d’applications 32 bits
multimédia
port source # port dest #
– Tolérantes aux pertes
longueur Somme ctrl
– Sensibles à la vitesse
• Autres usages
– DNS
• Transfert fiable sur UDP: la Données application
fiabilité est ajoutée par la couche (message)
applicative
– Correction d’erreur spécifique à
l’application
Format de segment UDP
LFI 3 Couche Transport 20
Somme de contrôle UDP
But: détecter les “erreurs” (ex: bits inversés) dans le segment
transmis
Emetteur Récepteur:
• Traite le segment comme une • Calcule la somme de contrôle du
séquence d’entiers 16-bit segment reçu
• Somme de contrôle: addition • Contrôle si la somme calculée
du contenu du segment correspond au champ ad hoc du
• L’émetteur met la somme de segment reçu:
contrôle dans le champ ad hoc – NON - erreur détectée
du segment UDP – OUI – pas d’erreur détectée
Mais peut être présente ….
LFI 3 Couche Transport 21
Somme de contrôle UDP
• Le champ checksum est • Calcule le checksum du
initialement mis à 0 segment reçu
• La suite à protéger est • Vérifie si le checksum
considérée comme une calculé est 11 11...
suite de mots de 16 bits – NON - erreur détectée. Le
• Calcul du Checksum segment est abandonné
– OUI - pas d’erreur détectée
• Addition des mots de 16
bits (modulo 65 535) puis • Cas particulier: Le checksum
dans le segment reçu est à 0
• Complément à 1 (inverse bit = il n’a pas été calculé
à bit) du résultat de
l’addition
• Insertion du checksum dans
l’entête
LFI 3 Couche Transport 22
Calcul de la somme de contrôle
Au niveau de l’émetteur Au niveau du destinateur
0110011001100110 0110011001100110
+ 0101010101010101 +0101010101010101
+ 0000111100001111 +0000111100001111
= 1100101011001010 =1100101011001010
0011010100110101 +0011010100110101
(complément à 1)
=1111111111111111
(ok)
=1111111101111111
(Erreur)
LFI 3 Couche Transport 23
Fragmentation
• En théorie: les segments UDP peuvent être
fragmentés par IP
• En pratique: la plupart des applications
utilisant UDP limitent leurs segments à 512
octets
– Pas de fragmentation
– Pas de risque de message incomplet
LFI 3 Couche Transport 24
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert fiable
de données
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 25
Principes du transfert fiable
• important dans les couches applications, transport, liaison
• un des sujets importants pour les réseaux
• Les caractéristiques du canal non fiable déterminent la
complexité du protocole de transfert fiable
LFI 3 Couche Transport 26
Principe du transfert fiable des données
• Si le canal peut inverser les bits: somme de contrôle pour
détecter les erreurs
• Correction des erreurs:
– Accusé de réception (ACKs): le receveur dit
explicitement que le paquet reçu est OK
– Accusé de réception négatif (NAKs): le receveur dit
explicitement qu’il y a une erreur dans le paquet reçu
– L’émetteur retransmet le paquet si nécessaire-
LFI 3 Couche Transport 27
Et si les ACK/NACK sont corrompus?
• L’émetteur n’a plus de retour du Traiter les dupliquas:
récepteur • L’émetteur ajoute un numéro de
• S’il retransmet: duplication séquence à chaque paquet
possible • L’émetteur retransmet le paquet
courant si ACK/NAK corrompu
Que faire? • Le récepteur ignore (ne livre
pas) les paquets reçus en double
• L’émetteur ACK/NAK les
ACK/NAK du récepteur? Et si ces
ACK/NAK sont perdus?
• Retransmettre, même si le paquet stop & wait
a été reçu sans erreur? L’émetteur envoi un paquet
et attend la réponse du
récepteur
LFI 3 Couche Transport 28
Gestion des pertes
• Timeout l’émetteur attend un temps “raisonnable”
l’ACK/NACK
• Retransmission si l’ACK n’est pas reçu à temps
• Si paquet (ou ACK) simplement retardé (et pas perdu):
– La retransmission créera un dupliqua, l’usage du
numéro de séquence évite la livraison multiple
– Le receveur doit indiquer le numéro de séquence du
paquet pour lequel il envoie ACK
• Nécessite l’évaluation du temps
LFI 3 Couche Transport 29
Stop-and-wait
émetteur receveur
Premier bit du paquet transmis
t=0, t = L / R
premier bit du paquet
arrivé
RTT Dernier bit du paquet arrivé,
envoie de ACK
ACK arrive, envoie du
paquet suivant, t = RTT + L
/R
U L/R .008
émetteur= = 30.008 = 0.00027
RTT + L / R microsec
onds
LFI 3 Couche Transport 30
Protocoles en pipeline (avec anticipation)
Pipelining: l’émetteur envoie “avec anticipation” plusieurs
paquets, çà acquitter par le récepteur
– La plage des numéros de séquence doit être étendue
– Tampons chez l’émetteur et/ou le récepteur
• Deux types de protocoles en pipeline: go-Back-N, selective
repeat
LFI 3 Couche Transport 31
Envoie en pipeline des segments
expéditeur expéditeur
premier bit du paquet transmis, t = 0
dernier bit transmis, t = L / R
Premier bit du paquet arrive
RTT Dernier bit du paquet arrive, envoie de l' ACK
Dernier bit du 2nd paquet arrive, ACK envoyé
dernier bit du 3e paquet arrive, ACK envoyé
ACK arrive, envoie du prochain
paquet, t = RTT + L / R
LFI 3 Couche Transport 32
Go-Back-N (fenêtre glissante)
Emetteur
• “fenêtre” jusqu’a N paquets consécutifs non acquittés,
ACK(n): ACKs acquiite tous les paquets jusqu’à n “ACK
cumulatif”
timeout(n): retransmet le paquet n et tous les paquets envoyés
ayant un numéro de séquence supérieur à n
LFI 3 Couche Transport 33
Go-Back-N en action
LFI 3 Couche Transport 34
Répétition sélective
• Le destinataire accuse réception individuellement tous
les paquets reçus correctement
– Paquets dans le tampon, au besoin, au final pourra être
délivré en-séquence à la couche supérieure
• L'expéditeur ré-envoie seulement les paquets avec un
ACK non reçu
– expéditeur lance un timer pour chaque paquet non acquité
• Fenêtre de l'expéditeur
– Numéro de seq. consécutifs
– Limite encore les numéro de seq. des paquets envoyés
mais non acquités
LFI 3 Couche Transport 35
Répétition sélective: fenêtre chez l’émetteur
et le récepteur
LFI 3 Couche Transport 36
Répétition sélective en action
LFI 3 Couche Transport 37
Répétition sélective en action
• Exemple:
• seq #’s: 0, 1, 2, 3
• Taille de la fenêtre=3
• Le destinataire ne voit
aucune différence entre
les deux scénarios!
• Des données dupliquées
passent pour nouvelles
dans (a)
• Q: Quel relation y a-t-il
entre seq # size et la taille
de la fenêtre?
LFI 3 Couche Transport 38
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 39
TCP: Résumé RFCs: 793, 1122, 1323, 2018, 2581
• Point à point: • Bi-directionnel:
– Un émetteur, un receveur – Flux bi-directionnel dans la même
• Transfert fiable des données connexion
– Contrôle de perte – MSS: (maximum segment size)
– Contrôle de flux taille maximum d’un segment
– Contrôle de congestion: pour les données applicatives
interaction hôte-réseau réactive et • Orienté connexion:
agressive – Poignée de main (échange de
• En pipeline: message de contrôle), initialise
– Largeur de la fenêtre d’émission états émetteur et récepteur avant
l’échange des données
affectée par les contrôles de flux et
de congestion • Orienté flux d’octets:
• Tampons: émetteur et récepteur – application écrit des octets
application application
– TCP émet des segments
Données à envoyer Données à lire – application lit des octets
socket socket
TCP
tampon émetteur
TCP
tampon récepteur
• Récepteur le plus simple possible
segment complexité chez l’émetteur
– interopérabilité maximum
recherchée
LFI 3 Couche Transport 40
TCP structure d’un segment
32 bits
URG: donnée urgente Compté en octes
(non utilisé en général)
N° port source N° port dest
de données
N° de séquence (Pas en segment)
ACK: n°ACK valide
N°séquence d’acquittement
PSH: délivrance taillenon
en tête
utilisé
UA P R S F Fenêtre de rcpt
immédiate
Somme ctrl Ptr donnée urgente # octets que le
(non utilisé en général)
rcvr peut
RST, SYN, FIN: Options (longueur variable) accepter
Établissement de
la connexion
(commandes) Données de l’application
Somme de contrôle (longueur <MSS)
Internet
(comme dans UDP)
LFI 3 Couche Transport 41
Champs de l’entête TCP
• source port : identifie le • Fiabilité
processus source sur la machine – sequence n° : N° du 1er octet de
source données du segment (sauf si SYN=1 :
ISN)
• destination port : identifie le – acknowledgment n° : acquitte tous les
processus destinataire sur la octets de données de N° strictement
machine destinataire inférieur
• Contrôle de flux
• checksum : obligatoire, calculé
– rcvWindow : # d'octets de données
sur la totalité du segment et sur que le destinataire du segment est
le pseudo en-tête prêt à recevoir
• data offset : lg de l'en-tête en • Flags
mots de 32 bits – RST, SYN et FIN : pour l’établissement
et la fermeture de connexion
• unsused : 6 bits à 0 – ACK : 1 si le champ acknowledment
• options : MSS, … number est significatif
• padding : alignement de l'en- tête – PSH : 1 si fin d'un msg logique (push)
sur 32 bits – URG : 1 si données urgentes
• urgent pointer : pointe sur la fin (comprise)
des données urgentes
LFI 3 Couche Transport 42
Caractéristiques de TCP
• Numéros de séquence indépendants dans les 2 directions
– Initial Sequence Number (ISN) valeurs aléatoires pour les origines
des N° de séquences
– Associés à chaque octets
• Indique le numéro du premier octet transmis
– Mots de 32 bits
• Bouclage théorique en moins de 6 minutes à 100 Mbps mais en pratique,
c’est beaucoup plus long !
– Utilisé pour les acquittements
• Si N octets sont délivrés avec le numéro de séquence X, l’acquittement
aura la valeur X+N (soit le numéro du prochain octet à recevoir)
– Piggybacking
• Les deux numéros sont présents dans les mêmes paquets
LFI 3 Couche Transport 43
Caractéristiques de TCP
• Fiabilité
– Numéro de séquence
– Détection des pertes :
• Aquittements positifs (ACK) du récepteur -> OK
• Pas d’ACK -> timeout (temporisation) -> retransmission
• ACK dupliqué
– Réordonnancement des paquets au récepteur
– Elimination des paquets dupliqués
– Checksum
– Retransmissions :
• Selective repeat
• GobackN
• Contrôle de flux par annonce de fenêtres
– Fenêtre modulée par le récepteur
– Inclus dans l’ACK
• Fenêtre qui indique le plus grand numéro de séquence pouvant être reçu
• Erreur = congestion
• Contrôle de congestion : adaptation à l’état d’occupation du réseau
– Sans signalisation réseau
• Orienté connexion
LFI 3 Couche Transport 44
Caractéristiques de TCP
Multiplexage
– Pour permettre à plusieurs tâches d'une même machine de
communiquer simultanément via TCP, le protocole définit un
ensemble d'adresses et de ports pour la machine.
– Une "socket" est défini par l'association des adresses Internet
source, destinataire, ainsi que les deux numéros de port à
chaque extrémité. Une connexion nécessite la mise en place de
deux sockets. Une socket peut être utilisée par plusieurs
connexions distinctes.
– L'affectation des ports aux processus est établie par chaque
ordinateur.
LFI 3 Couche Transport 45
Segments
• Les octets de données Application
sont accumulés jusqu’au
moment où TCP décide
d’envoyer un segment Buffer d’émission
• Découpage en segment
indépendant du TCP
TCP
découpage au niveau header
application
• MSS = longueur
maximale d’un segment IP
header IP
LFI 3 Couche Transport 46
Sockets
• Deux process communiquent par des sockets TCP qui fournissent aux
process un flux de données full duplex.
• Ports éphémères
• Port = TCP TSAP = numéro sur 16 bits
– Valeur locale
– 0 à 255 : well-known
– 0 à 1023 : ports système
– 1024 à 65536 : ports utilisateurs
• Une socket TCP :
– Triplet <TCP, IP address, port number>.
• Une connexion TCP :
– 2 sockets <TCP, local IP address, local port, remote IP address, remote
port>.
LFI 3 Couche Transport 47
BSD Sockets
• Primitives pour TCP utilisées par les UNIX BSD
– SOCKET (création d’un nouveau point terminal)
– BIND (attache une adresse à la socket)
– LISTEN (acceptation des connexions avec file d’attente)
– ACCEPT (acceptation bloquante)
– CONNECT (établissement actif de connexion)
– SEND (envoi de données sur une connexion)
– RECEIVE (réception de données d’une connexion)
– CLOSE (terminaison d’une connexion)
• Serveur : SOCKET -> BIND -> LISTEN -> ACCEPT … [SEND,
RECEIVE]… -> CLOSE
• Client : SOCKET –> BIND -> CONNECT … [SEND, RECEIVE]…->
CLOSE
LFI 3 Couche Transport 48
Communication entre applications
process 1 Données process 2 connexion
TCP header
port:x Données
port x port y
socket
connexion TCP fiable
TCP TCP
IP IP Adresse IP
Hôte 2
Hôte 1 paquets IP non fiable
LFI 3 Couche Transport 49
Problèmes pour TCP
• Connexion avec des hôtes différents
– Établissement et libération de connexion
• RTT variable
– adaptation de la temporisation
• Survivance de paquets (très long délai de transfert)
– Attention aux arrivées de très vieux paquets
• Capacité de stockage dynamique des extrémités
– “Apprendre” les ressources disponibles
• Capacité de la route varie dans le réseau
– Ajuster le débit d’émission à la bande passante
LFI 3 Couche Transport 50
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 51
Transfert fiable des données TCP
• TCP crée un service • Les retransmissions sont
transfert de données déclanchés par:
fiables (rdt) au dessus du – timeout
service non fiable d'IP – ACKs dupliqués
• Les segments sont • On considère un
pipelinés expéditeur TCP simplifié:
• ACKs cumulatif – ignore ACKs dupliqués
• TCP utilise une minuterie – ignore contrôle de flux et
contrôle de congestion
(timer) pour détecter les
pertes
LFI 3 Couche Transport 52
Num. de seq. et ACKs TCP
Numéro de séquence:
– Fil de “numéro” d'octets du
premier octet dans les données
du segment
ACKs:
– Num. de seq. du prochain octet
attendu
– ACK cumulatif (quitte tous octets
de numéros de seq inférieurs)
• Qustion.: Comment le
destinataire gère les segments
hors-séquence?
– Reponse: TCP ne le spécifie pas –
c'est à la discrétion du
développeur
LFI 3 Couche Transport 53
Transfert de données
• Segmentation
– Découpage du flux en segments selon la MTU locale
– Numérotation des octets
– Gel du numéro de séquence pendant MSL (Maximum Segment Lifetime)
• Contrôle de perte (fiabilité)
– Acquittement positif
– Protection par temporisateur de retransmission chez l'émetteur uniquement
• Contrôle de flux (optimisation des ressources disponibles)
– fenêtres à taille variable
– Progression par acquittement et crédit : fenêtres glissantes
Data (Sequence Number)
Sender Receiver
Acknowledgement +
Advertised Window
LFI 3 Couche Transport 54
Fiabilité : stop and wait
• Envoi d’un paquet et attendre un acquittement avant d’envoyer
un nouveau paquet.
• Si timeout, alors retransmission
• Fiabilité vs. utilisation de la bande passante
émetteur récepteur
Envoi du Données
paquet 1 Réception paquet 1
Envoi ACK 1
ACK
Réception
ACK
Envoi paquet 2 Données
LFI 3 Couche Transport 55
Fenêtre d’émission
• F=min (cwnd, RcvWnd)
– Cwnd est une variable maintenue par la source
• Tient compte de la congestion du réseau
– RcvWnd : fixé par la destination, champ fenêtre
annoncé
• Tient compte de la capacité du récepteur
LFI 3 Couche Transport 56
Fenêtres
• But : optimiser les ressources
– Contrôle de flux et contrôle de congestion
• L’émetteur peut envoyer N segments dans une fenêtre de taille n sans recevoir
d’ACK.
• L’émetteur fait glisser la fenêtre sur réception d’un ACK.
• Fenêtre effective = Fenêtre annoncée - (octets transmis - octets non acquittés)
• Arrêt de la transmission quand fenêtre effective=0
émetteur récepteur
DATA 1
DATA 2
DATA 3
DATA 4 1 2 3 4 5 6 7 8 9
DATA 5
ACK2
fenêtre
DATA 6 glissante
LFI 3 Couche Transport 57
Evènement du côté expéditeur TCP
Données reçues par l'app: timeout:
• Créer un segment avec un N° • Retransmettre le segment qui
de seq a causé le timeout
• Le N° de seq est le numéro de • Redémarrer la minuterie
séquence d'un fil d'octets du ACK reçus:
premier octet de donnée du • S'il acquite des segments
segment précédement non acquité
• Lancement de la minuterie – Mettre à jour ce que l'on sait
(timer) si elle n'est pas déjà en être acquité
train de tourner (penser à la – Démarrer le minuteur s'il reste
minuterie pour le plus ancien des segments en suspens
segment non acquité)
• intervalle d'expiration:
TimeOut
LFI 3 Couche Transport 58
TCP: scenarios de retransmission
Host A Host B Host A Host B
Seq=92 timeout
Seq=100 timeout
timeout
X
loss
time time premature timeout,
lost ACK scenario
cumulative ACKs
LFI 3 Couche Transport 59
TCP : Emission d'un ACK [RFC 1122, RFC 2581]
Evènement chez Dest. Action TCP chez le Dest.
Arrive d'un segment dans l'ordre avec un N° Génération retardée de l'ACK: attendre jusqu'a
de séquence attendu. Toutes les données 500ms pour envoyer l'ACK. Si aucun segment
jusqu'à ce N° de séquence ont été Acquitées. n'arrive durant ces 500ms alors envoyer l' ACK.
Arrivé d'un seqment dans l'ordre avec le Envoyer immédiatement d'un ACK cumulatif.
N° de seq attendu. Un autre segment a Accuse réception des deux segments arrivés
un ACK non encore envoyé. dans l'ordre (celui dont l'envoie de l'ACK est
retardé + celui qui vient d'arriver).
Arrivé d'un segment dans le désordre. D'un Envoyer immédiatement un ACK dupliqué indiquant
plus haut N° de seq que celui attendu. Un le numéro de seq. du prochain octet attendu
écart est détecté.
Arrivé d'un segment qui comble Envoyer immédiatemment un ACK, si le segment
partiellement l'écart. augmente la valeur de base window de l'expéditeur
LFI 3 Couche Transport 60
Retransmission rapide
• Hors-délai période souvent • Si l'expéditeur reçoit 3 ACKs
relativement longue: pour la même donnée, cela
– Un délai long avant le renvoie suppose que le segment
d'un paquet perdu après une donnée aquittée
• Segments perdu détectés a été perdue:
par réception d'ACKs – retransmettre: réenvoyer un
dupliqués. segment avant que le timeout
ne se produise.
– L'expéditeur envoie souvent
beaucoup de segment
successivement.
– Si un segment est perdu, il y
aura probablement beaucoup
d'ACKs dupliqués.
LFI 3 Couche Transport 61
Calcul du timeout
• Q: Comment fixer la valeur • Q: Comment estimer le RTT?
du timeout TCP ? • SampleRTT: mesure le temps
• Plus grand que le RTT à partir de la transmission
– mais le RTT varie... d'un segment transmission
• Trop court: timeout jusqu'à la réception d'un ACK
prématuré – Ignorer la retransmission
– Retransmissions inutiles • SampleRTT variera, on veut
• Trop long: lente réaction à estimer un RTT plus lisse
une perte de paquet – Moyenne pondérée sur
plusieurs mesures récentes,
pas juste un SampleRTT
courant
LFI 3 Couche Transport 62
Calcul du timeout
Calcul du RTT
EstimatedRTT = (1- a)*EstimatedRTT + a*SampleRTT
• Moyenne exponentielle pondérée
– L'influence des échantillons du passé décroit exponentiellement
rapidement
– valeur typique: a= 0.125
Calcul du timeout
• EstimtedRTT plus une “marge de sécurite”
– Grande variation de EstimatedRTT plus grande marge de sécurité
• D'abord estimer de combien SampleRTT dévie de EstimatedRTT:
DevRTT = (1-b)*DevRTT + b*|SampleRTT-EstimatedRTT|
(valeur typique: b= 0.25)
Ensuite fixe l'intervalle de timeout
TimeoutInterval = EstimatedRTT + 4*DevRTT
LFI 3 Couche Transport 63
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 64
Contrôle de flux TCP
Fenêtre annoncée
Transmis
Transmis et acquitté Non transmis Non transmissible
non acquitté
• Basé sur la fenêtre glissante
– Pointeur de début de fenêtre
– Pointeur indiquant la partie transmise et non
acquittée
– Pointeur indiquant la fin de la fenêtre
– Envoi de données urgentes toujours possible
LFI 3 Couche Transport 65
Contrôle de flux TCP
• Le coté destinateur de la • Control de flux
connexion TCP à un – L'expéditeur ne va pas
tampon mémoire de: surcharger le tampon du
destinataire
– en transmettant trop de
données et trop vite
• Service d “adaptation de
• Le processus peut lire la vitesse de trans.”: sert à
lentement les données adapter la vitesse de
dans la lecture des transmission à la rapidité
données sur le tampon de lecture du processus.
LFI 3 Couche Transport 66
Contrôle de flux TCP
• Le destinataire avertit la taille
de l'espace libre en includant la
valeur de RcvWindow dans les
segments
• L'expéditeur limite le nombre de
donnée non acquitée à
RcvWindow
Guarantie que le tampon de
(Suppose que le destinataire TCP rejette les
segments hors-séquence)
réception ne déborde pas
• De l'espace libre dans le tampon
= RcvWindow
= RcvBuffer-[LastByteRcvd - LastByteRead]
LFI 3 Couche Transport 67
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 68
Gestion de la connexion TCP
Rappel: L'expéditeur TCP, établit Poignée de main en trois étapes:
une “connexion” avant l'échange • Etape 1: le client envoie un
de données segment TCP SYN au serveur
• Initialisation de variables TCP: – spécifie le seq # initial du client
– seq. # – Ne contient pas de données
– tanpons, info. de contrôle • Etape 2: le serveur reçoit SYN,
de flux (e.g. RcvWindow) répond avec un segment SYNACK
• Client: initiateur de connexion – Serveur alloué des tampons de
Socket clientSocket = new mémoire
Socket("hostname","port – spécifie le seq. # initial du
number"); serveur
• Serveur: contacté par le client • Etape 3: si le client reçoit SYN/ACK,
Socket connexionSocket =
répond avec un segment ACK
welcomeSocket.accept();
segment, qui peut contenir des
données.
LFI 3 Couche Transport 69
Gestion de la connexion TCP
• Etape4 : le client reçoit
FIN, répond avec un ACK.
– Entre dans une phase
“timed wait” - répondra
avec un ACK pour des FINs
reçus
• Etape 5: le serveur reçoit
un ACK. connexion
fermée.
• Note: avec de petites
modifications, peut gérer
des FINs simultanés.
LFI 3 Couche Transport 70
Exemple
LFI 3 Couche Transport 71
Automate TCP
CLOSED Close/-
Close/-
Listen/-
LISTEN
SYN/SYN+ACK
RST/- Send/SYN Connect/SYN
SYN RCVD SYN SENT
SYN/SYN+ACK Simultaneous open
ESTABLISHED SYN+ACK/ACK
ACK/-
CLOSE/FIN
CLOSE/FIN FIN/ACK
FIN/ACK
FIN WAIT 1 CLOSING CLOSE WAIT
ACK/- ACK/- CLOSE/FIN
FIN+ACK/ACK
FIN WAIT 2 TIME WAIT LAST ACK
FIN/ACK
ACTIVE CLOSE PASSIVE CLOSE
Timeout/-
ACK/-
CLOSED
LFI 3 Couche Transport 72
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 73
Principe de contrôle de congestion
• Informellement : “trop de sources envoient trop
de données, trop rapidement, plus que ce que le
réseau peut absorber”
Différent du contrôle de flux !
• Manifestations
– Perte de segments (overflow des buffers aux routeurs)
– Délais longs(temps d’attente élevés dans les buffers
des routeurs)
• Un des 10 problèmes majeurs en réseau!
LFI 3 Couche Transport 74
Méthodes de contrôle de congestion
Deux grandes approches
Contrôle de congestion de Contrôle de congestion assisté
bout en bout : réseau :
• Pas d’informations • Les routeurs fournissent des
explicites de la part du informations aux systèmes
réseau – Un bit indicateur de
congestion (SNA, DECbit,
• La congestion est supposée ATM, une extension deTCP/IP)
par le système terminal à
partir de l’observation de
pertes et de retards
• Approche mise en œuvre
dans TCP
LFI 3 Couche Transport 75
Plan du cours
1. Services de la couche 6. Contrôle de congestion
transport – Principe
2. Multiplexage et – Contrôle de congestion de TCP
démultiplexage
3. Transport sans connexion:
UDP
4. Principe du transfert de
données fiable
5. Transport orienté connexion:
TCP
– Structure des segments
– Transfert de données fiable
– Contrôle de flux
– Gestion de la connexion
LFI 3 Couche Transport 76
Contrôle de congestion TCP
• Contrôle de bout en bout
– IP ne fournit aucune information sur l’état du réseau
• Le taux de transmission des segments est limité par la taille de la fenêtre
de contrôle de flux
Rate = w * MSS /RTT=CongWin /RTT Bytes/sec
• w segments, chacun de MSS octets, envoyés chaque RTT sec
Nouveau paramètre: la fenêtre de congestion CongWin
TCP gère deux fenêtres
• Une fenêtre pour le contrôle de flux
– La taille de la fenêtre a un impact sur le nombre de segments envoyés par
anticipation (sans ACK):
LastByteSent - LastByteAcked ≤ RcvWindow
• Une fenêtre pour le contrôle de congestion
– Pour prendre en compte ces deux fenêtres :
LastByteSent - LastByteAcked ≤ min(RcvWindow,CongWin)
LFI 3 Couche Transport 77
Contrôle de congestion TCP
• Conservation des paquets
– Ne pas injecter un nouveau paquet tant qu’un vieux n’est pas
sorti du réseau
– Nombre de paquets en transit constant
– Synchronisation sur les acquittements: auto-synchronisation
• Trouver le point de synchronisation
– Utilisation d’une fenêtre dynamique: fenêtre de contrôle de
congestion (cwnd)
• Détection de la congestion
– Pertes généralement dues à la congestion
• Guérison de la congestion
– Diminution du débit à la source pour diminuer la congestion
LFI 3 Couche Transport 78
Contrôle de congestion TCP
• Principe
– Trouver le point d’équilibre: “additive
increase”
• Augmenter la fenêtre de contrôle de congestion
– Détection de la congestion par
l’indication de la perte d’un paquet
– Suppression de congestion en réduisant
la fenêtre
• Algorithme
– phase 1: slow start
• Après une perte détectée par expiration de temporisation
– phase 2: évitement de congestion
– En cas de perte: réduction de la taille de la fenêtre et
récupération
– Récupération : fast recovery
• Après une perte détectée par retransmission rapide (fast
retransmit)
LFI 3 Couche Transport 79
Départ lent
• Fenêtre glissante et taille variable de la
fenêtre
• Croissance exponentielle de la taille de la
fenêtre (x2 à chaque fois que les paquets sont
transmis correctement)
– Augmentation de 1 segment à chaque
acquittement (démontrer en TD)
LFI 3 Couche Transport 80
Départ lent
• Lorsque la connexion
commence, accroissement
exponentielle du taux
• jusqu'à la détection d'une
perte:
– double CongWin à chaque
RTT
– Réalise en incrémentant
CongWin pour chaque ACK
reçu
• Resumé: taux initial est
faible mais augmente de
façon exponentielle
LFI 3 Couche Transport 81
Évitement de congestion
• Pour stopper l’augmentation trop rapide (le
slow start est exponentiel)
• À partir d’un seuil : augmentation de 1
segment à chaque RTT
• Le seuil vaut la moitié de la fenêtre lors de la
dernière congestion
LFI 3 Couche Transport 82
Évitement de congestion
Congestion avoidance
/* slowstart is over */
/* Congwin > threshold */
Until (loss event) {
every w segments ACKed:
Congwin++
}
threshold = Congwin/2
Congwin = 1
1
perform slowstart
1: TCP Reno remplace slowstart (fast recovery) après trois
ACKs dupliqués
LFI 3 Couche Transport 83
Contrôle de congestion
• Evolution de cwnd
segment
perte de segment
croissance
20 linéaire
18
16 réduction
fenêtre à
14 1 segment
12
10
croissance
8 exponentielle réduction de moitié du seuil
6
4
2
0
temps
LFI 3 Couche Transport 84
Fast recovery
• Après 3 ACKs dupliqués: • Raisonnement
– CongWin est divisé par – 3 ACKs dupliqués indiquent
deux que le réseau est capable de
– La fenêtre augmente alors transmettre certains
linéairement segments
– timeout indique une
• Mais après une expiration congestion “plus alarmante”
du timeout:
– CongWin est fixé à 1 MSS;
– Le fenêtre augmente alors
exponentiellement
– Jusqu'au seuil Threshold,
ensuite grossit
linéairement
LFI 3 Couche Transport 85
Résumé
• Lorsque CongWin est en dessous de Threshold,
l'expéditeur est en phase de départ-lent, la fenêtre
augmente exponentiellement.
• Lorsque CongWin est au dessus de Threshold,
l'expéditeur est en phase d'évitement de congestion
augmente linéairement.
• Lorsqu'un triple ACK dupliqué se produit, Threshold
est fixé a CongWin/2 et CongWin est fixé à
Threshold.
• Lorsqu'un timeout se produit, Threshold est fixé à
CongWin/2 et CongWin est fixé à 1 MSS.
LFI 3 Couche Transport 86