Wie der Netzwerkverkehr fließt – Erste Schritte
Gideon T. Rasmussen – CISSP, CFSO, CFSA, SCSA
Um ein Problem zu beheben, müssen Sie wissen, wie der Netzwerkverkehr unter normalen Umständen fließt. In diesem Artikel wird beschrieben, was passiert, wenn ein Webbrowser für den Zugriff auf eine Website verwendet wird.
Sobald der Name der Website in einen Webbrowser eingegeben wurde, erfolgt eine Reihe von Kommunikationen über verschiedene Protokolle. Die folgende Tabelle zeigt, wie der Netzwerkverkehr fließt:
Linie:
|
Protokoll:
|
Quelle:
|
Zielort:
|
Daten:
|
1
|
ARP
|
10.0.1.13
|
Sendung
|
Wer hat 10.0.1.1? Tell 10.0.1.13
|
2
|
ARP
|
10.0.1.1
|
10.0.1.13
|
10.0.1.1 ist um 00:80:c8:57:d3:aa
|
3
|
DNS
|
10.0.1.13
|
10.0.1.1
|
Standardabfrage A www.cyberguard.com
|
4
|
DNS
|
10.0.1.1
|
10.0.1.13
|
Standardabfrageantwort CNAME cyberguard.com A 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 Gewinnen = 0 Len=0
|
Das ARP-Protokoll
Bevor Systeme kommunizieren können, müssen sie die Hardwareadressen des jeweils anderen kennen. Hierfür wird das Address Resolution Protocol (ARP) verwendet. Aus seiner Konfiguration kennt die Workstation die IP-Adresse des DNS-Servers.
Linie # 1
Protokoll: | Quelle: | Ziel: | Daten: |
ARP | 10.0.1.13 | Broadcast | Wer hat 10.0.1.1? Tell 10.0.1.13 |
Die Workstation sendet eine Anfrage an die Geräte in ihrem Netzwerk und fragt, „wer“ die IP-Adresse hat, mit der sie kommunizieren muss.
Linie # 2
Protokoll: | Quelle: | Ziel: | Daten: |
ARP | 10.0.1.1 | 10.0.1.13 | 10.0.1.1 ist um 00:80:c8:57:d3:aa |
Das Remote-System antwortet mit seiner Hardware-Adresse. Jetzt, da die Workstation die Hardwareadresse des Remote-Systems kennt, kann sie mit ihm kommunizieren.
Das DNS-Protokoll
Das DNS-Protokoll (Domain Name System) wird verwendet, um Systemnamen in IP-Adressen aufzulösen. Wenn ein Websitename in einen Browser eingegeben wird, muss die Workstation die entsprechende IP-Adresse kennen, um den Webserver zu erreichen, auf dem die Site gehostet wird.
Linie # 3
Protokoll: | Quelle: | Ziel: | Daten: |
DNS | 10.0.1.13 | 10.0.1.1 | Standardabfrage Ein www.cyberguard.kom |
Die Workstation fordert den DNS-Server auf, die IP-Adresse des Webservers anzugeben. www.cyberguard.com .
Zeile # 4
Protokoll: | Quelle: | Ziel: | Daten: |
DNS | 10.0.1.1 | 10.0.1.13 | Standardabfrageantwort CNAME cyberguard.com A 64.94.50.88 |
Der DNS-Server antwortet mit der IP-Adresse entsprechend www.cyberguard.com.
Das TCP-Protokoll
Das TCP-Protokoll (Transmission Control Protocol) wird zum Übertragen von Daten verwendet. Diese nächsten drei Zeilen umfassen die TCP three-way handshake:
Zeile # 5
Protokoll: | Quelle: | Ziel: | Daten: |
TCP | 10.0.1.13 | 64.94.50.88 | 1939 > http |
Die Workstation initiiert die Verbindung zum Webserver (SYN). SYN ist eine Abkürzung für „synchronize.“
Zeile # 6
Protokoll: | Quelle: | Ziel: | Daten: |
TCP | 64.94.50.88 | 10.0.1.13 | http > 1939 |
Der Webserver antwortet zurück und zeigt an, dass er zur Übertragung bereit ist (SYN ACK). SYN ACK ist eine Abkürzung für „synchronize acknowledgement.“
Zeile # 7
Protokoll: | Quelle: | Ziel: | Daten: |
DNS | 10.0.1.13 | 64.94.50.88 | 1939 > http |
Die Workstation sendet an den Webserver, um anzuzeigen, dass sie mit dem Senden von Datenverkehr beginnt (ACK). Diese Bestätigung zeigt an, dass die TCP-Verbindung hergestellt ist und der Datenverkehr beginnen kann.
Das HTTP-Protokoll
Das Hyper Text Transfer Protocol (HTTP) wird zum Bereitstellen von Webseiten verwendet. Sie können dies an der Adresse der Website in Ihrem Browser erkennen (d. H. http://www.cyberguard.com).
Linie # 8
Protokoll: | Quelle: | Ziel: | Daten: |
HTTP | 10.0.1.13 | 64.94.50.88 | GET / HTTP/1.1 |
Der Browser stellt eine Verbindung zum Webserver her.
Linie # 9
Protokoll: | Quelle: | Ziel: | Daten: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP / 1.1 200 IN ORDNUNG |
Der Webserver akzeptiert die Verbindung.
Linie # 10
Protokoll: | Quelle: | Ziel: | Daten: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP Fortsetzung |
Die HTTP-Fortsetzungszeilen stellen dar, wo der Inhalt der HTML-Seite gesendet wird. Es enthält Text, Links usw.
Zurück zum TCP-Protokoll
Zeile # 11
Protokoll: | Quelle: | Ziel: | Daten: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq = 388864 Ack = 37076821 Gewinnen = 8241 Len=0 |
Diese Zeile wird tatsächlich viermal wiederholt. Die Workstation bestätigt das letzte Paket.
Zeile # 12 (ERSTE)
Protokoll: | Quelle: | Ziel: | Daten: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq = 388864 Ack = 37077089 Gewinnen = 0 Len=0 |
Die Workstation sendet einen Reset, wodurch die TCP-Verbindung effektiv unterbrochen wird.
Tcpdump und Ethereal
Es ist wichtig zu beachten, dass der tcpdump je nachdem, wo er in Ihrem Netzwerk ausgeführt wird, unterschiedliche Details enthält. In diesem Beispiel wurde tcpdump auf der internen Schnittstelle der Firewall mit einer direkt angeschlossenen Workstation ausgeführt. Wenn tcpdump verwendet würde, um denselben Datenverkehrsfluss auf der externen Schnittstelle zu überwachen, würde die Quell-IP-Adresse als externe Schnittstelle der Firewall angezeigt, vorausgesetzt, dass DNAT (Dynamic Network Address Translation) vorhanden ist. Um zu beobachten, wie der Proxy-Datenverkehr fließt, ist es sinnvoll, tcpdump sowohl auf der internen als auch auf der externen Schnittstelle auszuführen, da der Proxy als Vermittler zwischen Quelle und Ziel fungiert.
Die Quelle der Tabelle war eine tcpdump-Datei, die über Ethereal angezeigt wurde. Die genaue Syntax war: „tcpdump -vvpni dec1 -s1514 -w /archive2/dec1.dmp-Host 10.0.1.13“. Der Befehl tcpdump verfügt über umfangreiche Optionen zur Aufzeichnung sehr spezifischer Verkehrsflüsse (z. B. Quelle / Ziel, Ports und Boolesche Ausdrücke). Für weitere Informationen geben Sie „man tcpdump“ in die Befehlszeile ein. Die Windows-Version ist Windump (http://windump.polito.it).
Ethereal ist ein gutes Werkzeug, um tcpdump-Dateien anzuzeigen. Es ist frei verfügbar von http://www.ethereal.com.
Einige der in einem tcpdump vorhandenen Ports sind Ihnen möglicherweise nicht bekannt. Die aktuellste Liste der Portnummern finden Sie unter http://www.iana.org/assignments/port-numbers (gemäß RFC 3232).