Internet, questo "conosciuto"
Come quasi tutte le scoperte "utili" della scienza, Internet è anche figlia della ricerca in campo militare: erano i tempi della "guerra fredda" e l’URSS aveva dato un grave smacco alla supremazia tecnologico-scientifica americana mettendo in orbita lo Sputnik. Così, nel 1957, il Dipartimento di Stato Americano fondò l'Advanced Research Projects Agency (ARPA), all’interno della quale nacque il progetto ARPANET. Illuminante, al proposito, un’intervista a Vinton Cerf, considerato uno dei padri di Internet

Vinton Cerf
" Il progetto su "Arpanet" iniziò nell'ambito delle ricerche della "Agenzia per i Progetti di Ricerca Avanzata sulla Difesa", organo facente parte del Dipartimento militare di Difesa americano. Il loro interesse era quello di trovare un altro modo di comunicare nel corso di una battaglia usando i computer. Così iniziarono con "Arpanet", come fu chiamata, che usava le linee telefoniche per collegare i computer tra di loro; questo accadeva intorno al 1969. A quel tempo, questo progetto ebbe molto successo ed iniziarono a fare esperimenti con le comunicazioni via radio e via satellite, usando la nuova tecnica della "commutazione a pacchetto", che funzionava in modo molto diverso rispetto al sistema telefonico. Bob Kahn, il mio compagno di lavoro, lavorava ad Arpa sulle tre singole reti di commutazione a pacchetto e si rese conto che, in qualche modo, avremmo dovuto collegare le reti l'una all'altra e farle lavorare come se fossero state una sola. Questo era il problema di Internet che lui ed io abbiamo risolto nel 1973. Quindi, tutto iniziò con una singola rete, poi divennero tre ed in seguito iniziammo a collegarle tra di loro in Internet. Vorrei però fare delle precisazioni sulle motivazioni che hanno dato vita ad Internet: quando fu ideata la prima rete, Arpanet, l'interesse nacque da una necessità di condivisione delle risorse: si volevano collegare i computer di circa trenta università in tutto il paese dove si studiava informatica e che ricevevano fondi dall'Arpa. Ciò non aveva niente a che fare con le bombe atomiche, come si suole fantasticare. Tuttavia, ciò che rendeva interessante la tecnologia utilizzata - la commutazione a pacchetto- era il fatto che essa tendesse ad essere molto forte, potente, perché non era centralizzata, ma, viceversa, molto decentralizzata. Sottolineo, dunque, che la prima rete, "Arpanet", servì soltanto a creare un collegamento tra i computer di un gruppo di università. Dopo esserci resi conto che questa tecnologia era molto potente, solo allora cominciammo a porci una serie di domande sul possibile uso della tecnologia di commutazione a pacchetto in ambito militare. Quando, poi, fu ideata Internet - il collegamento tra diverse reti- ci ponemmo il problema di renderlo stabile anche in caso di guerra: di far sì, cioè, che se delle bombe avessero distrutto parte della rete, questa si potesse ricollegare da sola automaticamente. Questo tema fu tra quelli trattati nel corso della progettazione di Internet. Il motivo della confusione su questo argomento è che nel 1962 un uomo di nome Paul Baran sperimentò un'idea molto simile alla commutazione a pacchetto per costruire una rete di comunicazioni vocali che potesse sopravvivere ad una guerra nucleare, ma il suo progetto in realtà non fu mai messo in atto."
Il primo "nodo" venne creato presso la University of California at Los Angeles, utilizzando un calcolatore Honeywell 516 con 12 KB di memoria, nel 1969.
Arpanet fu, in seguito, suddiviso in due parti: una per uso scientifico ed una per fini militari (milnet) e fu definitivamente ritirato nel 1990.
Il problema originario era, comunque, quello di far dialogare diverse reti di computer, utilizzanti differenti Sistemi Operativi, fra loro.
I PROTOCOLLI
Per consentire il dialogo, sono necessari dei protocolli, cioè delle regole formali comuni che descrive come trasmettere i dati, soprattutto su una rete. I protocolli di basso livello definiscono gli standard elettrici e fisici che devono essere osservati, l’ordinamento dei bit e dei byte, la trasmissione, la rivelazione e la correzione degli errori nel flusso di informazioni. I protocolli di alto livello specificano la formattazione dei dati, la sintassi dei messaggi, il dialogo fra computer e terminale, il set di caratteri e così via.
Inizialmente il protocollo utilizzato per il dialogo sulla rete era l’NCP [Network Control Protocol] che, però, non dava risposta a tutti i problemi connessi.
La soluzione venne trovata sempre da Vinton Cerf. Leggiamo un altro brano della stessa intervista:
" Internet, nel suo nucleo, è molto semplice. Se si vuole pensare ad un esempio noi tutti sappiamo cos'è una cartolina: i pacchetti di Internet sono come delle cartoline, eccetto che corrono cento milioni di volte più velocemente. Una cartolina ha un indirizzo "da" ed un indirizzo "a", e c'è uno spazio limitato su cui scrivere, un pacchetto Internet ha un "da" ed un "a" ed uno spazio limitato per le informazioni. Inoltre, quando si imbuca una cartolina, non si è mai sicuri che arriverà dall'altra parte, poiché a volte le cartoline si perdono. Questo è vero anche per Internet: se si mettono tre pacchetti su Internet o si mettono tre cartoline nella buca, non verranno fuori necessariamente nello stesso ordine, potrebbero non venire fuori neanche nello stesso giorno. Dunque, in Internet, si verifica la stessa situazione: i pacchetti possono perdere l'ordine in cui sono stati inviati, possono andar persi, ed in circostanze molto strane possono venire copiati, e in questo modo possono venir fuori due copie invece di una. Bisogna fare in modo che questo network di comunicazione piuttosto inaffidabile - il pacchetto o cartolina di Internet - diventi affidabile, perché i computer possano comunicare tra loro. Il modo in cui si svolgono queste operazioni è la costruzione di un altro strato sottostante di protocollo in cima alla cartolina di base, che noi chiamiamo layer-TCP, ovvero "Transmission Control Protocol". C'è un modo molto facile per capire come funziona: supponiamo che si voglia mandare un libro ad un amico, ed il solo modo in cui si possa fare è attraverso le cartoline. Pensiamo, allora, a quello che si farebbe: si dovrebbero tagliare la pagine del libro ed attaccare le stesse alla cartolina, ma bisognerebbe ricordare che non tutte le cartoline avrebbero il numero di pagina, quindi l'amico potrebbe ricevere le pagine senza alcun ordine. Sarebbe dunque una buona idea numerare le cartoline in modo che l'amico possa metterle insieme in ordine. Bisogna poi ricordare che alcune di queste cartoline potrebbero andar perse, ed allora si dovrebbero conservare le copie da inviare all'amico nel caso che non ne riceva qualcuna. Come si fa a sapere quali cartoline l'amico ha ricevuto? Sarebbe una buona idea se l'amico scrivesse una cartolina ogni tanto e dicesse: "Ho ricevuto tutte le cartoline eccetto la numero 102"; ma bisogna tenere presente che la cartolina che dice quante cartoline l'amico ha ricevuto potrebbe a sua volta andare smarrita. Dunque, se non si riceve alcuna cartolina che indica quante altre ne sono state ricevute, si potrebbe cominciare a mandare copie delle cartoline delle quali non sono state registrate le ricevute. E quando, alla fine, si registrerà la ricevuta di tutte le cartoline, allora si potranno buttar via le copie tenute da parte nel caso fossero servite. Questo è tutto ciò che succede nel protocollo TPC. Il protocollo cartolina, l'Internet Protocol, è molto semplice, in definitiva."
Il grande pregio del protocollo TCP/IP, in cui IP sta proprio per Internet Protocol è stato quello di aver realizzato uno standard comune che, al momento, connette circa 23.000.000 di computer su 200.000 reti in 214 Paesi e grazie al quale viaggiano una enorme quantità di servizi, ognuno col proprio protocollo dedicato.
Vediamo ora una rapidissima rassegna dei vari protocolli e dei servizi ad essi connessi.
L’uso maggiore che si fa di Internet non è, come si potrebbe pensare, la "navigazione" per ipertesti, bensì è la posta elettronica.
L’SMTP è un protocollo da server a server, così altri protocolli vengono usati per poter accedere ai messaggi. Il dialogo SMTP normalmente avviene in background, sotto il controllo del sistema di messaggistica (come il sendmail), anche se esistono protocolli in grado di far vedere all’utente esattamente quello che succede…
Esiste una versione estesa dell’SMTP (ESMTP – Extended SMTP) che offre la possibilità di avere una "ricevuta di ritorno". Tale protocollo è, al momento, implementato solo da pochi programmi di posta (Es.: Netscape Communicator)
Scritto nel Novembre 1988 da Marshall Rose, permette ad un computer client di scaricare posta da un computer server POP3 tramite una connessione temporanea in TCP/IP. Non contempla la possibilità di inviare posta elettronica.
È il protocollo client-server TCP/IP usato sul World Wide Web per lo scambio di documenti in HTML. Utilizza, convenzionalmente, la porta 80.
Cerchiamo di "tradurre" quanto appena detto:

