Estratto del documento

Internet: storia e sviluppo

Internet è una tecnologia che ha visto i primi embrioni negli anni '50, quando fu progettata dal Pentagono per permettere le comunicazioni con gli avamposti americani remoti, senza la possibilità di avere un mezzo fisico permanente. Gli avamposti si trovavano in tanti luoghi sparsi per il mondo, in nazioni straniere, anche separate da oceani e che si trovavano in posizioni strategiche nel Pacifico. Non era possibile usare le linee telefoniche, per questo è stata pensata l'infrastruttura internet con i suoi protocolli che permette a terminali diversi di potersi connettere.

Si è partiti da soli 3 nodi su ARPANET, per arrivare alla situazione attuale in cui ci sono letteralmente 15 miliardi di dispositivi connessi contemporaneamente. Non a caso si sono esauriti gli indirizzi IPv4: per 15 miliardi non bastano 32 bit, per cui si è passati a IPv6 che ha 128 bit.

Struttura della rete

Internet è proprio quello che ci immaginiamo: una rete, con una grandezza enorme di nodi. I nodi finali che si interfacciano con l'utente sono gli host o terminali, che possono essere completamente diversi tra di loro: server, PC, laptop, smartphone, televisori, semafori, automobili... I nodi intermedi sono i router, che gestiscono il traffico interno della rete (altri nodi intermedi sono switch, access point e modem), mentre fisicamente i nodi sono connessi attraverso collegamenti che variano tantissimo in tecnologia: cavo, fibra ottica, satellite... Con Ethernet, WiFi, LAN, MAN, WAN... Si tratta quindi di una gigantesca rete di reti eterogenee, gestite dai vari operatori (ISP - Internet Service Provider) che si accordano per unirle insieme.

Commutazione e trasferimento di dati

Quando mettiamo in comunicazione due nodi, questa operazione la chiamiamo commutazione. La commutazione può essere di due tipi: a circuito o a pacchetto. L'internet attuale funziona con la commutazione a pacchetto, ma è stata inventata per prima quella a circuito, più semplice. Il primo strumento costruito per trasferire informazioni da un punto all'altro è stata la rete telefonica. Essa è nata 120 anni fa e anche il Polimi svolse un ruolo importante nella sua creazione in Italia! Questa commutazione si chiama a circuito perché le telefonate funzionavano così: c'era un operatore al centralino che doveva spostare dei cavi per creare dei circuiti in modo da mettere in comunicazione i due interlocutori.

La commutazione di circuito raggiungeva in modo puntuale la destinazione che si voleva, ma non consentiva il trasferimento dei dati se non dopo aver creato un circuito, e per tutto il tempo in cui il circuito veniva occupato, nessun altro poteva usare quel percorso. Ciò è vero ancora oggi con i telefoni. I telefoni fissi usano cavi di rame, mentre i cellulari, anche se usano unicamente l'etere, in caso di alto traffico di telefonate potrebbero non riuscire a fornire una linea libera, perché i commutatori le hanno occupate tutte e non riescono a rilasciarne qualcuna. Per questo motivo internet non era adatto con la commutazione a circuito, ci voleva qualcosa di più performante.

Commutazione a pacchetto

Se anziché trasferire tutta l'informazione in componenti unite (un blocco unico di informazioni) la prendessi, la spezzassi in pezzi e la mandassi in rete, quell'informazione potrebbe viaggiare sempre anche se il destinatario non è reperibile. Col telefono, il destinatario deve alzare la cornetta altrimenti l'informazione non arriva. Ma con internet noi possiamo stare al bar ad ubriacarci ammerda che le mail ci arrivano lo stesso. L'informazione arriva e sarà processata al momento giusto. La commutazione di pacchetto quindi non trasmette più in maniera dedicata e consente il post-processing.

Funzionamento dei router

Come detto i nodi intermedi che permettono di instradare i pacchetti sono i router, ovvero instradatori. Quando un utente vuole inviare un'informazione, invia un pacchetto che è composto da due parti: uno header o intestazione, contenente metadati necessari per il trasferimento, e poi il contenuto vero e proprio. Un po' come il postino che deve consegnare una lettera: avrà un'intestazione con il destinatario e poi il contenuto della lettera. Ogni router possiede in memoria una tabella di instradamento che dice qual è il prossimo nodo da raggiungere per una certa destinazione. Sono tabelle lunghissime, con milioni di righe. Ogni router all'interno ha un suo software dedicato che deve essere ottimizzato per leggere questa tabella nel minor tempo possibile. Più il software è ottimizzato, più diminuiscono i tempi di ritardo nella comunicazione.

