Esame di stato 2008
Classe quinta – V A Informatica
Ceccarelli Francesco
GNU/Linux e le reti TCP/IP
Via L. Pacioli, 22 - 61029, Urbino
Tel. 0722-328021 Fax 0722-320179
E-mail: itis@emattei-urbino.it
Sito internet: www.emattei-urbino.it
Indice
Il software libero ................................................................................................................ 3
Filosofia .................................................................................................................................. 4
Storia ..................................................................................................................................... 5
Il sistema operativo GNU/Linux ....................................................................................... 7
Shell ....................................................................................................................................... 9
File system ........................................................................................................................... 11
Utenti e permessi ................................................................................................................. 12
Gestione del software .......................................................................................................... 14
Lo stack TCP/IP ................................................................................................................. 16
Livello fisico ......................................................................................................................... 18
Mezzi metallici ................................................................................................................ 18
Mezzi wireless ................................................................................................................ 19
Mezzi ottici ..................................................................................................................... 20
Livello linea .......................................................................................................................... 21
LLC ................................................................................................................................. 21
MAC ................................................................................................................................ 21
Controller di rete ............................................................................................................ 23
Livello rete ........................................................................................................................... 24
IP .................................................................................................................................... 24
DHCP .............................................................................................................................. 27
Routing ........................................................................................................................... 28
ICMP ............................................................................................................................... 29
ARP ................................................................................................................................. 31
Livello trasporto ................................................................................................................... 33
Porte e socket ................................................................................................................ 34
UDP ................................................................................................................................ 35
TCP ................................................................................................................................. 36
Monitoraggio delle connessioni ...................................................................................... 37
Livello applicazione .............................................................................................................. 38
DNS ................................................................................................................................ 38
HTTP ............................................................................................................................... 40
Posta elettronica ............................................................................................................ 42
FTP ................................................................................................................................. 44
Telnet & SSH .................................................................................................................. 45
La sicurezza ...................................................................................................................... 48
Firewall ................................................................................................................................ 49
Port-scanning ....................................................................................................................... 52
Sniffing ................................................................................................................................. 54
CECCARELLI Francesco Pagina 2 di 56 sabato 5 luglio 2008
Parte I
Il software libero
CECCARELLI Francesco Pagina 3 di 56 sabato 5 luglio 2008
Al giorno d'oggi abbiamo quasi tutti a che fare, in molteplici situazioni, con il software libero. Talvolta anche inconsapevolmente. Penso però che pochi sappiano cos'è e cosa caratterizza il software libero. È perciò necessaria una premessa generale, che ci faccia capire bene di cosa stiamo parlando, prima di addentrarci nei meandri del maggior esponente di questa vera e propria corrente filosofica dell'informatica odierna: il sistema operativo GNU/Linux.
Filosofia
Quando una persona compra o scarica un programma proprietario essa non lo possiede veramente: non è infatti di sua proprietà ma gli viene concesso in licenza d'utilizzo, facendo in modo che prima di installare il programma egli accetti un'EULA (End User License Agreement). Tutto ciò indipendentemente dal costo del programma: dalle piccole tool freeware all'ultima versione di Adobe Photoshop.
Quando invece una persona ottiene una copia di un software libero, ottiene non solo il programma compilato ma anche i suoi codici sorgenti. In questo modo diventa lui stesso il vero proprietario del programma, con la possibilità di modificare, redistribuire e utilizzare il programma stesso per qualsiasi scopo. Ma attenzione, questo, come molti potrebbero pensare, non costringe schiere e schiere di programmatori a lavorare gratis. Il lavoro va pagato. Libero infatti non vuol dire gratis, come molti pensano. Molti programmi liberi sono gratuiti in versione ridotta, ma devono essere regolarmente acquistati se si vuole accedere alle versioni cosiddette Enterprise. Per altri invece è gratuito il download del software da Internet, mentre se si vogliono ottenere i CD originali, completi di assistenza a lungo termine, si deve regolarmente pagare. L'unico vincolo che viene imposto sul software libero è che se un ipotetico acquirente dovesse ottenere un programma di questo genere, dovesse modificarlo e poi redistribuirlo, egli deve per forza continuare a rispettare il canone della licenza libera, segnalando questo all'autore.
La licenza per eccellenza dei programmi liberi è la GNU General Public License (GPL), redatta proprio dalla famosa associazione di Richard Stallman, pioniere del concetto di copyleft, ovvero la facoltà di una persona di copiare e redistribuire liberamente il programma, in opposizione al concetto di copyright.
La GNU GPL garantisce infatti le cinque libertà fondamentali che il software libero deve rispettare per fregiarsi di questo nome:
- Libertà 0: libertà di eseguire il programma, per qualsiasi scopo;
- Libertà 1: libertà di studiare come funziona il programma e adattarlo alle proprie necessità;
- Libertà 2: libertà di ridistribuire copie;
- Libertà 3: libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.
Queste libertà sono alla base della GPL e hanno sempre e comunque come prerequisito fondamentale quello della distribuzione del programma assieme ai sorgenti; solo questo sistema inoltre permette di essere i veri proprietari del programma acquistato, lasciando comunque all'autore la legittima facoltà di trarre guadagno dal proprio lavoro. Ed oggi i programmi che adottano questo tipo di licenza sono veramente tanti, e la loro presenza sta crescendo esponenzialmente, anche a causa dei molteplici errori commessi dalle grandi case di software proprietario. Mi riferisco per esempio a programmi come Mozilla Firefox: infatti quest'ultimo in pochi anni ha conquistato più di un quarto del mercato europeo, forte della sua licenza libera, che gli permette una maggiore invulnerabilità a bug critici e di sicurezza (ricordo che infatti i sorgenti essendo liberi possono essere visionati da tutti e gli errori possono essere più facilmente individuati e corretti), una compatibilità e leggerezza senza confronti (la Mozilla Foundation non ha infatti stipulato nessun accordo con nessuna casa produttrice di hard disk) e il vantaggio di essere completamente gratuito, a meno di volontarie donazioni. Inoltre questo modello libero continua a stupire ovunque: ricordo la diffusione capillare del CMS Wordpress e l'oramai indispensabile fonte di sapere che rappresenta Wikipedia, in cui tutti posso accedere e scrivere articoli per il bene di tutti, e dove è praticamente impossibile assistere ad errori, involontari e non: infatti questi possono durare solo pochi minuti, prima che qualcuno si accorga e sostituisca tutto con le giuste informazioni. Infine, per ultimo, è importante citare anche la piattaforma Apache-PHP, che al giorno d'oggi è la più utilizzata al mondo, a discapito del rivale Microsoft IIS e della nuovissima piattaforma .NET.
Per concludere il modello del software libero è ormai un fenomeno che gli informatici moderni non possono ignorare: ma il suo successo non è dovuto solo all'apparente costo zero che offre, ma anche alla maggiore sicurezza e stabilità, diretta conseguenza dei principi GPL, che le case proprietarie si rifiutano di offrire. Chiaro, ancora i vecchi “standard de facto” come il sistema operativo Microsoft Windows e la suite Microsoft Office risultano gli indiscriminati dominatori del mercato. Ma non è possibile sottovalutare un modo di concepire l'informatica come quello dei programmi liberi, che stanno piano piano crescendo e conquistando sempre più PC.
Storia
Fino agli anni '70 i personal computer non esistevano e l'informatica era cosa solo per i ricercatori universitari. Non esisteva ancora la differenza tra software proprietari e non, poiché tutti i programmatori collaboravano scambiandosi i propri sorgenti.
Dagli anni '80 invece, con l'avvento dei primi PC, lo sviluppo software passò nelle mani delle aziende, che cominciarono a produrre software per PC: nacquero così i primi software proprietari, che impedivano agli utenti di utilizzare come meglio credevano i loro programmi. Nel frattempo però, Richard Stallman, che lavorava al Massachusetts Institute of Technology (MIT), si accorse di questo fenomeno, e decise, nel 1985, di istituire la Free Software Foundation (FSF), al fine di eliminare le restrizioni sulla copia, sulla redistribuzione, sulla comprensione, sulla modifica dei programmi e, soprattutto, di portare avanti il progetto GNU (GNu's Not Unix). Quest'ultimo prevedeva lo sviluppo di un sistema operativo completamente libero e capace di sostituire in tutto e per tutto qualsiasi altro sistema e programma proprietario: già nel 1990 il progetto poteva vantare infatti un editor di testo (Emacs), un compilatore (GCC), un debugger (GDB) e varie librerie per la programmazione in C. Ma mancava ancora la parte fondamentale del sistema operativo: il kernel. I lavori per il kernel in realtà erano già cominciati nel 1986, ma a dire il vero ancora oggi il nucleo di GNU (chiamato HURD) non è ancora pronto ad essere utilizzato.
Parallelamente a tutto ciò uno studente dell'università di Helsinki, Linus Torvalds, si era ormai stancato dell'incompatibilità del sistema operativo Minix con il suo computer, che montava il nuovo processore Intel 80386 a 32 bit.
CECCARELLI Francesco Pagina 5 di 56 sabato 5 luglio 2008
Decise così, un po' per studio, un po' per gioco, di sviluppare un nuovo kernel, che lui prima chiamò Freax, ma che poi si tramutò in Linux. Così il giovane programmatore decise di informarsi sugli standard POSIX, pensando che il suo nuovo kernel doveva divenire Unix-like, ma che doveva avere una licenza che permettesse ai suoi utenti di modificarne e adattarne il codice come meglio volevano. Torvalds così, quando decise di caricare su un server FTP pubblico il codice dei piccoli ed instabili moduli da lui sviluppati, distribuì i propri sorgenti sotto la licenza GNU GPL, riuscendo ad ottenere l'aiuto di programmatori da tutto il mondo. Essi ottimizzarono il kernel per applicativi GNU e vi associarono la shell BASH: nacque così il primo sistema operativo GNU completo, che prese il nome di GNU/Linux.
Le release cominciarono poi ad avvicendarsi in fretta e nel 1994 ne uscì finalmente la prima versione stabile. Inoltre, il progetto fu proprio in questo periodo inglobato da diverse aziende di software, che, grazie alla licenza GPL, decisero di portare avanti progetti propri, senza però modificare i termini di licenza: nacquero così le prime distribuzioni.
CECCARELLI Francesco Pagina 6 di 56 sabato 5 luglio 2008
Parte II
Il sistema operativo GNU/Linux
CECCARELLI Francesco Pagina 7 di 56 sabato 5 luglio 2008
Abbiamo, nel capitolo precedente, introdotto il concetto di distribuzione, ma ancora non l'abbiamo ufficialmente definito. Una distribuzione è un sistema operativo completo di kernel Linux, software libero GNU, documentazioni, manuali, un sistema di installazione guidato per utenti meno esperti e talvolta anche software commerciale. Esse vengono per lo più distribuite gratis via Internet e hanno permesso l'allargamento del bacino di utenza di GNU/Linux; prima infatti il sistema operativo era usato solo dai guru dell'informatica, mentre con l'avvento delle prime “distro” (come si chiamano in gergo) anche utenti meno competenti poterono avvicinarsi a GNU/Linux.
Al giorno d'oggi esistono quasi 300 distribuzioni differenti, per lo più nate da fork di altri progetti, che differiscono tra loro solo per il parco software che mettono a disposizione e per come lo gestiscono; ecco le principali:
- Debian: la distribuzione più vicina al progetto GNU, poiché composta soltanto da software libero. Essa è da sempre emblema di sicurezza e affidabilità, rappresentando insieme a Red Hat una delle due distribuzioni più usate ed antiche, da cui poi sono partiti la maggior parte degli altri progetti. Essa offre un ottimo sistema di gestione dei pacchetti software, detto APT (Advanced Packaging Tool), che attraverso un sistema di repository permette all'utente il download, l'installazione e la configurazione dei programmi di cui ha bisogno in pochi secondi;
- Red Hat: una delle poche distribuzioni che, anche se non da molto tempo, può essere ottenuta esclusivamente a pagamento. Solitamente non viene aggiornata alle ultime novità, preferendo versioni di kernel e componenti datate, ma stabili. Infine proprio Red Hat ha avuto il merito di realizzare il diffuso sistema di pacchetti RPM (Red Hat Package Manager), adottato poi da tutte le distribuzioni di sua derivazione;
- Fedora: la distribuzione gratuita sponsorizzata da Red Hat. Piuttosto curata nell'aspetto, viene aggiornata frequentemente con le ultime release dei software che offre. Il sistema di pacchettizzazione è basato naturalmente su RPM e l'installazione disponibile è una delle più user-friendly del settore;
- Gentoo Linux: distribuzione che permette di ottimizzare e rendere estremamente flessibile il sistema, attraverso un'installazione completamente personalizzabile. Non è adatta ad utenti alle prime armi, ma un punto a suo favore rimane comunque nella grande disponibilità della comunità che l'utilizza;
- Mandriva: conosciuta fino a poco tempo fa come Mandrake, è una tra le distribuzioni più diffuse e maggiormente orientate all'uso desktop. È distribuita sia in forma gratuita che come prodotto commerciale, e deriva anch'essa dal progetto Red Hat;
- Slackware: la distribuzione più longeva e più utilizzata dai puristi del software libero, ma sconsigliata a coloro che non hanno tempo e voglia di imparare da capo ad usare un nuovo sistema operativo. Essa è caratterizzata da un sistema di gestione dei pacchetti molto rigido e la relativa scarsità di software precompilato può mettere in difficoltà l'utente alle prime armi. Risulta però adatta ad utenti esperti che conoscono già le potenzialità di GNU/Linux e che hanno bisogno di un sistema privo di componenti inutili;
- SuSE: celebre distribuzione europea, molto usata a livello aziendale, ma rivolta anche all'utente desktop. Anch'essa basata su RPM, è un prodotto commercializzato da Novell, ditta molto discussa per il recente accordo con Microsoft sullo sviluppo di un progetto che mira all'interoperabilità tra Windows e la sua distro;
CECCARELLI Francesco Pagina 8 di 56 sabato 5 luglio 2008
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Tesina - Premio maturità 2008
Titolo: GNU/Linux e le reti TCP/IP
Autore: Francesco Ceccarelli
Descrizione: Descrizione e configurazione all'interno di una rete TCP/IP del sistema operativo GNU/Linux
Materie trattate: Informatica, sistemi, elettronica e telecomunicazioni
Area: Tecnologica
Sommario: Al giorno d'oggi abbiamo quasi tutti a che fare, in molteplici situazioni, con il software libero. Talvolta anche inconsapevolmente. Penso però che pochi sappiano cos'è e cosa caratterizza il software libero. È perciò necessaria una premessa generale, che ci faccia capire bene di cosa stiamo parlando, prima di addentrarci nei meandri del maggior esponente di questa vera e propria corrente filosofica dell'informatica odierna: il sistema operativo GNU/Linux.