Le reti - Università degli Studi di Milano

Corsi di Laurea in Biotecnologie
(primo anno interfacoltà)
Corso integrato di Matematica,
Informatica e Statistica
Informatica di base
Linea 1
Daniela Besozzi
Dipartimento di Informatica e Comunicazione
Università degli Studi di Milano
Terza lezione:
Le reti
(Capitolo 3)
Informatica di base – Linea 1
2
Prima parte:
Introduzione
Informatica di base – Linea 1
3
Divide et impera
• In molti ambiti informatici si affrontano
problemi complessi:
– troppo difficili da risolvere “in un unico passaggio”
• In questi casi si adotta la strategia “divide et
impera”:
– dividi il problema in tanti sottoproblemi più semplici
– risolvi tutti i sottoproblemi
– sfrutta le soluzioni dei sottoproblemi per trovare la
soluzione del problema iniziale
Informatica di base – Linea 1
4
Divide et impera
• Abbiamo già utilizzato questa idea?
– problema: scrivere un programma in un linguaggio di alto
livello e farlo eseguire da una macchina
• da linguaggio di alto livello ad assembly
• da assembly a linguaggio macchina
• Per cosa useremo questa tecnica?
– più avanti, per i fogli di calcolo
– ora, per capire l’approccio usato nelle reti
• “Ma cosa c’entrano le reti con i fogli di calcolo?”
– nulla, “divide et impera” si applica ad ambiti diversi…
Informatica di base – Linea 1
5
Problema (esempio)
• Voglio inviare una mail
• Soluzione monolitica  scrivi un programma
che si occupi di:
– permettere all’utente di scrivere le mail
– comunicare l’informazione
• inviare il segnale, indipendentemente dalla
connessione fisica utilizzata (cavo, etere, ecc.)
• assicurarsi che l’informazione sia stata ricevuta
• ecc.
 troppo difficile!
