jak przepływa ruch sieciowy – pierwsze kroki
Gideon T. Rasmussen – CISSP, CFSO, CFSA, SCSA
aby rozwiązać problem, musisz wiedzieć, jak przepływa ruch sieciowy w normalnych okolicznościach. W tym artykule opisano, co się dzieje, gdy przeglądarka internetowa jest używana do uzyskania dostępu do strony internetowej.
po wprowadzeniu nazwy strony internetowej do przeglądarki internetowej następuje seria komunikacji za pośrednictwem różnych protokołów. Poniższa tabela przedstawia przepływ ruchu w sieci:
Kolejka:
|
protokół:
|
źródło:
|
miejsce przeznaczenia:
|
dane:
|
1
|
ARP
|
10.0.1.13
|
Transmisja
|
kto ma 10.0.1.1? Tell 10.0.1.13
|
2
|
ARP
|
10.0.1.1
|
10.0.1.13
|
10.0.1.1 jest o 00: 80: c8: 57: D3: aa
|
3
|
DNS
|
10.0.1.13
|
10.0.1.1
|
zapytanie standardowe A www.cyberguard.com
|
4
|
DNS
|
10.0.1.1
|
10.0.1.13
|
standardowa odpowiedź na zapytanie 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
|
protokół ARP
zanim systemy będą mogły się komunikować, muszą znać swoje adresy sprzętowe. Do tego celu wykorzystywany jest protokół rozwiązywania adresów (Arp). Z konfiguracji stacja robocza zna adres IP serwera DNS.
Kolejka # 1
protokół: | źródło: | cel: | dane: |
ARP | 10.0.1.13 | nadawanie | kto ma 10.0.1.1? Tell 10.0.1.13 |
stacja robocza wysyła żądanie do urządzeń w swojej sieci z pytaniem „kto ma” adres IP, z którym musi się komunikować.
Kolejka # 2
protokół: | źródło: | cel: | dane: |
ARP | 10.0.1.1 | 10.0.1.13 | 10.0.1.1 jest o 00: 80: c8: 57: D3: aa |
zdalny system odpowiada podając swój adres sprzętowy. Teraz, gdy stacja robocza zna adres sprzętowy zdalnego systemu, może się z nią komunikować.
protokół DNS
protokół DNS (Domain Name System) służy do rozdzielania nazw systemowych na adresy IP. Gdy Nazwa witryny sieci Web jest wprowadzana do przeglądarki, stacja robocza musi znać odpowiedni adres IP, aby dotrzeć do serwera sieci Web hostującego witrynę.
Kolejka # 3
protokół: | źródło: | cel: | dane: |
DNS | 10.0.1.13 | 10.0.1.1 | standardowe zapytanie a www.cyberguard.kom |
stacja robocza prosi serwer DNS o podanie adresu IP hostującego Serwer Www www.cyberguard.com.
linia # 4
protokół: | źródło: | cel: | dane: |
DNS | 10.0.1.1 | 10.0.1.13 | standardowa odpowiedź na zapytanie CNAME cyberguard.com A 64.94.50.88 |
serwer DNS odpowiada adresem IP odpowiadającym www.cyberguard.com.
protokół TCP
protokół TCP (Transmission Control Protocol) służy do przesyłania danych. Następne trzy linie zawierają TCP three-way handshake:
Line # 5
protokół: | źródło: | cel: | dane: |
TCP | 10.0.1.13 | 64.94.50.88 | 1939 > http |
stacja robocza inicjuje połączenie z serwerem WWW (SYN). SYN jest skrótem od ” synchronize.”
Linia # 6
Protokół: | źródło: | cel: | dane: |
TCP | 64.94.50.88 | 10.0.1.13 | http > 1939 |
Web serwer odpowiada wstecz wskazując, że jest gotowy do transmisji (SYN ACK). SYN ACK jest skrótem od ” synchronize acknowledgement.”
linia # 7
protokół: | źródło: | cel: | dane: |
DNS | 10.0.1.13 | 64.94.50.88 | 1939 > http |
stacja robocza wysyła do serwera www informując, że zaczyna wysyłać ruch (ACK). Potwierdzenie to wskazuje, że połączenie TCP zostało nawiązane i ruch może zacząć płynąć.
protokół HTTP
protokół Hyper Text Transfer Protocol (HTTP) służy do obsługi stron internetowych. Możesz zobaczyć dowody na to z adresu strony internetowej w przeglądarce (tj. http://www.cyberguard.com).
Kolejka # 8
Protokół: | Źródło: | Cel: | Dane: |
HTTP | 10.0.1.13 | 64.94.50.88 | GET / HTTP/1.1 |
przeglądarka otwiera połączenie z serwerem WWW.
Kolejka # 9
protokół: | źródło: | cel: | dane: |
HTTP | 64.94.50.88 | 10.0.1.13 | HTTP / 1.1 200 OK |
serwer WWW akceptuje połączenie.
Kolejka # 10
Protokół: | Źródło: | Cel: | Dane: |
HTTP | 64.94.50.88 | 10.0.1.13 | kontynuacja HTTP |
linie kontynuacji HTTP reprezentują miejsce, w którym przesyłana jest zawartość strony html. Zawiera tekst, linki itp.
powrót do protokołu TCP
linia # 11
protokół: | źródło: | cel: | dane: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq=388864 Ack = 37076821 Win = 8241 Len=0 |
ta linia jest w rzeczywistości powtórzona cztery razy. Stacja robocza potwierdza ostatni pakiet.
linia nr 12 (RST)
protokół: | źródło: | cel: | dane: |
TCP | 10.0.1.13 | 64.94.50.88 | 2577 > http Seq=388864 Ack=37077089 Win = 0 Len=0 |
stacja robocza wysyła reset, skutecznie niszcząc połączenie TCP.
Tcpdump i Ethereal
ważne jest, aby pamiętać, że tcpdump będzie dostarczać różne szczegóły w zależności od tego, gdzie działa w sieci. W tym przykładzie tcpdump został uruchomiony na wewnętrznym interfejsie zapory sieciowej z bezpośrednio podłączoną stacją roboczą. Jeśli tcpdump był używany do monitorowania tego samego przepływu ruchu na zewnętrznym interfejsie, źródłowy adres IP pojawiłby się jako zewnętrzny interfejs zapory, pod warunkiem, że wprowadzono dynamiczne tłumaczenie adresów sieciowych (DNAT). Aby obserwować przepływ ruchu proxy, warto uruchomić tcpdump zarówno na interfejsie wewnętrznym, jak i zewnętrznym, ponieważ proxy działa jako pośrednik między źródłem a miejscem docelowym.
źródłem tabeli był plik tcpdump przeglądany przez Ethereal. Dokładna zastosowana składnia brzmiała: „tcpdump-vvpni dec1-s1514-w/archive2 / dec1.DMP host 10.0.1.13” Polecenie tcpdump ma rozbudowane opcje do rejestrowania bardzo określonego przepływu ruchu (tj. źródła / miejsca przeznaczenia, porty i wyrażenia logiczne). Aby uzyskać więcej informacji, wpisz „man tcpdump” w wierszu poleceń. Wersja systemu Windows To Windump (http://windump.polito.it).
Ethereal jest dobrym narzędziem do przeglądania plików tcpdump. Jest dostępny bezpłatnie od http://www.ethereal.com.
niektóre porty obecne w tcpdump mogą być ci Nieznane. Najbardziej aktualna lista numerów portów znajduje się pod adresem http://www.iana.org/assignments/port-numbers (dla RFC 3232).