Spójrzmy więc na pełniejszy przykład.
W tym przykładzie host A inicjuje sesję z portem źródłowym 1024 w porcie docelowym 23,
innymi słowy telnet.
Host A wysyła 10 bajtów danych i początkowy numer kolejny 10.
Host B potwierdza odbiór 10 bajtów, wysyłając potwierdzenie z
powrotem na A z 11.
Host B w tym przykładzie ustawia również początkowy numer sekwencji na 5.
pamiętaj także, że numery portów są odwrócone port źródłowy dla ruchu z B do A wynosi 23, a port docelowy to 1024.
W tym przykładzie, ponieważ używamy przesuwanego okna
A może wysłać np. 250 bajtów danych.
Zauważ, że numer kolejny wzrasta do 260.
W poprzednich przykładach używaliśmy łatwych numerów o wielkości okna 1
lub o rozmiarze okna 3, ale proszę zauważyć, że w rzeczywistości rozmiary okien są
ustawione na ilość danych, które mogą być przesyłane w bajtach.
To może nie być tak łatwe do odczytania, jak sekwencje 1, 2 i 3.
odbiór danych do sekwencji 5, a tym samym potwierdzanie numeru sekwencyjnego 6.
Porty źródłowe są ponownie zamieniane,
więc port źródłowy to 1024, a docelowy port 23.
Teraz host B potwierdza dla numeru sekwencyjnego 261 pamiętając A wysyłają 10 bajtów
i 250 bajtów, czyli innymi słowy 260 bajtów
danych.
B wysyła numer sekwencyjny 6 i po raz kolejny numery portów są odwrócone.
Bardzo ważne jest, abyś rozumiał, jak działają porty źródłowe i
docelowe. W związku z tym nie ma nic lepszego niż pokazanie przykładu z prawdziwego świata za pomocą Wiresharka.
Więc zamierzam przechwycić ruch w mojej
sieci, a potem przejdę na przykład do google. com z moją przeglądarką.
Wrócę do Wireshark i zatrzymam przechwytywanie. Oto przykład zapytania DNS.
Mamy hosta 10. 0. 0. 1, która jest
moją maszyną, laptopem Dell, wysyłającym zapytania do serwera DNS.
W warstwie 2 możesz zobaczyć, że źródłem jest moje urządzenie Dell trafiające do mojego routera Cisco.
To jest ramka Ethernet 2 i proszę zwrócić uwagę na pole typu.
W warstwie 2, jak wspomniano, pole typu określa protokół w warstwie 3.
W tym przypadku 0x0800 w systemie szesnastkowym określa, że protokół warstwy 3 to IPv4.
W warstwie 3 można zobaczyć źródłowy adres IP i docelowy adres IP.
Mój komputer i serwer DNS, widać, że jest to IPv4, a długość
nagłówka to 20 bajtów.
Punkty DSCP lub punkty usług o zróżnicowanym dostępie nie są używane
w tym przykładowym komunikacie ECN, który ma związek z jawnym powiadomieniem
o przeciążeniu, o którym wspominałem krótko, gdy mówimy o nagłówku TCP. 42 To, co chciałbym zobaczyć tutaj, to zauważenie, że protokołem na warstwie 4
jest UDP, który wartościuje szesnastkowo, więc 11 w systemie szesnastkowym jest równe 17 numerowi protokołu po
raz kolejny dla UDP wynosi 17.
Tak więc w warstwie 4 widzimy, że używany jest User Datagram Protocol lub UDP.
Port źródłowy to 62249, innymi słowy, dynamiczny lub efemeryczny port
docierający do portu docelowego 53, czyli DNS.
Widzimy numery portów jeszcze raz i po otwarciu zapytania DNS widzimy,
że było to zapytanie, szukając konkretnego adresu hosta.
Tutaj mamy odpowiedź DNS z serwera DNS do mojego hosta.
Tak więc bardzo szybko w warstwie 2 widać, że pole typu
oznacza protokół w warstwie 3.
W warstwie 3, pole protokołu, informuje nas, który protokół jest używany w warstwie 4
Oto kolejna kwerenda DNS z mojego hosta do serwera DNS.
A jeśli otworzymy informacje o kwerendzie DNS, zobaczysz, że jest
to zapytanie dla google. com i jest to
zapytanie hosta, powiadomienie typu A, serwer DNS odpowiada i zauważ w odpowiedzi,
to daje nam adres IP google. com Oto trzydniowy
uścisk dłoni między moim komputerem a Google.
Zwróć uwagę, że źródłem jest 10. 0. 0. 1,
a miejscem docelowym jest ten adres IP, którym jest Google.
Zauważ, że port źródłowy ma 58313 celów, to 80 innymi słowy, otwieram połączenie internetowe z serwerem sieciowym.
Otwierając to, możesz zobaczyć ponownie numery portu źródłowego i docelowego, ale
zauważ, że ustawiona flaga to SYN.
Tak więc otwierając powyższe można zobaczyć,
że wszystkie inne flagi lub bit ustawiony na 0,
z wyjątkiem bitów SYN i otwierania, które widać, próbujemy ustawić połączenie z serwerem, więc mamy
połączenie ustanowienia żądania wiadomość na serwer.
Nie ustawiono żadnych innych flag. Zwróć uwagę, że początkowy rozmiar okna
to 8192 i otwierając opcje, możesz zauważyć, że MSS lub Maksymalny rozmiar segmentu jest ustawiony na 1460 bajtów.
Odpowiedź od Google na mój komputer na warstwie 4 pokazuje, że port źródłowy to 80, a
port docelowy to 58313.
Otwierając to, zauważ, że ustawione flagi są SYN ACK, więc jest
to druga część potrójnego uzgadniania.
Zauważ, że bit potwierdzenia jest ustawiony, a bit
synchronizacji ustawiony jest na otwarcie, widać, że jest to połączenie potwierdzające od Google.
Zauważ, że żądanie rozmiaru okna wynosi 5720, a jeśli otworzymy tu informację o opcjach, maksymalny
rozmiar segmentu to 1430.
Patrząc na ostatnią część potrójnego uzgadniania, moja
maszyna rozmawia z Google otwierającym
TCP, widać, że ustawione flagi są tylko bitem potwierdzenia i żądanym rozmiarem okna 64350 85 i patrząc na analizę
potwierdzenia sekwencji, zauważ, że jest to
potwierdzenie.
Wracając do pierwszego kroku potrząsania ręcznego zauważ,
że początkowy numer sekwencji z mojego komputera do Google jest ustawiony na 0.
Przechodząc do właściwego nagłówka TCP, zwróć uwagę na numer sekwencji 0.
Googles odpowiadają jako numer kolejny 0 i potwierdzenie 1.
Jak możesz zobaczyć tutaj.
Dlatego nas informują, kolejnym segmentem, który spodziewają się otrzymać, jest segment 1.
Naszym zdaniem, wysyłamy numer kolejny 1 i potwierdzamy
numer kolejny 1.
Jest to zgodne z tym, o czym rozmawialiśmy.
Później, gdy otrzymamy powiadomienie HTTP, otrzymujemy informację od Google do
naszego komputera o jego TCP i zauważmy,
że jest to segment TCP ponownie zmontowanej Jednostki Danych Protokołu.
Innymi słowy, jest to fragment.
Patrząc na TCP, możemy zobaczyć źródła HTTP, a miejsce docelowe to nasz numer portu.
Innymi słowy, Google wysyła do nas
informację o tym, że numer
kolejny to 2861, następny numer sekwencyjny to 3798,
a numer potwierdzenia to 944.
więc następnym numerem sekwencji jest 3798, idąc do następnej
części powiadomienia o
przechwytywaniu, tutaj numer sekwencji to 3798, a następny numer sekwencji to 5228.
Zauważ, że nasz komputer otrzymał od
Google potwierdzenie, że oczekujemy otrzymania 5228.
A następnie kolejne przechwycenie, które można zobaczyć, że numer sekwencji
5228, zostały wysłane z Google do nas.
Następny numer sekwencyjny to 6658, który jest kolejnym odebranym elementem.
Uwaga 6658 to otrzymany numer sekwencji. 114 Nasz gospodarz potwierdza otrzymanie tego
i mówi, że następnym bitem danych do odbioru jest 7894 przechodzenie do
następnego przechwycenia, możesz zobaczyć, że numer sekwencji jest tym, co Google do nas wysłał.
Teraz, już nie nudząc Cię, mam
nadzieję, że to przechwycenie daje ci trochę wglądu w
to, co się dzieje w drucie.
WireHark zapamiętuje darmową aplikację, którą możesz pobrać, po prostu wyszukaj ją w
Internecie. Sugeruję
teraz przechwycenie ruchu na twoim komputerze,
abyś mógł zobaczyć, co się dzieje na zapleczu.
Co więc omówiliśmy?
W tej sekcji przyjrzymy się 2 głównym protokołom znajdującym się na warstwie 4.
UDP lub User Datagram Protocol i TCP lub Transmission Control Protocol.
Wyjaśniłem numery portów i jakie numery portów byłyby używane w jakich scenariuszach.
Wyjaśniłem potrójny uścisk dłoni
TCP, który wyjaśniłem windowing i wyjaśniłem numery sekwencji.
Dziękuję za obejrzenie!