L’architettura client-server è una forma di sistema distribuito, in cui il software è suddiviso fra un’applicazione server ed un’applicazione client: un client manda una richiesta, tramite un protocollo ed il server risponde. Il processo è analogo a quello di un acquirente (il client) che chiede al compratore (il server) una risorsa di cui questi dispone ed attende una risposta. Il tipo di ordine ed i modi di richiesta sono, in questo caso, il protocollo.
Ci possono essere server centralizzati o server distribuiti. Questo tipo di modello permette la dislocazione sia dei client che dei server indipendentemente su nodi o su reti, così come l’utilizzo di hardware e di sistemi operativi differenti.
Il World Wide Web [WWW o W3] (letteralmente, una "ragnatela grande quanto il mondo") è l’accezione più comune di "Internet". Di fatto è un sistema client-server distribuito per il reperimento di informazioni ipertestuali sviluppato nei laboratori di Fisica delle Alte Energie presso CERN di Ginevra.
Sul W3 ogni cosa, documenti, indici, menù, ecc…, è rappresentata mediante un ipertesto scritto in linguaggio HTML [Hypertext Markup Language]. I collegamenti ipertestuali, o links, permettono di "saltare" ad un altro documento grazie ad un indirizzo, detto URL [Uniform Resource Locator] che costituisce uno standard per dire dove si trovi quell’oggetto e quale protocollo si debba utilizzare per poterlo raggiungere e gestire.
Per porta chiamiamo un canale logico o il punto terminale di un sistema di telecomunicazioni. I protocolli TCP ed UDP [User Datagram Protocol] su reti Ethernet utilizzano differenti numeri di porta per poter distinguere diversi canali logici sulla medesima interfaccia di rete sullo stesso computer. Ogni applicativo ha un numero di porta unico associato. Alcuni protocolli, come il telnet, l’HTTP, l’FTP [File Tranfer Protocol] hanno porte di default, ma ciò non toglie che possano essere normalmente utilizzati anche su porte differenti.
È un protocollo client-server che viene utilizzato su un calcolatore per trasferire file da e verso un altro computer su una rete TCP/IP.
È il protocollo utilizzato su internet per la ricerca, la lettura, l’invio e la distribuzione degli articoli presenti nei newsgroup, gruppi di discussione su internet. È un semplice protocollo di testi scritti in caratteri ASCII in modo che, anche se un utente non dispone di un client che gli consenta di leggere le news, potrà sempre farlo tramite il telnet, generalmente sulla porta 119, del server news.
È il protocollo standard, su Internet, che consente la login (allocazione) ad un server remoto, sempre che questi lo permetta. Gira sotto TCP/IP. I software di rete di vari sistemi operativi includono un programma, telnet appunto, che, utilizzando questo protocollo, permette di comportarsi emulando un terminale per la sessione di login remota.
È il protocollo standard internet per trasmettere dei "datagrammi", come i pacchetti IP su connessioni seriali punto a punto.
Per "datagramma" si intende un’entità autonoma ed indipendente di dati che hanno una quantità di informazione tale da poter essere instradati dal calcolatore sorgente a quello destinatario senza dover fare più ricorso al dialogo iniziale fra i due calcolatori e la rete di trasporto.
Presenta dei notevoli vantaggi rispetto al protocollo utilizzato in precedenza (lo SLIP: Serial Line Internet Protocol) in quanto può essere utilizzato sia su connessioni sincrone che asincrone, può realizzare connessioni dinamiche e verificare che la connessione sia effettivamente utilizzabile.
È uno schema di autenticazione utilizzato dai server PPP per verificare l’identità di chi ha originato la connessione. Una volta che questa è realizzata, il chiamante manda al server una coppia UserID – Password. Se l' autenticazione riesce il server manda indietro un riconoscimento; altrimenti termina il collegamento o dà a chi chiama un'altra possibilità. Siccome questo metodo di autenticazione non è dei più sicuri, in quanto la password viaggia "in chiaro" fra sorgente e destinazione e potrebbe essere "sniffata", è stato sviluppato un altro protocollo, chiamato CHAP [Challenge Handshake Authentication Protocol] in cui il server trasmette un messaggio "di sfida", codificato secondo un algoritmo, al chiamante che dovrà rispondere utilizzando lo stesso codice. A questo punto, il server ricontrolla la risposta e se la parola ricevuta si abbina a quella calcolata, consente l’accesso.
È un sistema di ricerca di documenti. Alcuni server, su Internet, sono dotati di un server gopher. Per potervi accedere bisogna dotarsi di un client gopher. I documenti possono essere testi in chiaro, immagini, suoni, ecc…
È un pacchetto di sicurezza che permette che un calcolatore dietro un firewall possa accedere a servizi esterni senza perdere le caratteristiche di sicurezza.
Anche questo è un sistema per il reperimento di informazioni. Gli utenti possono ricercare i documenti usando parole chiave. La ricerca restituisce una lista dei documenti. Il wais offre un linguaggio naturale, la ricerca indicizzate e, quindi, un ricupero veloce dei dati e un meccanismo di feedback che permette che i risultati delle ricerche iniziali influenzino le future.
LA STRUTTURA DI INTERNET
Guardiamo la figura che segue e cerchiamo di decifrarla:

