Anteprima parziale del testo
Scarica Informatica di base (Lettere) e più Dispense in PDF di Fondamenti di informatica solo su Docsity!
1. Introduzione Nei precedenti due capitoli, in questo, e nei successivi affronteremo tutte le tecnologie alla base di Internet e del World Wide Web. Tuttavia, invece di affrontare questi temi in modo tradizionale, ovvero partendo dalla descrizione architetturale di Internet per poi presentare il Web, abbiamo voluto introdurre questi argomenti seguendo la traccia fornita da Tim-Berners Lee (l'inventore del Web) in un noto documento esplicativo a disposizione sul suo sito Web. In particolare, l'obiettivo è quello di rispondere ad una semplice, seppur significativa, domanda: + Cosa succede quando si clicca su un collegamento ipertestuale (o link) di una pagina Web? In Figura 1 sono riassunte le tecnologie che abbiamo introdotto nei due capitoli precedenti e che ci hanno permesso di iniziare ad introdurre gli elementi principali per rispondere alla domanda appena presentata. In particolare, una volta che si clicca su un link di una pagina web visualizzata attraverso un browser, il browser crea un messaggio di richiesta che specifica il metodo HTTP utilizzato per la richiesta, ovvero GET, il server web a cui la richiesta deve essere fatta, e il percorso della risorsa richiesta. Il messaggio arriva, in qualche modo, al server web, identificato da un numero univoco chiamato indirizzo IP. Il server web elabora la richiesta e, se soddisfacibile, crea un nuovo messaggio di risposta, a cui è associato uno specifico codice di stato a seconda del tipo di risposta da restituire, che include una copia della pagina web richiesta nel corpo del messaggio. Una volta che questa copia viene ricevuta dal browser, questi la visualizza (nel caso sia una pagina web, per esempio) o ne permette la memorizzazione all’interno del dispositivo da cui è partita la richiesta attraverso il browser usato. GET /doc1 HITPII.I HOST ealì È 3 viene rctiesta Hi server web pin /iesVs061 H si pesi di 130.136.130.1 SEUI le copia scri cca browser nei corpo dll Figura 1. Riassunto delle tecnologie che abbiamo trattato nei capitoli precedenti. In questo capitolo approfondiremo cosa sia Internet e quali sono i protocolli di comunicazione che lo contraddistinguono dal Web. Inoltre, introdurremo alcuni strumenti che permettono il corretto funzionamento di Internet, ovvero i router e il DNS. 2. La nascita di Internet La prima cosa da evidenziare chiaramente è che Internet non è sinonimo di Web - infatti, i due concetti si riferiscono a due entità distinte. Semmai, si può dire che il Web è uno dei più famosi servizi di Internet — non il solo, basti pensare alla e-mail, il trasferimento di documenti, o sistemi Voice over IP per comunicazioni audio e/o video come Skype o WhatsApp - perché si basa interamente sulle tecnologie messe a disposizione da Internet. La parola Internet in realtà è una contrazione di interconnected network, rete interconnessa in italiano. Di fatto è una rete composta da tante altre reti più piccole di dispositivi (computer, cellulari, etc.) in qualche modo interconnessi tra loro mediante l'uso di specifici protocolli di comunicazione. Il concetto principale che stava dietro la realizzazione di Internet è che doveva essere un'infrastruttura generale che potesse permettere la creazione di nuove applicazioni [Leiner et al., 1997]. Storicamente, le ragioni principali che hanno portato alla nascita di Internet sono da recuperare negli anni immediatamente successivi alla seconda guerra mondiale, in corrispondenza delle tensioni internazionali che erano nate tra Russia e Stati Uniti d'America, confluite in quella che è conosciuta come guerra fredda [Lukasik, 2011]. A seguito dei primi esperimenti atomici effettuati dalla Russia e dal conseguente sviluppo della realizzazione di missili balistici intercontinentali, uno degli obiettivi primari degli Stati Uniti era quello di provvedere ad una creazione di una rete di comunicazione che fosse abbastanza robusta da continuare a garantire la comunicazione tra tutti gli stati anche in seguito ad un attacco missilistico molto rilevante, ad esempio con testate nucleari. A tale scopo, nel 1958, come risposta al lancio dello Sputnik 1 da parte dei Russi, era stata fondata la Advanced Research Projects Agency (ARPA), responsabile per la ricerca e lo sviluppo di tecnologie emergenti con forte applicabilità a livello militare, che coinvolgeva esperti provenienti da diverse realtà: quella industriale, quella accademica, e quella governativa. Figura 2. Foto di Joseph Carl Robnett Licklider. Sorgente: https://commons. wikimedia.org/wiki/File:J_C._R._Licklider.jpg. Negli anni successivi, i nodi della nuova rete ARPANET crebbero notevolmente fino ad arrivare a 61 nel luglio del 1977 [Lukasik, 2011] (riassunti in Figura 4), mentre la rete venne ufficialmente e pubblicamente mostrata solo nel 1972 durante la prima International Computer Communication Conference a Washington — anno in cui venne anche dimostrata una delle prime applicazioni di ARPANET, la posta elettronica (o e-mail) sviluppata da Ray Tomlinson. Durante questi anni, furono sviluppate le tecnologie e i protocolli chiave che hanno permesso la nascita di Internet come la conosciamo oggi, tra tutti la tecnica a commutazione di pacchetto per l'invio e la ricezione dei dati e la suite di protocolli Internet (TCP/IP). ARPANET LOGICAL MAP, MARCH 1977 Fe. [For-1] Por] orco] morrerr (OSSIDI n UTAH |inuinoss woara__[EDPSO [pu l FORNI [360/67] ut ne Go] zoen] { [Pons] - Wuz) Poei MAWRN | awesis pel sel a 0 di mese 2/7 Sn FORI uz) Coen. [ET lano fara) curi] Si si * NOVA 800] reg | rca] STANFORO SURE Pisani (CEIULE ra Uro 00710 ve POF-IO > EDccs00) Poni [een EE CNIZALI va cLo Lu sorti POr_u) al 360/91 ucra uc? "(FER nie z IUDITn : TIE CCI) I POSI FORI [70198 Thano i (zo NN E 26) For 7700] co TEU tra per 2a 181 52 {POP-) EGLIN nre: dl isiza aFUL TESS cunter colm FENTAGON sf pai sure O MPA PrunigusIMe Focssoo] lasso pere O TI csv sareLLITE cncunt coe 1600 (PLEASE NOTE THAT WHILE THIS MAP SHOWS THE HOST POPULATION OF T INFORMATION OBTAMABLE, MO CLAIM CAN BE MADE FOR ITS ACCURACY INAMES SHOWN ARE IMP NAMES. NOT INECESSARILY] HOST NAMES Figura 4. La mappa logica di ARPANET datata 1977. MAE NETWORK. ACCORDING TO THE BEST Dopo ARPANET, diverse reti sono iniziate a sorgere, inizialmente negli Stati Uniti e poi nel resto del mondo. Tra le più importanti si ricordano: * Computer Science Network (CSNET), finanziata nel 1981 dalla National Science Foundation (NSF) per collegare i dipartimenti di informatica delle varie università americane che non erano già collegate ad ARPANET; * National Science Foundation Network (NSFNET), finanziata qualche anno dopo la precedente sempre dalla NSF per collegare tra loro i centri che mettevano a disposizione i supercomputer finanziati dalla stessa NSF; * NASA Science Network (NSN), finanziata a metà degli anni ottanta dalla National Aeronautics and Space Administration (NASA). La suite di protocolli TCP/IP, menzionata precedentemente, è stato lo strumento grazie al quale tutte queste reti sono state poi intercollegate tra loro, permettendo per la prima volta la comunicazione tra computer collegati a reti differenti. La nascita di Internet avviene di fatto alla fine degli anni ottanta, quando ARPANET e NSFNET vengono intercollegate tra loro: per la prima volta, due reti differenti (e i computer che a esse solo collegati) possono “dialogare” tra loro mediante l'utilizzo dei suddetti protocolli. Seppur i primi passi di Internet erano stati mossi, e nei successivi anni sempre più reti vennero collegate tra loro in questa gigantesca infrastruttura, probabilmente la spinta definitiva del processo di espansione e popolarità della rete come la conosciamo oggi venne data dal Governo degli Stati Uniti d'America, in particolare dall'allora senatore AI Gore. Fin dalla fine degli anni ottanta, Gore inizia una sua personale campagna di supporto a Internet e alle sue potenzialità e, in particolare, alla sua drastica estensione, in modo di permettere la connessione contemporanea di milioni di computer, non solo appartenenti a enti di ricerca o a industrie, ma (e soprattutto) posseduti da comuni cittadini. A tal fine, dopo aver anticipato le sue idee in un noto articolo di Scientific American [Gore, 1991], Al Gore introduce un atto, l'High Performance Computing Act of 1991 (HPCA) (0, informalmente, Gore Bill) firmato dall'allora presidente George H. W. Bush, che — grazie all'investimento di 600 milioni di dollari e all'attiva collaborazione di industrie, accademia, e governo - prevedeva la creazione di un'enorme rete ultraveloce chiamata National Research and Education Network (NREN). Questo investimento, seguito dagli successivi sviluppi del Web e dal rilascio del primo browser interamente grafico, Mosaic (1993), sviluppato grazie ai fondi provenienti dalla Gore Bill, hanno permesso la larga diffusione di Internet non solo negli Stati Uniti, ma come fenomeno di carattere mondiale. commutazione di circuito commutazione di pacchetto agi Figura 5. Principali differenze tra una comunicazione a commutazione di circuito (a sinistra) e quella a commutazione di pacchetto (a destra). Nella prima, viene creato un circuito virtuale dedicato tra mittente e destinatario che occupa tutta la banda a disposizione, e che non permette l'uso dei nodi del circuito per altre comunicazioni se non per quella attiva, finché il messaggio non è stato completamente trasmesso. Nella seconda, i pacchetti che formano il messaggio sono di fatto indipendenti tra loro, e non viene preallocata alcuna banda tra i nodi che dividono il mittente e il destinatario. Inoltre, i pacchetti possono indipendentemente seguire diverse percorsi per giungere al destinatario finale. In quest'ultimo esempio, i numeri da 0 a 7 indicano i vari momenti temporali della comunicazione - ad esempio, al tempo 4, il pacchetto verde si trova nel nodo 8 mentre gli altri due sono nel nodo 6. Nella comunicazione a commutazione di pacchetto, invece, il messaggio viene, come anticipato, spezzato in diversi pacchetti, che vengono trasmessi sulla rete senza occupare l’intera banda di un circuito, e vengono instradati dal mittente al destinatario seguendo, potenzialmente, percorsi diversi. Il principale vantaggio di questa tecnica su quella a commutazione di circuito è la sua tolleranza ai guasti, ovvero la capacità di garantire la comunicazione anche nel caso in cui uno dei componenti della rete venisse a mancare per una qualsivoglia ragione — ad esempio, seguendo la logica americana introdotta precedentemente, a seguito della distruzione di uno dei nodi della rete mediante l'uso di una bomba. 4. Che cos'è l'Internet Protocol (IP) In Internet, la comunicazione, ovvero lo scambio di dati tra due computer collegati in rete, è realizzata mediante l'uso dei pacchetti. Tuttavia, esiste una gerarchia di incapsulamento dei dati da spedire, definita dalla suite di protocolli Internet TCP/IP, organizzata in quattro livelli, come mostrato in Figura 6. Protocollo Livello HTTP TCP IP dipende dalla rete Accesso alla rete header] Figura 6. | quattro strati di incapsulamento, i relativi protocolli per scambiare dati su Internet, e un esempio grafico di come i vari messaggi vengono incapsulati. Nei pacchetti dello strato più in basso, quello di accesso alla rete, solutamente, oltre all'header, compare anche un piccolo pezzettino chiamato trailer, che determina la fine del pacchetto. In pratica, è come se il messaggio da inviare da un certo mittente verso un destinatario venga prima messo dentro una scatola A, che contiene metadati del messaggio sul coperchio (header), e i dati veri e propri al suo interno (il payload). Poi, la scatola viene ricevuta dal postino, che a sua volta mette l'intera scatola A dentro una nuova scatola B, anch'essa dotata di nuovi metadati sul coperchio (header) e il cui contenuto (payload) è l’intero messaggio definito dalla scatola A. A sua volta, la scatola B viene ricevuta da un centro di distribuzione postale, e viene inserita all'interno di una nuova scatola C, con dei suoi metadati (header) e con il contenuto corrispondente all'intera scatola B. Alla fine, la scatola C viene data ad un corriere che la organizza secondo i suoi criteri in una nuova scatola D in modo simile all'approccio usato in precedenza negli altri passaggi, e la fa pervenire al centro di distribuzione più vicino al destinatario. Questo centro di distribuzione estrae la scatola C, che viene passata all'ufficio postale più indicato, che a sua volta estrae la scatola B per poi passarla al postino. Il postino, infine, arriva all'indirizzo di consegna, estrae la scatola A e la consegna al destinatario, che la apre e ottiene il contenuto di partenza - ovvero il payload originariamente messo dal mittente dentro la scatola A. Esempio di incapsulame nto trailer Il punto cruciale dei pacchetti IP instradati dal protocollo, indipendentemente dalla versione utilizzata, è che specificano, per ogni pacchetto, l'indirizzo IP del mittente e l'indirizzo IP del destinatario. Come abbiamo spiegato nel precedente capitolo, un indirizzo IP (in base alla versione 4 del protocollo, mentre nella versione 6 la sua forma è leggermente diversa) è una sequenza di quattro numeri separati da punti, dove ogni numero può assumere un qualsiasi valore tra 0 e 255, ad esempio 130.136.130.1. Tutti i dispositivi collegati ad Internet sono univocamente identificati da uno specifico indirizzo IP. Per cui, non solo il server web dell'esempio in Figura 1 è dotato di un IP, ma anche il computer collegato alla rete su cui viene eseguito il browser che fa la richiesta della risorsa ad un certo URL è dotato di indirizzo IP, ad esempio 79.40.124.122. La differenza tra i due indirizzi IP è che mentre quello del server web è statico, ovvero non cambia nel tempo, quello del computer su cui è installato il browser, in linea di principio, è dinamico, ovvero cambia ogni qual volta quel computer si collega a Internet. È bene sottolineare che, dipendentemente dalle particolari reti che devono essere attraversate, è possibile siano necessari più pacchetti IP per recapitare un messaggio completo da un mittente a un destinatario, perché spesso ogni rete specifica una dimensione massima per pacchetto che può essere trasportato. Di conseguenza, è possibile, come nell'esempio di destra in Figura 5, che un messaggio venga spezzato in più di un pacchetto IP da consegnare al destinatario. Considerando questa situazione, emerge un'altra caratteristica tipica del protocollo IP, ovvero la comunicazione senza connessione. In pratica, i pacchetti IP di un certo messaggio vengono instradati in modo completamente indipendente tra loro, visto che ogni pacchetto contiene esplicitamente l'indirizzo del computer a cui deve essere recapitato. Nello strato di rete, il mittente e il destinatario non devono mettersi d'accordo prima di inviare i dati, ma semplicemente agiscono senza conoscere l'eventuale stato (attivo, non disponibile, etc.) dell'altro. Di conseguenza, è possibile che i pacchetti possano perdersi, non arrivare nell'ordine in cui sono stati mandati, arrivare duplicati, e quant'altro. Il protocollo IP, tuttavia e proprio per la sua natura di essere senza connessione, non è responsabile della risoluzione di queste problematiche, e demanda tutta la gestione di queste situazioni direttamente allo strato di trasporto dei due computer mittente e destinatario coinvolti nella comunicazione, regolato dal protocollo TCP. 5. Domain Name Server (DNS) e router Negli scenari presentati nelle sezioni precedenti, e che abbiamo in qualche modo anticipato anche nel capitolo precedente quando abbiamo portato avanti la storia del “cosa succede quando si clicca su un link ipertestuale”, abbiamo tralasciato due aspetti fondamentali per permettere la comunicazione tra il mittente e il destinatario di un messaggio e, quindi, il corretto instradamento dei pacchetti. Queste due questioni si possono riassumere nelle seguenti due domande: 1. Come si fa a recuperare l'indirizzo IP del server web a cui mandare il messaggio di richiesta preparato dal browser, ovvero i relativi pacchetti IP, se si ha solo a disposizione il nome del server web (ad esempio, it.wikipedia.org)? 2. Abbiamo visto che i pacchetti IP vengono instradati attraverso i vari nodi di Internet prima di arrivare al destinatario, ma cosa sono davvero questi nodi? Inizialmente, quando Internet era ancora piccola, esisteva una specifica tabella di mappatura tra il nome dei server web della rete e il relativo indirizzo IP statico che gli era stato assegnato. In pratica, questa mappatura era messa a disposizione su un documento che si poteva scaricare ed era mantenuta da uno specifico ente, lo Stanford Research Institute. Tuttavia, con l'ingrandimento esponenziale di Internet negli anni successivi, avere un meccanismo centralizzato che mettesse a disposizione queste mappature non era più gestibile. Per ovviare al problema, agli inizi del 1980 venne creato il Domain Name System (DNS). Il DNS altro non è che una sorta di elenco del telefono di Internet. Infatti, partendo dal nome di un server web, ad esempio it.wikipedia.org, permette di ottenere il relativo indirizzo IP, 208.80.154.224 per l'esempio introdotto. In Internet, ci sono diversi computer speciali chiamati server DNS, il cui ruolo è quello di restituire il corretto indirizzo IP per un certo nome a seguito di una richiesta fatta dal DNS Resolver a disposizione sul computer mittente del messaggio. In pratica, ogni volta che si chiede di avere informazioni una risorsa ad un certo URL, il browser prima contatta il DNS Resolver a disposizione del computer che lo ospita e gli chiede di ottenere il relativo indirizzo IP dell'host specificato nell'URL. Il DNS Resolver contatta il più vicino server DNS che conosce - il cui indirizzo IP è stato configurato a mano o ottenuto dinamicamente nel momento in cui il computer mittente si è connesso a Internet - mandandogli la richiesta di risoluzione. Una volta trovato l'IP, eventualmente chiedendo aiuto anche ad altri server DNS sparsi per la rete, il server DNS restituisce la mappatura al DNS Resolver, che lo mette a disposizione del browser e, eventualmente, anche ad altre applicazioni. In questo modo, ora si ha a disposizione anche l'indirizzo del server web da contattare, che verrà usato per preparare i vari pacchetti IP da inviare al computer destinatario. | server DNS si aggiungono alla lista di dispositivi che abbiamo visto finora, insieme ai server web e ai computer personali collegati alla rete, e che fanno parte di questa enorme rete di comunicazione chiamata Internet - un'immagine parziale di rappresentazione di Internet datata 2005 è introdotta in Figura 7. A livello astratto, ogni nodo di Internet è, di fatto, uno specifico computer che può avere uno 0 più ruoli. | nostri computer personali di casa servono a noi per collegarci a Internet, reperire e scambiare informazioni con altre persone connesse alla rete, ad esempio usando specifici servizi come il Web o la posta elettronica. | server web sono dei computer in grado di interpretare richieste HTTP e, di fatto, mettono a disposizione pagine web che possono essere richieste in modo da poterle visualizzare e navigare su un browser. | server DNS sono dei computer che permettono di recuperare un indirizzo IP a partire da un certo nome di dominio. Tuttavia, c'è almeno un altro componente, un altro computer speciale, che è fondamentale per il corretto funzionamento della rete, ovvero il router. La presenza dei router, così come delle altre tecnologie presentate in questo capitolo, ci permette di estendere ulteriormente lo scenario introdotto in Figura 1 che descrive la sequenza di azione che vengono eseguite a seguito di un click su un link di una pagina Web. Infatti, la nuova versione, in Figura 8, mostra tutti i passaggi finora introdotti. In particolare, a seguito di un click su un link di una pagina web visualizzata sul browser di un computer, viene composta un messaggio HTTP di richiesta di una specifica pagina web identificata da un URL. Una volta recuperato l'indirizzo IP dal nome del server web che ha la pagina a disposizione usando il DNS, il messaggio HTTP viene incapsulato da uno o più pacchetti IP che vengono poi inviati dal computer mittente al router più vicino — ad esempio il router di casa. Da lì, i pacchetti IP vengono instradati nella rete finché non raggiungono il server web destinatario, che riceve il messaggio, e impacchetta una copia del documento richiesto in un nuovo messaggio HTTP di risposta. A sua volta, questo messaggio viene incapsulato in uno o più pacchetti IP inviati dal server web al router più vicino, e poi instradati fino al mittente. Una volta ricevuto, il messaggio di risposta viene passato al browser che visualizza a video il contenuto del payload del messaggio HTTP.