hvordan netværkstrafik flyder – Kom godt i gang
Gideon T. Rasmussen – CISSP, CFSO, CFSA, SCSA
for at fejlfinde et problem skal du vide, hvordan netværkstrafik strømmer under normale omstændigheder. Denne artikel beskriver, hvad der sker, når en internetsøgemaskine bruges til at få adgang til en hjemmeside.
når hjemmesidens navn er indtastet, sker der en række meddelelser via forskellige protokoller. Tabellen nedenfor viser, hvordan netværkstrafikken flyder:
linje:
|
protokol:
|
kilde:
|
bestemmelsessted:
|
Data:
|
1
|
ARP
|
10.0.1.13
|
Broadcast
|
Hvem har 10.0.1.1? Fortæl 10.0.1.13
|
2
|
ARP
|
10.0.1.1
|
10.0.1.13
|
10.0.1.1 er klokken 00:80:c8: 57: d3: aa
|
3
|
DNS
|
10.0.1.13
|
10.0.1.1
|
standard forespørgsel A www.cyberguard.com
|
4
|
DNS
|
10.0.1.1
|
10.0.1.13
|
standard forespørgsel 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 sek=388864 Ack=37077089 vinde=0 Len=0
|
Arp-protokollen
før systemer kan kommunikere, skal de kende hinandens udstyrsadresser. Adresseopløsningsprotokollen (ARP) bruges til dette formål. Fra sin konfiguration kender arbejdsstationen IP-adressen på DNS-serveren.
linje # 1
protokol: | kilde: | Destination: | Data: |
ARP | 10.0.1.13 | Broadcast | Hvem har 10.0.1.1? Fortæl 10.0.1.13 |
arbejdsstationen sender en anmodning til enhederne på sit netværk, der spørger “Hvem har” den IP-adresse, den har brug for at kommunikere med.
linje # 2
protokol: | kilde: | Destination: | Data: |
ARP | 10.0.1.1 | 10.0.1.13 | 10.0.1.1 er klokken 00:80:c8: 57: d3: aa |
fjernsystemet reagerer med sin udstyrsadresse. Nu hvor arbejdsstationen kender udstyrsadressen til fjernsystemet, kan den kommunikere med den.
DNS-protokollen
DNS-protokollen (Domain Name System) bruges til at løse systemnavne til IP-adresser. Når et hjemmesidenavn indtastes, skal arbejdsstationen kende den tilsvarende IP-adresse for at nå den internetserver, der er vært for hjemmesiden.
linje # 3
protokol: | kilde: | Destination: | Data: |
DNS | 10.0.1.13 | 10.0.1.1 | Standard Forespørg et spørgsmål.cyberguard.com |
arbejdsstationen beder DNS-serveren om at angive IP-adressen på internetserverhosting www.cyberguard.com.
linje # 4
protokol: | kilde: | Destination: | Data: |
DNS | 10.0.1.1 | 10.0.1.13 | standard forespørgsel svar CNAME cyberguard.com A 64.94.50.88 |
DNS-serveren reagerer med den IP-adresse, der svarer til www.cyberguard.com.
TCP-protokollen
Transmission Control Protocol (TCP) – protokollen bruges til at overføre data. Disse næste tre linjer omfatter TCP tre-vejs håndtryk:
linje # 5
protokol: | kilde: | Destination: | Data: |
TCP | 10.0.1.13 | 64.94.50.88 | 1939 > http |
det er muligt at oprette forbindelse til serveren (SYN). SYN er en forkortelse for ” Synkroniser.”
Linje # 6
Protokol: | kilde: | Destination: | Data: |
TCP | 64.94.50.88 | 10.0.1.13 | http > 1939 |
serveren svarer tilbage, hvilket indikerer, at den er klar til transmission (SYN ACK). SYN ACK er en forkortelse for ” Synkroniser anerkendelse.”
linje # 7
protokol: | kilde: | Destination: | Data: |
DNS | 10.0.1.13 | 64.94.50.88 | 1939 > http |
arbejdsstationen sender til internetserveren, hvilket indikerer, at den begynder at sende trafik (ACK). Denne bekræftelse indikerer, at TCP-forbindelsen er etableret, og trafikken kan begynde at strømme.
HTTP-protokollen
Hyper-Tekstoverførselsprotokollen (HTTP) bruges til at vise hjemmesider. Du kan se bevis på dette fra hjemmesideadressen i din bro.ser (dvs. http://www.cyberguard.com).
Linje # 8
Protokol: | Kilde: | Destination: | Data: |
HTTP | 10.0.1.13 | 64.94.50.88 | Hent / HTTP/1.1 |
der åbnes en forbindelse til internetserveren.
linje # 9
protokol: | kilde: | Destination: | Data: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP/1.1 200 OK |
internetserveren accepterer forbindelsen.
Linje # 10
Protokol: | Kilde: | Destination: | Data: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP fortsættelse |
HTTP-Fortsættelseslinjerne repræsenterer, hvor indholdet af html-siden sendes over. Det indeholder tekst, links osv.
tilbage til TCP-protokollen
linje # 11
protokol: | kilde: | Destination: | Data: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http sek=388864 Ack=37076821 vinde=8241 Len=0 |
denne linje gentages faktisk fire gange. Arbejdsstationen anerkender den sidste pakke.
linje # 12 (RST)
protokol: | kilde: | Destination: | Data: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http sek=388864 Ack=37077089 vinde=0 Len=0 |
arbejdsstationen sender en nulstilling, der effektivt nedbryder TCP-forbindelsen.
Tcpdump og Ethereal
det er vigtigt at bemærke, at tcpdump vil give forskellige detaljer afhængigt af hvor den kører på dit netværk. I dette eksempel blev tcpdump kørt på den interne grænseflade af brandvæggen med en direkte tilsluttet arbejdsstation. Hvis tcpdump blev brugt til at overvåge den samme trafikstrøm på den eksterne grænseflade, ville kilde-IP-adressen fremstå som den eksterne grænseflade for brandvæggen, forudsat at Dynamic netværk Address Translation (DNAT) var på plads. For at observere, hvordan fuldmægtigstrafikken flyder, er det fornuftigt at køre tcpdump på både de interne og eksterne grænseflader, da fuldmagten fungerer som mellemmand mellem kilden og destinationen.
kilden til tabellen var en tcpdump-fil set gennem Ethereal. Den nøjagtige anvendte syntaks var: “tcpdump-vvpni dec1-s1514-m /arkiv2/dec1.DMP vært 10.0.1.13”. Tcpdump-kommandoen har omfattende muligheder for registrering af meget specifik trafikstrøm (dvs.kilde/destination, porte og boolske udtryk). For mere information, indtast “man tcpdump” på kommandolinjen. Vinduerne version er Vindump (http://windump.polito.it).
Ethereal er et godt værktøj til at se tcpdump filer. Det er frit tilgængeligt fra http://www.ethereal.com.
nogle af de porte, der findes i en tcpdump, kan være ukendte for dig. Den mest aktuelle liste over portnumre findes på http://www.iana.org/assignments/port-numbers (pr.RFC 3232).