Capacità trasmissiva e condivisione

Supponiamo che ci sia una connessione in grado di trasferire 1 Mbps tra due entità remote (un instradatore e un terminale). Si chiama capacità trasmissiva. Questa capacità però viene condivisa tra n utenti, per esempio qui in uni. Abbiamo una connessione condivisa tra tante persone. Facciamo che un utente genera 100 kbps (anche se quando siamo connessi per la maggior parte del tempo non trasmettiamo niente). Quindi se dobbiamo garantire 100 kbps a tutti, possiamo gestire solo un massimo di 10 utenti in contemporanea. Ma questo è vero solo se usiamo il circuito! Invece con i pacchetti condividiamo con quanti utenti vogliamo e il canale viene usato per intero! Anche se un utente è connesso ma non trasmette, fa niente: la banda è garantita per tutti.

Tra l'altro, secondo la teoria della probabilità, su una popolazione di 35 utenti la probabilità che più di 10 siano attivi è solo dello 0,004 %.

Ritardi di propagazione

La commutazione a pacchetti è quindi quella usata da internet. I router hanno perciò una coda di pacchetti in ingresso che devono essere inviati nelle code di uscita. Quello che vogliamo fare ora è capire i ritardi di propagazione: quali sono, a cosa sono dovuti, come si calcolano. Il primo valore che ci interessa è la velocità di trasmissione della linea, che indichiamo con R e si misura in bps (bit per secondo). Il tempo di trasmissione T per trasmettere L bit perciò dipende dalla velocità di trasmissione, cioè T = L/R. Il ritardo di propagazione t affinché un impulso vada da un ricevitore A ad un ricevitore B dipende dalla distanza D e dalla velocità v (prossima a quella della luce) ovvero t = D/v. La somma di questi due tempi è detta tempo di attraversamento del canale Ttot = T + t, per cui è la somma del tempo di trasmissione e del tempo di propagazione.

Modalità di invio dei pacchetti

Un router può inviare pacchetti in due modalità:

  • Store and forward: il pacchetto viene inviato solo dopo la sua completa ricezione.
  • Cut through: il pacchetto viene inviato non appena viene ricevuto tutto il contenuto dell'header.

Ai ritardi indicati precedentemente bisogna aggiungere il ritardo di elaborazione, cioè il tempo speso dalla CPU per visitare la tabella di instradamento e decidere cosa fare. Questo tempo deve essere il più piccolo possibile ed è idealmente tendente a zero. Si aggiunge poi il ritardo di accodamento, dovuto al fatto che i pacchetti arrivano in modo asincrono e potrebbero arrivare in gran quantità. Quando hai la sensazione che la rete è "lenta", è perché si verificano problemi di congestione nei router!

Il fenomeno dell'accodamento rallenta la velocità della rete, e se arrivano troppi pacchetti la rete si congestiona. Riassumendo, il tempo di ritardo è la somma di quattro componenti: trasferimento + propagazione + elaborazione + accodamento.

Throughput

La velocità di trasferimento da un punto all'altro della rete (trasferimento end-to-end) si chiama throughput. Il caso più semplice in cui hai un server e un client che trasmettono rispettivamente a velocità Rs e Rc, il throughput sarà il minimo delle due velocità: in pratica vince chi fa da collo di bottiglia nella rete (bottleneck). Anche se tra il server e il client abbiamo più di un router, il throughput sarà il minimo di tutte le velocità di trasferimento nel mezzo.

Nel caso in cui invece abbiamo n coppie server-client che si scambiano dati e un tratto della rete è in comune per tutti con velocità R, in quel tratto la velocità di trasferimento non è R ma R/n perché è un tratto condiviso. Il throughput quindi potrebbe essere effettivamente più basso. Se vuoi divertirti a vedere che percorso fanno i pacchetti nella rete, esiste un sito fighissimo chiamato Traceroute in cui lo puoi vedere. Da provare.

Definizione di internet

L'intensità di traffico si indica con la formula λL/R dove λ indica la frequenza media di pacchetti al secondo, rappresenta la variabile della formula. Se questo parametro è basso il ritardo di accodamento tende a zero, ma se si alza fino ad un certo valore tale che la formula valga 1 il tempo di accodamento tende a infinito, perché in pratica arrivano più pacchetti di quanti ne possiamo gestire e la coda si allunga indefinitamente! La conseguenza di ciò è che in un fenomeno di congestione i pacchetti in arrivo vengono scartati e si perdono. A seconda del protocollo di comunicazione usato essi poi potrebbero essere ritrasmessi oppure no.

