WEBVTT

00:05.170 --> 00:09.970
Alors les gars, discutons maintenant de la façon dont nous allons déployer notre projet.

00:09.970 --> 00:13.960
C'est ainsi que nous allons exécuter notre projet.

00:14.080 --> 00:22.420
Nous allons donc simuler une topologie à six nœuds en exécutant le même processus plusieurs fois dans différents terminaux

00:22.420 --> 00:25.380
de la même machine, n'est-ce pas ?

00:25.390 --> 00:30.990
Vous pouvez donc voir que nous avons notre topologie en anneau dans laquelle nous avons six machines.

00:31.000 --> 00:37.480
Puisqu'il s'agit d'un projet de programmation basé sur les sockets, cela signifie que différentes machines physiques doivent

00:37.480 --> 00:40.060
communiquer entre elles, n'est-ce pas ?

00:40.060 --> 00:43.540
Ces machines physiques sont reliées par un câble.

00:43.540 --> 00:48.760
Mais nous n'avons pas le luxe de disposer de six machines physiques différentes.

00:48.760 --> 00:55.690
Ainsi, quel que soit le projet que nous allons écrire, nous allons l'exécuter plusieurs fois

00:55.690 --> 01:03.250
dans différents terminaux du même ordinateur portable ou de la même machine que vous utilisez.

01:03.250 --> 01:10.670
Cela équivaut donc à déployer votre projet sur six machines physiques différentes formant une

01:10.700 --> 01:12.560
topologie en anneau.

01:12.680 --> 01:21.850
Ainsi, chaque processus n'écoutera qu'une seule adresse IP, à savoir 127. 0. 0. 1.

01:21.860 --> 01:26.480
Il s'agit de l'adresse IP de votre machine locale, n'est-ce pas ?

01:26.480 --> 01:33.530
Tout paquet attribué à cette adresse IP sera reçu par notre propre machine.

01:34.750 --> 01:43.120
Mais chaque processus va se lier à un numéro de port UDP et TCP différent, conformément à ce tableau, n'est-ce pas ?

01:43.120 --> 01:49.660
Vous pouvez donc voir que vous avez un nœud zéro, c'est-à-dire que vous avez un nœud zéro ici et que ce nœud zéro

01:49.660 --> 01:51.670
va utiliser une adresse IP.

01:51.670 --> 02:01.750
127 . 0. 0. 1 et son propre numéro de port TCP sera 2000 et son numéro de port UDP sera 2001.

02:01.750 --> 02:02.530
C'est vrai.

02:02.530 --> 02:05.560
Il en va de même pour le reste des machines.

02:05.560 --> 02:10.480
Vous pouvez donc constater que les numéros de port TCP et UDP doivent être uniques.

02:10.480 --> 02:17.440
Et puisque nous allons déployer notre projet sur la même machine physique mais dans des terminaux différents, cela signifie que l'adresse IP de tous

02:17.440 --> 02:25.780
les nœuds sera la même, c'est-à-dire 127 . 0. 0. 1.

02:25.900 --> 02:26.800
C'est vrai.

02:28.270 --> 02:34.450
Supposons, par exemple, que le nœud N veuille envoyer des données UDP au nœud 3.

02:34.480 --> 02:35.230
C'est vrai.

02:35.230 --> 02:43.930
Ainsi, pour envoyer des données UDP à un nœud distant N, il faut l'adresse IP du nœud 3 et le numéro de port UDP.

02:44.260 --> 02:45.460
Maintenant, le nœud trois.

02:45.490 --> 02:47.050
L'adresse IP sera la même.

02:47.050 --> 02:57.280
Il s'agit de 127. 0. 0. 1 et le numéro de port UDP que la machine et le nœud 1 utiliseront

02:57.280 --> 02:59.620
pour envoyer des données au nœud 3 sera 2007.

02:59.710 --> 03:00.610
C'est vrai.

03:01.530 --> 03:09.270
Vous pouvez donc constater que n'importe quelle machine peut envoyer des données à n'importe quelle autre machine en utilisant le numéro de port UDP ou TCP, mais en utilisant la même

03:09.270 --> 03:14.490
adresse IP, à savoir 127. 0. 0. 1.

03:15.470 --> 03:22.460
Ainsi, à l'avenir, vous écrirez un projet et vous l'exécuterez dans six terminaux différents

