Domande IIW
1° Capitolo ✔
Descrivere le varie componenti del ritardo in una rete a pacchetto (9)
[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 2x10^8 m/s e 3x10^8
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 (1) {par. 1.3 ed. 6}
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 risiede 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 (8) (http1.1)
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 (2)
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 (5)
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 una 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. Si
illustrino, inoltre, i protocolli di livello applicativo impiegati in tale applicazione. (1)
L’applicazione di posta elettronica consente lo scambio di messaggi tra persone. E’ 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 (8) / Descrivere il DNS (3)
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.
(record di messaggi e messaggi non l’ho messi)
Differenza tra query DNS iterative e ricorsive. (1)
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 (1)
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 2^n-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-2^n). 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.
Questo problema si aggir
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