TD 8
Data
1.2. Exercice
1.2.1. A quoi correspondent les ports Source et Destination ?
UDP assure essentiellement une fonction de (dé)multiplexage grâce aux champs « Source
Port » et « Destination Port », qui permettent d'identifier (quoique de façon indirecte) les
processus en communication sur les deux machines distantes. On notera que c'est la paire
(port, hôte) appelée socket, qui constitue la clé de démultiplexage pour UDP.
1.2.2. Quelles sont les fonctionnalités assurées par UDP ?
UDP se contente donc d'étendre le service de remise de machine à machine (offert par IP)
en un service de communication de processus à processus.
S'il n'y a pas de contrôle d'erreur à proprement parler, il y a néanmoins une fonction de
détection d'erreur (optionnelle avec IPv4 mais obligatoire avec IPv6) qui repose sur le
champ Cheksum : elle permet de vérifier que le message UDP a bien été délivré entre les 2
bons ports (l'@ IP dest aurait pu être modifiée lors du transit du paquet, ce qui aurait
provoqué une remise à un mauvais destinataire). Lorsqu'il est calculé, le checksum porte sur
la totalité du message UDP augmentée d'un pseudo-header comportant entre autres les @ IP
source et destination (en conséquence de quoi, UDP repose forcément sur IP).
En théorie, les messages UDP peuvent être fragmentés par IP. En pratique, la plupart des
applications utilisant UDP limitent la taille de leurs messages à 512 octets, pour éviter toute
fragmentation.
1
UPMC - Licence Informatique 3I014 - Réseaux
1.2.3. Une machine A envoie un message UDP contenant 1000 octets de données à une machine
B. Le message doit traverser 2 routeurs avant d’arriver à destination. Les 3 réseaux traversés
ont un débit de 10 Mbit/s. Sur chaque réseau le message est transporté en utilisant le
protocole Ethernet. La vitesse de propagation est de 200.000 km/s et les distances entre les
machines sont indiquées sur le schéma.
500 m 500 m 500 m
A B
R1 R2
a. Donner une borne inférieure sur le temps de transfert du message (négligeant tout ce qui
n’est pas indiqué dans l’énoncé).
L’intérêt de cet exercice est tout d’abord de rappeler qu’un message UDP est encapsulé dans
un paquet IP, lui-même encapsulé (ici) dans une trame Ethernet. Pour calculer le temps de
transmission du message sur chaque réseau, il faut donc ajouter aux 1008 octets de données
du message UDP, les 20 octets de l’en-tête IP (sans option) et les 26 octets de l’en-tête de de
l’en-queue Ethernet (incluant préambule et CRC), soit au total 1054 octets. On calcule alors
le temps de transmission sur chaque lien :
L 1054 *8
tt = = = 0, 00085 s = 0,85 ms
D 10 7
auquel il ne faut pas oublier d’ajouter le temps de propagation (même si celui-ci est
négligeable dans ce cas) :
x 500
tp = = = 0, 0000025 s = 2, 5 µs
c 200.000 *1000
On doit alors multiplier le temps de transfert par 3 (car les 3 transferts sur les 3 liens sont
identiques ici) et on obtient 2,5 ms.
b. Quels sont tous les phénomènes dont le temps a été négligé dans le calcul précédent ?
Le calcul précédent a, entre autre, négligé : le temps d’attente avant émission d’une trame
Ethernet, les collisions éventuelles de trame, les erreurs potentielles de transmission, les
temps de constitution des trames, paquets et messages, les temps de calculs des différents
champs de contrôle (ou de détection d’erreur), le temps de routage des paquets IP, etc.
c. Peut-on donner une borne supérieure sur le temps de transfert du message ?
UDP n’assure absolument aucune garantie de délivrance. Le message peut donc se perdre et
ne jamais arriver. La borne max est donc infinie !
2
UPMC - Licence Informatique 3I014 - Réseaux
2.1. Généralités
TCP est un protocole de transport, donc de bout en bout, offrant un service de remise fiable de flux
d'octets en full-duplex et en mode connecté. Il met notamment en œuvre des mécanismes de :
§ multiplexage/démultiplexage ;
§ contrôle d'erreur ;
§ contrôle de flux ;
§ contrôle de congestion.
A la différence des protocoles en mode connecté que nous avons pu voir jusqu'à présent, TCP
n'utilise qu'un seul format de segment qui sert aussi bien à établir/libérer une connexion qu'à
transférer des données. Le format d’un segment TCP est donné en annexe.
2.1.1. Quelle est la taille minimum d’un segment TCP ?
Un segment TCP sans option et sans donnée fait donc 20 octets.
2.1.2. Quelle est la taille maximum de l’en-tête d’un segment TCP ?
60 octets max : 15 (nombre maximum codable sur 4 bits) * 4 (mots de 32 bits)
Il y a donc, au maximum, 40 octets d’options.
2.1.3. Décoder la trame suivante (donnée sans préambule ni CRC) en séparant bien les
informations de niveaux Ethernet, IP et TCP :
00 01 02 a5 fb 3a 00 01 02 a5 fc 8d 08 00 45 00
00 3c ec 26 40 00 40 06 cc cd 0a 21 b6 b6 84 e3
3c 0d 0e b5 00 50 a9 55 92 64 00 00 00 00 a0 02
3e bc a3 74 00 00 02 04 05 b4 04 02 08 0a 08 39
91 16 00 00 00 00 01 03 03 00
Informations de niveau Ethernet :
Adresse destination : 00:01:02:a5:fb:3a
Adresse source : 00:01:02:a5:fc:8d
Type (DoD Internet) : 08 00
Informations de niveau IP :
Version = 4
IHL = 5 : 5 mots de 32 bits c’est-à-dire 20 octets (donc il n’y a pas d’option)
TOS = 00 : pas de priorité particulière
Total Length = 0x003c : 60 octets
Identification, flags et fragment offset = 0xec264000 : pas de fragmentation
Time to live = 0x40 : 64
Protocol = 0x06 : TCP
Header checksum = 0xcccd : correct
3
UPMC - Licence Informatique 3I014 - Réseaux
4
UPMC - Licence Informatique 3I014 - Réseaux
SYN
SYN, ACK
ACK
t t
Dans le cas où la connexion est refusée, B envoie un RST :
A B
SYN
RST
t t
2.2.1. Pourquoi trois messages ? Deux n'auraient-ils pas suffi ?
A B A B
CR CR CR : Connexion Request
CC : Connection confirmation
CC CC DT : Data
DT
DT
t t
t t
Avec 2 messages (dessin de gauche), le sous-réseau pouvant déséquencer les paquets,
l'appelant de la connexion reçoit un segment de données pour une connexion qui est en
attente de confirmation d'établissement.
Avec 3 messages (dessin de droite), l'appelé doit attendre de recevoir un acquittement de sa
confirmation (sous la forme de données ou d'acquittement) avant de pouvoir émettre ses
propres données. On évite ainsi à l'appelant de se retrouver dans un état mal défini.
2.2.2. Donner les numéros de séquence et d’acquittement des trois messages d’établissement.
Le SYN « consomme » un numéro l’espace de numérotation et peut donc être acquitté :
5
DT i stockée pour
considérée reséquencement
comme puis délivrée
retransmission
2ème incarnation
DT i
1ère incarnation
UPMC - Licence Informatique 3I014 - Réseaux
A B
SYN
SeqNum = x
SYN, ACK
SeqNum = y
ACK AckNum = x+1
SeqNum = x+1
AckNum = y+1
t t
2.2.3. Pourquoi la numérotation n'est-elle pas commencée à 0 ?
Une connexion TCP est en fait identifiée par (port S, hôte S, port D, hôte D). Il est tout à fait
possible d'ouvrir une connexion entre les machines A et B, ports X et Y, de la fermer, puis
quelque temps après, d'ouvrir une nouvelle connexion, toujours entre les machines A et B et
les ports X et Y. On parle dans ce cas d'incarnations différentes d'une même connexion. Le
scénario suivant est alors possible :
On y voit une seconde incarnation réutilisant un numéro de séquence trop tôt, c'est-à-dire
quand il y a encore une chance qu'un segment appartenant à une incarnation précédente
interfère avec l'incarnation courante.
Le numéro de séquence initial (ISN) est choisi de façon à éviter cette situation. A l'origine,
il devait être tiré aléatoirement ; en pratique, il est généralement mis à jour grâce à un
compteur de 32 bits incrémenté toutes les 4 µs.
6
UPMC - Licence Informatique 3I014 - Réseaux
1 Gbit/s, cela fait exactement 125 Mo/s. Par ailleurs, les numéros de séquence rebouclent
quand on envoie 232 octets c'est-à-dire environ 4 Go. Par conséquent, cela prend 4 Go / 125
Mo/s, soit 32 s.
Ce calcul ne compte pas les octets de contrôle et fournit donc une borne inférieure au temps
de rebouclage.
b. On utilise dans les options une estampille temporelle, codée sur 32 bits, qui s'incrémente
1000 fois pendant le temps trouvé précédemment. Combien de temps met l'estampille
pour reboucler ?
Pour que l'estampille reboucle, il faut qu'elle passe par 232 valeurs, soit à peu près 4.109
valeurs. Or, par hypothèse, elle prend 1000 valeurs en 32 s. Donc, elle prendra 4.109 valeurs
en 4.32.106 s, soit 4 ans.
On voit donc que ce champ d'estampille permet d'étendre en quelque sorte l'espace de
numérotation des données, celui tendant à devenir quelque peu étroit avec l'arrivée des très
hauts débits.
7
UPMC - Licence Informatique 3I014 - Réseaux
A B
SYN
SeqNum = 0
SYN, ACK
SeqNum = 1000
ACK AckNum =
SeqNum =
AckNum =
300 octets
100 octets SeqNum =
SeqNum =
AckNum =
AckNum =
ACK
SeqNum =
100 octets AckNum =
SeqNum =
AckNum = ACK
SeqNum =
AckNum =
t t
a. Compléter sur le schéma précédent les numéros de séquence et d’acquittement
manquants.
A B
SYN
SeqNum = 0
SYN, ACK
SeqNum = 1000
ACK AckNum = 1
SeqNum = 1
AckNum = 1001
300 octets
100 octets SeqNum = 1001
SeqNum = 1 1
1001
AckNum = 1 100
AckNum = 1001
1300
ACK
SeqNum = 1301
100 octets AckNum = 101
SeqNum = 101 1
AckNum = 1301 ACK 200
SeqNum = 1301
AckNum = 201
t t
b. Que se passe-t-il si le premier segment de données de A se perd ? Redessiner l’échange
complet.
8
UPMC - Licence Informatique 3I014 - Réseaux
A B
SYN
SeqNum = 0
SYN, ACK
SeqNum = 1000
ACK AckNum = 1
SeqNum = 1
AckNum = 1001
100 octets
SeqNum = 1 300 octets
1001 AckNum = 1001 SeqNum = 1001
AckNum = 1
1300
100 octets
SeqNum = 101 1
101
AckNum = 1301 ACK 200
Tempo SeqNum = 1301
AckNum = 1
100 octets
SeqNum = 1 1
AckNum = 1301 ACK 200
SeqNum = 1301
AckNum = 201
t t
9
UPMC - Licence Informatique 3I014 - Réseaux
ACK
SeqNum = 2001
1000 octets AckNum = 501
SeqNum = 501 Win = 1000 501
AckNum = 2001 ACK Buffer de réception plein
SeqNum = 2001
AckNum = 1501 1500
L'application vient
Win = 0
lire 800 octets dans
1301 le buffer de réception
1500
t t
10
UPMC - Licence Informatique 3I014 - Réseaux
A B
ACK
SeqNum = 2001
1000 octets AckNum = 501
SeqNum = 501 Win = 1000 501
AckNum = 2001 ACK Buffer de réception plein
SeqNum = 2001
AckNum = 1501 1500
L'application vient
Win = 0
lire 800 octets dans
1301 le buffer de réception
1500
1 octet
SeqNum = 1501 1301
1501
AckNum = 2001 ACK
SeqNum = 2001
499 octets AckNum = 1502
SeqNum = 1502 Win = 799
AckNum = 2001 1301
ACK
SeqNum = 2001
AckNum = 1502 2000
Win = 300
t t
2.5.3. TCP est orienté-octet : la numérotation et la fenêtre portent sur des octets. Quand est-ce que
TCP décide de constituer et d'envoyer un segment ?
1) dès qu'il a MSS (Maximum Segment Size) octets de données à envoyer MSS = MTU du
sous-réseau local – entête IP – entête TCP (Remarque : les entités TCP se communiquent
leurs MSS respectifs au moment de l'établissement (champ options) et c'est la valeur la plus
faible qui gagne. Par défaut la MSS est de 536 octets (+20 en-tête)) ;
2) lorsque son application lui demande explicitement : TCP supporte une fonction push que
le processus peut invoquer pour vider le buffer des octets en attente d'émission (ex : c'est
utile pour l'émulation de terminaux (Telnet), où chaque caractère doit être envoyé aussitôt
tapé) ;
3) sur expiration d'un temporisateur : pour éviter d'attendre trop longtemps les MSS octets.
11
TO0
TO1
TO2 RTT1, d'où SRTT1 et TO1
RTT2,
RTT3, d'où
d'où SRTT2
SRTT3 et
et TO2
TO3
UPMC - Licence Informatique 3I014 - Réseaux
Prenons par exemple un SRTT initial SRTT0 = 100, un RTT (délai aller-retour mesuré entre
l'envoi qui est réellement acquitté) de 50, ALPHA = 0,85 et BETA = 1,3 :
envoi SRTT RTO
1 0,85.100+0,15(1,3.100+50) = 112 1,3.112 = 145,6
2 0,85.112+0,15(145,6+50) = 124,54 1,3.124,54 = 161,902
3 0,85.124,54+0,15(161,902+50) = 137,7853 1,3.137,7853 = 178,93…
On voit donc que la valeur de SRTT et donc celle de RTO croissent indéfiniment.
12
UPMC - Licence Informatique 3I014 - Réseaux
D'un autre côté, si on avait mesuré RTT comme la durée séparant la dernière transmission
du même segment et la réception de l'acquittement, on aurait eu le problème inverse : la
valeur de SRTT aurait diminué.
Karn et Partridge ont proposé une solution simple : mesurer RTT uniquement pour les
segments qui ont été envoyés une seule fois.
Remarque : Jacobson et Karels ont parallèlement proposé une amélioration qui prend en
compte la variance des RTT mesurés dans le calcul de SRTT.
2.6.4. L'algorithme de Karn-Partridge propose de doubler la valeur du temporisateur à chaque
nouvelle retransmission, et ce jusqu'à ce qu'un segment soit acquitté du premier coup
(auquel cas, la valeur de SRTT est recalculée et la nouvelle valeur de RTO déduite).
Comment justifier cette proposition ?
Les timeouts sont une indication de congestion du réseau (en effet, la cause la plus probable
de perte de paquet est la congestion et non pas les erreurs de transmission). Pour ne pas
aggraver la congestion, il est souhaitable de retransmettre avec « modération » ! D'où ce
schéma de type Exponential Backoff.
FIN
ACK
FIN
ACK
Connexion libérée
Tempo
Connexion libérée
t t
2.7.1. Lorsque TCP envoie un [SYN, SeqNum = x] ou un [FIN, SeqNum = x], le segment ACK
correspondant porte AckNum = x+1. En d'autres termes, les segments SYN et FIN
consomment une unité de l'espace de numérotation. Est-ce vraiment nécessaire ? Aurait-on
pu avoir à la place [ACK, AckNum = x] ?
Il est nécessaire d'incrémenter le AckNum d'un FIN, de façon à ce que l'émetteur du FIN
puisse déterminer si son FIN a bien été reçu, et non pas seulement les données précédentes.
Pour un segment SYN, tout ACK pour des données postérieures au SYN incrémente AckNum :
un tel ACK va donc acquitter implicitement le SYN (puisque des données ne peuvent pas être
acquittées tant que la connexion n'est pas établie). Par conséquent, le fait d'avoir [ACK,
AckNum = x+1] au lieu de [ACK, AckNum = x] relève plus d'une convention dans un souci
d'homogénéité que d'une nécessité protocolaire.
13
UPMC - Licence Informatique 3I014 - Réseaux
3. EXERCICES DE REVISION
3.1. On considère l’échange de segments TCP suivant :
Une trace (incomplète) correspondant à cet échange et obtenue par un analyseur réseau est
donnée ci-dessous.
a. Quel est le numéro de séquence initial (ISN) de A ? Quel est le numéro de séquence
initial (ISN) de B ?
ISN de A : DC A5 2F 97
ISN de B : 2D 00 2A 58
b. Dans la trace, le segment de données (4ème trame) a été tronqué. Combien d’octets de
données transporte-t-il ?
Longueur du paquet = 05 8C = 1420 octets
Longueur du paquet = lg entête IP + lg entête TCP + lg données TCP = 20 + 32 + lg
données TCP
D’où longueur des données = 1420 – 52 = 1368 octets
c. Compléter directement sur la trace les valeurs des champs de numéros de séquence et de
numéros d’acquittement.
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 3c e6 b3 40 00 40 06 3c e1 0a 0f 02 01 0a 0f .<..@.@.<.......
0020 01 01 00 14 b8 6b dc a5 2f 97 00 00 00 00 a0 02 .....k../.......
0030 16 d0 8c 30 00 00 02 04 05 b4 04 02 08 0a 00 00 ...0............
0040 c9 24 00 00 00 00 01 03 03 06 .$........
0000 00 15 17 50 93 e6 00 15 17 78 86 b8 08 00 45 00 ...P.....x....E.
0010 00 3c 00 00 40 00 40 06 23 9d 0a 0f 01 01 0a 0f .<..@.@.#.......
0020 02 01 b8 6b 00 14 2d 00 2a 58 a0 12 ...k..-.*X../...
0030 16 a0 61 b0 00 00 02 04 05 b4 04 02 08 0a 00 58 ..a............X
0040 d2 ee 00 00 c9 24 01 03 03 06 .....$....
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 34 e6 b4 40 00 40 06 3c e8 0a 0f 02 01 0a 0f .4..@.@.<.......
0020 01 01 00 14 b8 6b 80 10 .....k../.-.*Y..
0030 00 5c a6 bf 00 00 01 01 08 0a 00 00 c9 24 00 58 .\...........$.X
0040 d2 ee
14
UPMC - Licence Informatique 3I014 - Réseaux
0000 00 15 17 78 86 b8
00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 05 8c e6 b5 40 00
40 06 37 8f 0a 0f 02 01 0a 0f ....@.@.7.......
0020 01 01 00 14 b8 6b 80 18 .....k../.-.*Y..
0030 00 5c 83 74 00 00
01 01 08 0a 00 00 c9 24 00 58 .\.t.........$.X
0040 d2 ee 74 6f 74 61
6c 20 39 32 0d 0a 2d 72 77 2d ..total 92..-rw-
(...) (...) (...)
0590 6e 2d 65 72 72 6f 72 73 0d 0a n-errors..
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 34 e6 b6 40 00 40 06 3c e6 0a 0f 02 01 0a 0f .4..@.@.<.......
0020 01 01 00 14 b8 6b 80 11 .....k..4.-.*Y..
0030 00 5c a1 66 00 00 01 01 08 0a 00 00 c9 24 00 58 .\.f.........$.X
0040 d2 ee ..
0000 00 15 17 50 93 e6 00 15 17 78 86 b8 08 00 45 08 ...P.....x....E.
0010 00 34 f8 b7 40 00 40 06 2a e5 0a 0f 01 01 0a 0f .4..@.@.*.......
0020 02 01 b8 6b 00 14 80 10 ...k..-.*Y..4...
0030 00 88 a1 3b 00 00 01 01 08 0a 00 58 d2 ee 00 00 ...;.......X....
0040 c9 24 .$
0000 00 15 17 50 93 e6 00 15 17 78 86 b8 08 00 45 08 ...P.....x....E.
0010 00 34 f8 b8 40 00 40 06 2a e4 0a 0f 01 01 0a 0f .4..@.@.*.......
0020 02 01 b8 6b 00 14 80 11 ...k..-.*Y..4...
0030 00 88 a1 39 00 00 01 01 08 0a 00 58 d2 ee 00 00 ...9.......X....
0040 c9 24 .$
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 34 e6 b7 40 00 40 06 3c e5 0a 0f 02 01 0a 0f .4..@.@.<.......
0020 01 01 00 14 b8 6b 80 10 .....k..4.-.*Z..
0030 00 5c a1 64 00 00 01 01 08 0a 00 00 c9 25 00 58 .\.d.........%.X
0040 d2 ee ..
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 3c e6 b3 40 00 40 06 3c e1 0a 0f 02 01 0a 0f .<..@.@.<.......
0020 01 01 00 14 b8 6b dc a5 2f 97 00 00 00 00 a0 02 .....k../.......
0030 16 d0 8c 30 00 00 02 04 05 b4 04 02 08 0a 00 00 ...0............
0040 c9 24 00 00 00 00 01 03 03 06 .$........
0000 00 15 17 50 93 e6 00 15 17 78 86 b8 08 00 45 00 ...P.....x....E.
0010 00 3c 00 00 40 00 40 06 23 9d 0a 0f 01 01 0a 0f .<..@.@.#.......
0020 02 01 b8 6b 00 14 2d 00 2a 58 dc a5 2f 98 a0 12 ...k..-.*X../...
0030 16 a0 61 b0 00 00 02 04 05 b4 04 02 08 0a 00 58 ..a............X
0040 d2 ee 00 00 c9 24 01 03 03 06 .....$....
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 34 e6 b4 40 00 40 06 3c e8 0a 0f 02 01 0a 0f .4..@.@.<.......
0020 01 01 00 14 b8 6b dc a5 2f 98 2d 00 2a 59 80 10 .....k../.-.*Y..
0030 00 5c a6 bf 00 00 01 01 08 0a 00 00 c9 24 00 58 .\...........$.X
0040 d2 ee
15
UPMC - Licence Informatique 3I014 - Réseaux
0000 00 15 17 78 86 b8 00
50 93 15 17 e6 08 00 45 08 ...x.....P....E.
0010 05 8c e6 b5 40 00 40
8f 0a 06 37 0f 02 01 0a 0f ....@.@.7.......
0020 01 01 00 14 b8 6b dc
98 2d a5 2f 00 2a 59 80 18 .....k../.-.*Y..
0030 00 5c 83 74 00 00 01
0a 00 01 08 00 c9 24 00 58 .\.t.........$.X
0040 d2 ee 74 6f 74 61 6c
32 0d 20 39 0a 2d 72 77 2d ..total 92..-rw-
(...) (...) (...)
0590 6e 2d 65 72 72 6f 72 73 0d 0a n-errors..
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 34 e6 b6 40 00 40 06 3c e6 0a 0f 02 01 0a 0f .4..@.@.<.......
0020 01 01 00 14 b8 6b dc a5 34 f0 2d 00 2a 59 80 11 .....k..4.-.*Y..
0030 00 5c a1 66 00 00 01 01 08 0a 00 00 c9 24 00 58 .\.f.........$.X
0040 d2 ee ..
0000 00 15 17 50 93 e6 00 15 17 78 86 b8 08 00 45 08 ...P.....x....E.
0010 00 34 f8 b7 40 00 40 06 2a e5 0a 0f 01 01 0a 0f .4..@.@.*.......
0020 02 01 b8 6b 00 14 2d 00 2a 59 dc a5 34 f0 80 10 ...k..-.*Y..4...
0030 00 88 a1 3b 00 00 01 01 08 0a 00 58 d2 ee 00 00 ...;.......X....
0040 c9 24 .$
0000 00 15 17 50 93 e6 00 15 17 78 86 b8 08 00 45 08 ...P.....x....E.
0010 00 34 f8 b8 40 00 40 06 2a e4 0a 0f 01 01 0a 0f .4..@.@.*.......
0020 02 01 b8 6b 00 14 2d 00 2a 59 dc a5 34 f1 80 11 ...k..-.*Y..4...
0030 00 88 a1 39 00 00 01 01 08 0a 00 58 d2 ee 00 00 ...9.......X....
0040 c9 24 .$
0000 00 15 17 78 86 b8 00 15 17 50 93 e6 08 00 45 08 ...x.....P....E.
0010 00 34 e6 b7 40 00 40 06 3c e5 0a 0f 02 01 0a 0f .4..@.@.<.......
0020 01 01 00 14 b8 6b dc a5 34 f1 2d 00 2a 5a 80 10 .....k..4.-.*Z..
0030 00 5c a1 64 00 00 01 01 08 0a 00 00 c9 25 00 58 .\.d.........%.X
0040 d2 ee ..
3.2. On dispose de deux réseaux A et B, reliés entre eux par une passerelle (gateway). Le réseau
A est également relié à Internet par une passerelle.
Réseau A : metaux-net adresse IP 192.3.2.0
– Masque de sous-réseau : 255.255.255.0
– Ordinateur 1 : platine adresse IP 192.3.2.2 interface eth0
– Ordinateur 2 : uranium adresse IP 192.3.2.3 interface eth0
– Serveur : mercure adresse IP 192.3.2.4 interface eth0
Réseau B : roches-net adresse IP 130.2.0.0
– Masque de sous-réseau : 255.255.254.0
– Ordinateur 1 : quartz adresse IP 130.2.0.2 interface eth0
– Ordinateur 2 : silex adresse IP 130.2.0.3 interface eth0
La passerelle entre le réseau A et le réseau B a deux interfaces :
– eth0 : pass-versA adresse IP 192.3.2.1
– eth1 : pass-versB adresse IP 130.2.0.1
Les noms des différentes machines seront utilisés à la place des adresses mac (Ethernet).
16
UPMC - Licence Informatique 3I014 - Réseaux
a. A quelles classes appartiennent les réseaux A et B ? Ces deux réseaux ont-ils été
subdivisés ? Justifier les réponses.
Réseau A : classe C, pas de subdivision (car masque de sous-réseau identique au masque
primaire associé à une classe C).
Réseau B : classe B, subdivisé (car masque de sous-réseau différent du masque primaire
associé à une classe B).
b. Combien de machines supplémentaires peuvent être ajoutées au réseau A ? Même
question pour le réseau B.
Réseau A : 28–2–5 = 249 machines.
Réseau B : 29–2–3 = 507 machines.
c. Donner les adresses de diffusion locale (broadcast) sur les deux réseaux A et B.
Réseau A : 192.3.2.255
Réseau B : 130.2.1.255
d. Donner les tables de routage (minimum) d’une machine du réseau A, d’une machine du
réseau B et de la passerelle entre le réseau A et le réseau B.
17
UPMC - Licence Informatique 3I014 - Réseaux
e. La machine quartz souhaite ouvrir une connexion http avec le serveur mercure. Donner
les champs manquants des quatre trames transportant le segment SYN (pour les deux
premières) et le segment SYN/ACK (pour les deux autres).
18
UPMC - Licence Informatique 3I014 - Réseaux
3.3. On considère l’échange de segments TCP suivant entre deux machines distantes A et B. Cet
échange est incomplet et devra être poursuivi dans les questions d et e.
Les segments sont classés dans le tableau au niveau de la machine A, par ordre
chronologique d’émission (complète de A) et de réception (complète par A). Les colonnes
du tableaux fournissent : le numéro du segment, le sens (émission de A ou réception par A),
le numéro de séquence du segment, le numéro d’acquittement, les drapeaux positionnés
dans le segment, la taille de la fenêtre d’anticipation transmise dans le segment et la taille
des données. Un « X » dans une colonne signifie que la valeur n’est pas significative.
On suppose que les 8 segments de l’échange représenté sont correctement reçus (sans
erreur) et que l’application de B utilisant les services de TCP ne vient lire dans le buffer de
réception aucun octet de données pendant l’échange. On suppose que la taille du buffer de
réception de TCP de A est de 2000 octets et que celle de B est de 4000 octets.
19
UPMC - Licence Informatique 3I014 - Réseaux
Segment Sens Seq Num Ack Num Flags Window Taille des
données
1 A→B 1 X SYN 2000 0
2 B→A 1000 SYN, ACK 4000 0
3 A→B ACK 2000 0
4 A→B 2 1001 ACK 2000
5 B→A 1001 1002 ACK
6 A→B ACK 2000 1000
7 A→B 2002 1001 ACK 2000 1000
8 B→A 1001 2002 ACK 2000 0
a. Compléter les cases manquantes dans le tableau précédent.
Segment Sens Seq Num Ack Num Flags Window Taille des
données
1 A→B 1 X SYN 2000 0
2 B→A 1000 2 SYN, ACK 4000 0
3 A→B 2 1001 ACK 2000 0
4 A→B 2 1001 ACK 2000 1000
5 B→A 1001 1002 ACK 3000 0
6 A→B 1002 1001 ACK 2000 1000
7 A→B 2002 1001 ACK 2000 1000
8 B→A 1001 2002 ACK 2000 0
b. Qu’indique la valeur du numéro d’acquittement (Ack Num) du segment 8 ? Que peut-on
en déduire en ce qui concerne les segments 7 et 8 ?
La valeur de l'AckNum dans le segment 8 (qui est un simple ACK puisqu'il ne comporte pas
de données) est de 2002, ce qui signifie que lorsque B l'envoie, il a uniquement reçu les 2
premiers segments de 1000 octets de A. Les segments 7 et 8 se sont donc croisés. Le
segment 8 a été envoyé par B avant de recevoir le segment 7 de A (mais après avoir reçu le
segment 6 de A).
c. Quelle quantité d’octets supplémentaires la machine A peut-elle envoyer à la machine B
sans avoir reçu de nouvel acquittement ? Quelle est la plage des numéros de séquence
de ces octets ?
1000 octets de données de 3002 à 4001, car le dernier ACK de B autorisait A à envoyer tous
les octets entre 2002 et 4001, et A a déjà envoyé les octets 2002 à 3001.
d. On suppose que la machine A envoie dans le segment 9 le maximum d’octets possible
et que sur réception, la machine B acquitte dans le segment 10 toutes les données
envoyées par A (y compris celles qui n’ont éventuellement pas encore été acquittées
dans l’échange précédent). Compléter dans le tableau suivant les deux nouveaux
segments. On supposera que l’application de B n’a toujours lu aucun octet dans le
buffer de réception de TCP.
Segment Sens Seq Num Ack Num Flags Window Taille des
données
9 A→B 3002 1001 ACK 2000 1000
10 B→A 1001 4002 ACK 0 0
20
UPMC - Licence Informatique 3I014 - Réseaux
Segment Sens Seq Num Ack Num Flags Window Taille des
données
11 A→B 4002 1001 ACK 2000 1
12 B→A 1001 4003 ACK 3999 0
13 A→B 4003 1001 ACK 2000 1999
15 B→A 1001 6002 ACK 2000 0
21
UPMC - Licence Informatique 3I014 - Réseaux
ANNEXE
SEGMENT TCP
4 bits 6 bits 6 bits 16 bits
Source Port Destination Port
Sequence Number
Acknowledgment Number
Data Reserved U A P R S F Window
Offset R C S S Y I
G K H T N N
Checksum Urgent Pointer
Options
Padding
Data
22
UPMC - Licence Informatique 3I014 - Réseaux
23