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