Architektura Systemów Komputerowych Sieci komputerowe 3 Architektura Systemów Komputerowych mgr inż. Michał Misiak
Adresacja w sieciach komputerowych Adres fizyczny – jest to adres MAC (Media Access Control) Jest unikalny, identyfikuje konkretne urządzenie, nadawany jest przez producenta, Adres logiczny – adres IP Nadawany jest w zależności od tego w jakiej sieci znajduje się urządzenie
Organizacje zajmujące się przydzielaniem adresów Kiedyś: InterNIC (Internet Network Information Center) Aktualnie: IANA (Internet Assigned Numbers Authority) Dostępna adresacja: Dla protokołu IPv4: 32 bity Dla protokołu IPv6: 128 bitów
Adres IP Elementy adresu IP Bity adresu IP podzielone są na oktety Identyfikator sieci Identyfikator hosta Maska sieciowa (Net Mask) – wyznacza adres sieciowy, który musi być identyczny dla wszystkich interfejsów tej samej podsieci Bity adresu IP podzielone są na oktety Rodzaje podziału adresacji IP Klasowa – numery i maski mają ściśle określone zakresy Bezklasowa – dowolnym adresom IP mogą być przypisane dowolne maski
Klasy adresacji IP Klasa A: przeznaczona dla dużych organizacji z dużą liczbą hostów (8 bitów – sieć, 16 mln hostów) Klasa B: duża liczba organizacji z dużą liczbą hostów (16 bitów – sieć, ca. 65k hostów) Klasa C: dla małych organizacji, które posiadają do kilkuset sztuk hostów (24 bity – sieć) Klasa D: rozsyłanie grupowe pakietów Klasa E: IETF zarezerwował do celów badawczych Problem: podział na klasy adresów nie pozwalał zarządzać efektywnie adresacją IP
Rozwiązanie problemu efektywności wykorzystania adresów IP Wprowadzanie adresów prywatnych, których tłumaczeniem zajmuje się serwer NAT (Network Adress Translation) Zakresy adresów prywatnych: 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 192.168.0.0 - 192.168.255.255
Uzyskiwanie adresu IP Statyczne Dynamiczne: ARP/RARP (Address Resolution Protocol) – odwzorowanie znanemu adresowi IP adresu MAC interfejsu sieciowego BOOTP (Bootstrap Protocol) – wykorzystywany w sieciach, w których adresy MAC są przydzielane dynamicznie. Wykorzystuje do komunikacji protokół UDP. Wymaga ręcznego zarządzania bazą hostów DHCP (Dynamic Host Configuration Protocol) – jest ulepszoną wersją BOOTP. Oprócz przydzielania adresu IP protokół dostarcza inne parametry.
Warstwa transportowa Umożliwia logiczną komunikację pomiędzy aplikacjami Z punktu widzenia aplikacji komunikacja jest przeźroczysta Klasyfikacja komunikacji w warstwie 4 OSI Połączeniowa Bezpołączeniowa
Stos protokołów TCP/IP
Port Mechanizm określania, do której aplikacji przesyłane są pakiety z wykorzystaniem protokółu IP TCP/IP dysponują niezależną numeracją portów Standardowe numery portów określone w RFC 1700 (FTP, SMTP, SSH, etc…)
Gniazdo Definiowane przez: Adres IP Numer portu Rodzaj protokołu UDP/TCP
Protokół UDP Bezpołączeniowy – przesyłane są datagramy Brak sterowania przepływem – host wysyłający nie uzyskuje informacji na temat zajętości odbiorcy Zawodny – host wysyłający nie uzyskuje informacji zwrotnej o dostarczeniu pakietu Aplikacje wykorzystujące UDP: Wideokonferencje, przesyłanie głosu, VoIP, TFTP, DNS
Budowa protokołu UDP
Protokół TCP Zaprojektowany przez R. Kahna i V. Cerfa Cechy protokołu TCP Niezawodne przesyłanie danych (wykorzystanie sum kontrolnych i numerów sekwencyjnych, retransmisja zaginionych pakietów) Sterowanie przeciążeniami – w przypadku przeciążenia urządzeń protokół TCP zmniejsza prędkość Porządkowanie pakietów – przyznawanie numerów sekwencyjnych umożliwiające porządkowanie przychodzących pakietów różnymi drogami Sterowanie przepływem – możliwość zwiększenia prędkości w przypadku, gdy host odbiorca na to pozwala
Budowa protokołu TCP
Nawiązanie sesji (hand shake) 1) Klient inicjuje połączenie poprzez wysłanie segmentu z ustawioną flagą w SYN (=1). Ustawiona wartość pola SYN=1 oznacza, że hosty nie zostały jeszcze zsynchronizowane i segment ten jest żądaniem nawiązania połączenia. Jednocześnie wysyłany jest w tym samym segmencie numer sekwencyjny pakietu o wartości ‘x’ oraz rozmiar okna, który jest informacją dla serwera jakiej wielkości bufor został zarezerwowany (po stronie klienta) na segmenty przesyłane z serwera. 2) Serwer odbiera pakiet. Po analizie flagi rozpoznaje, że jest to próba nawiązania połączenia. Serwer rejestruje zatem numer sekwencyjny ‘x’, przydziela dla tego połączenia bufory i zmienne stanu. Odpowiedź będzie zawierała oprócz ustawionego bitu flagi SYN również ustawiony bit flagi ACK. Ustawione bity flag sygnalizują, że będzie to początek konwersji zwrotnej. Serwer wysyła swój własny numer ‘y’ w polu numer sekwencyjny oraz w polu numer sekwencyjny potwierdzenia wysyła wartość ‘x+1’. Wartość wpisana w to ostatnie pole informuje klienta, którą następną porcję bajtów oczekuje serwer. Dodatkowo serwer wysyła rozmiar okna. Wielkość ta informuje klienta o rozmiarze bufora, który został zarezerwowany po stronie serwera na segmenty, które będą przesyłane od klienta. 3) Klient odbiera segment inicjalizuje po swojej stronie bufor na segmenty pochodzące od serwera i na zmienne stanu tego połączenia. W ramach potwierdzenia odebrania segmentu od serwera wysyła pakiet z ustawioną wartością flagi ACK, wyzerowaną wartością pola SYN oraz w polu następny numer sekwencyjny wpisywana jest wartość ‘y+1’. Oznacza to, że połączenie zostało nawiązane i teraz klient oczekuje od serwera porcji bajtów od numeru ‘y+1’. Wartość SYN=0 oznacza, że połączenie zostało nawiązane i nastąpiła synchronizacja. Po nawiązania we wszystkich przesyłanych segmentach jest ustawiona flaga ACK, która potwierdza fakt otrzymania porcji danych określonej w polu numer sekwencyjny. Mechanizm nawiązywania połączenia TCP bywa również nadużywany przez szkodliwe programy genrujące ataki typu DoS (ang. Denial of Service). Szczegóły tego typu działalności zostaną krótko omówione w dalszej części modułu.
Mechanizmy TCP Algorytm przesuwnego okna (sliding window) – optymalizuje problem, że nadawca oczekuje z wysłaniem kolejnych segmentów do chwili potwierdzenia wysłanych. Host wysyła tyle segmentów ile wynosi długość okna. Sterowanie długością okna. Algorytm powolnego startu (slow start) – ustąpienie przeciążenia umożliwia zwiększenie przepływności. Zwiększanie rozmiaru okna o 1 segment przy każdym potwierdzonym