Domande IIW1° capitolo
Descrivere le varie componenti del ritardo in una rete a pacchetto
Descrivere i vari tipi di ritardo in una rete a pacchetto. (1) {Libro: par. 1.4.1 ed.6}
Un pacchetto parte da un host sorgente, attraversa una serie di router e arriva a un host destinazione. Durante questo tragitto, il pacchetto può subire 4 tipi di ritardo che sommati tra loro forniscono il ritardo totale di nodo. Questi ritardi sono:
- Ritardo di elaborazione: è il tempo necessario per esaminare l'intestazione di un pacchetto e per determinare dove dirigerlo.
- Ritardo di accodamento: dopo l'elaborazione un pacchetto viene diretto verso la coda che precede il router. In questa coda subisce un ritardo che dipende dal numero di pacchetti accodati e che si deve attendere prima di essere trasmesso. Questo ritardo può anche essere nullo nel caso non ci siano pacchetti in attesa nella coda.
- Ritardo di trasmissione: è la quantità di tempo richiesta dal router per trasmettere in uscita il pacchetto. Questo ritardo non dipende dalla distanza tra due router ma solo dalla lunghezza del pacchetto (L) in bit e dalla velocità di trasmissione del collegamento (R) in bps. Il ritardo di trasmissione dunque risulta essere L/R.
- Ritardo di propagazione: è il tempo richiesto per la propagazione di un bit da un router al router successivo, è quindi in funzione della distanza tra i due router (d), ma non dipende dalla lunghezza del pacchetto. Il bit viaggia alla velocità di propagazione del collegamento (v), che dipende dal mezzo fisico (compresa tra 2x108 m/s e 3x108 m/s). Il ritardo di propagazione è quindi dato da d/v.
Illustrare le caratteristiche generali e i relativi vantaggi delle reti a commutazione di circuito e delle reti a pacchetto
Commutazione di circuito: risorse richieste (di solito un circuito) lungo un percorso vengono riservate per tutta la sessione di comunicazione; ciò causa un dispendio delle risorse e quindi una perdita di efficienza, visto che quando inizia una sessione, bisogna attenderne la fine per iniziarne un’altra. Un circuito in un collegamento è implementato con due tecniche diverse, TDM o FDM; FDM indica che lo spettro di frequenze di un collegamento viene suddiviso tra le connessioni stabilite con quel collegamento (ad esempio i primi 4khz solo per il telefono); TDM indica che si divide il tempo in intervalli (frame) di durata fissa, divisi a loro volta in slot; quando si stabilisce una connessione tramite un collegamento, le viene dedicato uno slot di tempo in ogni frame, solo per quella connessione.
Commutazione di pacchetto: i messaggi da scambiare dalla sorgente vengono divisi in parti più piccole chiamate pacchetti; questi pacchetti vengono trasmessi tramite router e commutatori a livello di collegamento fino alla destinazione. Viene usata la tecnica dello store and forward: il commutatore deve ricevere l’intero pacchetto prima di poterlo inoltrare alla destinazione. Ogni commutatore ha un buffer di output dove conserva i pacchetti che attendono la trasmissione; ciò può causare ritardi di accodamento o perdita di pacchetti. Inoltre, ogni pacchetto ha una propria descrizione tramite l'indirizzo IP di destinazione, e tutto ciò viene memorizzato automaticamente tramite protocolli di instradamento all’interno della tabella di inoltro presente nei router.
Le grandi differenze tra commutazione di pacchetto e di circuito risiedono nell’efficienza e nella velocità. Nella commutazione di circuito la velocità è divisa a seconda di quanti collegamenti ci sono nello stesso circuito. Nella commutazione di pacchetto invece è disponibile tutta la velocità per ogni singolo collegamento, con i dovuti ritardi e attese del caso. Inoltre, l’efficienza nella commutazione di pacchetti è molto maggiore visto che non vi è inutilizzo di risorse nei momenti di silenzio, cosa che avviene nella commutazione di circuito.
2° Capitolo
Descrivere il funzionamento del protocollo HTTP
HTTP è un protocollo a livello di applicazione del web. Esso definisce in che modo i client web (implementati da un browser web) richiedono le pagine ai web server e come questi ultimi rispondono ai client. In pratica definisce una semantica per ogni interazione tra i due. L’uso di questo protocollo viene specificato all’inizio dell’URL di richiesta da parte del client nei confronti del server: nell’URL c’è la prima parte dedicata al nome del protocollo usato, la seconda dedicata al nome dell’host del server che ospita la risorsa richiesta, la terza dedicata al pathname nell’host del server della risorsa richiesta. Il protocollo di trasporto usato da HTTP è il TCP, quindi l’affidabilità è tutta delegata a quest’ultimo, permettendo all’HTTP di non preoccuparsene; ogni messaggio si ha la certezza che arriverà e verrà restituito tra client e server grazie a TCP. TCP inoltre è un protocollo orientato alla connessione e http può usare 2 approcci:
- Connessione non persistente: il client HTTP inizia una connessione TCP con il server che possiede la pagina web. Dopo di che il client HTTP tramite la propria socket richiede la pagina web al server. Il server riceve il messaggio, prende l’oggetto richiesto e lo spedisce al client. Dopo che il client riceve la risposta da parte del server, la connessione TCP verrà chiusa. Lo svantaggio di questo approccio è che per ogni richiesta verso il server deve essere iniziata una nuova connessione.
- Connessione persistente: il client e il server possono scambiarsi più messaggi senza dover ogni volta instaurare una connessione.
Inoltre, HTTP è un protocollo senza memoria di stato, ovvero i server inviano i files richiesti dai client senza memorizzare informazioni su questi ultimi, quindi, se si chiede lo stesso file più volte allo stesso server, quest’ultimo procederà come se fosse la prima volta che gli viene richiesta tale risorsa.
Descrivere le differenze tra le versione 1.0 e 1.1 del protocollo HTTP
Le differenze tra le due versioni risiedono soprattutto nel fatto che HTTP 1.0 utilizza connessioni non persistenti: per mandare più oggetti appartenenti ad esempio alla stessa pagina, viene aperta e chiusa una nuova connessione TCP ad ogni oggetto; invece, in HTTP 1.1 c’è l’utilizzo di connessioni persistenti, ovvero per più richieste e risposte successive tra stessi client e server viene usata sempre la stessa connessione TCP permanente, ed inoltre questa connessione può essere usata non solo per la sola pagina web in questione, ma per spedire più pagine web; in più nella versione 1.1 c’è anche il pipelining, ovvero la capacità di effettuare richieste di oggetti una dopo l’altra senza aspettare le risposte alle richieste pendenti. Queste migliorie nella versione 1.1 comportano una notevole diminuzione dell’onere di lavoro sul web server e dei ritardi dovuti alla versione 1.0.
Descrivere il funzionamento del caching nel web
Una web cache, nota anche come proxy server, è un’entità di rete che soddisfa le richieste http al posto del web server effettivo e serve per ridurre il traffico. A tale scopo, il proxy ha una propria memoria su disco (una cache) in cui conserva le copie di oggetti recentemente richiesti.
Quando un browser deve richiedere una pagina web invece di essere indirizzato verso il server inizializza una connessione con un proxy server. Il browser stabilisce una connessione TCP con il proxy server e invia la richiesta per l’oggetto specificato. Il proxy controlla nella propria memoria se l'oggetto è presente. Se sì, lo inoltra al client. Altrimenti, se non è presente, il proxy invia al server una richiesta HTTP per l’oggetto. Una volta ricevuta la richiesta, il server invia l’oggetto al proxy tramite una risposta HTTP. Quanto il proxy riceve questo oggetto, ne salva una copia nella propria memoria e invia una copia al browser.
In questi passaggi il proxy server svolge sia un ruolo server quando comunica con il browser sia un ruolo client quando contatta il server di origine. I vantaggi del web caching sono la riduzione sostanziale dei tempi di risposta alle richieste dei client e la riduzione del traffico al collegamento di accesso a internet.
Il web caching introduce però un problema: la copia di un oggetto che risiede in cache potrebbe essere scaduta. Questo problema si risolve con un GET condizionale. Quando un proxy richiede un oggetto al server, oltre a salvare una copia dell’oggetto nella cache, salva anche la data dell’ultima modifica di questo oggetto. Successivamente, quando questo oggetto viene di nuovo richiesto, il proxy effettua un controllo di aggiornamento inviando un GET condizionale chiedendo al server di rinviargli l’oggetto se e solo se è stato modificato rispetto all’ultima data specificata. Se non c'è stata nessuna modifica il server risponde al proxy con un messaggio con il corpo vuoto.
Descrivere le caratteristiche principali dell’applicazione di Posta Elettronica
L’applicazione di posta elettronica consente lo scambio di messaggi tra persone. È un mezzo di comunicazione asincrono. I principali attori di questo sistema sono gli user agent (client di posta), i server di posta e il protocollo SMTP.
Il protocollo SMTP si occupa di trasferire i messaggi dal server del mittente a quello del destinatario; ciò avviene in questi passi: quando si da il comando allo user agent di inviare il messaggio, esso viene posto sul mail server in coda di messaggi; il lato client di SMTP vede il messaggio e apre una connessione TCP verso il server SMTP sul server mail del destinatario, con un handshaking; in seguito a ciò invia il messaggio sulla connessione TCP; sul server mail del destinatario il lato server di SMTP riceve il messaggio e lo pone nella casella destinataria; il destinatario quando lo riterrà opportuno apre il proprio user agent per leggere il messaggio. Per il SMTP non si usano server intermedi, ma la connessione avviene anche tra due città distanti. Più mail verso lo stesso destinatario possono esser mandate sulla stessa connessione TCP. Un messaggio di posta è formato da un’intestazione con delle righe fondamentali (from:, to:..) separata da uno spazio dall’area riservata al corpo del messaggio.
Rispetto ad HTTP, il SMTP è un protocollo di tipo push, ovvero inoltra dati, non li riceve; per questo motivo, per la ricezione tramite user agent di messaggi posizionati nel mail server del destinatario si usano diversi protocolli di accesso alla posta come POP3, IMAP, o HTTP stesso (tramite web mail).
Il protocollo POP3 è il protocollo più semplice, e consiste in 3 fasi: autorizzazione, transazione e aggiornamento; nell’autorizzazione si fa il login con il mail server (in chiaro presso la porta 110); con la transazione si può fare “scarica e cancella” o “scarica e mantieni”; nell’aggiornamento si conclude la sessione dopo aver ricevuto il comando quit, facendo il logout dal mail server; il POP3 non trasporta info di stato tra sessioni diverse ne permette di creare cartelle remote sul server.
Un server IMAP associa ad ogni messaggio una cartella (ad esempio i messaggi in arrivo nella cartella INBOX). Consente la creazione di cartelle e lo spostamento di messaggi in esse. Conserva info di stato tra sessioni diverse (nomi cartelle e assegnazioni di messaggi ad esse). Inoltre consente di ricevere parte di un messaggio, cosa utile con connessioni a velocità ridotte.
L’ultimo protocollo usato è HTTP. Questo viene usato nelle web mail, ovvero caselle di posta aperte tramite un browser.
Descrivere il funzionamento del DNS
Gli host internet possono essere indentificati in vari modi: ad esempio un utente che richiede una pagina web utilizza degli hostname, mentre il browser web che deve instaurare una connessione TCP con il web server che contiene gli oggetti richiesti utilizza gli indirizzi IP. Il DNS (domain name system) è un servizio in grado di tradurre degli hostname nei loro indirizzi IP. Inoltre fornisce anche servizi come host aliasing (fornisce hostname canonico per un sinonimo), mail server aliasing (fornisce nome canonico di un sinonimo) e distribuzione del carico di rete (associa ad ogni hostname canonico di siti replicati su più server un indirizzo IP e lo restituisce a rotazione su richiesta).
Il DNS è sia un database distribuito implementato in una gerarchia di DNS server sia un protocollo a livello di applicazione che consente di interrogare il database. La traduzione da hostname a indirizzo IP avviene nel seguente modo: il browser estrae il nome dell’host dall’URL e lo passa al lato client del DNS che viene eseguito sulla macchina dell’utente; il client DNS invia una query contenente l’hostname a un DNS server e prima o poi il DNS client riceve una risposta contenente l’indirizzo IP corrispondente all’hostname; una volta ottenuta la risposta, il browser può dare inizio a una connessione TCP verso il processo server HTTP collegato alla porta 80 di quell’indirizzo IP.
Il DNS utilizza un gran numero di server in maniera gerarchica e distribuiti nel mondo; in particolare esistono 3 classi di DNS server: root server, top-level domain (TLD) server e server autoritativi. Il client per prima cosa contatta un root server, che restituisce uno o più indirizzi IP relativi al server TLD per un dominio di primo livello, dopo di che contatta uno di questi server TLD che gli restituisce uno o più indirizzi del server autoritativo. Inoltre esiste anche un DNS server locale che non appartiene alla gerarchia di server, ma svolge comunque un ruolo principale. Sostanzialmente quando un host si connette a un ISP riceve l'indirizzo IP di uno o più DNS server locali. Inoltre quando un host effettua una richiesta DNS, questa query viene inviata al server locale che fa da proxy e inoltra la query alla gerarchia dei DNS detta in precedenza.
Il processo di traduzione DNS può introdurre un ritardo delle interrogazioni di internet, per questo motivo il DNS utilizza il caching per migliorare le prestazioni. Il DNS server che riceve una risposta DNS, può metter in cache le informazioni contenute. Se una coppia hostname/indirizzo IP è nella cache di una server quando gli arriverà una richiesta per lo stesso hostname, il DNS server potrà fornire l’indirizzo IP desiderato anche se non è autoritativo. Per funzionare i database DNS devono essere riempiti, questo avviene semplicemente quando si vuole registrare un nuovo dominio: un registrar controllerà il dominio e richiederà gli indirizzi IP dei server autoritativi che aggiungerà al database.
Differenza tra query DNS iterative e ricorsive
Con una query iterativa il client inoltra una richiesta a un DNS server per tradurre l’hostname nell’indirizzo IP corrispondente. Se il server non può effettuare la traduzione, gli fornisce il nome del DNS server che secondo lui può effettuare la traduzione. Successivamente il client ripete la procedura rivolgendosi al DNS server che gli è stato fornito.
Con una query ricorsiva il client inoltra una richiesta a un DNS server per la traduzione il quale, se questo non può fornire una risposta, interrogherà altri DNS server finché non trova la risposta desiderata. In generale la richiesta da host a server locale è ricorsiva, mentre le successive sono tutte iterative.
Descrivere come vengono realizzate le DHT
Le DHT sono tabelle hash distribuite. Distribuite perché, nel sistema P2P, ogni peer può gestire un piccolo sottoinsieme della totalità di coppie (chiave,valore); inoltre ogni peer può interrogare il database distribuito con una specifica chiave ed esso gli restituirà i peer che hanno la coppia (chiave,valore) richiesta ed ogni peer può anche aggiungere nuove coppie al database.
Un primo metodo di realizzazione sarebbe la distribuzione casuale delle coppie e la memorizzazione in ogni peer dell’IP di tutti gli altri: ciò però non è affatto scalabile e non va quindi bene.
Un metodo migliore è il seguente: si assegna un identificatore ad ogni peer (da 0 a 2n-1 con n fissato); anche ogni chiave deve essere sempre nello stesso intervallo precedente; queste chiavi però spesso non sono nel formato giusto, e per creare interi a partire da esse si usa una funzione hash che ne crea la corrispondenza (tramite questa funzione più chiavi possono avere la stessa corrispondenza ma è una probabilità molto ridotta quindi trascurabile). Come si assegnano le chiavi ai peer? Si assegna ogni coppia chiave-valore al peer il cui id è il più vicino alla chiave, e se la chiave corrisponde proprio ad uno degli id, allora si assegna proprio a quel peer, mentre se è più grande di tutti gli id, allora si memorizza nel peer con l’id più piccolo (convenzione modulo-2n). Però con questo metodo c’è un problema quando un peer vuole aggiungere una nuova coppia: per determinare il peer con id più vicino alla chiave dovrebbe conoscerli tutti, cosa infattibile.
Questo problema si risolve con la DHT circolare. In questa realizzazione ogni peer tiene traccia solo del predecessore immediato e successore. Un peer per sapere quale sia responsabile per una certa chiave, interroga il successivo o il precedente, e se non è nessuno dei due, manda avanti al successore in senso orario sul cerchio, fino ad arrivare al responsabile che invia risposta al peer originario che ha mandato la richiesta. Però così facendo, nel caso peggiore, ogni peer dovrebbe mandare una richiesta sul cerchio.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Domande d'esame di Ingegneria di internet e del web
-
Domande e risposte esame Ingegneria di Internet
-
Ingegneria clinica
-
Ingegneria Ambientale