Professional Documents
Culture Documents
e de Perpignan
Annee 2013
TD 2 - Reseaux
Couche transport
1. Vrai ou faux ?
(a) Soit un serveur A envoyant un fichier volumineux `a un serveur B sur une connexion TCP.
Supposons que B naie aucune donnee `a envoyer `a A. B nemettra pas daccuse de reception
parce quil na pas de donnees sur lesquelles le greffer.
(b) Un segment TCP comporte un champ RcvWindow dans son en-tete.
(c) La taille de la fenetre RcvWindow reste la meme durant toute la duree de la connexion.
(d) Supposons que le dernier SampleRTT dune connexion TCP soit egal `a 1 seconde. Dans ce cas
la valeur de TimeoutInterval correspondant pour la connexion est obligatoirement superieur
ou egale `
a 1.
2. Une application peut-elle beneficier dun service de transfert de donnees fiable si elle repose sur
UDP ? Si oui, comment ?
3. Supposons que le serveur A envoie deux segments TCP directement lun apr`es lautre au serveur B
sur une connexion TCP. Le premier segment porte le numero de sequence 90, le second le numero
110.
(a) Combien doctets contient le premier segment.
(b) Supposons que seul le second segment arrive `a bon port. Quel est le numero de laccuse de
reception emis par B en reponse `a ce segment ?
Exercice 2. Supposons que le client A ouvre une session Telnet avec le serveur S. Au meme moment, le
client B en ouvre egalement une autre avec le serveur S. Citez quelques numeros dacc`es dorigine (source
port number ) et de destination (destination port number ) possibles pour :
1. les segments envoyes de A `
a S.
2. les segments envoyees de B `
a S.
3. les segments envoyes de S `
a A.
4. les segments envoyes de S `
a B.
5. Si A et B sont deux machines differentes, est-il possible que les segments transmis de A `a S aient
le meme numero dacc`es dorigine que les segments transmis de B `a S?
6. Quen est-il si A et B sont une seule et meme machine?
Exercice 3. UDP et TCP ont recours `
a des complements `a 1 pour le calcul de leurs sommes de controle.
Soit les trois octets suivants 01010101, 01110000, 01001100.
1. Quel est le complement `
a 1 de la somme de ces trois octets ? Detaillez les differents etapes de votre
raisonnement.
2. Pourquoi UDP se sert-il du complement `a 1 de la somme et pas de la somme elle-meme?
3. Avec ce syst`eme, comment le destinataire fait-il pour detecter les erreurs: est-il possible quune
erreur dun bit passe inapercue? Quen est-il dune erreur de deux bits? (Dans chacun des cas
donner des exemples pour illustrer votre affirmation).
Figure 1: Destinataire
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt=make_pkt(ACK,checksum)
udt_send(sndpkt)
Attendre
lenvoie de 1
de la couche
infrieure
Attendre
lenvoie de 0
de la couche
infrieure
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt)) )
sndpkt=make_pkt(NAK,checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq0(rcvpkt)) )
sndpkt=make_pkt(NAK,checksum)
udt_send(sndpkt)
2. Avec le protocole rdt3.0, les ACK circulant du destinataire `a lexpediteur ne comportent pas de
numero de sequence (bien quils soient dotes dun champ dacquittement contenant le numero de
sequence du paquet dont ils accusent reception). Expliquez pourquoi ces paquets ne comprennent
pas de numero de sequence.
3. Le diagramme schematise ce qui se passe lors dun envoie avec perte dun paquet de donnees. Faire
des diagrammes similaires pour un ACK perdu et une expiration prematuree du temps imparti.
Expediteur
Destinataire
send pkt0
rcv pkg0
send ACK0
rcv ACK0
send pkt1
Perte
timeout
resend pkt1
rcv pkt1
send ACK1
rcv ACK1
send pkt0
Exercice 6. Considererons une communication longue distance entre la cote Ouest et la cote Est des
Etats Unis. Le temps de propagation aller retour (RTT) `a la vitesse de la lumi`ere entre ces deux serveurs
est approximativement de 30ms. Supposez quils soient relies par un canal dun debit (R) de 1Gbit/s.
La taille (L) des paquets est fixe `
a 1000 octets ( en-tete incluse).
2
Figure 2: Expediteur
rdt_send(rcvpkt)
sndpkt=make_pkt(0,data,checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(sndpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt)
&& notcorrupf(rcvpkt)
&& isACK(rcvpkt)
// rienfaire
Attendre lappel 0
de la couche
suprieure
Attendre ACK
ou NAK 0
rdt_rcv(rcvpkt)
&& notcorrupf(rcvpkt)
&& isACK(rcvpkt)
// rienfaire
Attendre ACK
Attendre lappel 0
de la couche
suprieure
ou NAK 1
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(sndpkt)
udt_send(sndpkt)
rdt_send(rcvpkt)
sndpkt=make_pkt(0,data,checksum)
udt_send(sndpkt)
Expediteur
0 1 2 3 0 1
pkt0
pkt1
0 1 2 3 0 1
0 1 2 3 0 1
pkt2
Destinataire
Expediteur
ACK0 0 1 2 3 0 1
0 1 2 3 0 1
ACK1 0 1 2 3 0 1
0 1 2 3 0 1
ACK2 0 1 2 3 0 1
0 1 2 3 0 1
pkt0
pkt1
pkt2
Destinataire
ACK0 0 1 2 3 0 1
ACK1 0 1 2 3 0 1
ACK2 0 1 2 3 0 1
pkt3
0 1 2 3 0 1
0 1 2 3 0 1
pkt0
0 1 2 3 0 1
0 1 2 3 0 1
Expediteur
SYN(0)
seq=188
SYN(0)
ACK=?
seq=381,
ACK(0)
seq=?, A
CK=?
3)
DATA(5
ACK=?
seq=382,
DATA(1
6)
seq=?, A
CK=?
K(0)
FIN AC
seq=653,
ACK(0)
seq=?, A
CK=654
FIN AC
K(0)
seq=?, A
CK=?
ACK(0
K=?
C
seq=?, A
(a) enonc
e
ACK=25
9 10 11 12 13 14 15 16 17 18 19
ACK=0
Seq=0
Seq=1
Seq=7
9 10 11 12 13 14 15 16 17 18 19
ACK=2
Seq=8
Seq=9
ACK=7
9 10 11 12 13 14 15 16 17 18 19
9 10 11 12 13 14 15 16 17 18 19
Seq=10
Seq=14
ACK=7
ACK=7
ACK=7
9 10 11 12 13 14 15 16 17 18 19
9 10 11 12 13 14 15 16 17 18 19
9 10 11 12 13 14 15 16 17 18 19
Seq=7
ACK=7
ACK=7
9 10 11 12 13 14 15 16 17 18 19
Seq=15
ACK=7
Seq=16
9 10 11 12 13 14 15 16 17 18 19
ACK=7
Seq=17
ACK=15
9 10 11 12 13 14 15 16 17 18 19
Seq=18
temps