Sviluppare partendo da zero una implementazione della pila di protocolli tcp/ip che sia veloce come le altre implementazioni esistenti non è stato un lavoro semplice. La decisione di non basarsi su una delle implementazioni esistenti è stata presa in un momento in cui sembrava che le implementaziosi esistenti sarebbero finite sotto una licenza più restrittiva a causa della sentenza di U.S.L., e quando c'era tanto entusiasmo nel farlo dversamente dagli altri e forse anche meglio di quello che era stato già fatto.
Il primo volontario che ha guidato lo sviluppo del codice di rete nel
kernel è stato Ross Biro <biro@yggdrasil.com>
. Ross ha
implementato un insieme di funzionalità semplice ed incompleto ma
usabile per la maggior parte dei bisogni. Queste procedure erano
distribuite insieme ad un driver per la scheda di rete WD-8003 Questo
è stato abbastanza per attrarre tante persone a provare e
sperimentare il software, e alcuni sono pure riusciti a connettere
delle macchine ad internet con questa configurazione. Ma nel frattempo la
richiesta di software di rete da parte della comunità Linux
stava cresendo, così che a un certo punto la domanda pressante
che gravava su Ross ed il suo coinvolgimento personale in termini di
tempo hanno superato i vantaggi che ne derivava. Ross lasciò
quindi il suo posto alla guida del gruppo di programmatori. Gli sforzi
di Ross per far partire il progetto e la responsabilità che si
era preso di produrre davvero qualcosa di utile nonostante la
situazione fosse controversa, sono state le cose che hanno catalizzato
tutto il lavoro futuro, e sono state perciò una componente
essenziale del successo del prodotto attuale.
Orest Zborowski <obz@Kodak.COM>
ha scritto la prima
interfaccia di programmazione per i socket BSD all'interno del kernel
Linux. Questo è stato un grande passo in avanti, e ha permesso di
far funzionare sotto Linux molte delle
applicazioni di rete esistenti senza cambiamenti notevoli.
Circa a questo punto Laurence Culhane <loz@holmes.demon.co.uk>
sviluppò i primi driver per supportare il protocollo SLIP
all'interno di Linux. Questo ha permesso a molte persone che non avevano
accesso a reti di tipo Ethernet di provare il nuovo software di networking.
Ancora una volta, qualcuno ha preso questo driver e lo ha messo
al lavoro per collegarsi ad Internet. Questa possibilità ha dato
a molti un'idea delle possibilità che si sarebbero poture realizzare
se Linux avesse avuto un supporto di rete completo, ed accrebbe il numero
di utenti che provassero ed usassero il software esistente.
Un'altra persona che ha lavorato attivamente nel compito di
costruire il supporto per la rete è stata Fred van Kempen,
<waltje@uwalt.nl.mugnet.org>
.
Dopo un periodo di incertezza che ha seguito l'abbandono di Ross dalla
posizione di coordinatore dello sviluppo, Fred offrì il suo tempo e
le sue capacità e accettò il ruolo senza alcuna opposizione. Fred
aveva dei piani ambizioni per la direzione che il software di rete
di Linux avrebbe dovuto prendere, e si preparò a progredire in
queste direzioni. Fred produsse una serie di programmi di rete chiamati
`NET-2' che molte persono sono state in grado di usare proficuamente
(il codice `NET' era quello di Ross). Fred introdusse un certo numero
di innovazioni nell'agenda dello sviluppo, come l'interfaccia dinamica
per le periferiche, il protocollo AX.25 per le radio amatoriali e un'implementazione del networking progettata più modularmente.
Il codice NET-2 di Fred è stato usato da un numero molto elevato di
entusiasti, ed il loro numero cresceva in continuazione mentre si diffondeva
la voce che questa implementazione funzionava bene. Il software di rete
a questo punto esisteva ancora sotto forma di un ampio numero di modifiche da
applicare alla distribuzione ufficiale del kernel, non essendo ancora
stata inclusa in tale distribuzione.
I documenti NET-FAQ e successivamente NET-2-HOWTO descrivevano
la procedura (allora abbastanza complessa) per avere tutto quanto
funzionante. Fred si è concentrato sullo sviluppo di innovazioni all'implementazione di rete convenzionale e questo gli prendeva tempo. La comunità di
utenti stava diventando impaziente aspettando qualcosa che funzionasse
in modo affidabile e che soddisfasse l'80% degli utenti. Come è successo
con Ross, la pressione su Fred come coordinatore del progetto crebbe
considerevolmente.
Alan Cox <iialan@www.uk.linux.org>
propose una soluzione al
problema che avrebbe dovuto risolvere le controversie. Egli propose
di prendere il codice NET-2 di Fred e di sistemarlo,
rendendolo affidabile e stabile così da soddisfare gli
utenti impazienti, nel contempo avrebbe alleggerito la pressione su
Fred permettendogli di continuare il suo lavoro. Alan si mise a far
ciò con un certo successo e la sua versione del codice di rete per
Linux prese il nome di `Net-2D(ebugged)'. Il codice funzionava in
maniera affidabile in molte configurazioni comuni e la base degli
utenti era contenta. Alan chiaramente aveva idee e capacità proprie
da mettere nel progetto e in molte delle discussioni relative alla
direzione che il codice NET-2 stava prendendo. Si svilupparono allora
due diverse scuole di pensiero nella comunità Linux: una che seguiva
la filosofia "farlo funzionare subito, migliorarlo in seguito"
e un'altra che diveca "farlo meglio subito". Linus fece la parte
dell'arbitro e incluse il codice di Alan nella distribuzione ufficiale
del kernel. Questo pose Fred in una posizione difficile. Ogni sviluppo
innovativo avrebbe mancato della larga base di utenti che provassero ed
usassero attivamente il codice, e questo avrebbe significato un
rallentamento e certe difficoltà nello sviluppo. Fred continuò a
lavorare per un breve periodo e alla fine abbandonò, così Alan
si trovò ad essere il nuovo leader dello sviluppo del supporto
di rete nel kernel di Linux.
Donald Becker <becker@cesdis.gsfc.nasa.gov>
rivelò presto
le sue capacità negli aspetti di più basso livello del networking,
e produsse un grosso campionario di driver per schede di rete, quasi tutte
quelle incluse nei kernel attuali sono state sviluppate da Donald. Ci sono
state altre persone che hanno contribuito in maniera significativa,
ma il lavoro di Donald è stato notevole, per cui merita una menzione
particolare.
Alan continuò a migliorare il codice NET-2-Debugged per un certo
tempo, mentre lavorava nell'implementazione di alcune delle cose nella
lista delle priorità
che non erano ancora state affrontate.
Prima che il sorgente del kernel 1.3.*
diventasse adulto,
il codice di rete nel kernel era passato alla distribuzione NET-3,
sulla quale sono basate le versioni attuali. Alan ha lavorato
su molti aspetti del codice di rete e ha misgliorato il codice in molte
direzioni con l'aiuto di un certo numero di altre persone di talento
nella comunità Linux. Alan produsse i dispositivi di rete dinamici e le
prime implementazioni standard di AX.25 e IPX.
Alan ha continuato a giocare col codice, ristrutturandolo e migliorandolo
lentamente fino allo stato in cui si trova oggi.
Il supporto per PPP è stato aggiunto da Michael Callahan
<callahan@maths.ox.ac.uk>
e Al Longyear
<longyear@netcom.com>
. Anche questa è stata un'innovazione
significativa per aumentare il numero di persone che usano Linux
attivamente nel networking.
Jonathon Naylor <jsn@cs.nott.ac.uk>
ha contribuito
migliorando in maniera significativa il codice AX.25 di Alan, aggiungendo
il supporto per i protocolli NetRom e Rose.
La capacità di usare AX.25, NetRom e Rose è un fatto significativo
in se, poiché nessun altro sistema operativo può vantare il supporto
nativo per tutti questi protocolli.
Naturalmente, ci sono state altre centinaia di persone che hanno contribuito significativamente allo sviluppo del software di rete per Linux. Alcune di queste le incontrerete più avanti nelle sezioni relative alle singole tecnologie, altre persone hanno fornito moduli, driver, correzioni di errori, suggerimenti, risultati di test e supporto morale. In ognuno di questi casi ciascuno può dire di aver giocato la sua parte e di avere offerto quello che poteva. Il codice di rete del kernel è un esempio eccellente dei risultati che si possono ottenere dall stile di lavoro anarchico della comunità Linux. Se questo non vi ha ancora meravigliato, lo farà presto: lo sviluppo non si è fermato.
Ci sono vari posti in cui si possono trovare delle buone informazioni riguardo all'uso delle reti in Linux.
Alan Cox, il coordinatore attuale del codice di rete nel kernel, ha una pagina WWW che contiene informazioni sullo stato attuale e sul nuovo sviluppo del supporto di rete per Linux. La sua pagina è: www.uk.linux.org.
Un altra risorsa interessante e' un libro scritto da Olaf Kirch,
intitolato
"Network Administrators Guide
". È un lavoro del
Linux Documentatation Project
e può essere letto interattivamente presso
Network Administrators Guide, versione HTML Oppure
può essere scaricato tramite ftp in vari formati dall'archivio
ftp dell'LDP su
sunsite.unc.edu. Il libro di
Olaf è molto completo e fornisce una buona panoramica di alto
livello della configurazione di rete sollo Linux.
Esiste un newsgroup dedicato alla rete e argomente connessi nella gerarchia di gruppi relativi a Linux. È: comp.os.linux.networking
C'è una mailing list alla quale ci si può iscrivere, nella quale si possono chiedere informazioni a proposito del networking sotto Linux. Per iscriversi occorre mandare un messaggio di posta elettronica:
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:
subscribe linux-net
Nelle varie reti IRC si trovano spesso dei canali #linux
sui
quali si possono trovare risposte a domande sull'argomento.
Ogni volta che si presenta un problema bisogna ricordare di includere il maggior numero possibile di dettagli riguardo ai problemi. In particolare, occorre includere la versione del software che si sta usando, in particolare la versione del kernel, la versione dei programmi come pppd e dip, e la natura esatta del problema che si è verificato. Questo vuol dire prendere nota della sintassi esatta di ogni messaggio di errore ricevuto, e di tutti i comandi che si stanno invocando.
Per chi sta cercando informazioni introduttive e pratiche sul networking tcp/ip in genere, io raccomando di dare un'occhiata ai seguenti documenti:
questo documento esiste sia in versione testo sia in versione postscript.
questo documento esiste sia in versione testo sia in versione postscript.
Per chi sta cercando informazioni più dettagliate su tcp/ip raccomando caldamente:
"Internetworking with TCP/IP"
di Douglas E. Comer
ISBN 0-13-474321-0
Prentice Hall publications.
Per chi vuole imparare come scrivere applicazioni di rete in un ambiente compatibile a Unix, raccomando altrettanto caldamente:
"Unix Network Programming"
di W. Richard Stevens
ISBN 0-13-949876-1
Prentice Hall publications.
Si può anche provare a guardare nel newsgroup comp.protocols.tcp-ip.
Una fonte importante di informazione prettamente tecnica riguardo a Internet e alla suite di protocolli tcp/ip sono gli RFC. RFC è un acronimo che significa `Request For Comment' ed è il modo convenzionale per pubblicare e documentare gli standard sui protocolli Internet. Ci sono svariati archivi di RFC, molti di questi sono siti ftp mentre altri forniscono accesso via WWW con un motore di ricerca che permette di cercare le parole chiave in un database associato agli RFC.
Un possibile luogo ove trovare gli RFC è il database RFC di Nexor.