Come scorre il traffico di rete – Guida introduttiva
Gideon T. Rasmussen – CISSP, CFSO, CFSA, SCSA
Per risolvere un problema, è necessario sapere come scorre il traffico di rete in circostanze normali. Questo articolo descrive in dettaglio cosa succede quando un browser Web viene utilizzato per accedere a un sito Web.
Una volta inserito il nome del sito Web in un browser Web, si verifica una serie di comunicazioni su vari protocolli. La tabella seguente rappresenta il modo in cui scorre il traffico di rete:
Riga:
|
Protocollo:
|
Fonte:
|
Destinazione:
|
Dati:
|
1
|
ARP
|
10.0.1.13
|
Broadcast
|
Che ha 10.0.1.1? Dire 10.0.1.13
|
2
|
ARP
|
10.0.1.1
|
10.0.1.13
|
10.0.1.1 alle 00:80:c8:57:d3:aa
|
3
|
DNS
|
10.0.1.13
|
10.0.1.1
|
query Standard di Un www.cyberguard.com
|
4
|
DNS
|
10.0.1.1
|
10.0.1.13
|
Standard di risposta alle query CNAME cyberguard.com Un 64.94.50.88
|
5
|
TCP
|
10.0.1.13
|
64.94.50.88
|
1939 > http
|
6
|
TCP
|
64.94.50.88
|
10.0.1.13
|
http > 1939
|
7
|
TCP
|
10.0.1.13
|
64.94.50.88
|
1939 > http
|
8
|
HTTP
|
10.0.1.13
|
64.94.50.88
|
GET / HTTP/1.1
|
9
|
HTTP
|
64.94.50.88
|
10.0.1.13
|
HTTP/1.1 200 OK
|
10
|
HTTP
|
64.94.50.88
|
10.0.1.13
|
HTTP Continuation
|
11
|
TCP
|
10.0.1.13
|
64.94.50.88
|
2577 > http Seq=388864 Ack=37076821 Win=8241 Len=0
|
12
|
TCP
|
10.0.1.13
|
64.94.50.88
|
2577 > http Seq=388864 Ack = 37077089 Vittoria = 0 Len=0
|
Il protocollo ARP
Prima che i sistemi possano comunicare, devono conoscere gli indirizzi hardware degli altri. A tale scopo viene utilizzato il protocollo ARP (Address Resolution Protocol). Dalla sua configurazione, la workstation conosce l’indirizzo IP del server DNS.
Linea # 1
Protocollo: | Fonte: | Destinazione: | Dati: |
ARP | 10.0.1.13 | Broadcast | Chi ha 10.0.1.1? Dillo 10.0.1.13 |
La workstation trasmette una richiesta ai dispositivi sulla sua rete chiedendo “chi ha” l’indirizzo IP con cui deve comunicare.
Linea # 2
Protocollo: | Fonte: | Destinazione: | Dati: |
ARP | 10.0.1.1 | 10.0.1.13 | 10.0.1.1 alle 00:80:c8:57:d3:aa |
Il sistema remoto non risponde fornendo il suo indirizzo hardware. Ora che la workstation conosce l’indirizzo hardware del sistema remoto, può comunicare con esso.
Il protocollo DNS
Il protocollo DNS (Domain Name System) viene utilizzato per risolvere i nomi di sistema in indirizzi IP. Quando il nome di un sito Web viene inserito in un browser, la workstation deve conoscere l’indirizzo IP corrispondente per raggiungere il server Web che ospita il sito.
Linea # 3
Protocollo: | Fonte: | Destinazione: | Dati: |
DNS | 10.0.1.13 | 10.0.1.1 | query Standard web.cyberguard.com |
La workstation chiede al server DNS per fornire l’indirizzo IP del server di Web hosting www.cyberguard.com.
Linea # 4
Protocollo: | Fonte: | Destinazione: | Dati: |
DNS | 10.0.1.1 | 10.0.1.13 | Standard di risposta alle query CNAME cyberguard.com Un 64.94.50.88 |
Il server DNS risponde con l’indirizzo IP corrispondente all’www.cyberguard.com.
Il protocollo TCP
Il protocollo TCP (Transmission Control Protocol) viene utilizzato per trasferire i dati. Queste tre righe successive comprendono il three-way handshake TCP:
Linea # 5
Protocollo: | Fonte: | Destinazione: | Dati: |
TCP | 10.0.1.13 | 64.94.50.88 | 1939 > http |
La workstation avvia la connessione al server Web (SYN). SYN è l’abbreviazione di ” sincronizza.”
Riga # 6
Protocollo: | Fonte: | Destinazione: | Dati: |
TCP | 64.94.50.88 | 10.0.1.13 | http > 1939 |
Il Web server risponde che indica che è pronto per la trasmissione (SYN ACK). SYN ACK è l’abbreviazione di ” synchronize acknowledgement.”
Linea # 7
Protocollo: | Fonte: | Destinazione: | Dati: |
DNS | 10.0.1.13 | 64.94.50.88 | 1939 > http |
La workstation invia al server Web indicando che sta iniziando a inviare traffico (ACK). Questo riconoscimento indica che la connessione TCP è stata stabilita e il traffico può iniziare a fluire.
Il protocollo HTTP
L’Hyper Text Transfer Protocol (HTTP) viene utilizzato per servire le pagine Web. Puoi vedere la prova di ciò dall’indirizzo del sito Web nel tuo browser (ad esempio http://www.cyberguard.com).
Linea # 8
Protocollo: | Fonte: | Destinazione: | Dati: |
HTTP | 10.0.1.13 | 64.94.50.88 | SCARICA / HTTP/1.1 |
Il browser apre una connessione al server Web.
Linea # 9
Protocollo: | Fonte: | Destinazione: | Dati: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP/1.1 200 OK |
Il Web server accetta la connessione.
Linea # 10
Protocollo: | Fonte: | Destinazione: | Dati: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP Continuazione |
Le righe di continuazione HTTP rappresentano il punto in cui vengono inviati i contenuti della pagina html. Include testo, link, ecc.
Torna al Protocollo TCP
Linea # 11
Protocollo: | Fonte: | Destinazione: | Dati: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq=388864 Ack = 37076821 Vittoria = 8241 Len=0 |
Questa linea viene effettivamente ripetuta quattro volte. La workstation sta riconoscendo l’ultimo pacchetto.
Linea # 12 (PRIMO)
Protocollo: | Fonte: | Destinazione: | Dati: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq=388864 Ack=37077089 Win=0 Len=0 |
La workstation invia un reset, in modo efficace abbattere la connessione TCP.
Tcpdump e Ethereal
È importante notare che tcpdump fornirà dettagli diversi a seconda di dove viene eseguito sulla rete. In questo esempio, tcpdump è stato eseguito sull’interfaccia interna del firewall con una workstation collegata direttamente. Se tcpdump fosse usato per monitorare lo stesso flusso di traffico sull’interfaccia esterna, l’indirizzo IP di origine apparirebbe come l’interfaccia esterna del firewall, a condizione che DNAT (Dynamic Network Address Translation) fosse in atto. Per osservare come scorre il traffico proxy, ha senso eseguire tcpdump su entrambe le interfacce interne ed esterne, poiché il proxy funge da intermediario tra l’origine e la destinazione.
La fonte della tabella era un file tcpdump visualizzato tramite Ethereal. La sintassi esatta utilizzata era: “tcpdump-vvpni dec1-s1514 – w / archive2 / dec1.host dmp 10.0.1.13”. Il comando tcpdump ha ampie opzioni per la registrazione del flusso di traffico molto specifico (ad esempio sorgente/destinazione, porte ed espressioni booleane). Per ulteriori informazioni, immettere “man tcpdump” sulla riga di comando. La versione di Windows è Windump (http://windump.polito.it).
Ethereal è un buon strumento per visualizzare i file tcpdump. È liberamente disponibile da http://www.ethereal.com.
Alcune delle porte presenti in un tcpdump potrebbero non essere familiari. L’elenco più aggiornato dei numeri di porta può essere trovato a http://www.iana.org/assignments/port-numbers (per RFC 3232).