Innanzitutto vediamo degli utenti connessi, via modem o via rete, al POP [Point of Presence] ed altri, tramite modem o linee ISDN, ad un ISP [Internet Service Provider].
Il modem [Modulator-Demodulator] è un’apparecchiatura in grado di consentire il traffico di dati, digitale, su una normale linea telefonica (analogica), mentre il T. A. [Terminal Adaptor] ISDN [Integrated Service Digital Network] è l’organo che consente di adattare i canali BRI [Basic Rate Interface] ISDN ad una qualsiasi apparecchiatura, come un’interfaccia seriale RS232 (quella dove è attaccato il mouse del computer, ad esempio).
Con ISDN si intende un sistema standard integrato di comunicazioni digitali in grado di trasferire voce, video, dati e segnali di controllo per le apparecchiature. Mentre su una linea analogica, con le consuete tecnologie attuali, la velocità massima di trasmissione è limitata a 57.600 bit/sec, un canale base ISDN ha una larghezza di banda (e qui il termine è usato in modo fortemente improprio) di 64.000 bit/sec. Una linea ISDN è costituita da due canali base più un canale di controllo a 16.000 bit/sec., raggiungendo così una larghezza di banda complessiva di 142.000 bit/sec.
Qualunque sia lo strumento di connessione, l’utente è comunque collegato ad posto fisico in cui è presente un sistema di comunicazioni in grado di metterlo in contatto con la rete. Questo è il POP, Punto di Presenza di un fornitore di accesso ad Internet (IAP: Internet Access Provider). Un POP, su una determinata area geografica, può servire diversi IAP al fine di consentire agli utenti di questi la connessione pagando la tariffa telefonica relativa ad una telefonata locale. L’istituto "Fauser", ad esempio, è POP di Alpnet, access provider di Torino, ma quando un utente di Novara si connette, tramite il Fauser, ad Internet, paga una semplice telefonata urbana.
Concetto leggermente differente è, invece, il concetto di ISP che offre un insieme di servizi, gestiti in proprio od in connessione, come la posta elettronica, il o i server DNS [Domain Name System], l’hosting o l’housing, ecc…
Il DNS è un sistema distribuito e replicato di interrogazione utilizzato su Internet per "risolvere", e cioè "tradurre" i nomi degli host (qualsiasi computer connesso in rete) in indirizzi Internet. È una sorta di elenco telefonico: ogni macchina ha un proprio indirizzo di rete, costituito da quattro triplette di numeri, che la identifica univocamente. Siccome è difficile potersi ricordare così tanti numeri, ad ogni macchina viene associato un identificativo costituito da un nome per la macchina (o per ogni servizio che la macchina deve svolgere) più un dominio, assegnato con dovute regole e coordinato da alcuni enti internazionalmente riconosciuti. Queste tabelle di associazione risiedono su un calcolatore che funge da server per questo servizio. Su questa macchina esiste un database che fa riferimento, e si allinea, ad almeno un altro server, e così via, fino a che tutti i server DNS del mondo risultano congruenti. In tal modo al nome http://www.fausernet.novara.it/ corrisponderà l’indirizzo 158.102.127.103; tale nome non potrà più essere utilizzato da nessun’altra macchina su Internet.
Consideriamo, adesso, il caso in cui io voglia andare a visitare la pagina, per ipotesi, della Apple; conosco l’indirizzo di questa pagina ed, essendo un documento che presumo essere scritto in HTML, richiederò al mio browser (il programma, come Netscape o Internet Explorer, che mi consente la visualizzazione delle pagine in questo linguaggio) l’attivazione del protocollo http. Pertanto, secondo la corretta sintassi, digiterò http://www.cnn.com/. La prima operazione effettuata dal mio calcolatore sarà quella di chiedere ad un dispositivo, chiamato router [instradatore] di instradare la richiesta verso quell’indirizzo. Il router, che viene talvolta, impropriamente, anche chiamato gateway per prima cosa chiederà al server DNS la corrispondenza, in termini di indirizzo Internet, del nome http://www.cnn.com/ e quindi, in base ad apposite tabelle di instradamento, saprà che strada far prendere ai miei pacchetti per raggiungere la destinazione. Di fatto i miei pacchetti verranno inviati ad un altro router che, a sua volta, li rigirerà verso un terzo e così via. Per avere un’idea del percorso e dei tempi che i miei dati dovranno subire, proviamo ad eseguire l’operazione di "Traceroute", presente in quasi tutti i sistemi operativi, verso http://www.cnn.com:/
traceroute to www.apple.com (17.254.0.91), 30 hops max, 40 byte packets
1 cisco-4000 (194.116.20.254) 2 ms 2 ms 1 ms
2 CENTRAL-router.ALP.net (194.116.0.73) 161 ms 193 ms 211 ms
3 BGP-router.ALP.net (194.116.0.254) 211 ms 303 ms 91 ms
4 r-rm8-csi-piemonte-2.interbusiness.it (151.99.0.5) 285 ms 341 ms 114 ms
5 r-rm9-fe6.interbusiness.it (151.99.49.122) 396 ms 475 ms 387 ms
6 gw-seabone9-pa.interbusiness.it (151.99.49.214) 317 ms 337 ms 293 ms
7 gin-mtt-bb1.Teleglobe.net (199.202.55.197) 378 ms 341 ms 334 ms
8 * * gin-mtt-core1.Teleglobe.net (207.45.223.98) 321 ms
9 gin-nyy-core1.Teleglobe.net (207.45.223.109) 313 ms 282 ms 387 ms
10 gin-nyy-bb1.Teleglobe.net (207.45.223.170) 302 ms 343 ms 406 ms
11 borderx2-hssi3-0.NewYork.cw.net (204.70.219.121) 393 ms 335 ms 425 ms
12 core2-fddi-1.NewYork.cw.net (204.70.219.65) 272 ms 438 ms 430 ms
13 core4-hssi-5.Washington.cw.net (204.70.1.246) 406 ms 478 ms 351 ms
14 core2.Dallas.cw.net (204.70.4.69) 337 ms 387 ms 337 ms
15 borderx1-fddi-1.Dallas.cw.net (204.70.114.52) 370 ms * 416 ms
16 diamond-net.Dallas.cw.net (204.70.114.106) 650 ms 306 ms 379 ms
17 APPLE-1.DllsTX.savvis.net (209.44.32.2) 446 ms 398 ms 485 ms
18 209.44.33.18 (209.44.33.18) 458 ms 440 ms 550 ms
19 tre.apple.com (205.180.175.29) 405 ms 651 ms 445 ms
20 A17-254-0-91.apple.com (17.254.0.91) 423 ms 440 ms 492 ms
Come si può notare, il percorso è molto lungo e complicato: ad ogni numero d’ordine corrisponde un router diverso, di cui viene fornito il nome, l’indirizzo IP ed il tempo, in millesimi di secondo, impiegato per raggiungerlo. Ogni tanto si perdono dei pacchetti: quest’evento viene rappresentato con degli asterischi.
I SERVIZI
Nell’immagine da cui siamo partiti sono presenti anche server per gli altri servizi offerti, ad esempio, la posta elettronica, l’FTP, il Web, i Newsgroup ed il Proxy. Ogni servizio può essere svolto sia da un computer dedicato che, più d’uno contemporaneamente, dalla stessa macchina.
Per ogni tipo ci sarà un software appropriato, chiamato "demone". Questo termine, che deriva dalla sua accezione mitologica, è stato più di recente razionalizzato come l’acronimo di Disk and Execute MONitor e si riferisce al fatto che si tratta di un programma che resta inattivo, e quindi "dormiente", fino a che un evento, e quindi una richiesta, non lo risvegli.
Quindi, sul server, ci sarà un demone per la gestione della posta, uno per il Web e così via…
Di alcuni servizi abbiamo già fatto cenno nella parte riguardante i protocolli.
Focalizziamo, invece, l’attenzione sul Server Proxy, o server di prossimità.
Il processo di proxy è un processo che fornisce una cache [letteralmente un "nascondiglio"] dei documenti disponibili su altri server.
Il funzionamento è semplice: quando il proxy riceve una richiesta per una URL, toglie il prefisso e cerca l’URL risultante nella relativa cache locale. Se la trova, restituisce immediatamente il documento, altrimenti lo richiede al server destinatario, quindi salva una copia nella cache e la rende al richiedente. La cache avrà solitamente una procedura di scadenza che elimina i documenti a seconda della loro età, del formato e della storia di accesso.
La verifica sul fatto che il documento possa essere stato cambiato di recente avviene in base alla data ed all’ora di ultimo accesso al file. In altri termini, il server proxy chiede al server che deposita quel documento la data e l’ora dell’ultima modifica, se queste combaciano con la copia in cache allora restituisce all’utente, che ha fatto la richiesta, la copia locale, se no l’aggiorna.
Il vantaggio dell’utilizzo di un server proxy è evidente: considerando che la maggior parte del traffico avviene sugli stessi documenti, lo scambio di pacchetti avviene localmente, senza impegnare, quindi, la rete esterna che sarà, così, libera per altre richieste.
Il server proxy può essere utilizzato non solo per il protocollo http, ma anche per altri servizi.