Laboratorio
di Software per le Telecomunicazioni
Risposte Prima verifica - a.a. 2009-2010
Prima parte
- 1- la multiplazione con organizzazione di trama
è tipicamente quella adottata nella telefonia PCM con multiplazione
PDH, ma anche la tecnica SDH prevede una organizzazione di trama. In
generale, la prenotazione rigida di un intervallo temporale per tutta
la durata della comnicazionela rende più orientata a trasportare comunicazioni caratterizzate da un bit rate costante, come
per il caso delle comunicazioni real-time, di tipo audio o video (anche
se il video può realizzarsi anche con un bit rate variabile).Per contro, la multiplazione
statistica
tipica delle comunicazioni a pacchetto si presta bene al caso della
trasmissione dati, in cui il ritardo di trasmissione subito dalle
singole unità informative può variare, ed il ricevente può operare delle
contromisure per contrastare situazioni di perdita di dati.
- 2 - le richieste ARP sono
inviate per conoscere l'indirizzo di livello di collegamento, o MAC,
associato ad un indirizzo IP verso cui è destinato un pacchetto.
L'indirizzo IP richiesto può essere direttamente quello del
destinatario, se residente nella stessa sottorete del mittente, oppure
quello del default gateway, se il destinatario è in una altra sottorete
- 3 - nei pacchetti ARP NON è presente una intestazione IP, in quanto il pacchetto non viene instradato dai router, ma è locale alla LAN. Invece, è presente un indirizzo IP dentro alla PDU, che è l'indirizzo di cui si vuol conoscere il MAC
- 4 - i pacchetti ICMP sono inviati all'IP mittente di un pacchetto per due motivi: il primo è quello di investigare la raggiungibilità
di un altro computer di cui si conosce l'indirizzo IP, ed è usato dal
comando PING che genera dei pacchetti ICMP echo. Il secondo è per segnalare all'origine
del traffico IP una condizione di errore dello strato di rete, come un
TTL che si è azzerato, la necessità di operare una frammentazione, o
l'impossibilità di raggiungere una porta di destinazione, od un host,
od una rete.
- 5 - 171.200.200.191 - che si ottiene
scrivendo l'ultimo byte con quel che non è coperto dalla maschera,
posto tutto ad uno (ossia 10111111), e convertendo il risultato in
decimale - ad esempio, aiutandosi con la calcolatrice di gnome
- 6 - mentre uno switch prende in considerazione solo gli indirizzi di collegamento, un Router
pemette ad un pacchetto di attraversare LAN differenti, in base alle
informazioni di instradamento IP inserite a mano, o apprese mediante un
protocollo apposito. Un firewall
è un router che prende delle decisioni su chi inoltrare e chi no, in
base all'analisi degli indirizzi IP, e di quelli di trasporto, mentre
un NAT riscrive questi ultimi
due tipi di indirizzi, permettendo agli host configurati con degli IP
privati, di scambiare traffico con host dotati invece di un IP pubblico
- 7 - indica il protocollo di trasporto incapsulato, ossia UDP o TCP
- 8 - il TCP è detto con connessione perché prima di procedere al trasferimento dati prevede una fase di setup
in cui vengono riservati i buffer di memoria necessari alla gestione
del controllo di errore ed al corretto sequenziamento dei segmenti
ricevuti, mentre l'UDP invece invia i pacchetti uno alla volta, in modo
indipendente gli uni dagli altri, senza accordi preventivi tra le parti
- 9 - il flag ACK in un pacchetto TCP indica che nella sua
intestazione di trasporto è presente il prossimo numero di sequenza che
si attende di ricevere, riscontrando la corretta ricezione dei
precedenti
- la chiamata alla funzione listen()
- 10 - è eseguita da un server
- 11 - e produce l'effetto di attivare la
coda di ricezione dove sono posti in attesa i pacchetti ricevuti, prima
che l'applicazione effettui la chiamata alla funzione accept()
- 12 - la chiamata a gethostbyname() serve a conoscere l'indirizzo IP di un host, a partire dal suo nome a dominio
Seconda parte
Leggere con il proprio
wireshark questo file di cattura, ottenuto
a partire dal computer con IP 151.100.122.171, connesso ad una LAN
descritta da una maschera di sottorete di 24 bit. Il computer
ospita un server web, ed è quindi destinatario di richieste
http. Al
tempo stesso, vengono visitati due siti esterni, uno in Australia (http://www.cdu.edu.au/), ed uno in
Italia (http://www.repubblica.it)
- 13 - l'indirizzo IP del server DNS è 151.100.18.33
- 14 - il DNS usa il protocollo di trasporto UDP, e risponde sulla porta 53?
- 15 - l'indirizzo IP del sito australiano è 138.80.128.73
- 16 - l'indirizzo Ethernet del default gateway è 00:13:c3:c1:e4:7f, mentre il suo indirizzo IP è 151.100.122.1
- 17
- il ritardo tra i primi due pacchetti del three way handshake che
inizia al pacchetto 51 è dovuto al fatto che il secondo arriva
dall'australia, mentre il traffico è catturato presso l'host che ha
inviato il primo; il terzo pacchetto, invece, ha origine presso lo
stesso host
- 18 - la
massima dimensione di finestra, è pari a 38640 bytes, e viene raggiunta al pacchetto 147, ossia
l'ultimo ACK inviato prima della chiusura della connessione
- 19 - il primo pacchetto (SYN) della richiesta HTTP per l'indirizzo IP associato al dominio www.repubblica.it. è il numero 728
- 20 - la dimensione
delle intestazioni IP sono di 20 bytes, mentre per il TCP 24, dato che è presente l'opzione tcp.options.mss_val
- 21 - il numero di porta effimera TCP usata dal client
HTTP è 44086
- creiamo ora il grafico con Statistcs/IO
Graph.
- 22 - qual'è la velocità massima osservata è di circa 250000 bytes/sec
- 23 - le richieste HTTP a cui corrisponde il primo picco sono relative a 5 immagini jpeg
Terza parte
Visitiamo con nautilus la directory condivisa /media/netkit/labs/official/netkit-labs_interdomain-routing/netkit-lab_bgp-small-internet/netkit-lab_bgp-small-internet, e copiamone il contenuto presso il proprio computer. Dopo aver inizializzato le variabili di ambiente
in modo da poter utilizzare i comandi messi a disposizione da Netkit,
apriamo una finestra terminale, poniamoci nella directory dove abbiamo
salvato il laboratorio small-internet, e lanciamo le 14 macchine
virtuali corrispondenti. Aspettando che che si carichino tutte,
prendiamo confidenza con la topologia della rete simulata:
Si tratta della interconnessione di 7 sistemi autonomi mediante router che prendono nome asArB
in cui A è un numero che corrisponde al numero di sistema autonomo, e B
differenzia tra i router ivi compresi. I router si scambiano, mediante
un apposito protocollo, le informazioni di raggiungibilità delle LAN
direttamente conesse, in modo che ogni router sappia a chi inoltrare i
pacchetti indirizzati verso destinazioni ignote. Una volta che le
macchine
virtuali sono partite:
- scelgo la VM as100r1:
- 24 - per visualizzare solo i servizi in ascolto che utilizzano il trasporto TCP uso il comando netstat -t -l, che evidenzia i servizi quagga, ripd, bgpd, sunrpc
- 25 - il nome della Macchina Virtuale su cui stiamo opero è as100r1
- 26 - il comando netstat -t -p -n mostra che il programma bgpd di as100r1 è connesso alle VM con indirizzo 11.0.0.2 e 11.0.0.6, che corrispondono a as20r2 e as20r1. Eseguendo lo stesso comando su queste due macchine, si scopre che il programma collegato ad as100r1 è ancora una volta bgpd, ma che ora agisce come client, ulitizzando delle porte effimere
- 27 - per conoscere i numeri di porta, anziché il nome dei servizi, viene usato il comando netstat -t -p -n (ossia, con l'opzione -n)
- 28 - il numero di porta su cui bgpd è connesso presso as100r1 è 179, mentre presso gli altri due è 32818 e 45444
- 29
- il legame tra le connessioni TCP
individuate e la topologia mostrata è costituito dal fatto che queste
corrispondono ai collegamenti esistenti tra sistemi autonomi, ed il
servizio bgpd rappresenta il demone che implementa il Border Gateway Protocol
- 30 - per investigare sui i processi server in esecuzione localmente, i cui socket si trovano nella condizione di ascolto, e non connessi, utilizziamo l'opzione netstat -l
- 31 - presso as100r1 trovo i servizi in ascolto quagga, ripd, bgpd, sunrpc per il trasporto tcp, bgp per il tcp6, sunrpc per l'udp, e ipv6-icmp su di un socket raw
- investighiamo ora, mediante il comando nmap, quali sono i servizi attivi su di una VM diversa da quella presso la quale impartiamo il comando:
- 32 - dirigo il comando con nmap 30.3.3.1 (as30r1) a partire as100r1
- 33 - sull'altra macchina troviamo i servizi su tcp: rpcbind, bgp, zebra, bgpd, sulle porte 111, 179, 2601, 2605
- proviamo a connetterci via telnet ad una porta presso la quale è in ascolto un servizio remoto:
- 34 - usiamo il comando telnet 30.3.3.1 2601
- 35 - otteniamo la risposta Hello, this is Quagga (version 0.99.10). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification
- 36 - usciamo dal telnet con Ctrl+AlrGr+[ e poi scriviamo quit
- investighiamo sulla raggiungibilità reciproca della macchine: a partire da as100r2, eseguiamo dei ping verso gli indirizzi associati a as100r1, as30r1, e as40r1
- 37 - sono pingati gli indirizzi 100.1.0.5, 30.3.3.1, 11.0.0.29, con valore medio del RTT di 0.688, 1.12, 1.258 msec
- investighiamo sull'instradamento in essere tra as100r2 e le tre macchine precedentemente pingate
- 38 - usiamo il comando traceroute,
che nei tre casi fornisce: 1 100.1.0.5,
100.1.0.5 11.0.0.2 20.1.1.1 30.3.3.1,
100.1.0.5 11.0.0.2 20.1.1.3 11.0.0.22 11.0.0.29
- 39 - la sequenza di LAN attraversate nei tre casi è: D, D E C T, D E C U Q
- 40 - l'RTT sperimentato è legato in modo diretto al
numero di router attraversati, dato che ognuno introduce un ritardo di
attraversamento: a quanto pare, il ritardo è di circa 200-300
usec/router
- copiamo ora i programmi talker e listener in versione modificata presso la propria macchina host, compiliamoli (ad es., eseguendo cc -o talker talker.c sull'host), e copiamoli in due macchine virtuali (ad es., eseguendo cp /hosthome/Scrivania/talker talker sulla VM) appartenenti a sistemi autonomi differenti e non contigui
- lanciamo listener su di una, impartiamo il comando tcpdump -i any -s 0 -w
/hosthome/cattura.pcap presso un router di transito (da individuare mediante il comando apposito), ed eseguiamo talker all'altro estremo:
- mediante talker, inviamo due messaggi, e verifichiamo che siano arrivati all'altro estremo;
- interrompiamo il tcpdump con control-c, ed apriamo con wireshark il file catturato, e presente sulla macchina host:
- 41 - la macchine sorgente è as100r1, la destinazione as200r1, e intermedia as20r1 (20.1.1.1)
- 42 - oltre al traffico prodotto da talker, trovo pacchetti ARP e RIP
- 43 - i pacchetti da talker a listener sono presenti due volte dato che abbiamo eseguito il capture sulla interfaccia any, e dunque abbiamo catturato sia il pacchetto entrante, che quello uscente