Protocole TCP : connexions et gestion de flux – Sujet Corrigé

publicité
ASR 2013–2014
TP n 12
Protocole TCP : connexions et gestion de flux – Sujet
Corrigé
1
Définition
Question 1.1. TCP est un protocole de transport qui est :
— full-duplex,
— fiable,
— en mode connecté.
Expliquez ces trois termes.
Correction
— full-duplex : connexion bidirectionnelle, permettant l’envoi et la réception simultanée.
— fiable : Assure La réception de toutes les données envoyées dans l’ordre dans lequel elles ont été
envoyées.
— en mode connecté : l’échange de données entre deux points se fait au sein d’une connexion qui doit
être établie avant l’envoi de données.
2
Mécanismes de connexion
Question 2.1. Comment est identifiée une connexion TCP ?
Correction Une connexion TCP est identifiée de façon unique par le couples des deux sockets aux extrémités, une socket étant identifiée par un couple (adresse, port).
Question 2.2. Tracer le chronogramme correspondant à l’initialisation d’une connexion TCP entre 2 machine A et B. En donnant les valeurs des champs ACK, FIN, SYN, Sequence Number et Acknowledgement
Number. Que se passe-t-il quand les deux machines cherchent à établir une connexion simultanément ?
Correction
Cf. Figure 1.
Question 2.3. Tracer le chronogramme correspondant à l’envoi de 1 000 bits de données sur cette connexion.
Question 2.4. Tracer le chronogramme correspondant à la fermeture de la connexion, à demande la clôture
de la connexion.
3
Mécanismes de gestion du flux
Question 3.1. Une machine A veut envoyer 1 Mo de données par TCP à une machine B. Que se passe-t-il
si la machine B traite les données par blocs de 8 bits ? Comment modifier le fonctionnement du récepteur
TCP pour atténuer ce problème ?
Correction Syndrome de la fenêtre stupide : on envoie par grands blocs mais on les consomme par petits
blocs. Le récepteur envoie une indication d’actualisation de la fenêtre à chaque octet consommé.
Question 3.2. Lors de l’utilisation du protocole telnet, chaque caractère est envoyé dès sa frappe au serveur. Quel est le rendement de cette solution ? Comment modifier le fonctionnement de l’envoyeur TCP
pour atténuer ce problème.
E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar
ASR 2013–2014
TP n 12
Hôte A
Hôte B
Hôte A
Hôte B
SYN (SEQ = x)
SYN (SEQ = x)
SYN (SEQ
= x + 1)
= x + 1)
= y, ACK
SYN (SEQ
SYN(SE
Q = x, A
CK = y
+
1)
TEMPS
= y, ACK
TEMPS
SYN (SEQ
= y)
(SEQ =
x + 1, A
CK = y
+ 1)
F IGURE 1 – Initialisation d’une connexion TCP, cas normal et cas avec collision
Correction Le drapeau PUSH est utilisé pour ne pas mettre les données en tampon avant de les envoyer.
Le rendement est mauvais, car chaque octet envoyé nécessite un segment TCP de 21 octets (20 d’en-tête),
avec 20 octets en plus d’en-tête IP. Il y a un acquittement par TCP, puis une indication de modfication de
fenêtre, soit 121 octets. Algorithme de Nagle : on envoit le premier octet, et on attend son acquittement
avant d’envoyer les autres. Ensuite, on envoie dès que la taille du segment est atteinte ou si la moitié de la
fenêtre est remplie.
Question 3.3. Pourquoi l’algorithme de Nagle peut-il être désactivé par l’application ?
Correction
En cas d’interaction rapide avec l’utilisateur (souris), ça pose des problèmes.
Question 3.4. Latence (ping) et débit sont-ils reliés dans le cas du protocole TCP ?
Correction Oui : si la latence est trop élevée, la fenêtre TCP sera rapidement remplie et l’émetteur ne
pourra plus envoyer de nouveaux paquets avant l’acquittement. Le débit sera alors limité.
Question 3.5. Qu’est-ce que le slow start ?
Correction Mécanisme de base de TCP pour contrôler le flux : initialement la fenêtre TCP est petite
(ce qui induit un faible débit) et est doublée tant que tout se passe bien. En cas de problème, la taille est
réinitialisée.
Question 3.6. Considérons l’effet de l’utilisation du Slow Start sur une ligne avec un RTT de 10 ms sans
congestion. La fenêtre du récepteur est de 24 Kb avec une taille maximale de segment de 2 Kb. Le seuil est
au départ fixé à 32 Kb. Combien de temps faut-il attendre pour que la taille de la fenêtre de congestion soit
maximale sans tenir compte des délais d’émission et de réception ?
Correction On suppose que l’émetteur désire émettre en continu. Au départ, la taille de la fenêtre de
congestion est 1 MSS (maximum segment size), donc 2 Kb. Chaque émission de segments en rafale et
réception des acquits correspondants se font en un RTT, c’est-à-dire 10 ms.
E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar
ASR 2013–2014
TP n 12
32 bits
port source
port destination
Numéro de séquence
Numéro d’accusé réception
en-tête
TCP
Réservé
URG
ACK
PSH
RST
SYN
FIN
Longueur
Total de contrôle
Taille de la fenêtre
Pointeur urgent
Options (facultatif)
Données (facultatif)
F IGURE 2 – Description d’un segment TCP
F IGURE 3 – Connexion entre X et Y via R, S et T.
— Transmission 1 : on émet 1 MSS, soit 2 Kb, après 10 ms, on reçoit 1 acquit, la fenêtre passe de 2 Kb
à 4 Kb.
— Transmission 2 : on émet 2 MSS, soit 4 Kb, après 10 ms, on reçoit 2 acquits, la fenêtre passe de 4
Kb à 8 Kb.
— Transmission 3 : on émet 4 MSS, soit 8 Kb, après 10 ms, on reçoit 4 acquits, la fenêtre passe de 8
Kb à 16 Kb.
— Transmission 4 : on émet 8 MSS, soit 16 Kb, après 10 ms, on reçoit 4 acquits, la fenêtre passe de 16
Kb à 24 Kb.
Au total, il aura fallu 40 ms.
Considérons maintenant le réseau décrit à la figure 3, dans lequel X et Y sont reliés l’un à
l’autre via trois routeurs R, S et T. X transmet des données à Y à l’aide d’une connexion TCP.
La fenêtre de réception de Y est de 12 MSS, sachant que la taille maximale des segments a été
négociée à 512 Bytes. Le temps de réaction des routeurs est de 10 ms, et le temps de traitement des
stations (vérification d’un segment et génération d’un acquit, vérification d’un acquit et préparation d’émission d’un nouveau segment) est de 15 ms. Chaque segment reçu par Y donne lieu à
l’émission immédiate d’un acquit (segment TCP vide). Le timeout avant que X ne considère un
segment comme perdu est de 2 s. On prendra en compte l’overhead introduit par TCP et IP (40
E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar
ASR 2013–2014
TP n 12
bytes au total).
Question 3.7. Quel temps faut-il à X et Y dans le meilleur des cas pour atteindre le débit maximal,
sachant que le seuil de congestion est initialisé à 4 Kbytes ?
Correction Dans un premier temps, il faut calculer le RTT. RTT = 3.5 ∗ T (transmission d’un MSS sur
une liaison à 500 kbps) + 3.5 ∗ T (transmission d’un acquit sur une liaison à 500 kbps) + 6 ∗ T (réaction
d’un routeur) + 2 ∗ T (traitement d’une station). Or on a :
— T (transmission d’un MSS sur une liaison à 500 kbps) = (512 + 40) ∗ 8/(500 ∗ 103) = 8.83ms
— T (transmission d’un acquit sur une liaison à 500 kbps) = 40 ∗ 8/(500 ∗ 103) = 0.64ms
Donc RTT = 123.15ms.
Ensuite, il faut déterminer si la vitesse qui corresponds à l’envoi du maximum que peut gérer le récepteur (=taille de la fenêtre de réception) en un RTT est plus petite ou plus grande que le débit le plus petit de
la liaison. On a (12 ∗ (512 + 40) ∗ 8)/(123.15 ∗ 10 − 3) = 430304.51bit/s, soit 54 Ko/s, à comparer avec
500 Ko/s. On voit donc que c’est la fenêtre de réception qui limite la vitesse maximale d’émission. C’est
l’algorithme du slow-start qui détermine comment les segments successifs sont envoyés, jusqu’à concurrence du seuil de congestion, à savoir 4KB. On a :
Instant Transmission Taille du segment
0
1
1 MSS
1
2
2 MSS, soit 1 kB
2
3
4 MSS, soit 2 kB
3
4
8 MSS, soit 4 kB
4
5
9 MSS, soit 4,5 kB
5
6
10 MSS
6
7
11 MSS
7
8
12 MSS
On le voit, il faut donc 7 RTT pour émettre le maximum acceptable par l’hôte de destination, soit 7 ∗
123.15ms = 862.05ms.
Question 3.8. Quelle est l’efficacité des différentes lignes au débit maximal ?
Correction Sur une ligne à 1 Mbps, on émet au maximum 12 MSS, soit 12 ∗ (512) octets toutes les
123.15 ms (cette fois, on ne compte pas l’en-tête car on ne compte que les données utiles au niveau 4), donc
[(12 ∗ (512) ∗ 8)/(123.15 ∗ 10 − 3)]/106 = 39, 91% et pour une ligne à 500 Kbps, on a une efficacité deux
fois plus grande, donc à 79, 82%
Question 3.9. Pour un seuil de congestion initial de 20 MSS, sachant que tous les acquits de la rafale
la plus grande viennent d’être perdus, combien de temps faudra-t-il avant que le débit maximum ne soit
récupéré ?
Correction La rafale la plus grande correspond à l’envoi de 12 MSS. Si tous les acquite- ments sont
perdus, il faut déjà 2 s pour que l’émetteur en prenne conscience. Le Seuil est à 6 MSS, soit 12/2. On voit
donc :
Instant Transmission Taille du segment
0
1
1 MSS
1
2
2 MSS, soit 1 kB
2
3
4 MSS, soit 2 kB
3
4
6 MSS, soit 3 kB
on atteint pas 8, car le seuil est dépassé avant et c’est lui qui limite la phase de slow-start.
E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar
ASR 2013–2014
TP n 12
Instant Transmission Taille du segment
4
5
7 MSS
5
6
8 MSS
6
7
9 MSS
7
8
10 MSS
8
9
11 MSS
9
10
12 MSS
Au total, il aura fallu 2 + 9 * (123.15 * 10-3) = 3.108 secondes.
E. Fleury, M. Gallet, C. Rezvoy, A. Miquel, M. Sid-Lakhdar
Téléchargement