Esercizio 1 Si calcoli il tempo di trasferimento di una pagina web di

Transcript

Esercizio 1 Si calcoli il tempo di trasferimento di una pagina web di
Esercizio 1 Si calcoli il tempo di trasferimento di una pagina web di dimensioni 3000 bytes, che
contiene un’immagine di dimensioni 15000 bytes, considerando:
- protocollo HTTPv1.1;
- funzionamento del TCP in modalità stop&wait;
- MSS=1500 byte (overhead incluso);
- overhead 40 byte;
- RTT= 60 ms;
- link speed = 1.2 Mbps.
Si trascuri il tempo di trasmissione degli ACK, dei pacchetti di segnalazione per l’apertura della
connessione e delle richieste e risposte HTTP, ed il tempo di “parsing” della pagina web.
Soluzione
Il client TCP, dopo aver instaurato la connessione, trasmetterà la richiesta http per la pagina web.
Quando il browser avrà ricevuto l’intera pagina, rivelerà la presenza della figura e provvederà a
richiederla. Questa nuova richiesta impiegherà la stessa connessione TCP dal momento che il
protocollo è HTTPv1.1.
La pagina verrà trasferita mediante 3 pacchetti, quindi occorrerà trasferire PSIZE=3,120byte.
La figura verrà trasferire mediante 11 pacchetti, quindi occorrerà trasferire FSIZE=15,440byte.
client
server
Start TCP
connection
figure
request
RTT
RTT
page
request
RTT
F1
P1
F2
P2
figure
request
P3
...
RTT
F10
...
F11
...
Dalla diapositiva 29 di 06_tcp_part1.pdf o dalla figura sovrastante si ricava che il tempo necessario
per ottenere la pagina HTML con la figura è pari a:
2 RTT + PSIZE/C + 2 RTT +
tempo per ottenere la pagina
11 RTT + FSIZE/C =
tempo per ottenere la figura
= 15 RTT + (PSIZE+FSIZE)/C = 1.0237 s
Esercizio 2 Si mostrino i pacchetti scambiati (mostrando in particolare i valori del flag SYN e FIN,
ed il contenuto dei campi SEQ ed ACK) durante una connessione TCP, in cui il client spedisce 800
byte ed il server spedisce 30 byte. Si assuma MSS=370 byte con un overhead di 20 byte. Si
includano i pacchetti di apertura e chiusura della connessione.
Soluzione
Di seguito è riportata la sequenza (o meglio una possibile, vedi sotto) degli scambi client-server
assumendo che il TCP del client e del server operino in modalità stop&wait (finestra pari a 1
segmento) e che i dati provenienti delle applicazioni siano disponibili fin dall’inizio. Il client ha
scelto come ISN 72, il server 51.
CLIENT
SERVER
seq=72, ack=11, SYN
seq=51, ack=73, SYN, ACK
seq=73, ack=52, ACK, byte: 73-422
seq=52, ack=423, ACK, FIN, byte: 52-81
seq=423, ack=83, ACK, byte: 423-772
Last data
segment
from server
seq=83, ack=773, ACK, byte: _
Last data
segment
from client
seq=773, ack=83, ACK, FIN, byte: 773-872
seq=83, ack=874, ACK, byte: _
Si noti come:
• il valore iniziale del campo acknowledgement number è posto pari a 11 nell’esempio, ma
questo non ha significato per il server (il bit ACK è posto pari a 0); ricordatevi che anche se
non ha significato nello specifico segmento, tutti i campi vengono trasmessi;
• tutti gli altri segmenti hanno il bit ACK posto pari a 1, confermano sempre di aver
correttamente ricevuto tutti i dati precedenti: confermare non costa niente (piggybacking)!
• il server chiude la connessione quando ha finito di trasmettere i 30 byte, il bit FIN è posto
pari ad uno già nello stesso segmento che trasporta i 30 byte;
• come per il SYN, il FIN viene contato come se fosse stato trasmesso un byte ulteriore
(bruciamo un numero di sequenza in un certo senso); infatti il segmento successivo da parte
del client ha numero di ack pari a 83 perché esso conferma tutti i byte ricevuti fino al byte
81, conferma il FIN (82) e dichiara che nel prossimo segmento si aspetterebbe il byte 83;
Di seguito riporto una diversa conclusione della connessione in cui il segmento con il FIN non
coincide con l’ultimo segmento dati. Anche questa è una soluzione possibile, anche se la prima
è più efficiente. Anche il server avrebbe potuto inviare un segmento con i dati e un segmento
per segnalare la chiusura.
CLIENT
SERVER
seq=83, ack=773, ACK, byte: _
Last data
segment
from
client
seq=773, ack=83, ACK, byte: 773-872
seq=83, ack=873, ACK, byte: _
Last data
segment
from
client
seq=873, ack=83, ACK, FIN, byte: _
seq=83, ack=874, ACK, byte: _
Esercizio 3 Si consideri un collegamento composto da due link in successione:
- link 1: propagation delay = 30 ms; rate = 4.8 Mbps
- link 2: propagation delay = 10 ms; rate = 1.6 Mbps
Si assuma infinita la dimensione dei buffer sul router di interconnessione tra i due link e del buffer
di trasmissione. Si considerino pacchetti di dimensione MSS=1000 byte (overhead trascurabile).
i) Si calcoli la dimensione minima W della finestra di pipelining da adottare in modo tale da
raggiungere il massimo throughput. Si effettuino sia i calcoli esatti sia quelli approssimati
considerando solo il tempo di trasmissione sul bottleneck (oltre che il RTT).
ii) Si assuma di utilizzare una finestra di pipelining doppia rispetto a quella calcolata
precedentemente. Si descriva il comportamento del sistema (in modo quantitativo, specificando
come vengono trattati i pacchetti in eccesso).
Esercizio 4 Si descriva la modalità con cui è possibile realizzare multi-homing (più web server
sulla stessa macchina), con HTTP.