Podstawowym założeniem modelu komunikacji sieciowej jest podział na warstwy (ang. layers) współpracujące ze sobą w ściśle określony sposób.
Przed wysłaniem dane wraz z przekazywaniem do niższych warstw sieci zmieniają swój format, co nosi nazwę procesu kapsułkowania (enkapsulacji).
Komunikacja w modelu ISO/OSI:
i TCP/IP:
Pola:
Dst (ang. Ethernet Destination Address, 48 bitów) Docelowy adres urządzenia pracującego w sieci Ethernet.Src (ang. Ethernet Source Address, 48 bitów) Źródłowy adres urządzenia pracującego w sieci Ethernet.Type (16 bitów) Kod określający rodzaj protokołu użytego do przesyłania danych lub ilość danych wyrażona w bajtach.
Protokół IP (ang. Internet Protocol) implementuje warstwę sieci. Jest to protokół bezpołączeniowy. Użycie protokołu IP pozwala na przesyłanie datagramów bez zapewnienia niezawodności. Protokół ten zapewnia segmentację datagramów celem przesyłania ich przez łącza o różnej maksymalnej długości pakietu.
Postać nagłówka IP:
Pola:
Wersja – numer wersji protokołu; obecnie powszechnie stosowana jest wersja 4,DN – długość przedstawionego tu nagłówka w słowach 32-bitowych,Typ obsługi – informacja o wymaganiach na jakość obsługi datagramu; zawiera poziom ważności pakietu oraz może zawierać wymagania:minimalizacji opóźnienia,maksymalizacji przepustowości,maksymalizacji niezawodności,minimalizacji kosztu;Łączna długość – długość całego datagramu (nagłówka i danych razem) w bajtach,Nr identyfikacyjny – numer nadawany pakietom w celu poprawnego złożenia ich po fragmentacji; każdy fragment danego pakietu ma ten sam numer identyfikacyjny,Flagi – znaczniki bitowe, mogące oznaczać, że danego datagramu nie należy fragmentować lub że jest to ostatni fragment,Przesunięcie fragmentu – w przypadku fragmentacji podaje położenie danego fragmentu względem początku pakietu przed fragmentacją w 64-bitowych jednostkach; w przypadku braku fragmentacji równe zeru,Czas życia (ang. Time To Live, TTL) – licznik, który jest zmniejszany o 1 za każdym przejściem datagramu przez router, a gdy osiągnie zero, datagram jest usuwany; ma na celu zapobieganie niekończącemu się przesyłaniu datagramów, które uległy zapętleniu; licznik powinien być tak ustawiony, aby przy prawidłowej pracy sieci nie zdążył osiągnąć zera przed dostarczeniem datagramu do celu,Protokół – kod oznaczający protokół wyższej warstwy, którego dane zawarte są w polu danych tego datagramu; mogą być to protokoły TCP, UDP, ICMP i inne (https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers),Suma kontrolna nagłówka – potwierdza nienaruszenie danych zawartych w omawianym tu nagłówku; gdy nie odpowiada zawartości nagłówka, datagram jest w całości odrzucany,Adres źródłowy IP – 32-bitowy adres węzła nadającego dany datagram, w formacie omówionym w podrozdziale 2.1.2,Adres docelowy IP – adres węzła, do którego skierowany jest dany datagram,Opcje – pole o zmiennej długości, mogące zawierać opcje dotyczące sposobu wyznaczania trasy, bezpieczeństwa, znakowania czasu przybycia datagramu do routerów i inne,Wypełnienie – dopełnia długość nagłówka do najbliższej wielokrotności 32 bitów; wielkość tego pola zależy od wielkości pola opcji.
Po nagłówku IP następują dane, zawierające informacje protokołu wyższej warstwy.
Nagłowek formatu TCP:
Znaczenie poszczególnych pól jest następujące:
Port źródłowy – informuje odbiorcę, na którym porcie nadawca prowadzi wymianę informacji,Port docelowy – numer portu odbiorcy, na podstawie którego podejmuje on decyzję o przesłaniu pakietu do odpowiedniego zadania,Numer sekwencyjny – pozycja, jaką zajmuje w przesyłanym strumieniu danych pierwszy bajt danych tego pakietu; pozwala stwierdzić, czy nie nastąpiło zagubienie lub zduplikowanie pakietu – powinien on wskazywać na pozycję następnego bajtu po ostatnio odebranym,Numer potwierdzanego bajtu – numer o jeden większy od numeru sekwencyjnego ostatnio odebranego bajtu; ważny tylko jeżeli znacznik ACK jest ustawiony (patrz pole Znaczniki),Długość nagłówka – ilość 32-bitowych słów stanowiących opisywany tu nagłówek,Zarezerwowane – bity o wartości stałej równej zeru; przewidziane do wykorzystania w przyszłości,Znaczniki – sześć bitów służących do oznaczania specjalnych funkcji pakietu:URG – oznacza, że pakiet zawiera tzw. pilne dane,ACK – potwierdzenie,PSH – funkcja Push,RST – oznacza natychmiastowe przerwanie połączenia,SYN – używany przy nawiązywaniu połączenia, oznaczający jednocześnie synchronizację numerów sekwencyjnych nadawcy i odbiorcy,FIN – zakończenie połączenia,Rozmiar okna – podaje odbiorcy danego pakietu, ile bajtów może on wysłać nie oczekując na potwierdzenie; ważne tylko gdy ustawiony znacznik ACK,Suma kontrolna – 16-bitowa, dotyczy całego segmentu, służy do sprawdzania poprawności transmisji,Wskaźnik do pilnych danych – wskazuje na pierwszy oktet następujący po bloku danych pilnych; ważny jedynie gdy ustawiony znacznik URG,Opcje – ciąg danych zmiennej długości mogący zawierać informacje o różnych dodatkowych funkcjach,Wypełnienie – zawartość nieistotna; dopełnia nagłówek do całkowitej wielokrotności 32 bitów.
Format nagłówka UDP:
Pola:
Port źródłowyPort docelowyDługość datagramu - łączna długość nagłówka i danychSuma kontrolna - procedurę wyliczania sumy kontrolnej można znaleźć tutaj : http://www.netfor2.com/udpsum.htm.
Najczęściej stosowany zapis to taki który wykorzystuje zapis szesnastkowy, czyli każda para koduje jeden bajt (8 bitów). Zamianę znaków na wartości liczbowe dokonywane są za pomocą tablicy ASCII. Do odczytywania plików w postaci binarnej możemy wykorzystywać tzw. Hex editory.
W podanym przypadku Adres MAC nadawcy wynosi 54:04:A6:3C:ED:2B, a adresata 00:15:6D:C4:27:4B , pole typu ma wartość 0800 co oznacza, że kolejne dane reprezentują nagłówek IP.
10-te pole nagłówka IP mówi o protokole, w tym wypadku jest to wartość 06 mówiąca, że mamy do czynienia z protokołem TCP. Adres IP nadawcy zapisany jest w bajtach 13-16 nagłówka, czyli: C0 A8 02 65. Adres docelowy zapisany jest na bajtach 17-20: C7 3B 96 2A. W wyniku zamiany na liczby dziesiętne uzyskamy C0 =192, A8 = 168, 02 = 2 oraz 65 = 101. Stąd adres żródła pakietu to 192.168.2.101.
Po nagłówku IP znajduje się nagłówek TCP. Pierwsze dwa bajty oznaczają numer Portu źródła, a kolejne dwa bajty numer Portu celu.
W analizie nagłówków pomagają programy do analizy ruchu sieciowego takie jak Wireshark.
Wszystkie pliki poniżej otwieraj w programie Wireshark.
Przykład: Klient na 150.254.76.10 otwiera połączenie TCP do serwera na 150.254.78.2 na port 7245, jednak na tym porcie nie nasłuchuje żadna aplikacja.
Klient na 150.254.76.10 otwiera połączenie TCP do serwera na 150.254.78.2, po czym zamyka je nie wysyłając żadnych danych.
Sprawdź gdzie można znaleźć adresy ethernetowy, adresy nadawcy i odbiorcy, poszczególne flagi oraz numery potwierdzeń i sekwencji. Zobacz jak są one kodowane w pliku.
Zadanie (3 pkt)
Dla podanego niżej pakietu podaj: adresy Mac nadawcy i odbiorcy, Typ używanego protokołu, ustawione flagi w nagłówku IP, adres IP nadawcy i adres IP odbiorcy. Numer portu nadawcy i numer portu odbiorcy.
08 00 20 7c 94 1c 00 00 39 51 90 37 08 00 45 0000 3e 36 00 00 00 80 11 da 4f 82 eb 12 7f 82 eb12 0a 04 01 00 35 00 2a ee 6a 00 01 01 00 00 0100 00 00 00 00 00 06 67 65 6d 69 6e 69 03 6c 6463 02 6c 75 02 73 65 00 00 01 00 01 75 00 00 0100 01 c0 0c 00 01 00 01 00 00 0e 10 00 04 ac 1400 06 c0 16 00 02 00 01 00 00 0e 10 00 08 05 6461 76 69 73 c0 16 c0 16 00 02 00 01 00 00 0e 1000 02 c0 0c c0 44 00 01 00 01 00 01 51 80 00 04ac 13 00 03
Zadanie (1 pkt)
Opisz do czego wykorzystywana jest flaga PSH w nagłówku TCP.
Zadanie (3 pkt)
Otwórz w Wiresharku i przeanalizuj nagłówki w komunikacji:
Klient na 192.168.1.6 wysyła do serwera na 192.168.1.200 1000 bajtów protokołem TCP.
Klient na 192.168.1.6 wysyła do serwera na 192.168.1.200 10000 bajtów protokołem TCP.
Kiedy klient inicjuje sesję TCP, jego początkowy numer sekwencyjny przypisywany jest w sposób losowy. Może być to dowolna liczba pomiędzy 0 a 4,294,967,295. Programy takie jak Wireshark często dla ułatwienia analizy wyświetlają nam jednak "wartość relatywną" czyli normalizują je tak, że początkowa wartość jest równa 0 (wypisując ją zamiast prawdziwych wartości). Wyszukaj jak zmienić w ustawieniach wiresharka żeby podawał prawdziwe wartości numerów sekwencyjnych.
Podaj prawdziwe początkowe numery Seq w przypadku obu komunikacji.
Wybierz Statystyki->Graf przepływu a następnie w polu typ przepływu wybierz Przepływy TCP.
Przeanalizuj i opisz w jaki sposób przypisywane są kolejne numery ACK i SEQ.
Zadanie (2 pkt)
Klient na 192.168.1.6 wysyła do serwera na 192.168.1.200 1000 bajtów protokołem UDP. Brak fragmentacji.
Klient na 192.168.1.6 wysyła do serwera na 192.168.1.200 10000 bajtów protokołem UDP. Następuje fragmentacja na poziomie protokołu IP.
W intersieci TCP/IP od chwili, gdy datagram jest dzielony na fragmenty, fragmenty te podróżują jako oddzielne datagramy, aż do ostatecznego odbiorcy, gdzie muszą zostać złożone.
Podaj jakie trzy pola nagłówka IP służą do kontroli procesów fragmentacji i składania datagramów. Ile razy w komunikacji z Plik4 przesyłany jest nagłówek UDP?
Zadanie (1 pkt)
W pliku znajduje się wynik działania ping -c 10 -s 20 192.168.1.200, uruchomionego na 192.168.1.6. w tym wypadku po nagłówku IP zawarty jest nagłówek ICMP.
Które pole nagłówka IP mówi że mamy do czynienia z nagłowkiem ICMP? Jaka jest wartość tego pola.
Plik z rozwiązaniami proszę przesłać przez stronę:
Wykorzystano materiały z:
http://www.staff.amu.edu.pl/~ttomek/sik/cwiczenia7.html
https://pl.wikipedia.org/wiki/Model_OSI
http://www.pwsz.legnica.edu.pl/~walkowiak/Model%20warstwowy.pdf
http://rejestrowanie-multimediow.eprace.edu.pl/133,Protokol_IP.html
http://rejestrowanie-multimediow.eprace.edu.pl/135,Protokol_TCP.html
http://packetlife.net/blog/2011/mar/2/tcp-flags-psh-and-urg/
http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/
http://fulmanski.pl/zajecia/ics/tcpip/opis.htm
http://www.cs.miami.edu/home/burt/learning/Csc524.092/notes/ip_example.html