Protokoły sieciowe, TCP/IP: warstwy, związek z modelem OSI, przypomnienie schematu adresowania. Warstwa internetowa: IP, budowa pakietu. Protokół ARP, ICMP, IGMP.
Model ISO OSI Utworzony w Międzynarodowej Organizacji Normalizacyjnej (ISO International Organization for Standardization w Genewie).
OSI (Open Systems Interconnection) połączenie systemów otwartych, model referencyjny (wzorcowy). Jest to globalny standard określania warstw funkcjonalnych otwartych (wielosystemowych) połączeń sieciowych.
Model OSI to standard, nie implementacja!
Model OSI dzieli procesy zachodzące podczas komunikacji w sieci na siedem funkcjonalnych warstw, zorganizowanych według naturalnej sekwencji zdarzeń.
Numer warstwy Nazwa warstwy 7 Aplikacji 6 Prezentacji 5 Sesji 4 Transportu 3 Sieci 2 Łącza danych 1 Fizyczna
Każdą z warstw można rozpatrywać w aspekcie dwóch zasadniczych funkcji: odbierania i nadawania.
Warstwa fizyczna (physical layer) opisuje standard połączenia fizycznego, przekształcania danych w strumień impulsów elektrycznych. Warstwa 1 określa też charakterystyki wydajnościowe nośników (medium transmisyjnego) i zakłada, że są one spełnione, ale same media transmisyjne pozostają poza dziedziną jej zainteresowania (czasem określane są terminem warstwa zerowa). Warstwa łącza danych (data link layer) jest odpowiedzialna za grupowanie danych wejściowych (z warstwy fizycznej) w bloki zwane ramkami danych (data frames). Ramka zawiera informacje umożliwiające pomyślne przesłanie danych do miejsca docelowego (na ogół poprzez sieć lokalną), m.in. tzw. adresy fizyczne. W warstwie 2 opisane są również mechanizmy kontroli poprawności transmisji. Warstwa sieci (network layer) jest odpowiedzialna za określenie trasy przesyłania danych między komputerami poza lokalnym segmentem sieci LAN. W warstwie tej określone są protokoły trasowane takie jak IP (ze stosu protokołów TCP/IP), IPX (Novell IPX/SPX), DDP (AppleTalk). Protokoły te wykorzystują adresowanie logiczne. Warstwa ta wykorzystywana jest przy komunikacji komputerów znajdujących się w różnych segmentach sieci przedzielonych routerem. Warstwa transportu (transport layer) zapewnia kontrolę błędów i przepływu danych poza lokalnymi segmentami LAN. Protokoły tej warstwy to np. TCP oraz UDP (z TCP/IP), SPX (Novell IPX/SPX), ATP, NBP, AEP (AppleTalk). Warstwa sesji (session layer) obejmuje zarządzanie przebiegiem komunikacji podczas połączenia między komputerami (sesji). Rzadziej używana. Pierwotnie przeznaczona do obsługi zdalnego dostępu przy pomocy terminala. Warstwa prezentacji (presentation layer) jest odpowiedzialna za kompresję, kodowanie i translację między niezgodnymi schematami kodowania oraz szyfrowanie. Warstwa aplikacji (application layer) obejmuje interfejs między aplikacjami a usługami sieci.
Uwaga. W zasadzie w modelu ISO nie występuje termin "ramka", tylko "jednostka danych usług warstwy fizycznej", ale termin ramka jest powszechnie stosowany.
Określona sesja komunikacyjna nie musi wykorzystywać wszystkich warstw modelu.
Przy nadawaniu dane kierowane są od warstwy 7 do 1, w każdej z warstw następuje opakowanie danych - dołączenie nagłówka warstwy. Przy odbiorze następuje proces odwrotny. Z punku widzenia implementacji protokołu jednej warstwy program nadawcy otrzymuje te same obiekty co program odbierający.
Przy opisie wielu zestawów protokołów używane są inne modele warstwowe (najczęściej z mniejszą liczba warstw, ale z odpowiednikami z modelu OSI).
Zestaw protokołów TCP/IP.
Zestaw protokołów określany skrótowo jako TCP/IP składa się z większej liczby protokołów, które stanowią obecnie podstawę działania Internetu. TCP/IP stał się standardem również w komunikacji sieciowej MS Windows od wersji 2000. Oto niektóre protokoły TCP/IP: TCP, UDP, IP, ARP ,RARP, ICMP, IGMP.
Najczęściej do opisu TCP/IP stosuje się model czterowarstwowy (są też inne podejścia, np. trójwarstwowy i pięciowarstwowy).
Warstwy modelu TCP/IP a model OSI:
Warstwa TCP/IP Warstwa modelu OSI
Aplikacji
Aplikacji
Prezentacji
Sesji Transportu Transportu Internetowa (sieci, intersieci) Sieci Dostępu do sieci (interfejsu sieciowego) Łącza danych
Fizyczna
Protokoły warstwy aplikacji to między innymi: FTP (File Transfer Protocol), TELNET, DNS (Domain Name System) związany z usługą DNS (Domain Name Service) Na warstwę aplikacji składają się komponenty programowe sieci, wysyłające i odbierające informacje przez tzw. porty TCP lub UDP (z warstwy transportu). O portach będzie jeszcze na następnych wykładach.
Protokoły warstwy transportu to TCP oraz UDP. Będą dokładniej omówione na następnych wykładach.
Najważniejszy protokół warstwy internetowej to IP. Inne ważne to ICMP (komunikaty o problemach), IGMP (komunikacja grupowa), ARP (tłumaczy adresy między warstwą internetową a warstwą interfejsu sieciowego, czasami zaliczany do tej ostatniej warstwy).
Warstwie dostępu do sieci będzie poświęcony osobny wykład. Warstwa ta jest niemal niewidoczna dla zwykłego użytkownika sieci.
Dane przechodząc w dół stosu protokołów TCP/IP są opakowywane i otrzymują odpowiedni nagłówek. Przyjęto, że porcje danych (pakiety) przesyłane w dół stosu mają różne nazwy: Komunikat to pakiet danych utworzony w warstwie aplikacji i przesłany do warstwy transportu. Pakiet danych utworzony przez TCP w warstwie transportu (zawierający w sobie komunikat) nazywany jest segmentem. Pakiet danych utworzony przez UDP w warstwie transportu (zawierający w sobie komunikat) nazywany jest datagramem. Datagramem nazywany jest również pakiet danych utworzony w warstwie internetowej (zawiera w sobie segment z warstwy transportu). Pakiet danych utworzony na poziomie dostępu do sieci nazywany jest ramką.
Przykładowa sekwencja zdarzeń przy wysłaniu danych: Aplikacja przesyła dane do warstwy transportu. Dalszy dostęp do sieci realizowany jest przez TCP lub UDP. * TCP realizuje tzw. niezawodne połączenia i kontroluje przepływ danych zapewniając niezawodne dostarczenie danych (nawet, gdyby zaginęły w sieci
wówczas zostają przesyłane jeszcze raz). * UDP nie zapewnia niezawodności, ale jest szybszy. Segment danych przesyłany jest do warstwy IP, gdzie protokół IP (a właściwie jego implementacja) dołącza między innymi informacje o adresach IP źródła i celu tworząc datagram. Datagram z IP przechodzi do warstwy interfejsu sieciowego, gdzie tworzone są ramki. W sieci LAN ramki zawierają adres fizyczny (przypisany do karty sieciowej) otrzymany z ARP. Adresy fizyczne rozpoznawane są przez sprzęt sieciowy (karty). Ramka przekształcana jest następnie w ciąg bitów (sygnałów), który zostaje przesłany przez sieć.
W dalszej części tego wykładu zajmiemy się warstwą internetową.
Warstwa internetowa.
Protokół IP.
Implementacja IP to oprogramowanie spełniające różne funkcje. Oprogramowanie to jest odpowiedzialne za adresowanie IP, tworzenie datagramów i kierowanie ich w sieci z punktu początkowego do punktu docelowego.
Datagram IP składa się z nagłówka i bloku danych. Nagłówek dzięki informacjom w nim zawartym umożliwia obsługę routingu, identyfikację bloku danych, określenie rozmiaru nagłówka i datagramu oraz obsługę fragmentacji (są też opcje rozszerzające). Nagłówek IP ma zmienną długość (20 do 60 bajtów, co 4 bajty). Blok danych może mieć długość od 8 do 65515 bajtów.
Struktura nagłówka IP:
Wersja (4 bity) Długość nagłówka IP (IHL Internet Header Length) (4 bity) Typ usługi (8 bitów) Długość całkowita (16 bitów) Identyfikator (16 bitów) Flagi (3 bity) Przesunięcie fragmentu (13 bitów) Czas życia (TTL) (8 bitów) Protokół (bitów) Suma kontronla nagłówka (16 bitow) Adres IP źródła (32 bity) Adres IP docelowy (32 bity) Dodatkowe opcje i wypełnienie (32 bity + ew. więcej).
Krótki opis pól w nagłówku IP. Wersja 4 dla podstawowego obecnie Ipv4 (0100 binarnie). Długość nagłówka liczbę 4-bajtowych bloków. Najczęściej nagłówek ma 20 bajtów, a więc 5 bloków (0101 binarnie). Typ usługi zawiera dodatkowe informacje używane w routingu, np. priorytet, niezawodość. Składa się z 5 pól. Całkowita długość podana w bajtach, na podstawie tego pola oraz pola Długość nagłówka można określić wielkość bloku danych. Identyfikacja identyfikacja kolejnych datagramów. Flagi 3 bity tworzące dwie flagi używane przy fragmentacji datagramów. Przesunięcie fragmentu używane przy fragmentacji datagramów. Czas życia (TTL Time to Live) określa przez ile łączy może przejść datagram zanim zostanie odrzucony przez router. Jest to licznik, zmniejszany o 1 przez każdy router na drodze datagramu. Host docelowy nie sprawdza TTL. Jeśli TTL=0, wówczas pakiet jest odrzucany i wysyłany jest komunikat ICMP "Time Expired
TTL Expired". TTL zabezpiecza przed długimi pętlami. TTL dotyczy licznika połączeń a nie przeskoków. Na przykład jeśli komputer docelowy oddzielony jest od źródłowego przez 4 routery, to liczba połączeń wynosi 5. Datagram wysłany między tymi komputerami z ustawionym TTL na 4 zostanie odrzucony przez czwarty router. TTL jest ustawiany przez system operacyjny lub aplikację. Standardowo np. dla Windows 2000 TTL wynosi 128. Protokół. To pole w nagłówku określa do jakiego protokołu warstwy wyższej należy przekazać datagram. Przykładowe wartości to 1 ICMP, 6 TCP, 17
UDP. Suma kontrolna nagłówka. Zawiera informację kontrolną dla nagłówka (nie danych). Adres źródła adres IP komputera źródłowego. Adres docelowy adres IP komputera docelowego.
Zadaniem ARP jest otrzymanie adresu fizycznego na podstawie adresu IP. W sieci np. Ethernet adres fizyczny określany jako MAC (Media Access Control) jest to unikalny numer nadany karcie sieciowe w fabryce (6 bajtów). Protokół IP zakłada niezależność od warstwy interfejsu sieciowego, stąd w przesyłanym adresie nie ma informacji o fizycznym adresie docelowym warstwy interfejsu sieciowego. Ze względu na możliwość wymiany karty sieciowej w komputerze o raz określonym IP (tak naprawdę IP przypisany jest do karty sieciowej tego komputera) ARP musi być dynamiczny.
ARP jest protokołem opartym na metodzie rozgłoszeniowej i zasadzie żądania i odpowiedzi. ARP najpierw sprawdza w pamięci (cache) tablicę przyporządkowującą adresy MAC adresom IP. Jeśli dane nie zostaną znalezione, wówczas zostaje przesłana ramka tzw. ARP Request Message. Jest to ramka rozgłoszeniowa docierająca do wszystkich węzłów (komputerów kart sieciowych) fizycznego segmentu sieci, do którego przyłączony jest nadawca. Węzeł wysyłający nazywany jest ARP requestor. Węzeł o adresie zgodnym z IP przesłanym w ARP Request wysyła ramkę ARP Reply pod adres MAC, z którego przyszło żądanie. Węzeł wysyłający ARP Reply określany jest jako ARP responder. Po wymianie ramek zarówno nadawca jak i odbiorca mają uaktualnione tablice cache. Po otrzymaniu ARP Request uaktualniane sa również tablice cache w komnputerach, które otrzymały tę ramkę. Wpisy w ARP cache są usuwane po okresie nieużywania rzędu kilku minut (w przypadku użycia cache czas ten może wzrosnąć, lecz nie więcej niż pewna wartość np. 10 minut). Do sprawdzenia cache służy program o nazwie arp.
ICMP (Internet Control Message Protocol).
Cel raportowanie routingu, dostarczanie informacji o błędach podczas przesyłania ze źródła do komputera docelowego. Komunikaty ICMP wysyłane są w datagramach IP. W efekcie w ramce (warstwa dostępu do sieci) znajduje się nagłówek IP, nagłówek ICMP oraz dane komunikatu ICMP.
Typy komunikatów ICMP: 0 Odpowiedź echa 3 Miejsce docelowe nieosiągalne 4 Tłumienie źródła 5 Przekierowanie 8 Żądanie echa 9 Ogłoszenie routera 10 Wybór routera 11 przekroczenie czasu 12 Problem parametru.
Krótkie omówienie wybranych typów komunikatów ICMP. Żądanie i odpowiedź echa - wysłanie komunikatu do węzła IP i odebranie echa (odpowiedzi). Użyteczne przy usuwaniu problemów w sieci. Korzysta z tych komunikatów program ping. Miejsce docelowe nieosiągalne podaje dodatkowo w polu kod dokładniejszą informację. Tłumienie źródła przy takim zwiększeniu ruchu, w którym router zaczyna odrzucać datagramy. Przekroczenie czasu po zmniejszeniu TTL do 0.