Tre definizioni di internet

Ora cerchiamo di dare una definizione di internet. Possiamo farlo in tre modi:

  • Un'entità per trasferire informazioni in modo intellegibile fra due estremi remoti (cioè in modalità end-to-end). Gli estremi danno o ricevono informazioni, mentre internet ha il compito di trasmettere.
  • Un insieme di ingranaggi (coloro che richiedono l'informazione, host), di servitori (che danno e pubblicano informazioni), di instradatori (che pensano a trasferire pacchetti di informazioni in andata e ritorno) e di linee di interconnessione, combinati secondo una certa architettura.
  • Una sovrapposizione di layer funzionali. Questi ultimi li spieghiamo fra un paio di paragrafi.

Protocolli e livelli della rete

I protocolli sono insiemi di regole sul comportamento della rete. Essi sono modulari, ovvero ognuno svolge un solo ruolo di tutta l'infrastruttura di internet. I problemi della rete sono suddivisi in sette moduli e ogni protocollo gestisce uno o alcuni di questi livelli. L'interfaccia è il contratto che specifica le primitive di servizio, ovvero le funzioni che permettono al livello sovrastante di svolgere il suo compito (o al contrario sono le funzioni del livello sottostante che mi permettono di ricevere informazioni). Gestiscono la comunicazione tra due livelli adiacenti. Come anticipato da Fraternali, sai già quali sono questi sette livelli (che Bertozzi ha riassunto in cinque ma vabbè):

  • Livello fisico: È tutta la parte hardware che permette la comunicazione e gestisce i segnali. I pacchetti a questo livello si chiamano bit.
  • Livello di collegamento: Gestito da tecnologie Ethernet, WiFi, PPP. Fungono da filtro dei segnali e permettono il collegamento tra due nodi. I messaggi a questo livello si chiamano frame.
  • Livello di rete: Gestito dal protocollo IP, decide l'instradamento dei pacchetti e permette la comunicazione tra più nodi. I pacchetti a questo livello si chiamano datagrammi. L'instradatore agisce in questi tre livelli, in quanto non gli interessa il contenuto dei pacchetti, solo dove mandarli e come. I router quindi non hanno nulla a che fare con i protocolli TCP e UDP!
  • Livello di trasporto: Gestito dai protocolli TCP e UDP. I pacchetti a questo livello si chiamano segmenti.
  • Livello applicativo: È la parte visibile all'utente. I protocolli più usati sono HTTP, SMTP, FTP. I pacchetti a questo livello si chiamano messaggi.

Trasmissione e comunicazione

Anche se non c'entra direttamente col discorso è interessante una riflessione a cui siamo giunti e non è facile rispondere: come comunicare da qui a un computer che sta negli Stati Uniti? C'è chi pensa ai cavi in fibra ottica sottomarini e chi al wireless via satellite. La risposta giusta è la prima: la fibra ottica permette al segnale di andare alla velocità della luce che è la più alta che ci sia. Il satellite intanto non è wireless secondo la definizione delle telecomunicazioni: con wireless si intendono reti di piccole dimensioni. I satelliti poi usano microonde per comunicare e non possono fare instradamento, ma solo i primi due livelli, cioè comunicazione da punto a punto, senza scegliere da chi andare.

Esercizio di efficienza

Facciamo un breve esercizio per parlare di efficienza. Abbiamo due client A e B che devono mandare rispettivamente 2 KB e 20 KB di dati con frame da 1 KB e 10 KB. Ogni frame richiede 58 byte per memorizzare lo header (8 per il livello fisico, 20 per il livello di collegamento e 30 per il livello di rete). Calcola nei due casi il totale dei byte inviati e l'efficienza di trasmissione.

Caso A
Ogni frame contiene lo header e i dati: 58 + 1024 = 1082 byte
I frame sono due, per cui 1082*2 = 2164 byte
L'efficienza si calcola come byte di dati inviati / byte totali inviati: 2048/2164 = 94,64 %

Caso B
Ogni frame contiene lo header e i dati: 58 + 10240 = 10298 byte
I frame sono due, per cui 10298*2 = 20596 byte
L'efficienza si calcola come byte di dati inviati / byte totali inviati: 20480/20596 = 99,43 %

Questo esempio ci insegna che l'efficienza aumenta di molto se usiamo pacchetti più grossi. Il compito di noi ingegneri informatici infatti sarà quello di creare reti che siano il più efficienti possibile. Usare pacchetti più grandi aumenta questo valore, perché di tutti i dati che inviamo la maggior parte sono dati utili.

Altre terminologie e considerazioni

Client: host che fa pull, cioè preleva dati
Server: host che fa push, cioè fornisce contenuti

Sai che quando fai un contratto internet per casa o telefono il contratto ha sempre due valori, velocità di trasmissione in download e in upload, e il download è sempre quello più grande. Perché? Perché noi il più delle volte siamo client, poche volte carichiamo dati. Nel dimensionamento delle linee di up e down ci sono aspetti economici e organizzativi, nel senso se tu il più delle volte fai pull ci si impegna a fare reti di pull fatte meglio. Se fai reti di push performanti ma poi non vengono utilizzate hai uno spreco di soldi e di energie varie. E gli informatici che fanno servizi devono cogliere anche questi aspetti: se il canale di push è ristretto, devi usarlo il meno possibile negli applicativi web.

Facendo dei calcoli che purtroppo non ho sotto mano, risulta che, se dobbiamo trasferire un file a tanti host, il metodo di trasmissione dei dati client-server è il peggiore (anche se abbiamo una linea performante), invece è velocissima la trasmissione P2P. Infatti tutti i client di condivisione dei dati come BitTorrent e eMule sono peer-to-peer.

Internet viene abitualmente utilizzato per il web, il WWW che fa uso del protocollo HTTP. A seguire abbiamo la condivisione di file P2P e lo scambio di e-mail con i protocolli SMTP (per fare push) e POP/POP3 (per fare pull).

Servizi e protocolli

Precedentemente abbiamo parlato dei servizi time-sensitive, in cui il risultato è influenzato dal tempo di ritardo. Ma ci sono anche servizi che non sono time-sensitive, come la posta elettronica. È un servizio offline dove chiunque può spedire una mail in qualsiasi momento, senza che il destinatario sia in attesa del messaggio. Altri contenuti come i video real-time e i giochi multiplayer invece dipendono fortemente dal tempo (maledetto lag).

Come utenti finali siamo molto abituali ai servizi HTTP, le pagine web. Non dobbiamo però confondere il contenuto delle pagine web tutte animate e colorate da quello che è il protocollo HTTP, che si occupa delle regole di trasferimento tra host che fa push e host che fa pull. I servizi degli utenti lavorano a livello applicativo, ma non possiamo agire nei livelli più bassi (al massimo possiamo scegliere il protocollo di trasporto). Per comunicare con questo livello esiste un'interfaccia chiamata socket, che permette la comunicazione tra livello applicativo e di trasporto. È gestita interamente dal programmatore e viene identificata da due soli elementi: l'indirizzo IP che rappresenta la macchina e la porta, un numero che identifica il processo in ascolto su quella socket.

Oltre agli aspetti temporali, sai che ogni servizio può essere tollerante o meno alla perdita di pacchetti e può richiedere una certa quantità di banda oppure essere elastica. In base alla esigenza si possono usare due differenti protocolli di trasporto: TCP e UDP. Il primo instaura sempre una connessione tra gli host, garantisce che tutti i pacchetti arrivino dando una risposta al client e contiene meccanismi di regolazione per evitare la congestione. Il secondo invece non instaura connessioni, non garantisce l'arrivo di tutti i pacchetti ed è rapido e semplificato. Nessuno dei due protocolli offre servizi di crittografia, per cui è stato creato un arricchimento di questi protocolli, SSL, che è un intermediario tra essi e la socket.

Architetture di rete

Bisogna anche distinguere chiaramente le architetture client-server da quelle peer-to-peer. Nel caso client-server abbiamo che gli host seguono ruoli ben distinti. Il server è sempre attivo, ha un indirizzo IP persistente, risponde alle richieste di numerosi client. I client invece possono collegarsi in modo discontinuo, cambiare indirizzo IP, non comunicano tra loro e possono fare tante richieste allo stesso server.

Anteprima
Vedrai una selezione di 10 pagine su 44
Appunti completi corso Fondamenti di Internet e Reti Pag. 1 Appunti completi corso Fondamenti di Internet e Reti Pag. 2
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 6
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 11
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 16
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 21
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 26
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 31
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 36
Anteprima di 10 pagg. su 44.
Scarica il documento per vederlo tutto.
Appunti completi corso Fondamenti di Internet e Reti Pag. 41
1 su 44
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher fiorixf2 di informazioni apprese con la frequenza delle lezioni di Fondamenti di internet e reti e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Bertozzi Matteo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community