Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo dove necessario le risposte sintetiche proposte dal docente 1. Si supponga che un host fisicamente connesso a un segmento Ethernet trasmetta un messaggio HTTP di richiesta verso un server Web. Si dica quanti header contiene il pacchetto che viene trasmesso fisicamente sulla rete cui l host è connesso. Sol.: 4 (HTTP, TCP, IP e Ethernet) 2. Si consideri la rete in figura, nella quale si hanno Q link, tutti della stessa capacità R bps. Si studi il trasferimento di un messaggio di ML bit da B ad. Si facciano le seguenti assunzioni: 1. Il file è frammentato in pacchetti di L bit ciascuno e la dimensione degli header inseriti è trascurabile 2. I ritardi in coda sono trascurabili (bassa congestione) 3. Il ritardo di propagazione è trascurabile 4. Il ritardo di elaborazione è trascurabile B Q link Q link Si determini l espressione del tempo Q di link trasmissione del file in funzione di Q, R, M e B. Si determini il ritardo nel Q link caso in cui ML = 10 Mbyte, L = 10 Kbyte, R = 8 Mbps. Sol.: B inizia la trasmissione dell ultimo pacchetto verso al tempo t 1 =(M- 1)L/R. partire da questo istante, il pacchetto in questione impiega un tempo t 2 =QL/R per giungere a destinatione. Dunque il tempo di trasferimento complessivo è t 1 +t 2 =(M+Q-1)L/R. 3. Si consideri l esercizio del punto 1 con le seguenti modifiche: 1. Q = 2
2. La segmentazione non è più trascurabile e la dimensione dell header è H = 40 bit. Tutte le altre ipotesi rimangono valide. Si calcoli il tempo necessario per trasferire il file da B ad nel caso i) di assenza di segmentazione e ii) in presenza di segmentazione, con le precisazioni di cui sopra. Sol.: il calcolo nel caso di assenza di segmentazione è ovvio. Nel caso di segmentazione, si procede come nell esercizio 1, con la differenza che in questo caso la dimensione di ogni pacchetto è L+H. 4. Descrivere cosa succede a livello applicativo da quando si digita www.google.it nell apposita finestra del browser e poi si dà invio a quando la pagina HTML di base è ricevuta dal browser. 5. Si supponga che tra e B sia presente un canale avente banda costante e pari a 50Kbps in ciascuna direzione. Si supponga che B sia un Web Server e che richieda una pagina Web costituita da: 1. Una pagina HTML base avente dimensione 5 Kbyte 2. 10 immagini JPEG aventi dimensioni 50 Kbit ciascuna. Si supponga che instaurare una connessione da verso B richieda l invio di 2 pacchetti TCP di 50 byte ciascuno (SYN e SYNCK) e che tale sia anche la dimensione dei pacchetti HTTP di richiesta. Si calcoli il tempo necessario a scaricare la pagina Web: 1. Con connessioni non persistenti 2. Con connessioni persistenti e pipelining Si assumano assenza di congestione e ritardi elaborazione e propagazione trascurabili Sol.: l instaurazione della connessione richiede complessivamente 16 ms (il tempo per trasmettere, in successione, due pacchetti 50x8 bit su un canale da 50 Kbps). Servono poi 8 ms per inviare la richiesta della pagina HTML base e 0.8 secondi per riceverla (40 Kbit/50 Kbps). Nel caso di connessioni non persistenti bisogna ripetere i calcoli per l apertura di una nuova connessione, la richiesta di un immagine e il suo trasferimento. Nel caso 2 invece, dopo aver scaricato la pagina base, invia 10 richieste, una di seguito all altra. Si osservi che l ultima richiesta da arriva al Web server B dopo 80 ms. tale istante, B sta ancora scaricando la prima immagine verso (scaricare un immagine richiede 1 s = 50 Kbit/50 Kbps). La conseguenza di tale osservazione è che dopo aver ricevuto la richiesta per la prima immagine, B inizia a scaricare le immagini in sequenza, senza interruzione. Ciò significa che l ultimo bit dell ultima immagine giunge ad 10.008 secondi dopo che ha inviato la richiesta per la prima immagine. Complessivamente, nel caso di connessioni persistenti e pipelining servono 16ms(instaurazione connessione)+8ms+0.8s (richiesta e ricezione pagina HTML base)+10.008s(richiesta e ricezione immagini JPEG) = 10.832s.
6. Si stimi il tempo necessario a scaricare una pagina Web che contiene, oltre al file.html base, 2 riferimenti ad altrettanti oggetti, assumendo connessioni non persistenti e un RTT (Round Trip Time) di 1 secondo. Si motivi la risposta, mostrando il diagramma temporale della comunicazione tra client e server, illustrando gli aspetti rilevanti del protocollo e le assunzioni considerati ai fini del calcolo. Sol.: Si assumono per semplicità pacchetti della stessa dimensione, tali che che la spedizione dal client al server (o viceversa) impieghi 0.5 RTT = 0.5 secondi. Poiché si usano connessioni non persistenti servono 2 RTT per ciascun oggetto richiesto. Si hanno 3 oggetti (pagina HTML base più 2 oggetti), per un totale di 6 RTT = 3 secondi. 5. La comunicazione di controllo SMTP è in banda o fuori banda? Perché? 6. lice invia un messaggio di posta elettronica a Bob. e B sono i mail server di lice e Bob. Bob legge la posta elettronica usando il protocollo POP3. Descrivere cosa accade dal momento in cui, dopo aver composto il messaggio, lice preme Send a quello in cui Bob legge il messaggio. 7. Si consideri la rete in figura e si supponga che il link verso il router abbia capacità 1Mbps. Si supponga che su sia presente un applicazione P che debba trasferire un file di dimensioni molto grandi verso una machina remota. Si supponga che la trasmissione da parte dello strato di trasporto avvenga alla massima velocità possibile e che il 10% dei bit trasmessi corrisponda a ritrasmissioni. Qual è il throughput di P? Internet Sol.: il throughput dell applicazione P è il ritmo al quale P riesce a trasferire bit utili (ossia dati originali) verso lo strato di trasporto. Poiché il file si assume molto grande e la trasmissione avviene alla massima velocità possibile abbiamo un ritmo di trasmissione di 1 Mbps da parte dello strato di trasporto. Di questi, soltanto 900 Kbps corrispondono a dati originali, mentre 100 Kbps sono ritrasmissioni. Dunque 900 kbps è il ritmo con il quale lo strato di trasporto è in grado di accettare dati originali da P. 8. Si consideri la rete in figura:
Internet B Si assuma che sia che B eseguano la stessa applicazione per trasferire file di dimensioni molto grandi verso una machina remota. Si supponga che la trasmissione da parte dello strato di trasporto di entrambi avvenga alla massima velocità possibile e che il 10% dei bit trasmessi corrispondano a ritrasmissioni. Se e B ottengono ciascuno metà della banda disponibile, per quale valore del throughput di ciascuno il link è saturo? 9. Si supponga di realizzare un protocollo per il trasferimento di file che usi UDP anziché TCP. Ciascun file viene eventualmente segmentato e ciascun segmento è inviato a destinazione indipendentemente in un segmento UDP. Si consideri il trasferimento di un file di dimensione 1 Mbyte e si assuma una MSS di 1 Kbyte. Si determini la probabilità che il file venga ricevuto correttamente a destinazione, assumendo che ciascun segmento UDP abbia probabilità p = 10-3 di andare perso, indipendentemente dagli altri segmenti. Si assuma che non vi siano errori. Sol.: nelle condizioni descritte il file è ricevuto correttamente a destinazione se e solo se tutti i segmenti nei quali è frammentato raggiugono la destinazione. Ogni segmento raggiunge la destinazione con probabilità 1 p, indipendentemente da tutti gli altri. Si hanno 1000 segmenti = 1Mbyte/MSS. La probabilità che tutti i segmenti raggiungano la destinazione (e quindi che il file giunga correttamente a destinazione) è dunque (1-p) 1000 = (1-1/1000) 1000 ~ 1/e ~ 0.67. 10. (ssegnato il 19/7/2005) Descrivere l'architettura di un server multithreaded di prenotazione: il server è in ascolto sulla porta X. d ogni richiesta di connessione il server crea un nuovo thread per la gestione della transazione con il nuovo client. Il thread apre due stream che leggono e scrivono stringhe da e verso il client allo scopo di ricevere le richieste dell'utente e inviare le relative risposte. Descrivere l architettura del server, in particolare gli aspetti di networking e di sistema, comprese la gestione dei thread e la
creazione e chiusura degli stream. Trascurare gli altri aspetti. Non occorre descrivere il client. Sol.: la soluzione di questo esercizio è tipica: si tratta di scrivere gli elementi fondamentali del server, trascurando gli aspetti che non siano di networking. Una possible implementazione è la seguente: public class PrenServer extends Thread { Socket clientsocket; public PrenServer(String str, Socket client) { super(str); clientsocket = client; } public static void main(string[] args) throws IOException { ServerSocket serversocket = null; try { serversocket = new ServerSocket(X); System.out.println("Server is coming up..."); } /* End try */ catch (IOException e) { System.err.println("Could not listen on port: X."); System.exit(1); } /* End catch */ while (true) { Socket clientsocket = null; try { clientsocket = serversocket.accept(); } /* End try */ catch (IOException e) { System.err.println("ccept failed."); System.exit(1); } /* End catch */ new PrenServer("PServer", clientsocket).start(); } /* End while */ } /* End metodo main() */ public void run() { try { PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));; while (/* Client non ha finito */) { /* Gestione transazione */ } /* End while */ out.close();
} in.close(); clientsocket.close(); } /* End try */ catch (IOException e) {} } /* End metodo run() */