-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinfo-f303.php
More file actions
3567 lines (3146 loc) · 192 KB
/
info-f303.php
File metadata and controls
3567 lines (3146 loc) · 192 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!--
Il faudrait mettre ceci dans un fichier CSS
/!\ Ce code est redondant avec le cours d'AdminSys
-->
<style>
/* A changer dans le css existant pour plus de clarté */
section .question {
margin-bottom: 10px;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 3px;
font-family: "Menlo", "Liberation Mono", "Consolas", "DejaVu Sans Mono", "Ubuntu Mono",
"Courier New", "andale mono", "lucida console", monospace;
word-wrap: normal;
}
pre {
border: 1px solid #e5e5e5;
display: block;
padding: 10px;
margin: 5px 0px;
}
pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
sub, sup {
font-size: smaller;
}
</style>
<h1>INFO-F303 - Réseaux, information et communications</h1>
<h2>Examen</h2>
Les réponses proviennent (ou par l'intermédiaire de résumé) de Denis Steckelmacher,
Pierre Dagnely, Christophe Dumeunter, Julien Vanbergen, David Fishel et Rodrigue Van Brande.
Merci à eux.
<h3>Théorie</h3>
<h4 class="question">
Expliquez la différence entre une paire de cuivre torsadée de catégorie 3 et une paire de
catégorie 5. Laquelle permet un débit plus élevé et pourquoi ?
</h4>
<div class="answer">
On utilise des paires de cuivre torsadées car deux fils de cuivres parallèles créent chacun un
champ magnétique proportionnelle à leur distance, ce qui induit un grand courant et donc
beaucoup de bruit. Or lorsqu'ils sont torsadés, les torsades créent chacune leur champs
magnétique ainsi qu'un courant induit. Ces flux induits s'inversent dans chaque boucle
adjacente. Les effets sont donc atténués. Plus les torsades sont petites, plus l'effet est
efficace. Les fils de catégorie 5 sont plus torsadés que ceux de catégorie 3 et donc plus efface
(100 Mbps contre 10 Mbps).
<figure>
<img src="images/info-f303/cable-torsade" alt="Cable torsadé" />
<figcaption>Cable torsadé</figcaption>
</figure>
</div>
<h4 class="question">
<ol class="alphabet">
<li>Expliquez la différence entre une fibre optique monomode et une fibre multimode.</li>
<li>Laquelle permet un débit plus élevé et pourquoi ?</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
La fibre optique est une émission d'un nuage de photon dans un câble en verre.
Composé d'un câble en fibre optique inclus dans un autre, les deux ayant des indices de
réfractions différents. Ceci permettant de piéger les signaux par réfraction. les
photons ne peuvent plus quitter le câble et se retrouvent bloqués dans le câble du
centre. On utilise deux types de fibre: le monomode et multimode.
<figure>
<img src="images/info-f303/multimode-monomode" alt="Deux modes de fibres optique" />
<figcaption>Deux modes de fibres optique</figcaption>
</figure>
<ul>
<li>
<b>Multimode</b>: Le problème de la fibre optique est que les photons émis dans
un même nuage prennent des trajectoires différentes (en fonctions des angles de
réflexions au sein du câble), les photons du signal n'arrivent donc pas en même
temps au bout du câble (ni dans la même partie). Or plus la distance est longue
plus cet effet grandit et plus l'écart entre les photons de tête et de queue
s'agrandit, on a donc un étalement puis un chevauchement des flux. Pour éviter
les chevauchement on est donc obligé d'espacer les émissions en fonction des
distances et capacités de réceptions.<br />
</li>
<li>
<b>Monomode</b>: Ici on utilise un verre plus étroit (2.4 µ) avec un seul mode
de propagation, les photons vont donc en ligne droite, sans étalement. C'est
efficace pour les grandes distances, mais plus chère.
</li>
</ul><br />
</li>
<li>
La fible monomode possède donc un débit bien plus élevé car il n'y a pas de dispersion
de délai ; on ne doit pas attendre entre les symboles. Elle est cependant bien plus
chère. La fibre multimode est moins optimale à cause des chevauchement possible et
n'est du coup utilisé que pour de courte distances.
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Expliquez le principe du multiplexage en longueur d'onde (WDM). Quel est son intérêt ?
</li>
<li>
Comparez WDM aux techniques classiques de multiplexage TDM et FDM.
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
La technique <b>WDM</b> est utilisée pour la fibre optique. On peut remarquer que la
longueur d'onde étant l'inverse de la fréquence, cette technique utilise donc le même
principe que la <b>FDM</b>. En fait, on envoie des photons avec des longueurs d'onde
différentes selon l'utilisateur dans la fibre. Ces photons passent dans un prisme pour
combiner toutes les lumières à l'entrée de la fibre puis sont à nouveau séparés à la
sortie de la fibre à l'aide d'un autre prisme.<br />
<br />
Le protocole gère 3 classes de trafic:
<ul>
<li>
Un trafic à débit <b>constant</b> en mode connecté, tel celui d'une <em>vidéo
compressée</em>.
</li>
<li>
Un trafic à débit <b>variable</b> en mode connecté, tel celui d'un <em>transfert
de fichier</em>.
</li>
<li>
Un trafic <b>constitué de datagrammes</b> en mode non connecté, tels <em>des
paquets <b>UDP</b></em>.</li>
</ul>
<br />
</li>
<li>
Pour les deux protocoles orientés connexion, l'idée de base est qu'une station A
souhaitant communiquer avec une station B doit au préalable insérer une trame de demande
de connexion dans un slot libre sur le canal de signalisation de B. Si B accepte, la
communication peut avoir lieu par l'intermédiaire du canal de données de A.
<ul>
<li>
<b>FDM</b> (<b>Frequency Division Multiplexing</b>):<br />
Utilisé en radio et en télévision. On attribue un sous-canal de fréquences à
chaque personne qui veut recevoir des informations. Par exemple, le premier
usager à la bande de fréquence de 0 à 1KHz, le 2 à la bande de 1 à 2KHz,...
Tout le monde peut donc communiquer de manière continue à l'aide de son sous-canal.
<br />
</li>
<li>
<b>TDM</b> (<b>Time Division Multiplexing</b>):<br />
Tout le monde peut utiliser le même canal de communication mais seulement pour
un temps donné. Par exemple, toutes les secondes, on change d'utilisateur et
chacun à son tour peut utiliser le canal comme il le veut. On doit donc savoir
qui peut utiliser le canal quand et il faut avoir une bonne synchronisation.
<br />
</li>
<li>
<b>WDM</b> (<b>Wavelength Division Multiplexing</b>):<br />
Principe similaire à <b>FDM</b>, chaque utilisateur possède sa propre longueur
d'ondes.
</li>
</ul>
<br />
<figure>
<img src="images/info-f303/fdm-tdm-wdm" alt="FDM TDM WDM" />
<figcaption>FDM TDM WDM</figcaption>
</figure>
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Expliquez le principe des codes polynomiaux (CRC) pour la détection d'erreurs.
</li>
<li>
Pour un polynôme donné, citez un exemple d'erreur que le code CRC associé ne pourra
pas détecter.
</li>
<li>
Quelle est l'importance du degré du polynôme utilisé ? Pourquoi ?
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
Un <b>contrôle de redondance cyclique</b> ou <b>CRC</b> (Cyclic Redundancy Check) est
un outil logiciel permettant de détecter les erreurs de transmission ou de transfert
par <b>ajout, combinaison et comparaison</b> de <b>données redondantes</b>, obtenues
grâce à une procédure de hachage. Les CRC sont évalués (échantillonnés) avant et après
la transmission ou le transfert, puis comparés pour s'assurer que les données sont
strictement identiques.<br />
Le codage binaire est très pratique pour une utilisation dans des appareils électroniques
tels qu'un ordinateur, dans lesquels l'information peut être codée grâce à la présence
ou non d'un signal électrique. Cependant le signal électrique peut subir des perturbations
(distortion, présence de bruit), notamment lors du transport des données sur un long
trajets. Ainsi, le contrôle de la validité des données est nécessaire pour certaines
applications (professionelles, bancaires, industrielles, confidentielles, relatives à
la sécurité, ...).<br />
<br />
C'est pourquoi il existe des mécanismes permettant de garantir un certain niveau
d'intégrité des données, c'est-à-dire de fournir au destinataire une assurance que les
données reçues sont bien similaires aux données émises.<br />
La protection contre les erreurs peut se faire en mettant en place des mécanismes
logiques de détection et de correction des erreurs. La plupart des systèmes de contrôle
d'erreur au niveau logique sont basés sur un ajout d'information (on parle de
«redondance») permettant de vérifier la validité des données.<br />
<br />
Le contrôle de redondance cyclique (noté CRC, ou en anglais Cyclic Redundancy Check) est
un moyen de contrôle d'intégrité des données <b>puissant et facile</b> à mettre en oeuvre.
Il représente la <b>principale méthode</b> de détection d'erreurs utilisée dans les
télécommunications. Le contrôle de redondance cyclique consiste à protéger des blocs de
données, appelés trames ("frames" en anglais). A chaque trame est associé un bloc de
données, appelé code de contrôle. Le code CRC contient des éléments redondants vis-à-vis
de la trame, permettant de détecter les erreurs, mais aussi de les réparer.<br />
<br />
Le principe du CRC consiste à traiter les séquences binaires comme des <b>polynômes
binaires</b>, c'est-à-dire des polynômes dont les coefficients correspondent à la
séquence binaire. Ainsi la séquence binaire <code>0110101001</code> peut être
représentée sous la forme polynomiale suivante:
$$0*X^9 + 1*X^8 + 1*X^7 + 0*X^6 + 1*X^5 + 0*X^4 + 1*X^3 + 0*X^2 + 0*X^1 + 1*X^0
$$
De cette façon, le bit de poids faible de la séquence (le bit le plus à droite)
représente le degré 0 du polynôme (<code>X^0 = 1</code>), le 4ème bit en partant de
la droite représente le degré 3 du polynôme (<code>X^3</code>)... Une séquence de n bits
constitue donc un polynôme de degré maximal <code>n-1</code>. Toutes les expressions
polynomiales sont manipulées par la suite avec une arithmétique modulo 2. Dans ce
mécanisme de détection d'erreur, un polynôme prédéfini (appelé polynôme générateur et
noté <code>G(X)</code>) est connu de l'émetteur et du récepteur. La détection d'erreur
consiste pour l'émetteur à effectuer un algorithme sur les bits de la trame afin de
générer un CRC, et de transmettre ces deux éléments au récepteur. Il suffit alors au
récepteur d'effectuer le même calcul afin de vérifier que le CRC est valide. <br />
<br />
</li>
<li>
Le cas où CRC valide un faux positif est extrèmement faible et pourrait survenir
uniquement dans le cas d'une double erreur. À la fois dans le message et à la fois
dans la valeur du CRC.<br />
<br />
</li>
<li>
Au plus le degré u polynome est grand, au moins d'erreur il y a. Mais au plus long est
le calcul et il y a aussi plus d'information à transmettre. Il est donc très important
de choisir un bon degré, ni trop grand ni trop petit.
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Expliquez la différence entre un baud et un bps (bit par seconde).
</li>
<li>
Qu'est-ce qui limite le nombre de bauds sur un canal de communication ?
</li>
<li>
Qu'est-ce qui limite le nombre de bps sur un canal de communication ?
</li>
<li>
Comment module-t-on le signal dans les modems « dial-up » les plus courants ? Expliquez
sommairement.
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
<ul>
<li>
Un <b>bps</b>: bit per seconde
</li>
<li>
Un <b>Baud</b>: est un symbole ("n'importe quoi") par seconde, en gros le baud
peut s'apliquer à autre chose que des bits.
</li>
</ul><br />
</li>
<li>
Nyquist impose une borne maximale au débit de symboles. Cette fréquence maximale est de
<code>2H</code>, avec <code>H</code> la bande de fréquence disponible en Hertz du
canal de transmission. Quand on transmet une émission radio, on a un canal, et on
doit tenir dedans. H vient du cable et 2 vient du bruit. Sur un réseau de téléphone, la
bande passante est d'environ 4000 Hz la fréquence maximale de la voix humaine.<br />
<br />
</li>
<li>
Le bruit, selon la loi de <b>Shannon</b> qui dit que le débit en bits est égal à
<code>H*log_2(1+S/N)</code> avec <code>S/N</code> étant le rapport du signal sur le
bruit. S'il n'y avait pas de bruit, on aurait eu un log de l'infini. L'important est
bien le rapport du signal par le bruit: si on a beaucoup de bruit mais qu'on sait
augmenter le signal, c'est bon. Généralement le rapport signal/bruit sur un réseau
téléphonique est de 1000.<br />
<br />
</li>
<li>
C'est une forme d'accès à internet qui utilise le réseau téléphonique pour établir une
connexion à un ISP. La vitesse maximale est de 56 Kbps et on ne peut pas téléphoner en
même temps. Le modem contient un modulateur/Démodulateur. Le but d'un modem est de
transformer des informations binaires (numériques) en un signal analogique (et
vice-versa). Le plus souvent on modifie à la fois l'amplitude du signal et sa phase.<br />
On ne passe donc pas 1 bit à la fois, mais au moins 2 (1 grâce à l'amplitude et 1 à la phase).
</li>
</ol>
</div>
<h4 class="question">
Pourquoi utilise-t-on un modem pour transmettre de l'information numérique sur une ligne
téléphonique ? Comment module-t-on le signal dans les modems « dial-up » les plus courants ?
</h4>
<div class="answer">
<em>Voir ci-dessus</em><br />
C'est une forme d'accès à internet qui utilise le réseau téléphonique pour établir une
connexion à un ISP. La vitesse maximale est de 56 Kbps et on ne peut pas téléphoner en même temps.
Modulateur/DéModulateur. Le But d'un modem est de transformer des informations binaires
(numériques) en un signal analogique (et vice-versa). Le plus souvent on modifie à la fois
l'amplitude du signal et sa phase. On ne passe donc pas 1 bit à la fois, mais au moins 2
(1 grâce à l'amplitude et 1 à la phase).
</div>
<h4 class="question">Expliquez l'utilité du <b>ACK</b> et <b>NAK</b>.</h4>
<div class="answer">
Le service de transfert fiable des données doit détecter les erreurs via un checksum et utiliser
des accusés de réceptions: le récepteur doit dire explicitement à l'envoyeur s'il a reçu avec ou
sans erreur le paquet. Un accusé de réception peut être un <b>ACK</b> (packet reçu) ou un
<b>NAK</b> (packet reçu mais corrompu). Les accusés de réception pouvant aussi être corrompu,
on leur ajoute aussi un checksum. On indique dans le <b>ACK</b> ou le <b>NAK</b> de quel paquet
il est l'accusé de réception sinon on peut déstabiliser le système.<br />
<figure>
<img src="images/info-f303/ack-not-nominative" alt="Erreur possible lors d'un <b>ACK</b>
non nominatif" />
<figcaption>Erreur possible lors d'un <b>ACK</b> non nominatif</figcaption>
</figure>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Citez et expliquez sommairement les 4 mécanismes de base permettant d'assurer la
fiabilité d'un transfert d'information au travers un réseau non fiable. Justifiez
leur nécessité.
</li>
<li>
Décrivez dans les grandes lignes un protocole élémentaire qui les met tous en oeuvre.
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
<ul>
<li>ACK / NACK</li>
<li>Checksum (Error detection)</li>
<li>Sequence number</li>
<li>Timeout</li>
</ul>
<br />
</li>
<li>
<ul>
<li><b>Stop & wait</b>: utilise le ACK/NACK, le timer</li>
<li><b>Go-Back-N</b>: utilise le timer, le ACK, le sequence number</li>
<li><b>Selective Repeat</b>: utilise le timer, le ACK/NACK, le sequence number</li>
</ul>
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>Expliquez le principe du protocole <b>stop & wait</b>.</li>
<li>Est-il toujours performant ?</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
On utilise une boucle simple:<br />
<pre>send → wait positive response → send → ...</pre>
Le <b>NAK</b> n'est pas utilisé car recevoir un packet corrompu est similaire à ne rien
recevoir; on ne renvoie donc rien et on attend le renvoie automatique à la fin du timer.
Le problème est de choisir un bon timer car un timer trop petit peut déclencher la
retransmission d'un message alors que le <b>ACK</b> est en chemin et peut donc
surcharger le système. À l'inverse un timer trop grand et le système réagit trop
lentement.<br />
<br />
</li>
<li>
Ce protocole a été mis au point dans les années 70 pour des réseaux peu étendu et peu
performant, aujourd'hui il n'est plus performant car les <b>RTT</b> (temps de
propagation) sont devenus important, et avec ce protocole ils laissent beaucoup de
temps mort.
<figure>
<img src="images/info-f303/stopandwait-too-old" alt="Le protocole <b>stop & wait</b>
induit un temps mort" />
<figcaption>Le protocole <b>stop & wait</b> induit un temps mort</figcaption>
</figure>
</li>
</ol>
</div>
<h4 class="question">Expliquez le principe du parallélisme (pipelining).</h4>
<div class="answer">
Au lieu d'envoyer les packets un à un comme le protocole <b>stop & wait</b>, on envoie une
rafale de packet avec les différents accusés de réceptions séparés. Ici on reste donc actif
pendant une partie du <b>RTT</b>.<br />
Il existe deux stratégies possible:
<ul>
<li>le protocole à fenêtre glissante <b>GBN</b> (<b>Go-Back N</b>)</li>
<li>protocole à fenêtre glissante <b>SR</b> (<b>Selective Repeat</b>)</li>
</ul>
<figure>
<img src="images/info-f303/pipelining" alt="Le principe du parallélisme" />
<figcaption>Le principe du parallélisme</figcaption>
</figure>
</div>
<h4 class="question">
Expliquez le principe d'un protocole à fenêtre glissante <b>GBN</b> (<b>Go-Back N</b>).
</h4>
<div class="answer">
Le sender est autorisé à transmettre de multiples packets (si disponible) sans attendre
d'<b>ACK</b>s, mais est contraint de ne pas avoir plus de N packets sans <b>ACK</b> dans le
pipeline.<br />
En résumé l'émetteur envoie N paquets d'un coup et le récepteur envoie N accusés de reception.
De plus un <b>ACK</b> correspond aussi à la réception de tous les paquets précédents.
Si on reçoit <b>ACK</b>(6), c'est que les 5 autres paquets ont été reçu.<br />
Le système est donc plus robuste car si <b>ACK</b>(5) se perd, on ne renverra quand même pas ce
paquet. Mais en contre-partie on n'accepte les paquets que dans l'ordre; si on recoit 6 avant 5,
on détruit 6 (car à l'époque la mémoire était chère) et il faudra le renvoyer. Ce qui est
problématique car le réseau est utilisé inutilement.
</div>
<h4 class="question">
Quelle est la taille maximale de la fenêtre glissante <b>GBN</b> (<b>Go-Back N</b>), si les
trames sont numérotées modulo k ? Pourquoi ?
</h4>
<div class="answer">
On voit que le récepteur considère que le deuxième paquet qu'il reçoit la deuxième fois est
le même que le premier qu'il a déjà reçu et non le troisième packet. Ainsi il le supprime et
envoie un <b>ACK</b> pensant que le premier <b>ACK</b> s'est perdu, on perd donc le paquet et
perturbe toute la chaîne.
<figure>
<img src="images/info-f303/size-window-gbn" alt="Taille maximale de la fenêtre glissante
<b>GBN</b> (<b>Go-Back N</b>)" />
<figcaption>Taille maximale de la fenêtre glissante <b>GBN</b> (<b>Go-Back N</b>)</figcaption>
</figure>
La taille maximale de la fenêtre est donc le nombre de numéro de <code>séquence-1</code>.
</div>
<h4 class="question">
Expliquez le principe d'un protocole à fenêtre glissante <b>SR</b> (<b>Selective Repeat</b>).
</h4>
<div class="answer">
<b>GBN</b> (<b>Go-Back N</b>) souffre, malgré ses améliorations, encore de quelques problèmes de
performances. En effet, la moindre erreur dans un paquet peut entraîner la retransmission
superflue d'<b>une grande quantité de paquets</b> pourtant <b>déjà arrivés</b> intègres.<br />
Le protocole à <b>fenêtre glissante</b> <em>SR</em> (<b>Selective Repeat</b>) évite les
retransmissions inutiles et demandent à l'expéditeur de ne retransmettre <b>que</b> les paquets
susceptibles d'avoir été perdus ou corrompus lors de la transmission. Cela implique que le
destinataire envoie un <b>ACK</b> pour <b>chaque paquet</b> correctement reçu.<br />
<br />
Comme dans <b>GBN</b> (<b>Go-Back N</b>), une fenêtre permet de limiter le nombre de paquets en
attente de confirmation. En revanche certains paquets de cette fenêtre auront <b>déjà</b> fait
l'objet d'un accusé de réception. Le destinataire renvoie un accusé pour chaque paquet valide
qu'il reçoit, qu'il soit dans l'ordre ou non, et stocke dans un tampon ceux qui sont encore
temporairement hors séquence (notons que ce tampon ne dépassera jamais la taille de la fenêtre
d'envoi de l'expéditeur).<br />
Afin d'éviter les problèmes de confusions avec les numéros de séquence, la quantité de numéros
disponible doit être <b>au moins deux fois plus grande</b> que la taille de la fenêtre
(<code>K/2 = taille maximale</code>).
</div>
<h4 class="question">
Quelle est la taille maximale de la fenêtre glissante <b>SR</b> (<b>Selective Repeat</b>), si
les trames sont numérotées modulo k ? Pourquoi ?
</h4>
<div class="answer">
On ne peut pas utiliser une fenêtre aussi grande que pour le <b>GBN</b> (<b>Go-Back N</b>).
$$Taille_{max} = \frac{\text{Nbr de numéro de packets}}{2} = \frac{K}{2}$$
Car il ne faut pas qu'un nombre de la fenêtre de l'émetteur corresponde à un nombre de la
fenêtre du récepteur, mais d'un autre rang.<br />
Exemple (fenêtre de taille 3 avec une numérotation de 4 chiffres):<br />
<pre>Èmetteur |0 1 2| 3 0 1 2 → récepteur 0 1 2 |3 0 1| 2</pre>
Le récepteur a reçu les paquets <b>(0, 1, 2)</b> et attend donc les paquets <b>(3, 0, 1)</b>,
mais l'émetteur n'a pas reçu les <b>ACK</b>, il considère donc que les paquets <b>(0, 1, 2)</b>
n'ont pas été reçu, et lors du time-out, il les renverra.<br />
Mais le récepteur prendra le paquet 0 qu'il va recevoir pour celui qu'il attend, et non pour
celui qu'il a déjà reçu.<br />
<br />
<p> <!-- C'est pas plutôt le buffer qui est lié à la taille de la fenêtre... -->
<u>Remarque:</u> le débit étant lié à la taille de la fenêtre, il faut alors choisir un
grand nombre de numéro de paquets.
</p>
</div>
<h4 class="question">
Dans les protocoles à fenêtre glissante de type « <b>Selective Repeat</b> », quelles sont les
relations qui sont satisfaites à tout instant entre les quatre valeurs suivantes: les bords
inférieurs et supérieurs des fenêtres de l'émetteur et du récepteur ? Justifiez.
</h4>
<div class="answer">
Quelque soit le protocole:<br />
<pre>Taille maximale de la fenêtre de l'envoyeur(Ns) + Taille maximale de la fenêtre du receveur(Nr) ≤ K</pre>
Pour le selective repeat, <code>Nr = Ns ≤ K/2</code>.<br />
<br />
On peut donc conclure que le bord inférieurs du récepteur aura au maximum une valeur en plus
que le bord suppérieur de la fenêtre émetrice. On peut également conclure que le bord inférieur
du récepteur ne pourra jamais être avant le bord inférieur de l'envoyeur.<br />
Cas limite avec une fenêtre de taille 3:<br />
<pre><code>
Envoyeur Récepteur
Initial: |<b>0 1 2</b>| 3 4 5 6 → |<b>0 1 2</b>| 3 4 5 6
Récepteur le plus avancé: |<b>0 1 2</b>| 3 4 5 6 → 0 1 2 |<b>3 4 5</b>| 6
Cas impossible: 0 1 2 |<b>3 4 5</b>| 6 → 0 1 |<b>2 3 4</b>| 5 6</code></pre>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Donnez 4 éléments majeurs des protocoles "<b>Go-Back-N</b>" et "<b>Selective Repeat</b>"
qui permettent de les différencier.
</li>
<li>
Pour chacun de ces éléments pris indépendamment, indiquez si <b>TCP</b> s'apparente
d'avantage à l'un d'eux. Expliquez.
</li>
<li>Quelle optimisation supplémentaire, liée
au contrôle d'erreur, <b>TCP</b> y apporte-t-il ?
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
<table>
<thead>
<tr>
<th>
<b>GBN</b> (<b>Go-Back N</b>)
</th>
<th>
<b>SR</b> (<b>Selective Repeat</b>)
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Un seul <b>ACK</b>
</td>
<td>
<b>ACK</b> individuels pour chaque packet
</td>
</tr>
<tr>
<td>
Détruit les packet "en avance" et demande une reception "dans l'ordre"
</td>
<td>
Il existe un buffer du côté récepteur, on ne détruit donc pas les paquets
arrivés "en avance"
</td>
</tr>
<tr>
<td>
Un seul timer correspondant au dernier packet
</td>
<td>
Timer individuels pour chaque packet
</td>
</tr>
<tr>
<td>
On renvoie tout les paquets à partir de celui sans <b>ACK</b>
</td>
<td>
On renvoie que les packets sans <b>ACK</b>
</td>
</tr>
</tbody>
</table>
<br />
</li>
<li>
La technique de fiabilité de <b>TCP</b> est un mixte entre la technique <b>GBN</b>
(<b>Go-Back N</b>) et la technique <b>SR</b> (<b>Selective Repeat</b>).<br />
Dans la première technique, on reprends la méthode d'un seul timer (associé au dernier
paquet) ainsi que les <b>ACK</b> cumulatif (ACK(6) signifie qu'on ACK aussi 5 et les autres
précédents).<br />
Cependant dans le <b>GBN</b> (<b>Go-Back N</b>) on renvoyait toute la fenêtre après le
<b>ACK</b> de retour, ici on reprend, dans la deuximème technique, le revoie seulement du
dernier segment manquant et on verra avec les <b>ACK</b> futurs si il en manquait d'autres.<br />
<br />
</li>
<li>
L'optimisation "Fast retransmit" peut être mis en place, elle permet à <b>TCP</b> de
détecter avant le timer qu'un segment est perdu. En effet, si on envoie les paquets par
rafale, et qu'on recoit en retour plusieurs fois un même <b>ACK</b>, cela veut dire que
plusieurs segments postérieurs sont arrivé avant le segment lié à cet <b>ACK</b>. Ce
segment est donc soit perdu, corrompu ou en retard.<br />
Par conventation, on considère que le segment est perdu après qu'on ai reçu trois
<b>ACK</b> identiques.
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
En première approximation, quels sont les 3 paramètres qui influencent le débit d'une
connexion <b>TCP</b> ? Expliquez.
</li>
<li>
<b>TCP</b> garantit-il un partage équitable des ressources du réseau par les différentes
connexions ? Pourquoi ?
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
Il y a 3 paramètres qui peuvent entraîner des pertes et ainsi une baisse momentané du débit :
<ul>
<li>
<b>p</b>: <em>Taux d'erreur</em>;
</li>
<li>
<b>W</b>: <em>Fenêtre de congestion</em> (mesuré en <b>MSS</b>
(<em>Max Segment Size</em>));
</li>
<li>
<b>RTT</b>: <em>Round-Trip Time</em>.
</li>
</ul><br />
La formule de l'efficacité est $\sqrt{\frac{3}{2}}\frac{MSS}{RTT}$ et donc est meilleure
avec des MSS plus gros et des petits RTT. Des packets plus gros dont "l'aller-retour"
est rapide.<br />
<br />
</li>
<li>
Quand <b>TCP</b> est en concurrence avec <b>UDP</b>, <b>TCP</b> va ralentir mais
<b>UDP</b> ne va pas réduire son trafic. <b>TCP</b> va donc être désavantagé par rapport
à <b>UDP</b>.<br />
On remarque également avec <b>TCP</b> qu'aux goulets d'étranglement, si on a 2
connections <b>TCP</b> concurrentes avec les même <b>RTT</b> et qu'une a commencée avant
l'autre, elles vont se partager la bande passante de manière de plus en plus équitable
au fur et à mesure que le temps avance. Si par contre elles n'ont pas le même <b>RTT</b>,
celle qui aura le plus petit <b>RTT</b> sera avantagée. C'est à la fois une bonne chose
et une mauvaise chose. En effet, si on regarde au niveau locale, les ressources ne sont
pas réparties équitablement (mauvaise chose) mais au niveau globale, la connexion avec
un <b>RTT</b> plus grand sera passée par plus de noeuds puisqu'elle vient de plus loin
et donc aura consommé plus de ressources sur d'autres noeuds que la connexion avec
un petit <b>RTT</b>.
</li>
</ol>
</div>
<h4 class="question">
10 processus clients communiquent simultanément avec un processus serveur attaché au
<b>port</b> 8000.
<ol class="alphabet">
<li>
Combien de sockets vont être ouverts par le serveur si les processus communiquent par
<b>UDP</b> ? Pourquoi ?
</li>
<li>
Même question s'ils communiquent par <b>TCP</b>.
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
<b>UDP</b> ne crée pas de connexion persistante. L'emetteur ne fait que créer un packet
en y attachant l'<b>IP</b> ciblé, le <b>port</b> ciblé ainsi que ses propres coordonnées
puis l'envoie. Il ne se soucie pas si il atteint le recepteur ou non.<br />
Ainsi le processus serveur attaché au <b>port</b> 8000 recevra (si il n'y a aucune perte)
les 10 messages envoyés par les processus clients. Du coup 1 seul socket sera ouvert.<br />
<br />
</li>
<li>
<b>TCP</b> crée une connexion persistante, du coup il faut ouvrir et réserver un socket
pour chaque processus client.<br />
Du coup <b>10 sockets</b> seront ouverts. Mais il ne faut pas oublier le socket qui sert
à écouter et à accepter les nouvelles connexions. Donc c'est un total de <b>11 sockets</b>
qui seront ouverts.
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Comment l'émetteur <b>TCP</b> détecte-t-il une congestion ?
</li>
<li>
Décrivez le mécanisme de contrôle de congestion de <b>TCP</b>.
</li>
<li>
Quelle distinction <b>TCP</b> fait-il entre congestion légère et congestion sévère ?
Comment réagit-il dans chaque cas ?
</li>
<li>
Si on néglige les effets du contrôle de flux, ce contrôle de congestion détermine
largement le débit moyen d'une connexion <b>TCP</b>. Quand plusieurs connexions
<b>TCP</b> sont en compétition, se partagent-elles la bande passante disponible de
façon équitable ? Expliquez.
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
<b>TCP</b> peut distinguer 2 types de <b>congestions</b>:
<ul>
<li>
Soit il reçoit 3 <b>ACK</b>s consécutifs pour le même numéro de séquence (donc
un des paquets intermédiaire a été perdus, mais les suivants sont passés:
<b>faible congestion</b>)
</li>
<li>
Soit un <b>ACK</b> n'arrive pas dans le temps imparti (timeout, beaucoup de
paquets perdus: <b>congestion sévère</b>).
</li>
</ul>
<br />
</li>
<li>
Au démarage de la transmission, <b>TCP</b> envoie les données avec une fenêtre de
taille 1 <b>MSS</b> (<b>Maximum Segment Size</b>), correspondant au nombre de paquets
qui peuvent être en parcourt simultanément. La taille de la fenêtre est doublée à chaque
itération (en incrémentant la taille à chaque <b>ACK</b> reçu), de sorte qu'elle a une
<b>croissance exponentielle</b>.<br />
<ul>
<li>
S'il détecte une <b>faible congestion</b>, il divise la taille de la fenêtre par
deux et change de mode pour incrémenter la taille de la fenêtre à chaque
itération (+1 pour chaque fenêtre totalement envoyée) pour adopter une
<b>croissance linéaire</b>. Il approche ainsi <b>dichotomiquement</b> la taille
moyenne de fenêtre optimale (c'est à dire le nombre de paquets en parcourt, et
donc la vitesse d'envoi).<br />
</li>
<li>
S'il détecte une <b>congestion sévère</b>, il réduit la taille de fenêtre à 1 et
recommence en mode de <b>croissance exponentiel</b>. Il peut éventuellement
repasser en mode de <b>croissance linéaire</b> lorsqu'il a atteint la moitié de
la taille de fenêtre qui a provoqué un timeout (puisque doubler sa taille
provoquera probablement de nouveau un timeout).
</li>
</ul>
<br />
</li>
<li>
Voir (a) et (b).<br /><br />
</li>
<li>
Sachant que le timeout est calculé à partir du <b>RTT</b>, deux sessions <b>TCP</b> en
compétition pour la même connexion approcheront toujours la vitesse optimale pour leurs
<b>RTT</b>.<br />
<b>TCP</b> répartira la connexion de façon équitable en ce sens que chaque session
utilisera une bande passante inversément proportionelle à son <b>RTT</b>, évitant la
retransmission en bloc de paquets inutiles sur des connexions trop lentes.
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>Expliquez la différence entre un simple ordinateur et un routeur</li>
<li>Expliquez le principe d'une table de routage</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
Un <b>routeur</b> est un matériel de la <b>couche 3</b> qui relie plusieurs réseaux.
Sachant qu'une carte réseau ne peut être relié qu'à un seul réseau; il doit donc avoir
une interface dans chacun des réseaux auquel il est connecté. C'est donc simplement une
machine avec plusieurs interfaces (plusieurs cartes réseau), chacune reliée à un réseau.
Son rôle va être d'<b>aiguiller les paquets reçus</b> entre les diférents réseaux.<br />
Il y a enfaite peu de chose qui différencie un simple ordinateur d'un routeur. La
principale différence est qu'un routeur <b>accepte de relayer</b> des paquets qui ne lui
sont <b>pas destiné</b> alors qu'une simple machine les jettera à la poubelle.<br />
<br />
<li>
Imaginons que nous sommes un routeur ayant comme adresse MAC l'adresse
<code>00:11:22:33:44:55</code> et comme adresse IP <code>192.168.0.1/24</code>. Nous
recevons la trame suivante (dans laquelle nous indiquons aussi l'en-tête de couche 3)
sur une de nos interfaces:
<table>
<thead>
<tr>
<th>MAC <sub>Next</sub></th>
<th>MAC <sub>Prev</sub></th>
<th></th>
<th></th>
<th>IP <sub>SRC</sub></th>
<th>IP <sub>DST</sub></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>00:11:22:33:44:55</td>
<td>01:2B:45:56:78:ED</td>
<td>IP</td>
<td>???</td>
<td>10.0.0.1</td>
<td>136.42.0.28</td>
<td>Données à envoyer</td>
<td>CRC</td>
</tr>
</tbody>
</table>
Une adresse MAC est propre à un réseau local (règle couche 2), on ne connait donc pas
l'adresse mac source (<code>MAC<sub>SRC</sub></code>) ni l'adresse mac de destination
(<code>MAC<sub>DEST</sub></code>). Ici, la trame arrive sur l'interface de notre
machine ayant pour adresse IP <code>192.168.0.1/24</code>. Son réseau ne contient pas
d'adresse UP <code>10.0.0.1</code> = la machine <code>10.0.0.1</code> ne fait pas partie
du réseau. L'adresse <code>MAC<sub>SRC</sub></code> que nous voyons ici est celle du
dernier routeur qui nous a envoyé la trame.<br />
<br />
<u>Que se passe-t-il quand notre machine reçoit cette trame ?</u><br />
La carte réseau recoit la trame et lit l'adresse MAC <code>00:11:22:33:44:55</code>.
C'est la sienne. Il lit la suite pour voir qui l'envoie et à quel protocole de couche 3
que la couche 2 doit l'envoyer. Il est inscrit IP, donc il envoie la trame en enlevant
l'en-tête Ethernet, ce qui donne le datagramme IP, à la couche 3 et plus précisément au
protocole IP.<br />
La couche 3, donc le protocole IP, lit l'ensemble des informations de l'en-tête IP,
puisqu'il sait maintenant que ce datagramme lui est destiné. Et là, l'adresse IP de
destination n'est pas la sienne. Ce qui est souvent normal pour un routeur de recevoir
un message qui ne lui est pas destiné.<br />
Son role va maintenant être d'aiguiller le datagramme vers sa destination. Il possède
une table de routage dans laquelle est indiqué le prochain routeur auquel il doit
envoyer le datagramme pour que celui-ci arrive à sa destination. La table de routage va
donc lister les routeurs auxquels il peut envoyer son datagramme pour joindre une
destination donnée. La destination donnée ne va pas être une machine, mais un réseau.<br />
<br />
Le principe est d'avoir d'un côté la liste des réseaux que l'on veut joindre, et de
l'autre la liste des routeurs à qui nous devons envoyer le datagramme pour joindre les
réseaux. On appelle aussi ce routeur une passerelle.<br />
<table>
<thead>
<tr>
<th>Destination</th><th>Gateway</th><th>Masque</th><th>Flags</th><th>Iface</th>
</tr>
</thead>
<tbody>
<tr>
<td>localhost</td><td>*</td><td>255.255.255.255</td><td>UH</td><td>lo0</td>
</tr>
<tr>
<td>124.178.240.0</td><td>*</td><td>255.255.255.0</td><td>U</td><td>eth1</td>
</tr>
<tr>
<td>124.178.48.0</td><td>*</td><td>255.255.240.0</td><td>U</td><td>eth0</td>
</tr>
<tr>
<td>124.178.64.0</td><td>*</td><td>255.255.224.0</td><td>U</td><td>eth2</td>
</tr>
<tr>
<td>124.178.96.0</td><td>124.178.64.2</td><td>255.255.224.0</td><td>UG</td><td>eth2</td>
</tr>
<tr>
<td>default</td><td>124.178.240.3</td><td>0.0.0.0</td><td>UG</td><td>eth1</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
Il est important de bien comprendre et retenir ce qui précède, car le routage est la
base du fonctionnement d'Internet. Attention, toute machine connectée à un réseau possède
une table de routage, même une imprimante, un téléphone, ou un PC,...
</li>
</ol>
</div>
<h4 class="question">
<ol class="alphabet">
<li>
Expliquez l'établissement de connexion « 3-way handshake » utilisé dans le protocole de
transport <b>TCP</b>, en indiquant les paramètres importants présents dans les échanges
et leurs rôles.
</li>
<li>
Expliquez avec l'aide d'un exemple pourquoi un « 2-way handshake » ne serait pas suffisant.
</li>
</ol>
</h4>
<div class="answer">
<ol class="alphabet">
<li>
Comme son nom l'indique, le <b>3-way handshake</b> se déroule en trois étapes:
<ol>
<li>
<b>SYN</b> (<em>synchronized</em>):<br />
Le client qui désire établir une connexion avec un serveur va envoyer un premier
paquet <b>SYN</b> au serveur. Le numéro de séquence de ce paquet est un nombre
aléatoire A.<br />
<br />
</li>
<li>
<b>SYN-ACK</b> (<em>synchronize-acknowledge</em>):<br />
Le serveur va répondre au client à l'aide d'un paquet <b>SYN-ACK</b>. Le numéro
du <b>ACK</b> est égal au numéro de séquence du paquet précédent (<b>SYN</b>)
incrémenté de un (A + 1) tandis que le numéro de séquence du paquet
<b>SYN-ACK</b> est un nombre aléatoire B.<br />
<br />
</li>
<li>
<b>ACK</b> (<em>acknowledge</em>):<br />
Pour terminer, le client va envoyer un paquet <b>ACK</b> au serveur qui va
servir d'accusé de réception. Le numéro de séquence de ce paquet est défini
selon la valeur de l'acquittement reçu précédemment par exemple A + 1 et le
numéro du <b>ACK</b> est égal au numéro de séquence du paquet précédent
(<b>SYN-ACK</b>) incrémenté de un (B + 1).
</li>
</ol>
<br />
Une fois le <b>3-way handshake</b> effectué, le client et le serveur ont reçu un
acquittement de la connexion. Les étapes 1 et 2 définissent le numéro de séquence pour
la communication du client au serveur et les étapes 2 et 3 définissent le numéro de
séquence pour la communication dans l'autre sens.<br />
Une communication full-duplex est maintenant établie entre le client et le serveur.<br />
<br />
</li>
<li>
Le <b>2-way handshake</b> n'est pas suffisant car on saute l'etape 2 du