Informatica di base – Linea 1
6
Soluzione “divide et impera”
• Dividiamo il problema in sottoproblemi:
– come si invia l’informazione su un mezzo fisico
(cavo, etere, ecc.)?
– come ci si può assicurare che l’informazione sia
stata ricevuta?
– ...
– scrivi un programma che permetta all’utente di
scrivere mail
Informatica di base – Linea 1
7
Vantaggi della soluzione
“divide et impera”
• Le componenti sono specializzate:
– ognuna svolge un compito specifico, quindi:
• saranno meglio ottimizzate
• avranno meno errori
• Se volessimo scrivere un’applicazione diversa
(es: un browser)?
– potremmo utilizzare buona parte del lavoro fatto,
senza cambiare nulla
Informatica di base – Linea 1
8
Seconda parte:
Lo stack ISO/OSI
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
“E adesso cos’è sta roba?!!... Non venirmi a dire che serve
sapere queste cose per usare internet!”
Informatica di base – Linea 1
9
Lo stack ISO/OSI
• Utilizzato per suddividere il
problema della comunicazione
in rete in tanti sottoproblemi
• Ogni livello ha un compito
specifico e diverso da quello
degli altri livelli
Applicazione
Presentazione
Sessione
Trasporto
Rete
– OSI = Open Systems Interconnection
– ISO = International Organization for
Standardization
Informatica di base – Linea 1
Collegamento
Fisico
10
Il livello fisico
• Stabilisce come deve avvenire la
comunicazione sul canale di
comunicazione:
– nella comunicazione su cavo:
• a quanti volt corrisponde il valore 1 e
a quanti volt corrisponde il valore 0?
– nella comunicazione su onde radio:
• quale deve essere la frequenza
utilizzata?
Informatica di base – Linea 1
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
11
Il livello di collegamento
• Il problema: su un canale può scrivere
un solo computer per volta
• se due computer scrivono sul canale
nello stesso momento, nessuno dei due
riesce a leggere dal canale
• Come possono fare i computer di una
rete a sincronizzarsi in modo da
parlare uno alla volta?
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
Informatica di base – Linea 1
12
Ethernet
• E’ un protocollo che definisce come devono
essere risolti i problemi al livello di
collegamento:
– è adatto a funzionare con diverse soluzioni a
livello fisico:
• con cavo
• senza cavo (Wi-Fi=Wireless Fidelity)
• Non è l’unico protocollo per questo livello:
– esempio: bluetooth (frequenza radio a corto raggio)
Informatica di base – Linea 1
13
Il livello di rete
• Come conviene dividere
l’informazione che deve
essere inviata?
– suddivisione in pacchetti, cioè
in piccole componenti di
informazione
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
Informatica di base – Linea 1
14
Il livello di rete
• Come faccio a mandare un messaggio
destinato a un determinato computer?
• Protocollo IP (=Internet protocol):
– assegno un numero univoco a ogni computer
– quando mando un messaggio, scrivo il numero del
destinatario
– i computer che non sono i destinatari, ignorano il
messaggio
Informatica di base – Linea 1
15
Gli indirizzi IP
• Sono formati da 4 numeri compresi tra 0 e 255:
– di solito si indicano separati da un “.”
– es: 159.149.200.150
• Perché proprio 255?
• Ogni computer connesso alla rete deve avere
un IP differente dagli altri:
– quanti computer al massimo possono essere
connessi?
Informatica di base – Linea 1
16
Le reti locali
• I computer collegati direttamente tra loro
formano una rete locale
• Se mando un messaggio da un computer ad
un altro computer nella rete locale:
– scrivo l’indirizzo IP del destinatario
– mando il messaggio a tutti i computer
– i computer che non sono destinatari ignorano il
messaggio
Informatica di base – Linea 1
17
“Le reti” e “la rete”
• I computer connessi direttamente tra loro formano
una rete locale (LAN = Local Area Network)
• Le reti locali sono organizzate in reti geografiche
(WAN = Wide Area Network)
– reti progettate per inviare informazioni a località
distanti
– i computer non sono tutti collegati tra loro
• La rete (Internet) è composta da più reti WAN
collegate tra loro
Informatica di base – Linea 1
18
La rete
• Quando mando un messaggio per un
computer che non è nella stessa rete locale:
– indico l’indirizzo IP del destinatario
– un computer nella mia rete si accorge che il
messaggio non è per un computer nella mia rete
locale, e lo inoltra ad un’altra rete
– quando la comunicazione arriva alla rete corretta,
il computer destinatario riceve il messaggio
Informatica di base – Linea 1
19
“Ma questo non è quello che
faccio tutti i giorni!”
“Se sto capendo bene, mi stai dicendo che ogni
macchina ha un indirizzo IP e che se voglio
comunicare con questa macchina, devo conoscere il
suo l’indirizzo. Quando voglio leggere una pagina
web, devo dare il nome della macchina dove si trova
la pagina, giusto? Ecco, appunto, ma io non ho mai
scritto un indirizzo IP: ho sempre usato nomi più
semplici, come www.google.com. Come è possibile
allora che funzioni lo stesso?”
Informatica di base – Linea 1
20
Il DNS
• DNS = Domain Name System
• E’ difficile, per l’uomo, memorizzare gli indirizzi IP:
– ad ogni indirizzo IP si associa un nome più semplice da
ricordare (es: it.wikipedia.org)
• Quando si scrive il nome, si richiede ad un server
DNS di risolvere quel nome:
– cioè di dire a quale indirizzo IP quel nome corrisponde
– per fare questo, il server DNS mantiene sempre
aggiornata una lista di nomi e dei relativi indirizzi IP
Informatica di base – Linea 1
21
Il livello trasporto
• Se invio tanti pacchetti:
– come posso essere sicuro che
arrivino tutti ?
– come posso sapere in che
ordine arrivano?
• pacchetti diversi possono
prendere strade diverse, alcune
più rapide, altre più lente
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
Informatica di base – Linea 1
22
Il livello trasporto
• Analogia di Vincent Cerf:
Informatica di base – Linea 1
23
Una soluzione: il protocollo TCP
• TCP = Transmission Control Protocol (TCP/IP)
• Con il protocollo TCP ogni pacchetto viene
numerato in ordine sequenziale:
– quando i pacchetti vengono ricevuti, è possibile
ricostruire l’ordine di tutti i pacchetti
• I pacchetti sono inviati uno alla volta usando
diversi itinerari tra quelli disponibili
• dato che ogni pacchetto può essere instradato su un
cammino diverso, interruzioni di servizio o congestioni non
rappresentano un problema insormontabile
Informatica di base – Linea 1
24
Il protocollo TCP
Informatica di base – Linea 1
25
I livelli sessione, presentazione e
applicazione
• Sessione: serve per stabilire,
mantenere o terminare una
connessione (sessione) fra
applicazioni
– Come è possibile mantenere delle
connessioni (continue) tra due
macchine?
– Come è possibile controllare il flusso
di dati trasmessi?
• es: punti di controllo permettono di
riprendere dall’ultimo pacchetto inviato in
caso di errori o malfunzionamenti
Informatica di base – Linea 1
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
26
I livelli sessione, presentazione e
applicazione
• Presentazione: gestisce la
trasformazione dei dati in formati
standardizzati
– Come vengono codificati i dati
durante la trasmissione?
– Come è possibile offrire servizi
comuni come, ad esempio, la
compressione?
• Applicazione: si occupa di
interfacciare l’utente con la
macchina
Informatica di base – Linea 1
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento
Fisico
27
Terza parte:
Le applicazioni Internet
Informatica di base – Linea 1
28
Il web
• Si richiede ad una macchina (il server) di darci
alcune informazioni:
– queste informazioni vengono visualizzate
all’interno del browser (es: Internet Explorer,
Mozilla Firefox, Google Chrome, ecc.)
• Non confondete il web con Internet:
– il web è una delle possibili applicazioni che si
possono usare in Internet
Informatica di base – Linea 1
29
Architettura client/server
• Il server è il computer che memorizza la pagina web, il client
è il computer che accede alla pagina web
– Quando cliccate su un link, il vostro computer comincia un’interazione
con il server
– Una volta che il server vi ha inviato la pagina, l’interazione client/server
termina
– Il server è in grado di gestire più client contemporaneamente
Informatica di base – Linea 1
30
La posta elettronica:
come funziona?
(1) Invio
Utente
(mittente)
Server
di
posta
Messaggio
“Ci sono messaggi
per me?”
(2) Ricezione
Server
di
posta
Utente
(destinatario)
Messaggio
31
Caratteristiche della
comunicazione
• Sincrona:
– mittente e destinatario devono agire
contemporaneamente nella comunicazione
– es: telefono, fax
• Asincrona:
– mittente e destinatario possono agire in tempi
diversi nel processo di comunicazione
– es: posta cartacea, email
Informatica di base – Linea 1
32
L’instant messaging
• Permette di scambiare messaggi (di solito in
forma scritta) in tempo reale
• Esempi:
– MSN, Google talk, Skype
Informatica di base – Linea 1
33
Il voice over IP (VoIP)
• E’ una evoluzione dell’instant messaging:
– perché scrivere quando si può parlare?
• La voce viene digitalizzata e spedita
• In pratica è come il telefono:
– e con il telefono può interagire: con il VoIP si possono
anche fare o ricevere chiamate su telefoni tradizionali
• Alcune compagnie telefoniche usano esclusivamente
VoIP (ma voi non lo vedete perché vi permettono di
usare il telefono classico):
– ES: Fastweb
Informatica di base – Linea 1
34
Condivisione di file
• Ogni utente rende disponibile dei file che gli
altri possono scaricare
• E’ basato su un modello di comunicazione
diverso da quello classico delle altre
applicazioni: il peer-to-peer (P2P)
– ogni macchina svolge sia lavoro di client (quando
richiede un file) sia lavoro di server (quando
fornisce un file)
Informatica di base – Linea 1
35
Condivisione di file
Informatica di base – Linea 1
36
I protocolli di comunicazione
• Qual è il problema:
– In tutte le applicazioni Internet due (o più) componenti
comunicano tra loro
– Per capirsi devono definire quali messaggi vengono
scambiati
• I protocolli di comunicazione definiscono l’ordine e il
significato dei messaggi:
– esistono numerosi protocolli definiti per ogni livello dello
stack OSI
• es: protocolli IMAP, POP e SMTP per posta elettronica e newsgroup
• es: protocolli HTTP e FTP per trasmissione dati
Informatica di base – Linea 1
37
Quarta parte:
Gli algoritmi distribuiti e
il calcolo parallelo
Informatica di base – Linea 1
38
Algoritmi distribuiti
• Sono particolari tipi di algoritmi che non
coinvolgono una sola macchina, ma più
macchine
• Hanno problemi teorici maggiori rispetto agli
algoritmi classici
– esempio: è necessario garantire che le macchine
possano sincronizzarsi
Informatica di base – Linea 1
39
Vantaggi degli algoritmi distribuiti
• Permettono di calcolare risultati sfruttando
informazioni che non risiedono su una sola
macchina:
– esempio: i DNS
• Permettono di calcolare risultati più
velocemente rispetto agli algoritmi eseguiti
su una singola macchina:
– il calcolo in questo caso viene detto parallelo
– avviene in contemporanea su diverse macchine
Informatica di base – Linea 1
40
Calcolo distribuito:
un esempio (curioso)
• Il progetto “SETI@home”:
– progetto di calcolo distribuito per personal
computer
– analizza i segnali captati dal radiotelescopio di
Arecibo alla ricerca di eventuali trasmissioni radio
provenienti da intelligenza extraterrestre
• SETI = Search for Extraterrestrial Intelligence
– andate a curiosare:
http://setiathome.berkeley.edu/index.php
Informatica di base – Linea 1
41
Calcolo distribuito:
un altro esempio
• Il progetto “Folding@home”:
– progetto di calcolo distribuito per personal
computer
– analizza il corretto/errato avvolgimento delle
proteine, in relazione ad alcune patologie:
• morbo di Alzheimer, di Parkinson, della “mucca pazza”
• sclerosi laterale amiotrofica
• molti tipi di cancro
– andate a curiosare:
http://folding.stanford.edu/Italian/Main
Informatica di base – Linea 1
42
Calcolo parallelo: esempio
• Vogliamo verificare se 10 numeri dati sono tutti primi
• Prendiamo 10 computer, facciamo verificare ad
ognuno se 1 dei numeri è primo e poi mettiamo
assieme il risultato
• Il tempo per comporre il risultato è trascurabile
rispetto al tempo per calcolare se un numero è primo
• Tempo totale di calcolo: 1/10 del tempo che
servirebbe per eseguire lo stesso algoritmo su un
solo computer
Informatica di base – Linea 1
43
Calcolo parallelo: limiti
• In molti casi, il tempo di coordinamento tra
vari computer non è trascurabile
– non tutti gli algoritmi si possono rendere paralleli
in modo efficiente
• In generale, se la complessità di un algoritmo
su una singola macchina è X, la complessità su
n macchine è maggiore o uguale a X/n
Informatica di base – Linea 1
44
Calcolo parallelo e complessità
computazionale
• Dunque
– il calcolo parallelo può servire per calcolare più
rapidamente un risultato di una computazione
particolarmente complessa
• Tuttavia
– il tempo di calcolo diminuisce “solo” linearmente con il
numero di computer
– ci sono alcuni algoritmi che hanno complessità
computazionale talmente alta che, nonostante siano resi
distribuiti, richiedono tempi lunghissimi
• o, addirittura, non sono praticamente calcolabili
Informatica di base – Linea 1
45
Quinta parte:
I motori di ricerca
Informatica di base – Linea 1
46
I link
• Link = collegamento tra due risorse
• Una delle caratteristiche principali del web è
la possibilità di “navigare” tra le sue risorse:
– pagine e altre risorse (audio, video, ecc.)
• Si dice che una risorsa “punta” ad un’altra:
– àncora = parte della risorsa dalla quale parte il
collegamento
– destinazione = risorsa riferita dal link
Informatica di base – Linea 1
47
I link: esempio
àncora
link
destinazione
La pagina “Informatica
di base – linea 1” ha
un link in uscita verso
la pagina “Daniela
Besozzi” che ha un
link in ingresso
Informatica di base – Linea 1
48
Quanto è grande Internet
• Quanto è grande Internet?
– quante pagine ci sono?
– quanti link?
• Difficile da valutare esattamente
– perché in continua crescita
• Per avere un’idea:
– 4 miliardi di pagine
– 100 miliardi di link
Informatica di base – Linea 1
49
Problema
• C’è troppa informazione!
• Come facciamo a trovare quello che
cerchiamo?
Informatica di base – Linea 1
50
Le directory
• Si costruisce manualmente una gerarchia di
argomenti con i relativi link
Informatica di base – Linea 1
51
http://www.google.it/dirhp
Informatica di base – Linea 1
52
Le directory. I problemi
• Non tutte le pagine vengono linkate
• La struttura della directory è arbitraria:
– quante categorie ci devono essere?
• Le risorse in Internet sono dinamiche (variano
molto in fretta):
– è necessario aggiornare la directory molto spesso
• Il lavoro è manuale:
– lento, soggetto ad errori, costoso
Informatica di base – Linea 1
53
Ricerca automatica. Una soluzione
naive
• Supponiamo di voler trovare una procedura
per ricercare una parola all’interno del web
• Scriviamo un programma che,
automaticamente, cerchi “il più possibile” nel
web per trovare la parola cercata
Informatica di base – Linea 1
54
Soluzione naive. Idea
• Visitiamo tutte le pagine, partendo da una
(che abbia tanti link in uscita) e seguiamo i link
• Quando visitiamo una nuova pagina (se non la
abbiamo già visitata), cerchiamo il contenuto
della parola anche in quella pagina:
– se lo troviamo, aggiungiamo la pagina appena
visitata ad un elenco (il risultato della ricerca)
Informatica di base – Linea 1
55
Soluzione naive. Idea
Prima
pagina
visitata
Link
pagina
1
Link
Link
pagina
2
Informatica di base – Linea 1
56
Soluzione naive
• Input: una parola, una pagina da cui iniziare
• Output: l’elenco delle pagine che contengono
quella parola
• E’ troppo complesso specificare un algoritmo
– presentiamo solo una procedura, in cui alcuni
passi non sono ben specificati
Informatica di base – Linea 1
57
Soluzione naive: procedura
1. Chiamiamo “alfa” la pagina con cui cominciare
2. Chiamiamo “beta” l’elenco (inizialmente vuoto) di
pagine
3. Se la pagina alfa non è già stata visitata, allora:
A. Se la parola in input è presente in alfa, aggiungi alfa a beta
B. Aggiungi tutti i link in uscita da alfa alle pagine da visitare
C. Segna alfa come pagina già visitata
4. Se ci sono altre pagine da visitare, chiama alfa una di
queste pagine, rimuovi la pagina alfa dalle pagine
ancora da visitare, e vai al passo 3
5. Termina restituendo in output l’elenco beta
Informatica di base – Linea 1
58
Soluzione naive: problemi
1. Tempo (fisico) richiesto:
– assumiamo 10ms per percorrere un link
– trascuriamo molti altri problemi
– 10ms per 100 miliardi di link = 32 anni
2. Ordine delle pagine:
– le pagine dell’output non hanno un ordine
3. Non ricerco in tutte le pagine:
– ma solo nelle pagine raggiungibili
Informatica di base – Linea 1
59
Soluzione al problema delle
prestazioni
• In realtà, i motori di ricerca impiegano pochi decimi
di secondo per fare una ricerca
– rispetto ai 32 anni (stimati) del nostro algoritmo!
• Idea: visitare il web una volta sola e fare un indice
– memorizza tutte le parole in modo ordinato
– le successive ricerche devono essere fatte all’interno
dell’indice e non nel web
• Un programma detto crawler si occupa di questa
operazione
Informatica di base – Linea 1
60
L’indice. L’idea
• Supponete che una certa pagina X contenga il testo:
“Il corso di informatica è bellissimo!”
• Il crawler memorizza, all’interno dell’indice, che le
parole “corso”, “informatica” e “bellissimo”
compaiono nella pagina X
– le parole troppo brevi o comuni non vengono memorizzate
• Quando devo fare una ricerca, basta scorrere l’indice:
– è ordinato, quindi posso fare molto in fretta
• riguarda le slide sulla complessità computazionale
Informatica di base – Linea 1
61
Problema dell’ordine delle pagine
• Se cerchiamo “Università degli Studi di
Milano” otteniamo circa 3 milioni di risultati
– ci sono 3 milioni di pagine che contengono le
parole “università” “studi” “milano”
• Se cercassimo la “home page” dell’Università
e usassimo il nostro algoritmo naive, dopo
aver aspettato 32 anni, dovremmo ancora
scorrere tutti i 3 milioni di risultati per trovare
quello che ci interessa
– perché non sonoInformatica
ordinati!
di base – Linea 1
62
Soluzione al problema dell’ordine
delle pagine
• Soluzione: diamo un peso alle pagine
– il termine tecnico è page ranking
• Idea: più grande è il numero di link in ingresso,
più una pagina è importante:
– perché sono in tanti che la puntano
– mostriamo le pagine all’utente in ordine di
importanza
• Tante altre tecniche
– che possono variare tra diversi motori di ricerca
Informatica di base – Linea 1
63
Problema delle pagine non
raggiungibili
• Pagine raggiungibili
– le pagine che possono essere raggiunte, seguendo
i link, dalla pagina iniziale
• Non tutte le pagine sono raggiungibili. Es:
– pagine senza link in ingresso
– pagine create temporaneamente
– pagine ad accesso limitato
• es: serve una password
Informatica di base – Linea 1
64
Problema delle pagine non
raggiungibili: soluzione?
• I motori di ricerca attuali non risolvono questo
problema
• Inoltre, introducono un altro tipo di pagine
sulle quali non viene svolta la ricerca:
– le pagine non ancora indicizzate
– se una pagina viene creata (o modificata), non
verrà trovata dal motore di ricerca fino a quando il
crawler non la visita
• Google ci mette qualche settimana per fare il crawling
di tutto il web
Informatica di base – Linea 1
65
Sesta parte:
Conclusioni
“Accidenti se è lunga questa lezione!”
Informatica di base – Linea 1
66
Le reti
• Problema difficile, che coinvolge diversi
aspetti:
– da quello “fisico” alla gestione della
comunicazione
Informatica di base – Linea 1
67
La rete
• Viene chiamata con il termine Internet:
– uno dei protocolli utilizzati nelle reti  Internet
Protocol
• da cui deriva il termine “IP address”
– la rete è composta da tante reti WAN collegate tra
loro
• Internet è una rete sulla quale possono essere
eseguite diverse applicazioni:
– web, posta elettronica, ecc.
Informatica di base – Linea 1
68
Il calcolo parallelo
• Utilizzato per velocizzare l’esecuzione di
programmi i cui algoritmi hanno complessità
computazionale molto alta
• Soluzione spesso usata per ottenere risultati di
ricerca:
– per esempio in bioinformatica
Informatica di base – Linea 1
69
Dove studiare
• Capitolo 3 del “Fluency”
• Capitolo 4 del testo di Brookshear
Informatica di base – Linea 1
70