{"id":86559,"date":"2020-06-26T19:42:13","date_gmt":"2020-06-26T17:42:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12"},"modified":"2020-06-26T19:42:13","modified_gmt":"2020-06-26T17:42:13","slug":"uchebnik-po-simulyatoru-seti-ns-3-glavy-12","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","title":{"rendered":"Manuel d'utilisation du simulateur de r\u00e9seau ns-3. Chapitres 1,2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cet article inaugure une s\u00e9rie de publications traduisant le manuel \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/docs\/release\/3.30\/tutorial\/ns-3-tutorial.pdf\">ns-3 Tutoriel Version ns-3.29<\/a><\/noindex>\" sur le simulateur de r\u00e9seaux ns-3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Manuel d&#039;utilisation du simulateur de r\u00e9seau ns-3. Chapitres 1,2\" src=\"\/wp-content\/uploads\/2020\/06\/cddee391ba8763baab6eaa185e081bf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce document est la traduction du document original en anglais, qui a \u00e9t\u00e9 \u00e9crit en <noindex><a rel=\"nofollow\" href=\"http:\/\/docutils.sourceforge.net\/rst.html\">reStructuredText<\/a><\/noindex> pour <noindex><a rel=\"nofollow\" href=\"http:\/\/sphinx.pocoo.org\/\">Sphinx<\/a><\/noindex> et se trouve dans le r\u00e9pertoire <em>doc\/tutorial<\/em> du code source de ns-3.<\/p>\n<p><\/p>\n<p>1 Pr\u00e9face<br \/>\n1.1 \u00c0 propos de ns-3<br \/>\n1.2 Pour les utilisateurs de ns-2<br \/>\n1.3 Participation au projet<br \/>\n1.4 Organisation du guide<br \/>\n2 Sources d'information<br \/>\n2.1 R\u00e9seau<br \/>\n2.2 Git<br \/>\n2.3 WAF<br \/>\n2.4 Environnement de d\u00e9veloppement<br \/>\n2.5 Programmation des sockets<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">chapitre 3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497478\/\">chapitre 4<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498372\/\">chapitre 5<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500170\/\">chapitre 6<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507472\/\">chapitre 7<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507770\/\">chapitres 8, 9<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/508218\/\">T\u00e9l\u00e9charger la traduction en un seul fichier pdf<\/a><\/noindex><\/p>\n<p><\/p>\n<p>La documentation principale pour le projet ns-3 est disponible sous cinq formes :<\/p>\n<p><\/p>\n<ul>\n<li>Documentation de l'API du simulateur : ns-3 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/doxygen\/index.html\">Doxygen<\/a><\/noindex>.<\/li>\n<li>Manuel, guide et biblioth\u00e8que de mod\u00e8les pour <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/documentation\/latest\/\">la derni\u00e8re version<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/ns-3-dev\/documentation\/\">arborescence de d\u00e9veloppement<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/wiki\/Main_Page\">Wiki<\/a><\/noindex> ns-3.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<h2 id=\"glava-1\">Chapitre 1<\/h2>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"predislovie\">Pr\u00e9face<\/h3>\n<p><\/p>\n<p>Le simulateur ns-3 est un simulateur de r\u00e9seau bas\u00e9 sur des \u00e9v\u00e9nements discrets, principalement destin\u00e9 \u00e0 la recherche et \u00e0 des fins \u00e9ducatives. Le projet d\u00e9veloppant ns-3 a \u00e9t\u00e9 lanc\u00e9 en 2006 et est un projet open source.<\/p>\n<p><\/p>\n<p>L'objectif de ce guide est de pr\u00e9senter ns-3 aux nouveaux utilisateurs de mani\u00e8re syst\u00e9matique et structur\u00e9e. Il peut parfois \u00eatre difficile pour un novice d'obtenir les informations n\u00e9cessaires et de les transformer en mod\u00e9lisation fonctionnelle. Dans ce guide, nous fournirons plusieurs exemples de mod\u00e9lisation, illustrant et expliquant les concepts cl\u00e9s et les caract\u00e9ristiques au fur et \u00e0 mesure.<\/p>\n<p><\/p>\n<p>Au fil de l'expos\u00e9, nous fournirons la documentation compl\u00e8te sur ns-3 et donnerons des liens vers le code source pour ceux qui souhaitent comprendre plus en profondeur le fonctionnement du syst\u00e8me.<\/p>\n<p><\/p>\n<p>Il convient de souligner plusieurs points cl\u00e9s :<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 a un code source ouvert, et le projet s'efforce de maintenir un environnement ouvert dans lequel les chercheurs peuvent contribuer et partager leurs r\u00e9alisations logicielles.<\/li>\n<li>ns-3 n'est pas une extension r\u00e9trocompatible de ns-2, c'est un nouveau simulateur. Les deux simulateurs sont \u00e9crits en C++, mais ns-3 est un nouveau simulateur qui ne prend pas en charge les interfaces API de ns-2.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"11-o-ns-3\">1.1 \u00c0 propos de ns-3<\/h3>\n<p><\/p>\n<p>Le simulateur ns-3 a \u00e9t\u00e9 d\u00e9velopp\u00e9 pour offrir une plateforme ouverte et extensible pour la mod\u00e9lisation de r\u00e9seaux, la recherche r\u00e9seau et l'\u00e9ducation. En r\u00e9sum\u00e9, ns-3 fournit des mod\u00e8les de la fa\u00e7on dont fonctionnent et sont mises en \u0153uvre les r\u00e9seaux de transmission de paquets et donne \u00e0 l'utilisateur un moteur de simulation pour effectuer des exp\u00e9riences de simulation. Les raisons d'utiliser ns-3 peuvent \u00eatre des situations o\u00f9 il est n\u00e9cessaire de mener une recherche qui est difficile ou impossible \u00e0 effectuer sur un syst\u00e8me r\u00e9el, la possibilit\u00e9 d'\u00e9tudier le comportement du syst\u00e8me dans un environnement strictement contr\u00f4l\u00e9, reproductible et d'apprendre comment fonctionnent les r\u00e9seaux. <\/p>\n<p><\/p>\n<p>Les utilisateurs remarqueront que l'ensemble de mod\u00e8les fourni dans ns-3 est ax\u00e9 sur la mod\u00e9lisation du fonctionnement des protocoles Internet et des r\u00e9seaux, mais ns-3 n'est pas limit\u00e9 aux syst\u00e8mes Internet; certains utilisateurs utilisent ns-3 pour mod\u00e9liser des syst\u00e8mes qui ne reposent pas sur des technologies Internet.<\/p>\n<p><\/p>\n<p>Il existe de nombreux outils de mod\u00e9lisation de r\u00e9seaux. Voici quelques caract\u00e9ristiques distinctives de ns-3 par rapport \u00e0 d'autres outils.<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 est con\u00e7u comme un ensemble de biblioth\u00e8ques pouvant \u00eatre combin\u00e9es entre elles, ainsi qu'avec d'autres biblioth\u00e8ques logicielles externes. Alors que certaines plateformes de mod\u00e9lisation offrent aux utilisateurs un environnement int\u00e9gr\u00e9 unique avec une interface graphique contr\u00f4lant l'ensemble du travail, ns-3 est plus modulaire \u00e0 cet \u00e9gard. Avec ns-3, plusieurs animateurs externes, outils d'analyse de donn\u00e9es et de visualisation peuvent \u00eatre utilis\u00e9s. N\u00e9anmoins, les utilisateurs doivent s'attendre \u00e0 travailler dans la ligne de commande et \u00e0 utiliser des outils de d\u00e9veloppement logiciel en C++ et\/ou Python.<\/li>\n<li>ns-3 est principalement utilis\u00e9 sur les syst\u00e8mes Linux ou macOS, bien qu'il existe un support pour les syst\u00e8mes BSD, ainsi que pour les plateformes Windows capables de compiler du code pour Linux, telles que Windows Subsystem for Linux ou Cygwin. La version native Windows Visual Studio n'est actuellement pas prise en charge, bien que le d\u00e9veloppeur travaille \u00e0 la mise en \u0153uvre de cette possibilit\u00e9. Les utilisateurs de Windows peuvent \u00e9galement utiliser une machine virtuelle Linux.<\/li>\n<li>ns-3 n'est pas un produit officiellement pris en charge par une entreprise quelconque. Le soutien de ns-3 est fourni avec un maximum d'efficacit\u00e9 sur le forum des utilisateurs de ns-3 (ns-3-users@googlegroups.com).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"12-dlya-polzovateley-ns-2\">1.2 Pour les utilisateurs de ns-2<\/h3>\n<p><\/p>\n<p>Pour ceux qui connaissent ns-2 (un outil populaire qui a pr\u00e9c\u00e9d\u00e9 ns-3), le changement le plus notable lors du passage \u00e0 ns-3 est le changement de langage de script. Les programmes ns-2 sont \u00e9crits en OTcl, et les r\u00e9sultats de simulation peuvent \u00eatre visualis\u00e9s \u00e0 l'aide de l'animateur de r\u00e9seaux nam. Il n'est pas possible de lancer une simulation exclusivement \u00e0 partir de C++ (c'est-\u00e0-dire comme programme main() sans aucune OTcl). De plus, certains composants de ns-2 sont \u00e9crits en C++ et d'autres en OTcl. Dans ns-3, le simulateur est enti\u00e8rement \u00e9crit en C++ avec des liaisons Python facultatives. Par cons\u00e9quent, les scripts de simulation peuvent \u00eatre \u00e9crits en C++ ou en Python. De nouveaux animateurs et visualisateurs sont disponibles et continuent d'\u00eatre d\u00e9velopp\u00e9s. Comme ns-3 g\u00e9n\u00e8re des fichiers de trace de paquets pcap, d'autres outils peuvent \u00e9galement \u00eatre utilis\u00e9s pour analyser les traces. Dans ce guide, nous nous concentrerons d'abord sur les sc\u00e9narios r\u00e9alis\u00e9s en C++ et l'interpr\u00e9tation des r\u00e9sultats via l'analyse des fichiers de trace.<\/p>\n<p><\/p>\n<p>Mais il existe aussi des podobie\u0144stwa (par exemple, les deux outils sont bas\u00e9s sur des objets C++, une partie du code de ns-2 a \u00e9t\u00e9 port\u00e9e dans ns-3). Au fil de l'expos\u00e9, nous tenterons de illustrer les diff\u00e9rences entre ns-2 et ns-3.<\/p>\n<p><\/p>\n<p>La question que nous entendons souvent : \"Dois-je continuer \u00e0 utiliser ns-2 ou passer \u00e0 ns-3 ?\" Selon l'auteur, si l'utilisateur n'est d'aucune mani\u00e8re attach\u00e9 \u00e0 ns-2 (bas\u00e9 sur un confort personnel et une connaissance de ns-2, ou en raison d'un mod\u00e8le d'imitation sp\u00e9cifique qui n'est disponible que dans ns-2), alors avec ns-3, il sera plus productif pour les raisons suivantes :<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 est activement soutenu avec une liste de diffusion d'utilisateurs active et r\u00e9active, tandis que ns-2 est seulement l\u00e9g\u00e8rement maintenu et n'a pas connu de changements significatifs dans son arbre de code principal depuis plus de dix ans.<\/li>\n<li>ns-3 fournit des fonctionnalit\u00e9s non disponibles dans ns-2, telles qu'un environnement d'ex\u00e9cution du code d'impl\u00e9mentation (permettant aux utilisateurs d'ex\u00e9cuter du code r\u00e9el dans le simulateur).<\/li>\n<li>ns-3 offre un niveau d'abstraction de base plus bas compar\u00e9 \u00e0 ns-2, ce qui lui permet de mieux correspondre \u00e0 la fa\u00e7on dont les syst\u00e8mes r\u00e9els interagissent. Certaines limitations trouv\u00e9es dans ns-2 (comme le soutien correct de plusieurs types d'interfaces sur un n\u0153ud) ont \u00e9t\u00e9 corrig\u00e9es dans ns-3.<\/li>\n<\/ul>\n<p><\/p>\n<p>Gr\u00e2ce \u00e0 son histoire longue, ns-2 poss\u00e8de un ensemble de modules pris en charge plus vari\u00e9 que ns-3. Cependant, ns-3 offre des mod\u00e8les plus d\u00e9taill\u00e9s dans plusieurs domaines de recherche populaires (y compris les mod\u00e8les complexes LTE et WiFi), et son support de l'impl\u00e9mentation du code permet une large gamme de mod\u00e8les de haute pr\u00e9cision. Les utilisateurs peuvent \u00eatre surpris d'apprendre que toute la pile r\u00e9seau Linux peut \u00eatre encapsul\u00e9e dans un n\u0153ud ns-3 en utilisant le cadre d'ex\u00e9cution directe de code (DCE). Les mod\u00e8les de ns-2 peuvent parfois \u00eatre port\u00e9s vers ns-3, surtout s'ils ont \u00e9t\u00e9 impl\u00e9ment\u00e9s en C++.<\/p>\n<p><\/p>\n<p>Si vous avez des doutes, il serait judicieux de jeter un \u0153il aux deux simulateurs (ainsi qu'\u00e0 d'autres simulateurs), en particulier aux mod\u00e8les disponibles pour votre recherche, mais gardez \u00e0 l'esprit que votre r\u00e9sultat pourrait \u00eatre am\u00e9lior\u00e9 en utilisant l'outil qui est actuellement activement d\u00e9velopp\u00e9 et support\u00e9 (ns-3).<\/p>\n<p><\/p>\n<h3 id=\"13-uchastie-v-proekte\">1.3 Participation au projet<\/h3>\n<p><\/p>\n<p>ns-3 est un simulateur scientifique et \u00e9ducatif pour la communaut\u00e9 de recherche. Il repose sur les contributions actuelles de la communaut\u00e9 au d\u00e9veloppement de nouveaux mod\u00e8les, au d\u00e9bogage ou \u00e0 la maintenance des mod\u00e8les existants et au partage des r\u00e9sultats. Il existe une certaine politique qui, esp\u00e9rons-le, encouragera les gens \u00e0 contribuer \u00e0 ns-3, comme ils le font pour ns-2 :<\/p>\n<p><\/p>\n<ul>\n<li>Licence open source bas\u00e9e sur la compatibilit\u00e9 avec la licence GNU GPLv2.<\/li>\n<li>wiki.<\/li>\n<li>Page <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pocoo.org\/\">Code des contributeurs<\/a><\/noindex>, similaire \u00e0 la page populaire de ns-2.<\/li>\n<li>Utilisation de GitLab.com, y compris le syst\u00e8me de suivi des bugs :<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Nous comprenons que m\u00eame si vous lisez ce document, vous ne pr\u00e9voyez peut-\u00eatre pas \u00e0 ce stade de contribuer. Mais nous souhaitons que vous sachiez que contribuer est dans l'esprit du projet et que votre retour, m\u00eame sur votre premi\u00e8re exp\u00e9rience avec ns-3 (par exemple, \"cette section du manuel n'\u00e9tait pas claire...\"), un signalement de documentation obsol\u00e8te ou un commentaire dans le code, etc., sera pr\u00e9cieux pour nous. La mani\u00e8re pr\u00e9f\u00e9r\u00e9e d'envoyer des corrections est soit de faire une branche (fork) sur <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex> Ce guide suppose que les nouveaux utilisateurs peuvent initialement suivre, par exemple, ce chemin :<\/p>\n<p><\/p>\n<h3 id=\"14-organizaciya-rukovodstva\">1.4 Organisation du guide<\/h3>\n<p><\/p>\n<p>Essayer de t\u00e9l\u00e9charger et de compiler une copie ;<\/p>\n<p><\/p>\n<ul>\n<li>Essayer d'ex\u00e9cuter quelques exemples de programmes ;<\/li>\n<li>Essayez de lancer plusieurs exemples de programmes;<\/li>\n<li>Voir le r\u00e9sultat de la simulation et essayer de l'ajuster.<br \/>\nEn fin de compte, nous avons essay\u00e9 d'organiser l'expos\u00e9 selon ces \u00e9tapes.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"glava-2\">Chapitre 2<\/h2>\n<p><\/p>\n<h2 id=\"istochniki-informacii\">Sources d'information<\/h2>\n<p><\/p>\n<h3 id=\"21-set\">2.1 R\u00e9seau<\/h3>\n<p><\/p>\n<p>Il existe plusieurs ressources importantes que tout utilisateur de ns-3 devrait conna\u00eetre. Le site web principal est situ\u00e9 \u00e0 l'adresse : <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\">https:\/\/www.nsnam.org<\/a><\/noindex><br \/>\net fournit un acc\u00e8s aux informations de base sur le syst\u00e8me ns-3. La documentation d\u00e9taill\u00e9e est disponible via le site web principal \u00e0 l'adresse : <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/documentation\/\">https:\/\/www.nsnam.org\/documentation\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Sur cette m\u00eame page web, vous pouvez \u00e9galement trouver des documents relatifs \u00e0 l'architecture du syst\u00e8me.<\/p>\n<p><\/p>\n<p>Il existe une page wiki qui compl\u00e8te le site web principal de ns-3, vous la trouverez \u00e0 l'adresse : <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/\">https:\/\/www.nsnam.org\/wiki\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Vous y trouverez des r\u00e9ponses aux questions fr\u00e9quentes pour les utilisateurs et les d\u00e9veloppeurs, ainsi que des guides de d\u00e9pannage, du code tiers, des documents, etc.<br \/>\nLe code source peut \u00eatre trouv\u00e9 et consult\u00e9 sur GitLab.com :<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/nsnam\/\">https:\/\/gitlab.com\/nsnam\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>L\u00e0 aussi, dans le d\u00e9p\u00f4t nomm\u00e9 <em>ns-3-dev<\/em> se trouve l'arbre de d\u00e9veloppement actuel. Des versions pr\u00e9c\u00e9dentes et des d\u00e9p\u00f4ts exp\u00e9rimentaux des d\u00e9veloppeurs du noyau peuvent \u00e9galement \u00eatre trouv\u00e9s sous Mercurial sur l'ancien site du projet \u00e0 l'adresse :<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/code.nsnam.org\">http:\/\/code.nsnam.org<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"22-git\">2.2 Git<\/h3>\n<p><\/p>\n<p>Les syst\u00e8mes logiciels complexes ont besoin d'un moyen de g\u00e9rer l'organisation et les modifications du code de base et de la documentation. Il existe plusieurs fa\u00e7ons d'y parvenir, et vous avez peut-\u00eatre entendu parler de certains des syst\u00e8mes g\u00e9n\u00e9ralement utilis\u00e9s \u00e0 cet effet. Jusqu'\u00e0 r\u00e9cemment, le projet ns-3 utilisait Mercurial comme syst\u00e8me de gestion de code source, mais en d\u00e9cembre 2018, nous avons chang\u00e9 pour utiliser Git. Bien que vous n'ayez pas besoin de beaucoup savoir sur Git pour lire ce guide, nous vous recommandons de vous familiariser avec celui-ci et de l'utiliser pour acc\u00e9der au code source. GitLab.com fournit des ressources pour acqu\u00e9rir les comp\u00e9tences de base \u00e0 l'adresse : <noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/ru\/v2\">https:\/\/git-scm.com\/book\/ru\/v2<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"23-waf\">2.3 WAF<\/h3>\n<p><\/p>\n<p>Une fois que vous avez t\u00e9l\u00e9charg\u00e9 le code source sur votre ordinateur, pour obtenir un programme pr\u00eat \u00e0 l'emploi, vous devrez le compiler. Tout comme pour la gestion du code source, de nombreux outils sont disponibles pour cette fonction. L'un des outils les plus connus est make. Il convient de noter que cet outil, bien qu'\u00e9tant le plus c\u00e9l\u00e8bre, s'av\u00e8re le plus compliqu\u00e9 \u00e0 utiliser dans un syst\u00e8me tr\u00e8s vaste et flexible. C'est la raison pour laquelle de nombreuses alternatives ont \u00e9t\u00e9 d\u00e9velopp\u00e9es. R\u00e9cemment, des syst\u00e8mes similaires ont \u00e9t\u00e9 cr\u00e9\u00e9s utilisant le langage Python.<\/p>\n<p><\/p>\n<p>Le projet ns-3 utilise le syst\u00e8me de construction Waf. Il s'agit d'une nouvelle g\u00e9n\u00e9ration de syst\u00e8mes de construction bas\u00e9s sur Python. Pour construire le syst\u00e8me ns-3 existant, vous n'aurez pas besoin de conna\u00eetre Python.<\/p>\n<p><\/p>\n<p>Pour ceux qui s'int\u00e9ressent aux d\u00e9tails d'utilisation de Waf, il existe un livre disponible \u00e0 l'adresse :<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/waf.io\/book\/\">https:\/\/waf.io\/book\/<\/a><\/noindex><br \/>\net le code actuel :<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/ita1024\/waf\/\">https:\/\/gitlab.com\/ita1024\/waf\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"24-sreda-razrabotki\">2.4 Environnement de d\u00e9veloppement<\/h3>\n<p><\/p>\n<p>Comme mentionn\u00e9 pr\u00e9c\u00e9demment, les scripts dans ns-3 sont ex\u00e9cut\u00e9s en C++ ou en Python. La majeure partie de l'API ns-3 est accessible en Python, mais les mod\u00e8les sont de toute fa\u00e7on \u00e9crits en C++. Ce guide suppose que vous \u00eates familier avec la programmation orient\u00e9e objet en C++. Au fur et \u00e0 mesure du d\u00e9veloppement, nous prendrons un moment pour examiner les concepts les plus avanc\u00e9s et peut-\u00eatre des aspects du langage qui vous sont inconnus, tels que les idiomes et les mod\u00e8les de conception. Nous ne voulons pas que ce guide se transforme en manuel de C++, donc nous nous attendons \u00e0 une connaissance de base de la langue. Il existe de nombreuses sources d'information sur C++ disponibles en ligne ou sur papier.<\/p>\n<p><\/p>\n<p>Si vous \u00eates novice en C++, alors avant de continuer, ma\u00eetrisez les bases du langage en utilisant un manuel ou un site Web consacr\u00e9 \u00e0 l'apprentissage ou \u00e0 des recettes pr\u00eates \u00e0 l'emploi. Par exemple, le suivant : <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ashtanyuk\/CPP-2018\">https:\/\/github.com\/ashtanyuk\/CPP-2018<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Sous Linux, le syst\u00e8me ns-3 utilise plusieurs composants des outils du projet GNU. Les outils sont un ensemble d'outils de programmation disponibles dans cet environnement logiciel. Pour un aper\u00e7u rapide de ce qui est inclus dans les outils GNU, voir. <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/GNU_toolchain\">http:\/\/en.wikipedia.org\/wiki\/GNU_toolchain<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Le simulateur ns-3 utilise gcc, GNU binutils et gdb. En m\u00eame temps, nous n'utilisons ni make ni autotools des outils GNU pour la construction du projet. Pour ces fonctions, nous utilisons Waf.<\/p>\n<p><\/p>\n<p>Sur macOS, un ensemble d'outils Xcode est utilis\u00e9. Les utilisateurs de ns-3 sur Mac sont fortement encourag\u00e9s \u00e0 installer Xcode et les paquets d'outils en ligne de commande depuis l'Apple App Store, et pour plus d'informations, veuillez consulter la page wiki d'installation de ns-3 : (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/Installation\">https:\/\/www.nsnam.org\/wiki\/Installation<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>G\u00e9n\u00e9ralement, l'auteur de ns-3 travaille dans un environnement Linux ou Unix-like. Pour ceux qui travaillent sous Windows, il existe des environnements qui imitent dans une certaine mesure l'environnement Linux. Pour ces utilisateurs, le projet ns-3 a pr\u00e9c\u00e9demment (mais ne prend plus en charge actuellement) soutenu le d\u00e9veloppement dans un environnement Cygwin. Pour des d\u00e9tails sur le t\u00e9l\u00e9chargement et plus d'informations sur Cygwin et ns-3, veuillez consulter la page wiki de ns-3 :<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.cygwin.com\/\">http:\/\/www.cygwin.com\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>MinGW n'est actuellement pas officiellement pris en charge. Une autre alternative \u00e0 Cygwin est d'installer un environnement virtuel, tel que VMware server, pour y installer Linux.<\/p>\n<p><\/p>\n<h3 id=\"25-programmirovanie-soketov\">2.5 Programmation des sockets<\/h3>\n<p><\/p>\n<p>Dans les exemples utilis\u00e9s dans ce guide, nous utiliserons les fonctionnalit\u00e9s de base de l'interface API des sockets Berkeley. Si vous \u00eates novice en sockets, nous vous recommandons de vous familiariser avec l'API et certains cas d'utilisation courants. Pour un bon aper\u00e7u de la programmation des sockets TCP\/IP, nous recommandons : \"TCP\/IP Sockets in C\", Donahoo et Calvert.<\/p>\n<p><\/p>\n<p>Il existe un site web associ\u00e9 qui contient la source d'exemples du livre, que vous pouvez trouver \u00e0 l'adresse :<br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/cs.baylor.edu\/~donahoo\/practical\/CSockets\/\">http:\/\/cs.baylor.edu\/~donahoo\/practical\/CSockets\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Si vous comprenez les quatre premiers chapitres du livre (ou pour ceux qui n'ont pas acc\u00e8s \u00e0 une copie du livre, les clients et serveurs \u00e9cho montr\u00e9s sur le site web via le lien ci-dessus), cela sera suffisant pour comprendre le tutoriel. Il existe un livre similaire<br \/>\n\"Multicast Sockets, Multicast Sockets\", Makofske et Almeroth.<\/p>\n<p><\/p>\n<p>Il couvre le mat\u00e9riel dont vous pourriez avoir besoin si vous envisagez d'\u00e9tudier dans le cadre du distributeur des exemples de diffusion multidiffusion.<\/p>\n<p><\/p>\n<p>Suite : <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">chapitre 3<\/a><\/noindex><\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497106\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release ns-3.29&quot; \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0435\u0439 ns-3. \u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 reStructuredText \u0434\u043b\u044f Sphinx \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 doc\/tutorial \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 ns-3. 1 \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 1.1 \u041e ns-3 1.2 \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 ns-2 1.3 \u0423\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 1.4 \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 2 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86560,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86559","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0438 ns-3. \u0413\u043b\u0430\u0432\u044b 1,2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-26T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-26T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tutoriel sur le simulateur de r\u00e9seau ns-3. Chapitres 1,2 | ProHoster","description":"Cet article inaugure une s\u00e9rie de publications avec la traduction du tutoriel \"ns-3 Tutorial Release.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u0435\u0442\u0438 ns-3. \u0413\u043b\u0430\u0432\u044b 1,2 | ProHoster","og:description":"\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 &quot;ns-3 Tutorial Release.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-26T17:42:13+00:00","article:modified_time":"2020-06-26T17:42:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86559","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:48:32","updated":"2022-09-30 06:25:10","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/86559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=86559"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/86559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/86560"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=86559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=86559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=86559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}