hur nätverkstrafik flöden – komma igång
Gideon T. Rasmussen – CISSP, CFSO, CFSA, SCSA
för att felsöka ett problem, måste du veta hur nätverkstrafik flöden under normala omständigheter. Den här artikeln beskriver vad som händer när en webbläsare används för att komma åt en webbplats.
när webbplatsens namn har matats in i en webbläsare sker en serie kommunikationer över olika protokoll. Tabellen nedan visar hur nätverkstrafiken flyter:
linje:
|
protokoll:
|
källa:
|
Destination:
|
Data:
|
1
|
ARP
|
10.0.1.13
|
sändning
|
Vem har 10.0.1.1? Berätta 10.0.1.13
|
2
|
ARP
|
10.0.1.1
|
10.0.1.13
|
10.0.1.1 är på 00: 80: c8: 57: d3: aa
|
3
|
DNS
|
10.0.1.13
|
10.0.1.1
|
Standard fråga A www.cyberguard.com
|
4
|
DNS
|
10.0.1.1
|
10.0.1.13
|
Standard fråga svar 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 Win = 0 Len=0
|
Arp-protokollet
innan system kan kommunicera måste de känna till varandras hårdvaruadresser. Adressupplösningsprotokollet (ARP) används för detta ändamål. Från sin konfiguration känner arbetsstationen IP-adressen till DNS-servern.
linje # 1
protokoll: | källa: | Destination: | Data: |
ARP | 10.0.1.13 | Broadcast | Vem har 10.0.1.1? Berätta 10.0.1.13 |
arbetsstationen sänder en begäran till enheterna i sitt nätverk som frågar ”Vem har” den IP-adress den behöver kommunicera med.
Linje # 2
protokoll: | källa: | Destination: | Data: |
ARP | 10.0.1.1 | 10.0.1.13 | 10.0.1.1 är på 00: 80: c8: 57: d3: aa |
fjärrsystemet svarar med sin hårdvaruadress. Nu när arbetsstationen känner till fjärrsystemets hårdvaruadress kan den kommunicera med den.
DNS-protokollet
DNS-protokollet (Domain Name System) används för att lösa systemnamn till IP-adresser. När ett webbplatsnamn matas in i en webbläsare måste arbetsstationen känna till motsvarande IP-adress för att nå webbservern som är värd för webbplatsen.
linje # 3
protokoll: | källa: | Destination: | Data: |
DNS | 10.0.1.13 | 10.0.1.1 | standardfråga en www.cyberguard.com |
arbetsstationen ber DNS-servern att ange IP-adressen för webbserverns värd www.cyberguard.com.
linje # 4
protokoll: | källa: | Destination: | Data: |
DNS | 10.0.1.1 | 10.0.1.13 | Standard fråga svar CNAME cyberguard.com A 64.94.50.88 |
DNS-servern svarar med den IP-adress som motsvarar www.cyberguard.com.
TCP-protokollet
TCP-protokollet (Transmission Control Protocol) används för att överföra data. Dessa nästa tre rader omfattar TCP trevägs handskakning:
linje # 5
protokoll: | källa: | Destination: | Data: |
TCP | 10.0.1.13 | 64.94.50.88 | 1939 > http |
arbetsstationen initierar anslutningen till webbservern (SYN). SYN är en förkortning för ” synkronisera.”
Linje # 6
Protokoll: | källa: | Destination: | Data: |
TCP | 64.94.50.88 | 10.0.1.13 | http > 1939 |
webbservern svarar tillbaka och indikerar att den är klar för överföring (SYN ACK). SYN ACK är en förkortning för ” synkronisera bekräftelse.”
linje # 7
protokoll: | källa: | Destination: | Data: |
DNS | 10.0.1.13 | 64.94.50.88 | 1939 > http |
arbetsstationen skickar till webbservern som indikerar att den börjar skicka trafik (ACK). Denna bekräftelse indikerar att TCP-anslutningen är etablerad och trafiken kan börja flöda.
HTTP-protokollet
Hyper Text Transfer Protocol (HTTP) används för att tjäna upp webbsidor. Du kan se bevis på detta från webbadressen i din webbläsare (dvs. http://www.cyberguard.com).
Linje # 8
Protokoll: | Källa: | Destination: | Data: |
HTTP | 10.0.1.13 | 64.94.50.88 | GET / HTTP/1.1 |
webbläsaren öppnar en anslutning till webbservern.
Linje # 9
protokoll: | källa: | Destination: | Data: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP/1.1 200 OK |
webbservern accepterar anslutningen.
Linje # 10
Protokoll: | Källa: | Destination: | Data: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP fortsättning |
HTTP-Fortsättningsraderna representerar var innehållet på html-sidan skickas över. Den innehåller text, länkar etc.
tillbaka till TCP-protokollet
linje # 11
protokoll: | källa: | Destination: | Data: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq = 388864 Ack=37076821 Win=8241 Len=0 |
denna linje upprepas faktiskt fyra gånger. Arbetsstationen erkänner det sista paketet.
rad # 12 (första)
protokoll: | källa: | Destination: | Data: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq = 388864 Ack=37077089 Win = 0 Len=0 |
arbetsstationen skickar en återställning, effektivt riva ner TCP-anslutningen.
Tcpdump och Ethereal
det är viktigt att notera att tcpdump kommer att ge olika detaljer beroende på var den körs på ditt nätverk. I det här exemplet kördes tcpdump på brandväggens interna gränssnitt med en direkt ansluten arbetsstation. Om tcpdump användes för att övervaka samma trafikflöde på det externa gränssnittet, skulle källans IP-adress visas som brandväggens externa gränssnitt, förutsatt att DNaT (Dynamic Network Address Translation) var på plats. För att observera hur proxy trafikflöden, är det vettigt att köra tcpdump på både interna och externa gränssnitt, som proxy fungerar som en mellanhand mellan källan och destinationen.
källan till tabellen var en tcpdump-fil som ses genom Ethereal. Den exakta syntaxen som användes var: ”tcpdump-vvpni dec1-s1514-w /archive2/dec1.dmp värd 10.0.1.13”. Kommandot tcpdump har omfattande alternativ för inspelning av mycket specifikt trafikflöde (dvs. källa/destination, portar och booleska uttryck). För mer information, ange ”man tcpdump” på kommandoraden. Windows-versionen är Windump (http://windump.polito.it).
Ethereal är ett bra verktyg för att visa tcpdump filer. Det är fritt tillgängligt från http://www.ethereal.com.
några av portarna som finns i en tcpdump kan vara okända för dig. Den senaste listan över portnummer finns på http://www.iana.org/assignments/port-numbers (per RFC 3232).