03:22.460 --> 03:24.320
de la même machine.

03:24.530 --> 03:25.250
C'est vrai.

03:25.250 --> 03:31.670
Cela signifie que chaque processus qui s'exécute dans un terminal différent utilisera la même adresse IP, à

03:31.670 --> 03:34.790
savoir 127. 0. 0. 1.

03:35.060 --> 03:41.210
Et chaque processus s'exécutant dans un terminal représente un nœud de la topologie en anneau.

03:41.810 --> 03:47.240
Chaque nœud connaît son propre numéro de port TCP et UDP, n'est-ce pas ?

03:47.240 --> 03:52.850
Chaque nœud connaît donc son propre numéro de port TCP et son propre numéro de port UDP.

03:53.240 --> 03:56.450
Ce projet est soumis à une autre contrainte.

03:56.480 --> 04:03.940
Le nœud I connaît l'adresse IP et le numéro de port UDP du nœud JS, J étant égal à I plus un.

04:03.950 --> 04:10.460
Cela signifie simplement que le nœud trois connaît l'adresse IP et le numéro de port UDP du nœud quatre.

04:10.820 --> 04:17.070
Le nœud quatre connaît l'adresse IP et le numéro de port UDP du nœud cinq, et ainsi de suite.

04:17.760 --> 04:27.300
Cela signifie que le nœud trois ne peut envoyer des données UDP qu'au nœud quatre et que le nœud trois ne peut envoyer de données à aucun autre nœud

04:27.300 --> 04:33.940
dans la topologie en anneau, car le nœud trois ne connaît que le numéro de port UDP du nœud quatre.

04:33.960 --> 04:38.760
Nous devons donc respecter cette contrainte pour mettre en œuvre ce projet.

04:40.000 --> 04:46.510
Chaque nœud de la topologie en anneau est autorisé à envoyer des données UDP uniquement au nœud qui lui succède dans la topologie

04:46.540 --> 04:47.530
en anneau.

04:47.650 --> 04:57.400
Par exemple, le nœud N1 ne peut envoyer des données UDP qu'au nœud N2 parce que le nœud N1 connaît le numéro de port UDP du nœud n2.

04:57.400 --> 05:06.220
Le nœud n1 ne connaît le numéro de port UDP d'aucun autre nœud dans cette topologie en anneau, à l'exception du nœud

05:06.220 --> 05:07.720
qui lui succède.

05:08.480 --> 05:13.040
Notre projet représente donc un nœud de la topologie en anneau.

05:13.400 --> 05:21.740
Nous devons exécuter notre projet plusieurs fois dans six terminaux différents afin de simuler six nœuds de cette

05:21.740 --> 05:23.390
topologie en anneau.

05:23.690 --> 05:29.900
Supposons, par exemple, que vous souhaitiez exécuter votre projet en simulant le nœud N1, n'est-ce pas ?

05:29.900 --> 05:38.060
Vous allez donc écrire un fichier node dot C qui représente notre projet et compiler ce fichier

05:38.090 --> 05:41.120
en node dot out, n'est-ce pas ?

05:41.150 --> 05:45.680
Et si vous exécutez ce fichier, vous pouvez passer les arguments d'exécution.

05:45.710 --> 05:49.370
Le premier argument est l'adresse IP de ce nœud.

05:49.490 --> 05:54.740
Et comme je l'ai déjà dit, l'adresse IP de chaque nœud doit être la même.

05:55.430 --> 06:01.730
Le deuxième argument est le numéro de port UDP propre, n'est-ce pas ?

06:01.730 --> 06:04.550
Il s'agit donc de son propre numéro de port UDP.

06:05.150 --> 06:10.410
Le deuxième argument est le numéro de port UDP du nœud successeur.

06:11.520 --> 06:16.920
Le troisième argument est le numéro du port TCP.

06:17.070 --> 06:24.630
Vous voyez donc que vous pouvez exécuter votre projet afin de simuler n'importe quel nœud de la topologie de l'anneau en fournissant

06:24.630 --> 06:27.390
ces quatre arguments d'exécution.

06:27.950 --> 06:32.970
Voyons à présent quel est exactement le problème que nous cherchons à résoudre.

06:32.990 --> 06:36.830
Nous discuterons donc de l'énoncé du problème dans le prochain cours vidéo.
