{"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\/it\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","title":{"rendered":"Manuale per il simulatore di rete ns-3. Capitoli 1,2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Questo articolo apre una serie di pubblicazioni con la traduzione del libro \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/docs\/release\/3.30\/tutorial\/ns-3-tutorial.pdf\">ns-3 Tutorial Release ns-3.29<\/a><\/noindex>\" sul simulatore di rete ns-3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Manuale per il simulatore di rete ns-3. Capitoli 1,2\" src=\"\/wp-content\/uploads\/2020\/06\/cddee391ba8763baab6eaa185e081bf6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questo documento \u00e8 la traduzione di un documento originale in inglese, scritto in <noindex><a rel=\"nofollow\" href=\"http:\/\/docutils.sourceforge.net\/rst.html\">reStructuredText<\/a><\/noindex> per <noindex><a rel=\"nofollow\" href=\"http:\/\/sphinx.pocoo.org\/\">Sphinx<\/a><\/noindex> e si trova nella directory <em>doc\/tutorial<\/em> del codice sorgente di ns-3.<\/p>\n<p><\/p>\n<p>1 Introduzione<br \/>\n1.1 Su ns-3<br \/>\n1.2 Per gli utenti di ns-2<br \/>\n1.3 Partecipazione al progetto<br \/>\n1.4 Organizzazione della guida<br \/>\n2 Fonti di informazione<br \/>\n2.1 Rete<br \/>\n2.2 Git<br \/>\n2.3 WAF<br \/>\n2.4 Ambiente di sviluppo<br \/>\n2.5 Programmazione dei socket<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">capitolo 3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497478\/\">capitolo 4<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/498372\/\">capitolo 5<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500170\/\">capitolo 6<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507472\/\">Capitolo 7<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/507770\/\">capitoli 8, 9<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/508218\/\">Scarica la traduzione in un unico file pdf<\/a><\/noindex><\/p>\n<p><\/p>\n<p>La documentazione primaria per il progetto ns-3 \u00e8 disponibile in cinque formati:<\/p>\n<p><\/p>\n<ul>\n<li>Documentazione API del simulatore: ns-3 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/doxygen\/index.html\">Doxygen<\/a><\/noindex>.<\/li>\n<li>Guida, manuale e biblioteca di modelli per <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/documentation\/latest\/\">versione finale<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"http:\/\/www.nsnam.org\/ns-3-dev\/documentation\/\">l'albero di sviluppo<\/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\">Capitolo 1<\/h2>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"predislovie\">Introduzione<\/h3>\n<p><\/p>\n<p>Il simulatore ns-3 \u00e8 un simulatore di rete a eventi discreti, progettato principalmente per la ricerca e l'uso educativo. Il progetto che sviluppa ns-3 \u00e8 iniziato nel 2006 ed \u00e8 un progetto open source.<\/p>\n<p><\/p>\n<p>L'obiettivo di questa guida \u00e8 presentare ns-3 ai nuovi utenti in modo sistematico e strutturato. A volte, i principianti possono avere difficolt\u00e0 a ottenere le informazioni necessarie e a convertirle in una modellazione efficace. In questa guida, implementeremo diversi esempi di modellazione, illustrando e spiegando nel contempo i concetti chiave e le caratteristiche.<\/p>\n<p><\/p>\n<p>Man mano che procediamo, presenteremo la documentazione completa su ns-3 e forniremo collegamenti al codice sorgente per coloro che sono interessati a una comprensione pi\u00f9 approfondita del funzionamento del sistema.<\/p>\n<p><\/p>\n<p>Iniziamo con alcuni punti chiave:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 ha codice sorgente aperto, il progetto cerca di mantenere un ambiente aperto in cui i ricercatori possono contribuire e condividere i loro sviluppi software.<\/li>\n<li>ns-3 non \u00e8 un'estensione retrocompatibile di ns-2, \u00e8 un nuovo simulatore. Entrambi i simulatori sono scritti in C++, ma ns-3 \u00e8 un nuovo simulatore che non supporta le API di ns-2.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"11-o-ns-3\">1.1 Su ns-3<\/h3>\n<p><\/p>\n<p>Il simulatore ns-3 \u00e8 stato sviluppato per fornire una piattaforma aperta e scalabile per la modellazione delle reti, la ricerca sulle reti e l'istruzione. In breve, ns-3 offre modelli di come sono implementate e funzionano le reti di trasferimento pacchetti e fornisce all'utente un motore di simulazione per eseguire esperimenti di simulazione. Le ragioni per utilizzare ns-3 possono includere situazioni in cui \u00e8 necessario condurre una ricerca difficile o impossibile da effettuare su un sistema reale, la possibilit\u00e0 di studiare il comportamento del sistema in un ambiente rigorosamente controllato e riproducibile, oltre a conoscere il funzionamento delle reti. <\/p>\n<p><\/p>\n<p>Gli utenti noteranno che il set di modelli fornito in ns-3 \u00e8 focalizzato sulla simulazione del funzionamento dei protocolli Internet e delle reti, ma ns-3 non \u00e8 limitato solo ai sistemi Internet; alcuni utenti utilizzano ns-3 per la simulazione di sistemi non basati su tecnologie Internet.<\/p>\n<p><\/p>\n<p>Esistono molti strumenti per la simulazione delle reti. Di seguito sono riportate alcune caratteristiche distintive di ns-3 rispetto ad altri strumenti.<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 \u00e8 progettato come una serie di librerie che possono essere combinate tra loro e con altre librerie software esterne. Mentre alcune piattaforme di simulazione forniscono agli utenti un ambiente integrato unico con un'interfaccia grafica che gestisce l'intero lavoro, ns-3 \u00e8 pi\u00f9 modulare in questo senso. Con ns-3 possono essere utilizzati diversi animatori esterni, strumenti di analisi dei dati e visualizzazione. Tuttavia, gli utenti sono chiamati a lavorare da riga di comando e con strumenti di sviluppo software C++ e\/o Python.<\/li>\n<li>ns-3 \u00e8 principalmente utilizzato su sistemi Linux o macOS, anche se esiste supporto per sistemi BSD, cos\u00ec come per piattaforme Windows in grado di compilare codice per Linux, come Windows Subsystem per Linux o Cygwin. Visual Studio nativo per Windows non \u00e8 attualmente supportato, anche se il sviluppatore sta lavorando per implementare questa funzionalit\u00e0. Gli utenti Windows possono anche utilizzare una macchina virtuale con Linux.<\/li>\n<li>ns-3 non \u00e8 un prodotto ufficialmente supportato da alcuna azienda. Il supporto per ns-3 \u00e8 fornito nella massima misura possibile sul forum degli utenti di ns-3 (ns-3-users@googlegroups.com).<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"12-dlya-polzovateley-ns-2\">1.2 Per gli utenti di ns-2<\/h3>\n<p><\/p>\n<p>Per chi conosce ns-2 (un popolare strumento preceduto da ns-3), il cambiamento pi\u00f9 evidente passando a ns-3 \u00e8 il cambio del linguaggio di scripting. I programmi in ns-2 sono scritti in OTcl e i risultati della simulazione possono essere visualizzati utilizzando l'animatore di rete nam. In ns-2 non \u00e8 possibile eseguire una simulazione esclusivamente da C++ (cio\u00e8 come programma main() senza alcun OTcl). Inoltre, alcuni componenti di ns-2 sono scritti in C++, mentre altri sono in OTcl. In ns-3, il simulatore \u00e8 scritto interamente in C++ con binding Python opzionali. Pertanto, gli script di simulazione possono essere scritti sia in C++ che in Python. Sono disponibili nuovi animatori e visualizzatori e continuano a essere sviluppati. Poich\u00e9 ns-3 genera file di tracciamento dei pacchetti pcap, altre utility possono essere utilizzate anche per analizzare le tracce. In questa guida, ci concentreremo prima sugli script implementati in C++ e sull'interpretazione dei risultati attraverso l'analisi dei file di tracciamento.<\/p>\n<p><\/p>\n<p>Ma ci sono anche somiglianze (ad esempio, entrambi gli strumenti si basano su oggetti C++, parte del codice di ns-2 \u00e8 stato portato in ns-3). Mentre esponiamo, cercheremo di mostrare le differenze tra ns-2 e ns-3.<\/p>\n<p><\/p>\n<p>Una domanda che sentiamo spesso \u00e8: \"Devo continuare a usare ns-2 o passare a ns-3?\" Secondo l'autore, se l'utente non \u00e8 legato in alcun modo a ns-2 (basato su un comfort personale esistente e la conoscenza di ns-2, oppure su un modello di simulazione specifico disponibile solo in ns-2), allora con ns-3 sar\u00e0 pi\u00f9 produttivo per i seguenti motivi:<\/p>\n<p><\/p>\n<ul>\n<li>ns-3 \u00e8 attivamente supportato con una lista di distribuzione utenti attiva e reattiva, mentre ns-2 \u00e8 supportato solo leggermente e non ha visto cambiamenti significativi nel suo albero di codice principale per oltre dieci anni.<\/li>\n<li>ns-3 offre funzionalit\u00e0 non disponibili in ns-2, come l'ambiente di esecuzione del codice di implementazione (che consente agli utenti di eseguire codice di implementazione reale nel simulatore).<\/li>\n<li>ns-3 fornisce un livello base di astrazione pi\u00f9 basso rispetto a ns-2, consentendo di adattarsi meglio al modo in cui i sistemi reali interagiscono. Alcune limitazioni riscontrate in ns-2 (ad esempio, il supporto corretto di pi\u00f9 tipi di interfacce su un nodo) sono state corrette in ns-3.<\/li>\n<\/ul>\n<p><\/p>\n<p>Grazie alla sua lunga storia, ns-2 ha un insieme di moduli supportati pi\u00f9 variegato rispetto a ns-3. Tuttavia, ns-3 ha modelli pi\u00f9 dettagliati in vari ambiti di ricerca popolari (inclusi complessi modelli LTE e WiFi); il suo supporto alla codifica di implementazione consente un'ampia variet\u00e0 di modelli di alta precisione. Gli utenti potrebbero rimanere sorpresi nell'apprendere che l'intero stack di rete Linux pu\u00f2 essere incorporato in un nodo ns-3 utilizzando il framework di esecuzione diretta del codice (DCE). I modelli di ns-2 possono a volte essere portati in ns-3, specialmente se sono stati implementati in C++.<\/p>\n<p><\/p>\n<p>Se hai dei dubbi, sarebbe una buona idea dare un'occhiata a entrambi gli emulatori (cos\u00ec come ad altri emulatori), in particolare ai modelli disponibili per la tua ricerca; ricorda per\u00f2 che il tuo risultato potrebbe essere migliore utilizzando uno strumento che attualmente \u00e8 attivamente sviluppato e supportato (ns-3).<\/p>\n<p><\/p>\n<h3 id=\"13-uchastie-v-proekte\">1.3 Partecipazione al progetto<\/h3>\n<p><\/p>\n<p>ns-3 \u00e8 un simulatore scientifico e educativo per la comunit\u00e0 di ricerca. Si baser\u00e0 sul contributo attuale della comunit\u00e0 nello sviluppo di nuovi modelli, debug o supporto di quelli esistenti e nella condivisione dei risultati. Ci sono alcune politiche che, si spera, incoraggeranno le persone a contribuire a ns-3 come fanno con ns-2:<\/p>\n<p><\/p>\n<ul>\n<li>Licenza open source basata su compatibilit\u00e0 con la licenza GNU GPLv2.<\/li>\n<li>wiki.<\/li>\n<li>Pagina <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pocoo.org\/\">Codice dei collaboratori<\/a><\/noindex>, simile alla popolare pagina per ns-2.<\/li>\n<li>Utilizzo di GitLab.com, inclusa la gestione dei bug:<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>Comprendiamo che anche se stai leggendo questo documento, potresti non avere intenzione di contribuire a esso in questa fase. Ma vogliamo che tu sappia che contribuire \u00e8 nello spirito del progetto e che il tuo feedback, anche sulla tua prima esperienza con ns-3 (ad esempio, \"questa sezione del manuale non era chiara ...\"), il segnalare documentazione obsoleta o commenti nel codice, e cos\u00ec via, sono preziosi per noi... Il modo preferito per inviare correzioni \u00e8 fare un fork su <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gitlab.com\/nsnam\">https:\/\/www.gitlab.com\/nsnam<\/a><\/noindex> con le tue correzioni e creare una richiesta di merge, oppure aprire una segnalazione sul nostro tracker e aggiungere un patch.<\/p>\n<p><\/p>\n<h3 id=\"14-organizaciya-rukovodstva\">1.4 Organizzazione della guida<\/h3>\n<p><\/p>\n<p>Questa guida presume che i nuovi utenti possano inizialmente seguire un percorso come il seguente:<\/p>\n<p><\/p>\n<ul>\n<li>Provare a scaricare e compilare una copia;<\/li>\n<li>Provare a eseguire alcuni esempi di programmi;<\/li>\n<li>Guarda il risultato della simulazione e prova ad adattarlo.<br \/>\nAlla fine, abbiamo cercato di organizzare l'esposizione secondo questi passaggi.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"glava-2\">Capitolo 2<\/h2>\n<p><\/p>\n<h2 id=\"istochniki-informacii\">Fonti di informazione<\/h2>\n<p><\/p>\n<h3 id=\"21-set\">2.1 Rete<\/h3>\n<p><\/p>\n<p>Ci sono alcuni importanti risorse di cui ogni utente di ns-3 dovrebbe essere a conoscenza. Il sito web principale si trova all'indirizzo: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\">https:\/\/www.nsnam.org<\/a><\/noindex><br \/>\ne offre accesso a informazioni di base sul sistema ns-3. La documentazione dettagliata \u00e8 disponibile tramite il sito web principale all'indirizzo: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/documentation\/\">https:\/\/www.nsnam.org\/documentation\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Nella stessa pagina web puoi trovare anche documenti relativi all'architettura del sistema.<\/p>\n<p><\/p>\n<p>Esiste una pagina wiki che integra il sito web principale di ns-3, che puoi trovare all'indirizzo: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nsnam.org\/wiki\/\">https:\/\/www.nsnam.org\/wiki\/<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>L\u00ec troverai risposte alle domande frequenti per utenti e sviluppatori, oltre a guide per la risoluzione dei problemi, codice di terze parti, documenti, ecc.<br \/>\nIl codice sorgente pu\u00f2 essere trovato e visualizzato su 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\u00ec nello repository chiamato <em>ns-3-dev<\/em> si trova l'attuale albero di sviluppo. Le versioni passate e i repository sperimentali degli sviluppatori del kernel possono essere trovati anche sotto Mercurial sul vecchio sito del progetto all'indirizzo:<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>I sistemi software complessi necessitano di un modo per gestire l'organizzazione e la modifica del codice sorgente e della documentazione. Ci sono molti modi per farlo, e potresti aver sentito parlare di alcuni dei sistemi comunemente utilizzati per questo. Fino a poco tempo fa, il progetto ns-3 utilizzava Mercurial come sistema di gestione del codice sorgente, ma a dicembre 2018, siamo passati a utilizzare Git. Anche se per leggere questa guida non \u00e8 necessario avere molta familiarit\u00e0 con Git, ti consigliamo di prenderne confidenza e di usarlo per accedere al codice sorgente. GitLab.com offre risorse per acquisire le competenze di base all'indirizzo: <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>Dopo aver scaricato il codice sorgente sul computer, per ottenere un programma pronto per l'uso, sar\u00e0 necessario compilarlo. Come nel caso della gestione del codice sorgente, ci sono molti strumenti disponibili per eseguire questa funzione. Probabilmente, lo strumento pi\u00f9 noto di questi \u00e8 make. Anche se questo strumento \u00e8 il pi\u00f9 conosciuto, va notato che risulta essere il pi\u00f9 complesso da utilizzare in un sistema molto grande e flessibile. Questo ha portato allo sviluppo di molte alternative. Recentemente, sono stati sviluppati diversi sistemi utilizzando il linguaggio Python.<\/p>\n<p><\/p>\n<p>Nel progetto ns-3 viene utilizzato il sistema di build Waf. \u00c8 una delle nuove generazioni di sistemi di build basati su Python. Per compilare il sistema esistente ns-3, non \u00e8 necessario conoscere Python.<\/p>\n<p><\/p>\n<p>Per coloro che sono interessati ai dettagli sull'uso di Waf, \u00e8 disponibile un libro all'indirizzo:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/waf.io\/book\/\">https:\/\/waf.io\/book\/<\/a><\/noindex><br \/>\ne il codice corrente:<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 Ambiente di sviluppo<\/h3>\n<p><\/p>\n<p>Come gi\u00e0 accennato, gli script in ns-3 vengono eseguiti in C++ o Python. La maggior parte dell'API di ns-3 \u00e8 disponibile in Python, ma i modelli sono comunque scritti in C++. Questo manuale presuppone che tu abbia familiarit\u00e0 con la programmazione orientata agli oggetti in C++. Man mano che procederemo, dedicheremo del tempo a rivedere i concetti pi\u00f9 avanzati e, possibilmente, caratteristiche poco familiari del linguaggio come le idiomi e i modelli di design. Non vogliamo che questo manuale diventi un testo di C++, quindi ci aspettiamo una conoscenza di base del linguaggio. Ci sono molte fonti di informazioni su C++ disponibili online o in forma cartacea.<\/p>\n<p><\/p>\n<p>Se sei un principiante in C++, prima di continuare, apprendi le basi del linguaggio utilizzando un manuale o un sito web dedicato all'insegnamento o a ricette pronte. Ad esempio, uno come: <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>Su Linux, il sistema ns-3 utilizza diversi componenti degli strumenti del progetto GNU. Gli strumenti sono un insieme di strumenti di programmazione disponibili in questo ambiente software. Per una panoramica rapida degli strumenti GNU consulta. <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>Il simulatore ns-3 utilizza gcc, GNU binutils e gdb. Allo stesso tempo, non utilizziamo per la compilazione del progetto n\u00e9 make n\u00e9 autotools degli strumenti GNU. Per queste funzioni utilizziamo Waf.<\/p>\n<p><\/p>\n<p>In macOS viene utilizzato il set di strumenti Xcode. Gli utenti ns-3 su Mac sono fortemente invitati a installare Xcode e i pacchetti degli strumenti della riga di comando dall'Apple App Store e, per ulteriori informazioni, visitare la pagina wiki sull'installazione di 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>Di solito, l'autore di ns-3 lavora in un ambiente Linux o Unix-like. Per coloro che lavorano su Windows, ci sono ambienti che simulano in varia misura l'ambiente Linux. Per questi utenti, il progetto ns-3 in passato (ma non attualmente) ha supportato lo sviluppo nell'ambiente Cygwin. Per ulteriori dettagli sul download e informazioni aggiuntive su Cygwin e ns-3, visitare la pagina wiki di 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 attualmente non \u00e8 ufficialmente supportato. Un'altra alternativa a Cygwin \u00e8 l'installazione di un ambiente virtuale, come VMware server, dove installare Linux.<\/p>\n<p><\/p>\n<h3 id=\"25-programmirovanie-soketov\">2.5 Programmazione dei socket<\/h3>\n<p><\/p>\n<p>Negli esempi utilizzati in questa guida, utilizzeremo le capacit\u00e0 di base dell'API dei socket di Berkeley. Se sei un principiante con i socket, ti consigliamo di familiarizzarti con l'API e alcuni casi d'uso comuni. Come buona panoramica sulla programmazione dei socket TCP\/IP, ti consigliamo di leggere: \"TCP\/IP Sockets in C\", Donahoo e Calvert.<\/p>\n<p><\/p>\n<p>Esiste un sito web correlato che contiene una raccolta di esempi tratti dal libro, che puoi trovare all'indirizzo:<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>Se comprendi i primi quattro capitoli del libro (o per coloro che non hanno accesso a una copia del libro, i client e i server echo mostrati sul sito web al link sopra), questo sar\u00e0 sufficiente per comprendere il tutorial. C'\u00e8 un libro simile<br \/>\n\"Multicast Sockets, Multicast Sockets\", Makofske e Almeroth.<\/p>\n<p><\/p>\n<p>Esso copre il materiale che potresti avere bisogno di studiare nel pacchetto di esempi di multicast.<\/p>\n<p><\/p>\n<p>Continua: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497318\/\">capitolo 3<\/a><\/noindex><\/p>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Tutorial sul simulatore di rete ns-3. Capitoli 1,2 | ProHoster","description":"Questo articolo apre una serie di pubblicazioni con la traduzione del tutorial \"ns-3 Tutorial Release.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/uchebnik-po-simulyatoru-seti-ns-3-glavy-12","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/86559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=86559"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/86559\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/86560"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=86559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=86559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=86559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}