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.