Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Il protocollo prevede messaggi di richiesta e di risposta, entrambi in formato ASCII. I messaggi
di richiesta vanno dal client al server e specificano l’operazione da effettuare sull’oggetto tramite
i metodi GET (con cui si richiede il contenuto dell’oggetto specificato nell’URL), POST (con cui
–
si inviano informazioni al server ad esempio i dati di un form), HEAD (analogo a GET, ma con
cui si richiede che nel messaggio di risposta non sia incluso l’oggetto stesso specificato
nell’URL, restituendo solo i campi dell’header – ad esempio per verificare la data dell’ultima
modifica del file).
Descrivere le caratteristiche principali del protocollo HTTP 1.1.
La principale caratteristica di HTTP 1.1 che lo differenzia dalla versione precedente 1.0 è la
modalità di connessione, che diventa persistente: 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. Dunque, in HTTP 1.1:
1. il client inizializza la connessione TCP alla porta 80 verso il server.
2. Il server accetta la connessione TCP e notifica il client.
3. Il client invia il messaggio di richiesta HTTP sulla connessione TCP.
4. Il server riceve la richiesta e invia il messaggio di risposta.
Il client riceve il messaggio di risposta che contiene l’oggetto richiesto.
5.
6. Si ripetono i passi 3 e 4 fintanto che il client richiede nuovi oggetti.
7. Il server chiude la connessione TCP quando non viene usata per un intervallo di tempo
fissato. per l’invio di richieste
Nella versione 1.1 è introdotta anche la possibilità di sfruttare il pipelining
consecutive: a partire dalla seconda richiesta, il client può inviare un altro messaggio di richiesta
HTTP al server appena trova un riferimento a un altro oggetto all’interno della risposta.
Descrivere le differenze tra le versioni 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 inviare ogni oggetto vi è la necessità di creare ogni volta una nuova
connessione TCP; 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.
Nella versione 1.1 è introdotta la possibilità di sfruttare il pipelining, ovvero la capacità di
effettuare richieste di oggetti una dopo l’altra senza aspettare le risposte alle richieste pendenti.
Inoltre, in HTTP 1.1 vengono aggiunti 2 metodi nei messaggi di richiesta al server: PUT, con cui
si richiede di caricare sul sito l’oggetto nel body all’URL indicato, e DELETE, con cui si richiede
di eliminare dal server l’oggetto specificato nell’URL. diminuzione dell’onere di lavoro sul web
Queste migliorie nella versione 1.1 comportano una
server e dei ritardi dovuti alla versione 1.0.
Illustrare come viene implementato il caching nelle applicazioni 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 per una sottorete, diminuendo
i tempi di risposta per le richieste di pagine web. Il proxy ha perciò 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, se è configurato in maniera tale da inviare le
server, e invia la richiesta per l’oggetto specificato. Il proxy
richieste HTTP verso il proxy
controlla nella propria memoria cache se l'oggetto è presente. Se sì, effettua una richiesta con
metodo conditional GET verso il server di origine, specificando la data alla quale è aggiornata
la copia. Se la copia è aggiornata, il proxy server inoltra l’oggetto richiesto al client. Altrimenti,
se non è presente o se la pagina web non è aggiornata, 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. Quando 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.
Descrivere le caratteristiche principali della Posta Elettronica. Si illustrino i
protocolli di livello applicativo impiegati in tale applicazione.
L’applicazione di posta elettronica è un mezzo di comunicazione asincrono che consente lo
scambio di messaggi tra utenti. Gli 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, utilizzando il protocollo TCP e la porta 25. Il trasferimento avviene in 3 fasi:
1. Handshaking: il server d’invio apre una connessione TCP verso il server di ricezione.
2. Trasferimento: invio delle mail destinate alle caselle di posta sul server di ricezione.
3. Chiusura: il server di invio chiude la connessione.
Per effettuare un trasferimento, l’host di invio usa il proprio user agent per comporre l’email e
inviarla; quest’ultimo la invierà al proprio mail server, utilizzando SMTP o HTTP, mettendo il
messaggio in coda. Il mail server sfrutterà il protocollo SMTP per il trasferimento. Il mail server
di ricezione riceve l’email e la trasferisce nella casella di posta dell’utente destinatario, che poi
In particolare, l’user agent del destinatario utilizza
leggerà il messaggio quando sarà connesso.
l’email dalla casella di posta.
MAP o HTTP per recuperare
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, a cui segue un messaggio
di terminazione (che consiste in una riga in cui è incluso unicamente un punto).
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, ovvero caselle di posta aperte tramite un browser).
Il protocollo POP3 permette autenticazione e download delle mail. È stateless, dunque non
mantiene informazioni sulle sessioni precedenti. Consiste in 3 fasi, che si susseguono quando
lo user agent apre una connessione TCP verso il mail server sulla porta 110:
• nell’autorizzazione il client invia username e password, e il server comunica l’esito del
tentativo di login;
• nella transazione lo user agent recupera i messaggi; inoltre può marcare/smarcare i
messaggi per la cancellazione dal server;
• nell’aggiornamento si conclude la sessione dopo aver ricevuto il comando quit, facendo
il logout dal mail server.
Un server IMAP associa ad ogni messaggio ricevuto dal server 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 di cartelle e spostamento di
messaggi in esse). Inoltre, consente di ricevere parte di un messaggio, utile con connessioni a
velocità ridotte.
Descrivere il funzionamento del DNS. Illustrare la differenza tra query DNS
iterative e ricorsive.
Il protocollo DNS definisce le regole per mappare nomi di host in indirizzi IP. DNS è (1) un
database distribuito implementato in una gerarchia di DNS server e (2) un protocollo a livello di
applicazione che consente agli host di interrogare il database. Oltre alla traduzione di hostname
in indirizzi IP, DNS offre le funzionalità di:
• Host aliasing: un host dal nome complicato (hostname canonico) può avere uno o piu
sinonimi (alias).
• Mail server aliasing: permette di avere degli alias per gli hostname canonici di server di
posta elettronica.
• Distribuzione del carico di rete (load distribution). I siti con molto traffico vengono
replicati su più server, ognuno eseguito su un host diverso con un indirizzo IP differente.
In base al carico dei server fisici, la rotazione DNS distribuisce il traffico sui server
replicati.
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
1. eseguito sulla macchina dell’utente;
il client DNS invia una query contenente l’hostname all’interno di
2. a un DNS server,
datagrammi UDP diretti alla porta 53;
prima o poi il DNS client riceve una risposta contenente l’indirizzo IP corrispondente
3. all’hostname, che viene infine passato all’applicazione che ne ha fatto richiesta.
Per affrontare il problema della scalabilità, il DNS utilizza una struttura di server gerarchica e
distribuiti nel mondo:
▪ root server, al livello più alto, che forniscono gli indirizzi IP ai server TLD;
▪ top-level domain server, che si occupano dei domini di primo livello quali com, org, net,
edu e gov, e di tutti i domini di primo livello relativi ai vari paesi. Forniscono gli indirizzi IP
ai server autoritativi;
▪ server autoritativi, che ospitano i record DNS che associano i nomi degli host
pubblicamente accessibili tramite Internet (web/mail server) a indirizzi IP.
Esiste anche un altro tipo di DNS, il DNS server locale. Esso è operativo quando un host si
connette a un ISP, ricevendo l'indirizzo IP di uno o più DNS server locali. Quando un host
effettua una richiesta DNS, questa viene inviata al server locale che fa da proxy e inoltra la query
alla gerarchia dei DNS detta in precedenza.
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, ed il processo continua fino a che
non viene risolta la traduzione. 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.
DNS utilizza il caching per migliorare le prestazioni. Il DNS server che riceve una risposta DNS
può mettere in cache le informazioni contenute. Se una coppia hostname/indirizzo IP è nella
cache di un server, quando gli arriverà una richiesta per lo stesso hostname, il DNS server potrà
fornire l’indirizzo IP desiderato, anche se non è autoritativo per tale indirizzo.
Capitolo 3
Descrivere come viene effettuato il demultiplexing in TCP e UDP.
Multiplexing e demultiplexing sono le operazioni con cui si gestisce la conversione tra messaggi
e segmenti e la consegna dei messaggi ai socket del sistema. Il compito del demultiplexing,
effettuato dal destinatario, è quello di trasportare i dati dei segmenti, ricevuti dal livello di rete, a
livello di trasporto verso la giusta socket.
Per realizzare il demultiplexing, ogni socket nell’host deve avere un numero di porta, e quando
un segmento arriva all’host, il livello di trasporto esamina il numero della porta di destinazione,
e dirige il segmento verso la socket corrispondente. I dati del segmento passano, quindi, dalla
socket al processo assegnato.
un segmento arriva all’host, il suo livello di trasporto esamina il numero di porta
UDP: quando
di destinazione del segmento e lo consegna alla relativa socket. In UDP, la socket è infatti
identificata da una coppia [indirizzo IP, porta di destinazione].
Se due segmenti UDP hanno indirizzi IP e/o numeri di porta di origine diversi ma indirizzo IP e