Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 7 Febbraio 2005, ore 15.00 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette. Cognome:___________________________________________________ Nome:______________________________________________________ Corso di laurea e anno:________________________________________ Matricola:___________________________________________________ Firma:______________________________________________________ Nota: Nel seguito si indicherà come Massima Dimensione dei Dati (MDD), la massima dimensione del payload dati di un segmento TCP. Si ricorda che il segmento comprende un header (di dimensione pari a 20 byte, salvo eventuali opzioni presenti) e un payload contenente i dati provenienti dall’applicazione. Quesito 1a Nella rete rappresentata nella figura sottostante client e server impiegano il protocollo TCP per lo scambio di dati con MDD pari a 400 byte. La velocità della linea è pari a 640 kbps ed il tempo di propagazione è pari a 10 ms. 640kbps 10ms Si risponda ai seguenti quesiti, trascurando tutti gli header (IP e TCP). a) Qual è il valore di finestra minimo (espresso in numero di segmenti) che permette di impiegare con continuità il collegamento. Qual è la corrispondente dimensione in byte? b) Qual è il throughput ottenibile con una finestra pari a 1200 byte nello stesso scenario? Qual è il throughput ottenibile con una finestra pari a 2500 byte nello stesso scenario? e nel caso in cui la velocità di trasmissione del collegamento fosse infinita? c) Considerando una finestra pari a 1000 byte e mantenendo la stesso valore di MDD, calcolare il tempo necessario per il trasferimento di una pagina web in cui la richiesta HTTP ha dimensione pari a 40 e la risposta, inclusa la pagina web, ha dimensione pari a 4300 byte. d) Qual è la dimensione minima della finestra, espressa in byte, che permette di impiegare con continuità il collegamento, qualora si considerino anche gli header IP (20 byte) e TCP (20 byte) e si mantenga lo stesso valore di MDD? È maggiore o minore del corrispondente valore calcolato nel punto a)? Soluzione a) Da W*MDD = C * RTT + MDD si ottiene W = C*RTT/MDD + 1 = 640 * 103 * 20 * 10-3 / (8*400) + 1 = 5 segmenti. La dimensione in byte è pari a 5*400 = 2000 byte. b) Se con una finestra di 2000 byte si impiega con continuità la linea, con una finestra pari a 1200 byte si potrà impiegare la linea per una frazione di tempo pari a 1200/2000 = 3/5 del totale, quindi si trasmette con un throughput medio pari a 3/5 * 640 kbps = 384kbps. Con una finestra pari a 2500 byte non si ottiene alcun vantaggio nello scenario in questione, quindi il throughput sarà sempre di 640 kbps. Nel caso in cui la velocità di trasmissione del collegamento fosse infinita, il massimo throughput sarebbe pari a 2500*8/(20*10-3) = 1 Mbps. c) Dimensione della richiesta: GSIZE = 40 byte, Dimensione della risposta: RSIZE = 4300 byte, Dimensione della finestra: WSIZE = 1000 byte, Tempo di recupero della pagina: RT RT = 2 RTT + GSIZE/C + RSIZE/C + | RSIZE/WSIZE-1 | * (RTT-(WSIZE-MDD)/C) d) In tal caso la dimensione massima del pacchetto sarà di 440 byte, di cui 400 byte di dati applicativi (quelli che considera la finestra). Il canale sarà occupato anche dalla trasmissione degli header, ma occorre sempre poter trasmettere 2000 byte ininterrottamente. I 2000 byte corrispondono a 5 pacchetti, con un overhead totale dovuto agli header pari a 5*40 = 200 byte, quindi occorre poter trasmettere consecutivamente almeno 1800 byte di dati applicativi. Il valore della finestra è pari proprio a 1800 byte. Quesito 1b Nella rete rappresentata nella figura sottostante client e server impiegano il protocollo TCP per lo scambio di dati con MDD pari a 800 byte. La velocità della linea è pari a 960 kbps ed il tempo di propagazione è pari a 10 ms. 960kbps 10ms Si risponda ai seguenti quesiti, trascurando tutti gli header (IP e TCP). a) Qual è il valore di finestra minimo (espresso in numero di segmenti) che permette di impiegare con continuità il collegamento. Qual è la corrispondente dimensione in byte? b) Qual è il throughput ottenibile con una finestra pari a 2400 byte nello stesso scenario? Qual è il throughput ottenibile con una finestra pari a 4000 byte nello stesso scenario? e nel caso in cui la velocità di trasmissione del collegamento fosse infinita? c) Considerando una finestra pari a 1600 byte e mantenendo la stesso valore di MDD, calcolare il tempo necessario per il trasferimento di una pagina web in cui la richiesta HTTP ha dimensione pari a 40 e la risposta, inclusa la pagina web, ha dimensione pari a 7500 byte. d) Qual è la dimensione minima della finestra, espressa in byte, che permette di impiegare con continuità il collegamento, qualora si considerino anche gli header IP (20 byte) e TCP (20 byte) e si mantenga lo stesso valore di MDD? È maggiore o minore del corrispondente valore calcolato nel punto a)? Soluzione a) Da W*MDD = C * RTT + MDD si ottiene W = C*RTT/MDD + 1 = 960 * 103 * 20 * 10-3 / (8*800) + 1 = 4 segmenti. La dimensione in byte è pari a 5*800 = 3200 byte. b) Se con una finestra di 3200 byte si impiega con continuità la linea, con una finestra pari a 2400 byte si potrà impiegare la linea per una frazione di tempo pari a 2400/3200 = 3/4 del totale, quindi si trasmette con un throughput medio pari a 3/4 * 960 kbps = 720 kbps. Con una finestra pari a 4000 byte non si ottiene alcun vantaggio nello scenario in questione, quindi il throughput sarà sempre di 960 kbps. Nel caso in cui la velocità di trasmissione del collegamento fosse infinita, il massimo throughput sarebbe pari a 4000*8/(20*10-3) = 1.6 Mbps. c) Dimensione della richiesta: GSIZE = 40 byte, Dimensione della risposta: RSIZE = 7500 byte, Dimensione della finestra: WSIZE = 1600 byte, Tempo di recupero della pagina: RT RT = 2 RTT + GSIZE/C + RSIZE/C + | RSIZE/WSIZE-1 | * (RTT-(WSIZE-MDD)/C) d) In tal caso la dimensione massima del pacchetto sarà di 840 byte, di cui 800 byte di dati applicativi (quelli che considera la finestra). Il canale sarà occupato anche dalla trasmissione degli header, ma occorre sempre poter trasmettere 3200 byte ininterrottamente. I 3200 byte corrispondono a 4 pacchetti, con un overhead totale dovuto agli header pari a 4*40 = 160 byte, quindi occorre poter trasmettere consecutivamente almeno 3040 byte di dati applicativi. Il valore della finestra è pari proprio a 3040 byte. Quesito 1c Nella rete rappresentata nella figura sottostante client e server impiegano il protocollo TCP per lo scambio di dati con MDD pari a 800 byte. La velocità della linea è pari a 320 kbps ed il tempo di propagazione è pari a 40 ms. 320kbps 40ms Si risponda ai seguenti quesiti, trascurando tutti gli header (IP e TCP). a) Qual è il valore di finestra minimo (espresso in numero di segmenti) che permette di impiegare con continuità il collegamento. Qual è la corrispondente dimensione in byte? b) Qual è il throughput ottenibile con una finestra pari a 1200 byte nello stesso scenario? Qual è il throughput ottenibile con una finestra pari a 4500 byte nello stesso scenario? e nel caso in cui la velocità di trasmissione del collegamento fosse infinita? c) Considerando una finestra pari a 2000 byte e mantenendo la stesso valore di MDD, calcolare il tempo necessario per il trasferimento di una pagina web in cui la richiesta HTTP ha dimensione pari a 40 e la risposta, inclusa la pagina web, ha dimensione pari a 8700 byte. d) Qual è la dimensione minima della finestra, espressa in byte, che permette di impiegare con continuità il collegamento, qualora si considerino anche gli header IP (20 byte) e TCP (20 byte) e si mantenga lo stesso valore di MDD? È maggiore o minore del corrispondente valore calcolato nel punto a)? Soluzione a) Da W*MDD = C * RTT + MDD si ottiene W = C*RTT/MDD + 1 = 320 * 103 * 80 * 10-3 / (8*800) + 1 = 5 segmenti. La dimensione in byte è pari a 5*800 = 4000 byte. b) Se con una finestra di 4000 byte si impiega con continuità la linea, con una finestra pari a 1200 byte si potrà impiegare la linea per una frazione di tempo pari a 1200/4000 = 3/10 del totale, quindi si trasmette con un throughput medio pari a 3/10 * 320 kbps = 96kbps. Con una finestra pari a 4500 byte non si ottiene alcun vantaggio nello scenario in questione, quindi il throughput sarà sempre di 320 kbps. Nel caso in cui la velocità di trasmissione del collegamento fosse infinita, il massimo throughput sarebbe pari a 4500*8/(80*10-3) = 450 kbps. c) Dimensione della richiesta: GSIZE = 40 byte, Dimensione della risposta: RSIZE = 8700 byte, Dimensione della finestra: WSIZE = 2000 byte, Tempo di recupero della pagina: RT RT = 2 RTT + GSIZE/C + RSIZE/C + | RSIZE/WSIZE-1 | * (RTT-(WSIZE-MDD)/C) d) In tal caso la dimensione massima del pacchetto sarà di 840 byte, di cui 800 byte di dati applicativi (quelli che considera la finestra). Il canale sarà occupato anche dalla trasmissione degli header, ma occorre sempre poter trasmettere 4000 byte ininterrottamente. I 4000 byte corrispondono a 5 pacchetti, con un overhead totale dovuto agli header pari a 5*40 = 200 byte, quindi occorre poter trasmettere consecutivamente almeno 3800 byte di dati applicativi. Il valore della finestra è pari proprio a 3800 byte. Quesito 1d Nella rete rappresentata nella figura sottostante client e server impiegano il protocollo TCP per lo scambio di dati con MDD pari a 400 byte. La velocità della linea è pari a 240 kbps ed il tempo di propagazione è pari a 20 ms. 240kbps 20ms Si risponda ai seguenti quesiti, trascurando tutti gli header (IP e TCP). a) Qual è il valore di finestra minimo (espresso in numero di segmenti) che permette di impiegare con continuità il collegamento. Qual è la corrispondente dimensione in byte? b) Qual è il throughput ottenibile con una finestra pari a 1200 byte nello stesso scenario? Qual è il throughput ottenibile con una finestra pari a 2500 byte nello stesso scenario? e nel caso in cui la velocità di trasmissione del collegamento fosse infinita? c) Considerando una finestra pari a 800 byte e mantenendo la stesso valore di MDD, calcolare il tempo necessario per il trasferimento di una pagina web in cui la richiesta HTTP ha dimensione pari a 40 e la risposta, inclusa la pagina web, ha dimensione pari a 3500 byte. d) Qual è la dimensione minima della finestra, espressa in byte, che permette di impiegare con continuità il collegamento, qualora si considerino anche gli header IP (20 byte) e TCP (20 byte) e si mantenga lo stesso valore di MDD? È maggiore o minore del corrispondente valore calcolato nel punto a)? Soluzione a) Da W*MDD = C * RTT + MDD si ottiene W = C*RTT/MDD + 1 = 240 * 103 * 40 * 10-3 / (8*400) + 1 = 4 segmenti. La dimensione in byte è pari a 4*400 = 1600 byte. b) Se con una finestra di 1600 byte si impiega con continuità la linea, con una finestra pari a 1200 byte si potrà impiegare la linea per una frazione di tempo pari a 1200/1600 = 3/4 del totale, quindi si trasmette con un throughput medio pari a 3/4 * 240 kbps = 180 kbps. Con una finestra pari a 2500 byte non si ottiene alcun vantaggio nello scenario in questione, quindi il throughput sarà sempre di 240 kbps. Nel caso in cui la velocità di trasmissione del collegamento fosse infinita, il massimo throughput sarebbe pari a 2500*8/(40*10-3) = 500 kbps. c) Dimensione della richiesta: GSIZE = 40 byte, Dimensione della risposta: RSIZE = 3500 byte, Dimensione della finestra: WSIZE = 800 byte, Tempo di recupero della pagina: RT RT = 2 RTT + GSIZE/C + RSIZE/C + | RSIZE/WSIZE-1 | * (RTT-(WSIZE-MDD)/C) d) In tal caso la dimensione massima del pacchetto sarà di 440 byte, di cui 400 byte di dati applicativi (quelli che considera la finestra). Il canale sarà occupato anche dalla trasmissione degli header, ma occorre sempre poter trasmettere 1600 byte ininterrottamente. I 1600 byte corrispondono a 4 pacchetti, con un overhead totale dovuto agli header pari a 4*40 = 160 byte, quindi occorre poter trasmettere consecutivamente almeno 1440 byte di dati applicativi. Il valore della finestra è pari proprio a 1440 byte. Quesito 2 Relativamente al protocollo UDP F il software UDP effettua la frammentazione dello stream dati proveniente dall’applicazione F con l’impiego associato del protocollo RTP viene garantita una velocità minima di trasmissione V può essere integrato dal protocollo RTP per il supporto della trasmissione di contenuti multimediali V nell’header UDP sono contenuti solo i campi con i numeri di porta, la checksum e la lunghezza del datagram F il protocollo UDP è orientato alla connessione F ai fini del calcolo della checksum può essere trasmessa anche un’estensione dell’header chiamata pseudoheader V l’header UDP ha dimensione minore dell’header UDP Quesito 3 Si raffiguri lo scambio (o uno dei possibili scambi) di segmenti tra un client e un server, mostrando in particolare i valori dei flag SYN, ACK, FIN, ed il contenuto dei campi sequence number, acknowledgement number, window. Si assuma: • MDD pari a 200 byte; • buffer presso client e server pari a 300 byte; • che la finestra impiegata dal TCP sia quella di ricezione dichiarata dal TCP remoto; • che il tempo di trasmissione sia trascurabile rispetto al tempo di propagazione (quindi la trasmissione consecutiva di un numero arbitrario di segmenti si conclude sempre prima della ricezione dell’ack relativo al primo segmento); • che il client debba inviare una richiesta di 30 byte e il server risponda con una risposta di 350 byte; • lettura di tutti i dati del buffer da parte dell’applicazione server immediata (non appena arrivano i dati); • lettura di tutti i dati del buffer da parte dell’applicazione client solo dopo l’invio dell’ack relativo al secondo segmento contenente dati ricevuto dal server; • numero di sequenza iniziale scelto dal client pari a 200, numero di sequenza iniziale scelto dal server pari a 350. Si suggerisce di ricostruire prima la sequenza di scambi sulla base della quantità di dati da scambiare e del valore della finestra, e poi di completare con i flag e il contenuto dei campi. Qualora non si riesca a ricostruire la sequenza si svolga l’esercizio assumendo per il TCP una modalità di funzionamento stop&wait, ignorando quindi le finestre di ricezione ed assumendo immediata la lettura dei dati da parte delle applicazioni. CLIENT SERVER SYN SYN, ACK 30 byte FIN 200 byte 100 byte 200 byte 2° segmento dati win = 100 300 byte 0 byte win = 0 win = 300 50 byte FIN Si noti che dopo l’ack inviato dal client in corrispondenza del primo segmento dati ricevuto, il server non potrà inviare dati, perché l’ack indica uno spazio disponibile nel buffer pari a 100 byte ma ci sono già 100 byte in volo (cioè inviati, ma non ancora confermati) nel secondo segmento. CLIENT SERVER seq=200, ack=118, win=300, SYN seq=350, ack=201, win=300,SYN, ACK seq=201, ack=351, win=300, ACK, FIN; byte: 201-230 seq=351, ack=232, win=300, ACK; byte: 351-550 seq=232, ack=551, win=100, ACK; byte: _ seq=551, ack=232, win=300, ACK; byte: 551-650 seq=232, ack=651, win=0, ACK; byte: _ seq=232, ack=651, win=300, ACK; byte: _ seq=651, ack=232, win=300, ACK, FIN; byte: 651-700 seq=232, ack=702, win=300, ACK; byte: _ Quesito 4 Nel protocollo TCP relativamente al controllo degli errori F vengono impiegati Negative ACKnowlege espliciti (NACK) V è previsto che quando il timer associato ad un segmento scade, questo venga ritrasmesso V il mittente potrebbe non aver modo di distinguere la perdita di un pacchetto dalla perdita dell’ack corrispondente F il timeout di ritrasmissione viene stabilito all’inizio della connessione V il timeout di ritrasmissione, in base all’algoritmo di Jacobson, aumenta all’aumentare del RTT V il timeout di ritrasmissione, in base all’algoritmo di Jacobson, aumenta all’aumentare della congestione nella rete Quesito 5 Definire il Persistent HTTP e il pipelining delle richieste HTTP ed indicarne i vantaggi. Quesito 6a Illustrare il problema della silly window e la relativa soluzione proposta da Clark. Quesito 6b Illustrare l’algoritmo di Nagle e il problema che questo cerca di risolvere. Quesito 7 Nel caso di pipelining delle richieste HTTP perché è necessario specificare nelle risposte la lunghezza del contenuto mediante l' header Content-Length? non potrebbe il client capire, per esempio, che la prima risposta è terminata quando riceve l' header della seconda risposta?