Progettazione di Servizi Web e Reti di Calcolatori Prompt dei comandi Politecnico di Torino Prof. Antonio Lioy AA 2015-2016, esercitazione di laboratorio n.2 Per usare gli applicativi nslookup e wget è necessario aprire una finestra di prompt dei comandi: dal menù di avvio di Windows, selezionare Tutti i programmi Accessori Prompt di comandi. Per l applicativo nslookup si faccia riferimento all introduzione proposta nella esercitazione n.1. Introduzione all uso di wget L applicativo wget 1 permette di scaricare file usando principalmente i protocolli HTTP(S) e FTP. Comando per eseguire il download di una risorsa: wget [ opzioni ] url Dove URL è l indirizzo della risorsa da scaricare, ad esempio: wget http://www.miosito.com/foto1.jpg Per le esercitazioni di laboratorio non sarà necessario specificare alcuna opzione. Introduzione all'analizzatore di pacchetti wireshark Per gli esercizi è necessario usare uno sniffer (analizzatore di pacchetti di rete). In laboratorio è installato wireshark 2, tra i più potenti e flessibili in ambito open-source. Per l uso dell applicativo fare riferimento alla relativa presentazione sul sito web del corso. Si ricorda che wireshark supporta due tipologie di filtri, quelli in fase di cattura 3 e quelli per la visualizzazione 4. Al fine di comprenderne il funzionamento si consiglia di provarli entrambi. Introduzione all applicativo Jperf L applicativo Jperf 5 permette di misurare il throughput di rete per i protocolli TCP ed UDP tra due nodi (uno configurato come client e l altro come server). L applicativo dispone di un interfaccia grafica che ne semplifica l uso. In particolare è possibile specificare: i parametri della trasmissione dati e le relative opzioni (tra cui l indirizzo IP del server Jperf a cui collegarsi); il protocollo da usarsi (TCP o UDP); il numero di stream paralleli (cioè numero di trasmissioni indipendenti e contemporanee). Jperf permette di impostare numerosi altri parametri che esulano dal contesto di questa esercitazione, per cui non dovranno essere modificati. Nella modalità client è necessario specificare: 1. l hostname oppure l indirizzo IP del server Jperf; 2. la porta sulla quale il server Jperf è in ascolto; 3. il protocollo da usare, TCP o UDP. Nella modalità server è necessario specificare: 1 versione per Windows alla pagina https://eternallybored.org/misc/wget/ 2 http://www.wireshark.org/ 3 https://wiki.wireshark.org/capturefilters 4 https://wiki.wireshark.org/displayfilters 5 https://sourceforge.net/projects/iperf/files/jperf/
1. la porta sulla quale il server Jperf deve mettersi in ascolto; 2. il protocollo da usare, TCP o UDP. Esercizio 2.1 Figura 1: finestra dell'applicazione Jperf. Attivare wireshark sull'interfaccia di rete Ethernet (es. eth0, Local Area Network). Senza aprire altre applicazioni, catturare i pacchetti per qualche istante (ad esempio 1 minuto), quindi interrompere la cattura. Memorizzare i pacchetti catturati sul file prova.pcapng. Qual è la dimensione di tale file? Aprire in wireshark il file prova.pcapng ed eseguire i seguenti punti: 1. stimare approssimativamente il numero di pacchetti per secondo catturati nella precedente acquisizione; 2. identificare se vi sono pacchetti UDP o TCP presenti. Esercizio 2.2 Si vogliono analizzare i pacchetti DNS scambiati durante la risoluzione del nome www.google.com. A tal fine si segua la seguente procedura e si risponda alle domande proposte. Aprire wireshark, predisporlo alla cattura dei pacchetti DNS (specificando l interfaccia di rete) ed avviare la cattura dei pacchetti. Attraverso l applicativo nslookup eseguire la query richiesta.
Fermare la cattura dei pacchetti e rispondere alle seguenti domande: 1. Quali protocolli della pila TCP/IP, partendo dal livello data-link, sono stati impiegati? 2. Quali porte del protocollo di trasporto sono state usate? Il loro identificativo nelle prove in laboratorio, è fisso o variabile? Il loro identificativo è, in generale, necessariamente fisso/variabile (cioè, quanto riscontrato in laboratorio, è una regola sempre vera)? 3. E possibile identificare la query richiesta al server DNS? In caso affermativo compilare i seguenti campi: a. Name: b. Type: c. Class 4. E possibile identificare la risposta del DNS? In caso affermativo compilare i seguenti campi per un indirizzo IP a scelta tra quelli presenti della risposta: a. Name: b. Type: c. Class: d. Addr: 5. Per identificare più precisamente il traffico DNS è possibile definire un filtro per la visualizzazione? a. espressione del filtro: Esercizio 2.3 Si vogliono analizzare i protocolli coinvolti durante il trasferimento di una risorsa web. A tal fine si segua la seguente procedura e si risponda alle domande. Aprire l applicazione wireshark, predisporla alla cattura dei pacchetti (specificando l interfaccia di rete) ed avviare la cattura dei pacchetti. Usando l applicativo wget, scaricare il file al seguente indirizzo: http://security.polito.it/~lioy/01nbe/lab2/test1k.dat 1. Quali protocolli della pila TCP/IP sono coinvolti nel trasferimento di questo file? 2. Riuscite ad identificare a. le fasi di handshake del protocollo TCP? b. le fasi di chiusura del protocollo TCP? Per ciascun pacchetto appartenente a queste fasi, riportate i valori dei vari flag TCP ed annotate il tempo trascorso in millisecondi tra i pacchetti appartenenti a ciascuna fase. Esercizio 2.4 Si vuole analizzare il throughput del protocollo TCP durante il download di file con diverse dimensioni. Usando wget, scaricare i file proposti (URL base http://security.polito.it/~lioy/01nbe/lab2/ seguita dal nome del file) e rispondere alle domande. 1. Eseguire il download del file test1k.dat e rilevare i seguenti dati: 2. Eseguire il download del file test10k.dat e rilevare i seguenti dati:
a. byte trasferiti: 3. Eseguire il download del file test100k.dat e rilevare i seguenti dati: 4. Eseguire il download del file test1m.dat e rilevare i seguenti dati: 5. Eseguire il download del file test10m.dat e rilevare i seguenti dati: 6. Il throughput medio varia all aumentare delle dimensioni della risorsa? In caso affermativo spiegare per quale ragione. Esercizio 2.5 Si vuole analizzare (mediante l utilizzo di un grafico) l andamento della TCP window durante il download di risorse con dimensioni diverse. Considerando gli stessi file proposti nell esercizio precedente, si segua la procedura proposta qui sotto per ciascun file: 1. usando gli applicativi wget e wireshark, si proceda alla cattura del traffico TCP relativo al download di un file a scelta; 2. salvare il traffico catturato in un file esterno; 3. personalizzare la finestra di visualizzazione aggiungendo una colonna separata che contenga il valore della TCP window; 4. esportare i pacchetti catturati nel formato CSV; 5. usando Excel, importare i dati dal formato CSV e costruire il grafico (in ascissa impostare il tempo o il numero del pacchetto, in ordinata impostare il valore della TCP window). Per inserire una nuova colonna in wireshark si segua la procedura: 1. dal menù di wireshark, selezionare Edit Preferences Columns; 2. aggiungere una nuova colonna specificando come Field Type il valore Custom; 3. Come Field Name impostare il valore tcp.window_size. Infine rispondere alle seguenti domande: 1. Per ciascuna risorsa qual è la dimensione minima e massima della TCP window? a. dimensione minima: b. dimensione massima: 2. Spiegare il diverso andamento della TCP window per risorse con dimensioni diverse.
Esercizio 2.6 Utilizzando l applicativo Jperf si vuole analizzare l andamento del throughput per il protocollo UDP. A tal fine si segua la procedura proposta e si risponda alle domande. Formare una coppia con un vostro compagno, in modo da avere due macchine a disposizione, diciamo computer A e computer B. Configurare Jperf sul computer A in modalità server e su computer B in modalità client, specificando per entrambi il protocollo UDP. Per il nodo in modalità client è necessario innanzitutto impostare l indirizzo IP del server Jperf. Durante l esercizio i parametri sul server non dovranno essere modificati, mentre sul client saranno da modificare di volta in volta la banda e/o il numero di stream paralleli. Dal client effettuare i seguenti test: 1. Impostare la banda ad 1 Mbps ed il numero di stream paralleli a 1, svolgere il test e 2. Impostare la banda a 5 Mbps ed il numero di stream paralleli a 1, svolgere il test e 3. Impostare la banda a 5 Mbps ed il numero di stream paralleli a 5. Come varia il throughput rispetto al caso precedente? Ci sono pacchetti persi? 4. Impostare la banda a 10 Mbps ed il numero di stream paralleli a 1, svolgere il test e 5. Impostare la banda a 10 Mbps ed il numero di stream paralleli a 5. Come varia il throughput rispetto al caso precedente? Ci sono pacchetti persi? 6. Il throughput del protocollo UDP è superiore a quello del protocollo TCP? In caso affermativo, motivare la risposta.