Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Podstawowe pojęcia, programowe i sprzętowe elementy tworzące sieć komputerową, ramki, topologie sieci LAN, Internet. Przez sieć komputerową rozumiemy zbiór połączonych komputerów i urządzeń, które mogą komunikować się ze sobą z wykorzystaniem odpowiednich technologii i standardów. Sieci komputerowe obejmują też wszystko to, co umożliwia urządzeniom komunikowanie się ze sobą oraz współdzielenie zasobów (np. dysków, drukarek), w szczególności oprogramowanie i protokoły komunikacyjne a także media transmisyjne (np. kable miedziane, światłowody). W trakcie kursu będziemy rozważać głównie dwie kategorie sieci: • • LAN (Local Area Networks) – sieci lokalne. WAN (Wide Area Networks) – sieci rozległe. Jako przybliżone kryterium rozróżnienia LAN od WAN (i innych podanych niżej kategorii) przyjmuje się odległości między łączonymi komputerami. Na przykład komputery na jednym piętrze lub na różnych piętrach w obrębie jednego budynku ewentualnie komputery w kilku sąsiadujących budynkach łączone są z wykorzystaniem technologii i urządzeń charakterystycznych dla sieci lokalnych (LAN). Sieci rozległe (WAN) to sieci obejmujące większe obszary, np. województwa, państwa czy kontynenty. Sieci te są budowane z wykorzystaniem na ogół innych technologii niż sieci LAN. Kryterium odległości nie jest precyzyjne. Przyjęto jednak, że pewne technologie sieciowe (omawiane dokładniej w dalszej części kursu), np. Gigabit Ethernet są charakterystyczne dla sieci lokalnych, inne jak np. T1, E1 czy Frame Relay dla sieci rozległych. Inne typy sieci (podział według kryterium odległości między komunikującymi się urządzeniami): Nanoscale – przedmiot obecnych badań i standaryzacji w ramach organizacji IEEE (P.1906.1), zastosowanie w nanomedycynie. NFC (Near Field Communication) – odległości rzędu centymetrów. BAN (Body Area Network), WBAN (Wireless BAN), inna nazwa to BSN (Body Sensor Network) – łączenie czujników, „wearable devices”. PAN (Personal Area Network) – odległości rzędu centymetrów do kilku metrów. Technologie bezprzewodowe takie jak IrDA, Bluetooth, Wireless USB oraz przewodowe jak USB, FireWire, Thunderbolt. NAN (Near-me Area Network) – komunikacja między urządzeniami bezprzewodowymi, które są blisko siebie, np. między telefonami komórkowymi, które są na terenie dużego sklepu. Ścieżka komunikacyjna między urządzeniami w jednej sieci NAN może jednak być długa i może nawet obejmować technologie sieci WAN, np. jeśli do NAN należą telefony zarejestrowane w różnych firmach telekomunikacyjnych. SAN (Storage Area Network). CAN – Campus Area Network, sieci kampusowe. MAN (Metropolitan Area Network) – obejmuje obszar miasta, dużego kampusu. Internet jest globalną siecią komputerową złożoną z wielu połączonych ze sobą sieci komputerowych wykorzystujących protokół o nazwie Internet Protocol (w skrócie IP). Od Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega strony technicznej Internet oparty jest w zasadzie o cały zestaw (stos) protokołów, znanych pod wspólną nazwą TCP/IP. Można też spotkać nazwę protokół TCP/IP, chociaż w rzeczywistości jest to cały zestaw protokołów, który oprócz protokołu TCP oraz IP zawiera jeszcze kilka innych. Od strony logicznej Internet można identyfikować z przestrzenią adresową protokołu IP (są w użyciu dwie wersje: IPv4 i nowsza IPv6) – ponieważ urządzenia podłączone do Internetu są identyfikowane przez przydzielony im przez administratora lub automatycznie adres IP. Na każdą sieć komputerową składają się sprzętowe oraz programowe elementy składowe. Sprzętowe elementy składowe sieci komputerowych. Podstawowymi elementami sprzętowymi są: a) nośniki transmisji (media transmisyjne), np. kable miedziane, optyczne, b) urządzenia dostępu do nośnika, np. karty sieciowe, c) urządzenia wzmacniające, filtrujące i kierujące przesyłane sygnały, np. przełączniki warstwy drugiej, routery. Urządzenia transmisji to nośniki transportu sygnałów przesyłanych przez sieć. Są to na przykład kable koncentryczne, tzw. skrętki, kable światłowodowe, ale też przestrzeń (przesyłanie fal elektromagnetycznych: radiowych, mikrofal, światła). Urządzenia dostępu do nośnika transmisji (karty sieciowe w komputerach, porty w przełącznikach, interfejsy w routerach) są odpowiedzialne za formatowanie danych tak, by nadawały się do przesyłania poprzez nośnik transmisji, umieszczanie tych danych w nośniku transmisji oraz odbieranie odpowiednio zaadresowanych danych. Dane przesyłane w sieciach komputerowych są dzielone na porcje, zwane pakietami. W sieci Internet pakiety mają standardową strukturę – zgodną z tzw. protokołem IP (Internet Protocol). Mówimy zatem o pakietach IP. W Internecie podstawowa porcja danych przekazywana przez różne urządzenia to pakiet IP. Jednak pakiet IP jest na ogół przenoszony w innej strukturze, zwanej ramką. W większości technologii sieciowych wykorzystywanych w Internecie, pakiety IP są przenoszone ramkach. Ramka jest czymś w rodzaju koperty, która zawiera w środku list – pakiet IP. W sieci LAN urządzeniami, które umieszczają pakiety IP w ramkach, wysyłające i odbierające ramki są karty sieciowe w komputerach. Analogiczne urządzenia w przełącznikach nazywają się portami a w routerach – interfejsami. Urządzenia wzmacniające, filtrujące i kierujące przesyłane sygnały. Sygnały umieszczane w nośniku transmisji, np. sygnały elektryczne w kablu ulegają zakłóceniom – tłumieniu i zniekształceniu. Tłumienie to osłabienie siły sygnału, zniekształcenie to niepożądana zmiana kształtu przebiegu czasowego. Jednym ze sposobów przeciwdziałania tłumieniu jest jego unikanie poprzez ograniczenie długości połączeń (kabli). Innym sposobem jest zainstalowanie urządzenia, które odczytuje przesyłane sygnały, wzmacnia je i wysyła z powrotem do sieci. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Przeciwdziałanie zniekształceniom i ich skutkom polega na przestrzeganiu zaleceń dotyczących nośnika (stosowanie odpowiedniego typu nośnika, instalacja zgodnie z regułami, odpowiednie długości przewodów) oraz korzystaniu z protokołów obsługujących korektę błędów transmisji. Zadania filtrujące i kierujące sygnały spełniają takie urządzenia jak mosty (pomosty, bridges już raczej nie używane), koncentratory (hubs) przełączniki (switches), punkty dostępowe (access points), routery (routers), bramy (gateways). Będą dokładniej omówione w dalszej części kursu. Programowe elementy składowe sieci komputerowych. Elementami programowymi sieci są: a) protokoły komunikacyjne (sieciowe), określające sposoby komunikowania się urządzeń i programów, b) oprogramowanie komunikacyjne, implementujące protokoły, c) programy poziomu sprzętowego, sterujące pracą elementów sprzętowych, np. kart sieciowych. Protokoły sieciowe są zestawami standardów i zasad obowiązujących przy przesyłaniu danych przez sieć. Oprogramowanie komunikacyjne to programy umożliwiające użytkownikom korzystanie z sieci komputerowych np. program telnet, przeglądarki WWW, klienci (klienty) pocztowi, oprogramowanie umożliwiające mapowanie dysków sieciowych itd. Programy poziomu sprzętowego to sterowniki, programy obsługi, mikroprogramy umożliwiające działanie takich urządzeń, jak karty sieciowe. Pakiety i ramki (data packets, frames). W sieciach komputerowych dane przesyłane są w porcjach zwanych pakietami. Jak już wcześniej powiedziano, w sieci Internet wszystkie dane są przesyłane w pakietach zgodnych z protokołem IP. Pakiety IP są też nazywane datagramami IP. Ze względu na to, że obecnie wykorzystywane są dwie wersje protokołu IP: wersja 4 (IPv4) ooraz wersja 6 (IPv6), to można spotkać określenie pakiety IPv4 albo IPv6. Obydwie te wersje nie są ze sobą kompatybilne (nie są zgodne). Sieć Internet jest siecią wielu połączonych ze sobą sieci komputerowych. Pakiety przesyłane między komputerami podłączonymi do Internetu (mogą to być też telefony, tablety, drukarki, dyski sieciowe, różne urządzenia tworzące IoT – Internet of Things, Internet Rzeczy) zwykle są przekazywane między specjalnymi urządzeniami, które nazywają się routerami (routery, rutery). Routery mogą być ze sobą łączone przy użyciu różnych technologii i urządzeń transmisyjnych (kabli, światłowodów). W wielu technologiach sieciowych pakiety IP są przesyłane w tzw. ramkach. Ramka przesyłana jest w postaci odpowiednio zakodowanych Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega bitów. Bity są kodowane na różne sposoby, na ogół jako określone impulsy elektryczne, radiowe lub świetlne (w światłowodach). Urządzenie zapewniające dostęp do nośnika (np. karta sieciowa) przesyła ramki jako zestawy zakodowanych bitów. Od strony logicznej wysyłany ciąg bitów (ramka) zawiera pewne informacje i może być podzielony na porcje zwane polami. Typowa ramka zawiera następujące pola: • • • • • ogranicznik początku ramki (jest to ustalony wzór bitów) adres fizyczny odbiorcy (miejsca docelowego) MAC address, adres MAC tzw. adres fizyczny nadawcy (źródła danych) dane ogranicznik końca ramki (sekwencja kontrolna ramki). Ogranicznik początku ramki może być poprzedzony lub może zawierać tzw. preambułę, która w pewnych technologiach sieciowych jest stosowana do synchronizacji nadajnika i odbiornika. Wielkość pól określana jest w oktetach. Oktet to 8 bitowa porcja danych. Określenie wprowadzono dla uniknięcia niejednoznaczności związanych z terminem bajt (niektóre starsze komputery wykorzystywały bajty np. 9, 10 czy 12 bitowe). Różne technologie sieciowe, np. Token Ring (już nie używana), Ethernet, FDDI, 802.11n, wykorzystują różne formaty ramek i różne sposoby fizycznego adresowania komputerów. Wstawienie danych do struktury ramki nazywa się kapsułkowaniem lub enkapsulacją. W zależności od typu ramki mówi się o różnych sposobach kapsułkowania (enkapsulacji). Uwaga: nie wszystkie technologie sieciowe wykorzystują ramki o wyżej podanej strukturze. Topologie sieci lokalnych – wprowadzenie. Znaczna część tego kursu będzie poświęcona sieciom lokalnym. W takich sieciach komputery mogą być łączone według różnych topologii fizycznych i logicznych. Topologia fizyczna mówi w jaki sposób połączone są fizycznie komputery, na przykład, jeśli połączenia są realizowane tak jak na poniższym rysunku, to mówimy o fizycznej topologii gwiazdy. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Komputer 7 Komputer 1 Komputer 2 Koncentrator/ przełącznik Komputer 6 Komputer 5 Komputer 3 Komputer 4 KONCENTRATOR = HUB, PRZEŁĄCZNIK = SWITCH Jeśli komputery mogą wysyłać ramki między sobą tak, że ramka wędruje od komputera wysyłającego tylko do komputera docelowego, to mówimy, że logiczna topologia to również topologia gwiazdy. Tak budowane są sieci lokalne w różnych odmianach technologii Ethernet z wykorzystaniem przełączników (switches). Są jednak takie sieci, w których specjalny koncentrator przekazuje ramki po okręgu, np. jeśli komputer nr 1 chce wysłać ramkę do komputera nr 5, to najpierw ramka przekazywana jest do komputera 2, potem do komputera 3, potem do komputera 4 i na końcu do komputera 5. W takim przypadku mówimy, że fizyczna topologia połączeń to gwiazda, ale logiczna topologia to topologia pierścienia. Tak działały sieci lokalne budowane w technologii o nazwie Token Ring (obecnie nie są używane). Sieci budowane w technologii określanej nazwą FDDI są łączone fizycznie w pierścień (właściwie jest to podwójny pierścień) a komunikacja między nimi odbywa się również na zasadzie przekazywania ramek po okręgu, zatem logiczna topologia połączeń to również pierścień. Sieci lokalne budowane z wykorzystaniem starszych wersji technologii Ethernet wykorzystywały fizyczną i logiczną topologię magistrali. W tej topologii wszystkie komputery podłączone były do wspólnego kabla. Ilustruje to poniższy rysunek. Komputer 1 Komputer 2 Komputer 3 Komputer 4 Komputer 5 Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Jeśli komputer 1 miał przekazać ramkę do komputera 4, to najpierw sprawdzał, czy przez kabel żaden komputer nie nadaje swoich ramek, a następnie wprowadzał ramkę do kabla. Ramkę „widzą” wszystkie komputery podłączone do wspólnego kabla, chociaż na ogół tylko komputer docelowy pobiera całą ramkę. Ramka zawiera tzw. adres fizyczny MAC, po którym komputery rozpoznają, czy ramka jest do nich kierowana. Jeśli komputery wykorzystują jedną z odmian technologii Ethernet z wykorzystaniem koncentratora (hub), a nie wspomnianego poprzednio przełącznika, wówczas topologia fizyczna to topologia gwiazdy, ale topologia logiczna to topologia magistrali. Koncentrator (hub) po otrzymaniu ramki na którymś z portów (tak nazywane są to gniazda połączeniowe w koncentratorze) przesyła tę ramkę do wszystkich pozostałych portów, a zatem wszystkie pozostałe komputery „widzą” ramkę tak jak w przypadku fizycznego połączenia w topologii magistrali. Są też topologie złożone, np. gdy kilka koncentratorów lub przełączników (do których są łączone komputery w topologii gwiazdy) łączonych jest w gwiazdę z wykorzystaniem innego koncentratora lub przełącznika. Jest to tzw. rozszerzona gwiazda. Ważną i często wykorzystywaną topologią połączeń jest topologia hierarchiczna (wyjaśnienie na wykładzie lub np. tu: http://wazniak.mimuw.edu.pl/index.php?title=SK_Modu%C5%82_1) Inne wykorzystywane topologie to siatki (częściowe lub pełne). Omówienie procesów zachodzących w trakcie komunikacji między dwoma komputerami połączonymi do jednego przełącznika w lokalnej sieci Ethernet. Prześledźmy procesy zachodzące w trakcie przykładowej komunikacji między dwoma komputerami przyłączonymi do przełącznika (switch) w technologii np. Fast Ethernet. Każdy komputer (a właściwie każda karta sieciowa) w poniższej sieci posiada dwa adresy: 48bitowy adres MAC (przypisanym przez producenta karty sieciowej) oraz adres IPv4 (przypisany ręcznie przez administratora lub przypisany dynamicznie przez serwer DHCP). Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Internet Komputer 1: IP: 149.156.65.11 MAC: 68:1b:f2:51:7f:8a Brama: 149.156.65.1 Adres serwera DNS: 149.156.200.200 Komputer 2 Router (Brama domyślna): IP2: 149.156.122.2 MAC2: 7c:1c:42:00:00:09 IP1: 149.156.65.1 MAC1: 7c:1c:42:00:00:09 Przełącznik (switch) Komputer 3 Komputer 4 Komputer 6 Komputer 5 (Server WWW): IP: 149.156.65.15 MAC: 9f-2b-70-7c-67-fa Brama: 149.156.65.1 Sieć 149.156.65.0, maska 255.255.255.0. Załóżmy, że na komputerze numer 5 jest uruchomiony serwer WWW, który jest związany z pewną (wymyśloną, w rzeczywistości nieistniejącą) nazwą domenową np. www.komputer5.iiuj.edu.pl. Komputer 5 (jego karta sieciowa) ma adres MAC 9f-2b-70-7c-67-fa oraz adres IP 149.156.65.15. Komputer 1 ma adres MAC 68:1b:f2:51:7f:8a oraz adres IP 149.156.65.11. Prześledźmy co dzieje się w sieci, jeśli na komputerze 1 uruchomimy przeglądarkę WWW (np. Mozilla Firefox lub Internet Explorer) i wpiszemy adres www.komputer5.iiuj.edu.pl. Zadziała system DNS: komputer 5 skontaktuje się ze swoim serwerem DNS (np. o adresie 149.156.200.200) i zapyta jaki jest adres IP komputera związanego z nazwą domenową www.komputer5.iiuj.edu.pl. Serwer DNS znajdzie odpowiedni adres w swoich zasobach (jeśli nie znajdzie, to może się komunikować z innymi serwerami DNS – cały system DNS będzie omówiony w późniejszej części kursu) i odeśle informację do komputera 1. Przeglądarka utworzy komunikat (wg protokołu HTTP). Do komunikatu zostanie dodany nagłówek (wg protokołu TCP), który zawiera m.in. tzw. port docelowy (standardowo serwery WWW wykorzystują port o numerze 80) oraz port źródłowy (przeglądarka wykorzystuje porty dynamicznie przydzielane, zwykle o „wysokich” numerach). Komunikat razem z dołączonym nagłówkiem TCP nazywa się segmentem TCP. Następnie do segmentu TCP zostanie dodany nagłówek IP – w ten sposób powstanie pakiet IP (inaczej: datagram IP). Nagłówek IP zawiera m.in. adres IP źródłowy (w tym przypadku 149.156.65.11) i adres IP docelowy (tutaj 149.156.65.15). Pakiet musi być przesłany w ramce. Do pakietu musi zostać dodany nagłówek ramki, zawierający źródłowy adres MAC (w tym przypadku 68:1b:f2:51:7f:8a – komputer 1 tworzący ramkę zna swój adres MAC) oraz docelowy adres MAC (w tym przypadku powinien to być Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega adres 9f-2b-70-7c-67-fa). Komputer 1 nie zna jednak adresu MAC komputera 5, zna tylko jego adres IP. W wersji 4 protokołu IP (IPv4) do poznania adresu docelowego MAC wykorzystywany jest protokół ARP – Address Resolution Protocol (ARP jest bardziej szczegółowo opisany w oddzielnym punkcie poniżej). Komputer 1 wysyła specjalną ramkę ARP Request (zapytanie ARP, ramka ta NIE zawiera w sobie pakietu IP), która ma adres docelowy składający się z samych jedynek (48 jedynek: ff-ffff-ff-ff-ff). Adres ten nazywa się adresem rozgłoszeniowym. Ramka ARP Request jest przesyłana przez przełącznik do wszystkich przyłączonych komputerów (do wszystkich urządzeń podłączonych do przełącznika). Ramka ta zawiera pytanie, które można byłoby przetłumaczyć tak: „Kto ma adres IP 149.156.65.15? Proszę podać MAC” (czyli zawiera pytanie o adres MAC komputera, którego adres IP jest przesyłany w ramce ARP Request). Każdy komputer przyłączony do przełącznika ma obowiązek odebrać ramkę wysłaną na adres rozgłoszeniowy MAC. Jednak tylko komputer 5 odpowie na ARP Request (ponieważ tylko on ma adres IP taki, jaki jest przesłany w pytaniu ARP Request). Odpowiedź to specjalna ramka ARP Reply (odpowiedź ARP). Odpowiedź ARP jest wysyłana na adres MAC komputera 1 (skąd komputer 5 zna ten adres?). Po tym, jak komputer 1 pozna adres MAC komputera 5, może już zbudować ramkę przeznaczoną do komputera 5. Ramka ta zawiera wcześniej zbudowany pakiet IP (który z kolei zawiera segment TCP, który z kolei zawiera komunikat HTTP). Ramka jest wysyłana do przełącznika, a przełącznik dostarcza ją tylko do komputera 5. Uwaga: Przełącznik uczy się adresów MAC przyłączonych komputerów i routerów i zapamiętuje w specjalnej tablicy przypisanie adresu MAC do konkretnego swojego portu (gniazdka). Jeśli przełącznik dostanie ramkę ze znanym mu adresem MAC, to kieruje tę ramkę tylko do odpowiedniego portu. Jeśli przełącznik dostanie ramkę z adresem docelowym MAC, którego jeszcze nie zna, to wysyła kopię ramki do wszystkich swoich portów (z wyjątkiem tego, na którym dostał ramkę). Enkapsulacja (kapsułkowanie): Nagłówek ramki Nagłówek IP (zawiera m.in. (zawiera m.in. MAC źródłowy i adres IP MAC docelowy) źródłowy i docelowy) – przeważnie 20 bajtów Nagłówek TCP (zawiera m.in. numer portu docelowy i źródłowy) – przeważnie 20 bajtów Komunikat http (na ogół największa część ramki) Suma kontrolna ramki (4 bajty) Komputer 5 (a właściwie jego karta sieciowa) odbierze ramkę, zaglądnie do środka, sprawdzi adres MAC docelowy (sprawdza jeszcze sumę kontrolną) i „wyjmuje” z ramki pakiet IP. Sprawdza adres docelowy IP (czy jest to jego adres) i „wyjmuje” z pakietu segment TCP. Sprawdza do którego portu należy przekazać zawartość (komunikat HTTP) i ostatecznie „wyjmuje” komunikat http z segmentu i przekazuje do portu 80, na którym nasłuchuje serwer WWW. Serwer WWW skonstruuje odpowiedź – stronę WWW zapisaną z wykorzystaniem języka HTML). Strona ta zostanie umieszczona w komunikacie http, który następnie musi być przesłany do komputera 1. Mechanizm jest analogiczny jak poprzednio. Do komunikatu Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega dodawany jest nagłówek TCP (z portem źródłowym 80 i docelowym portem przypisanym do przeglądarki WWW na komputerze 1) i tak powstaje segment TCP, następnie do segmentu dodawany jest nagłówek IP i tak powstaje pakiet, następnie pakiet umieszczany jest w ramce (tj. do pakietu dodawany jest nagłówek ramki oraz suma kontrolna) i ramka przesyłana jest z komputera 5 do przełącznika, a stamtąd do komputera 1. Uwaga. Powyższy opis jest nieco uproszczony. Pominięte zostały szczegóły działania systemu DNS oraz szczegóły działania protokołu TCP. W rzeczywistości zanim zostanie przesłany pierwszy segment TCP do komputera docelowego, komputery wykorzystujące ten protokół, muszą zbudować tzw. połączenie TCP. Wymaga to przesłania trzech specjalnych segmentów. Jeden od przeglądarki WWW do serwera, drugi od serwera do przeglądarki a trzeci znowu od przeglądarki do serwera. W rzeczywistości więc cały proces odnalezienia adresu MAC na podstawie adresu IP poprzez protokół ARP jest realizowany już na etapie budowania połączenia TCP, a nie dopiero podczas przesyłania segmentu TCP zawierającego komunikat HTTP. Szczegóły będą dokładnie wyjaśnione w dalszej części kursu. Omówienie procesów zachodzących w trakcie komunikacji między dwoma komputerami należącymi do różnych sieci lokalnych (tj. rozdzielonych co najmniej jednym routerem). Komunikacja między komputerami w jednej sieci lokalnej została opisana w poprzednim punkcie. Jeśli jednak komputer docelowy jest w innej sieci (czyli źródło i cel są oddzielone przynajmniej jednym routerem), to komunikacja przebiega nieco inaczej. Wszystko do skonstruowania pakietu IP włącznie działa tak samo, jednak ramka z pakietem IP będzie przesyłana nie wprost do komputera docelowego, tylko do routera. Komputer tworzący ramkę musi więc wykorzystując protokół ARP (i ramkę ARP Request) poznać MAC adres routera, czyli swojej bramy domyślnej (default gateway). Stąd wniosek, że elementem konfiguracji komputera powinno być podanie mu nie tylko jego adresu IP, ale również adresu IP bramy domyślnej. Router (brama) po otrzymaniu ramki „wyjmuje” z niej pakiet IP, zagląda do nagłówka i sprawdza jaki jest adres docelowy IP. Na podstawie tego adresu oraz na podstawie specjalnej tablicy routowania, router wyznacza router następnego skoku i konstruuje i wysyła do niego nową ramkę, w której umieszcza przesyłany pakiet IP. Ramka to może mieć inną budowę niż ramka, która dotarła do routera, ponieważ połączenie z routerem następnego skoku może wykorzystywać inną technologię sieciową. Różne technologie sieciowe wykorzystują ramki o różnych strukturach. Jednak pakiet IP, przenoszony przez różne ramki, nie zmienia się (pomijając pewne techniczne zmiany w nagłówku pakietu IP – zmiany te będą omówione w dalszej części kursu). Kolejny router wyznacza router następnego skoku, tworzy nową ramkę itd. aż pakiet dotrze w kolejnych ramkach do docelowej sieci i do docelowego komputera. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Model ISO OSI Aby ułatwić zrozumienie procesów zachodzących podczas komunikowania się komputerów między sobą, a także by ułatwić projektowanie protokołów komunikacyjnych, utworzono kilka modeli działania sieci komputerowych. Jeden z najpopularniejszych modeli – o nazwie OSI (Open Systems Interconnection) – został utworzony przez Międzynarodową Organizację Normalizacyjną (ISO International Organization for Standarization w Genewie). Model ISO OSI stanowi model referencyjny (wzorcowy). Jest to globalny standard określania warstw funkcjonalnych otwartych (wielosystemowych) połączeń sieciowych. Model OSI dzieli procesy zachodzące podczas komunikacji w sieci na siedem funkcjonalnych warstw, zorganizowanych według naturalnej sekwencji zdarzeń. Numer warstwy 7 6 5 4 3 2 1 Nazwa warstwy Aplikacji Prezentacji Sesji Transportu Sieci Łącza danych Fizyczna Każdą z warstw można rozpatrywać w aspekcie dwóch zasadniczych funkcji: odbierania i nadawania. 1) Warstwa fizyczna (physical layer) opisuje standard połączenia fizycznego, np. przekształcanie 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). 2) Warstwa łącza danych (data link layer) – w warstwie tej rozważa się 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. adresy fizyczne MAC. W warstwie 2 opisane są również pewne mechanizmy kontroli poprawności transmisji (FCS). Uwaga. W zasadzie w modelu ISO nie występuje termin „ramka”, tylko „jednostka danych usług warstwy fizycznej”, ale termin ramka jest powszechnie stosowany. 3) Warstwa sieci (network layer) jest „odpowiedzialna” za określenie trasy przesyłania danych między komputerami poza lokalnym segmentem sieci LAN. Do warstwy tej przypisuje się protokoły trasowane takie jak IP (ze stosu protokołów TCP/IP), IPX (Novell IPX/SPX), DDP (AppleTalk). Protokoły te wykorzystują adresowanie logiczne. W warstwie tej opisuje się komunikację komputerów znajdujących się w różnych segmentach sieci przedzielonych routerem. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega 4) Warstwa transportu (transport layer) obejmuje kontrolę błędów i przepływu danych poza lokalnymi segmentami LAN. Opisuje się w niej protokoły zapewniające komunikację procesów uruchomionych na odległych komputerach (korzysta z nich np. oprogramowanie klient/serwer), w tym komunikację z zapewnieniem niezawodności dostarczania danych. Protokoły tej warstwy to np. TCP oraz UDP (z TCP/IP), SPX (Novell IPX/SPX), ATP, NBP, AEP (AppleTalk). 5) Warstwa sesji (session layer) obejmuje zarządzanie przebiegiem komunikacji podczas połączenia między komputerami (sesji). Rzadziej rozważana. Pierwotnie przeznaczona do opisu obsługi zdalnego dostępu przy pomocy terminala. 6) Warstwa prezentacji (presentation layer) obejmuje kompresję, kodowanie i translację między niezgodnymi schematami kodowania oraz szyfrowanie. 7) Warstwa aplikacji (application layer) obejmuje interfejs między aplikacjami a usługami sieci. Określona sesja komunikacyjna nie musi wykorzystywać protokołów ze wszystkich warstw modelu. Przy nadawaniu dane kierowane są od warstwy 7 do 1, w każdej z warstw następuje opakowanie danych (kapsułkowanie, enkapsulacja) – dołączenie nagłówka protokołu danej warstwy. Przy odbiorze następuje proces odwrotny. Z punku widzenia implementacji protokołu jednej warstwy program jednej strony komunikującej się otrzymuje te same obiekty co program drugiej strony. Przy opisie zestawów protokołów używane są też inne modele warstwowe (najczęściej z mniejszą liczba warstw, ale na ogół z odpowiednikami w modelu OSI). Jeden z takich prostszych modeli – model TCP/IP – jest często wykorzystywany przy opisie zestawu (stosu) protokołów TCP/IP, czyli zestawu protokołów wykorzystywanego w sieci Internet. W modelu TCP/IP nie ma warstwy prezentacji ani warstwy sesji, ponieważ zestaw TCP/IP nie zawiera żadnych protokołów, które można byłoby przypisać do tych warstw. Nieco inny model „dydaktyczny” został zaproponowany przez Tannenbauma. Modele te są porównane na poniższym rysunku. Model ISO/OSI, model TCP/IP i model dydaktyczny: Numer Nazwa warstwy modelu Nazwa warstwy w modelu Nazwa warstwy w modelu warstwy OSI TCP/IP dydaktycznym modelu OSI proponowanym przez Tannenbauma 7 Aplikacji Aplikacji Aplikacji 6 Prezentacji 5 Sesji 4 Transportu Transportu Transportu 3 Sieci Intersieci Sieci 2 Łącza danych Interfejsu sieciowego Łącza danych 1 Fizyczna Fizyczna Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Zestaw (stos) protokołów TCP/IP Zestaw protokołów określany skrótowo jako TCP/IP składa się z protokołów, które stanowią obecnie podstawę działania Internetu. TCP/IP stał się standardem w komunikacji sieciowej we wszystkich popularnych systemach operacyjnych. Można spotkać określenie stos protokołów TCP/IP. Oto protokoły z zestawu TCP/IP: TCP, UDP, IP, ARP, ICMP, IGMP. Warstwa TCP/IP Aplikacji Transportu Internetowa (sieci, intersieci) Dostępu do sieci (interfejsu sieciowego) Warstwa modelu OSI Aplikacji Prezentacji Sesji Transportu Sieci Łą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). Protokoły warstwy transportu to TCP oraz UDP. Będą dokładniej omówione w dalszej części kursu. Najważniejszy protokół warstwy internetowej to IP. Obecnie są wykorzystywane dwie wersje IP: wersja 4 (IPv4) oraz wersja 6 (IPv6). Na początku tego kursu będziemy się zajmować wyłącznie IPv4, IPv6 zostanie szczegółowo omówiony później. Inne ważne protokoły to ICMP (m.in. komunikaty o problemach), IGMP (komunikacja grupowa), ARP (tłumaczy adresy między warstwą internetową a warstwą interfejsu sieciowego, czasami zaliczany do tej ostatniej warstwy). Dane przechodząc w dół stosu protokołów TCP/IP są opakowywane i otrzymują odpowiedni nagłówek. Przyjęto, że porcje danych przesyłane w dół stosu mają różne nazwy: • Komunikat to porcja danych utworzona w warstwie aplikacji i przesłana do warstwy transportu. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega • • • • Porcja danych utworzona przez oprogramowanie implementujące protokół TCP w warstwie transportu nazywana jest segmentem. Segment zawiera w sobie komunikat z warstwy aplikacji. Porcja danych utworzona przez oprogramowanie implementujące protokół UDP w warstwie transportu nazywana jest datagramem UDP. Datagramem nazywana jest również porcja danych utworzona w warstwie internetowej przez oprogramowanie implementujące protokół IP. Datagram IP zawiera w sobie segment utworzony w warstwie transportu. Datagram IP bywa nazywany pakietem. Porcja danych utworzona na poziomie dostępu do sieci nazywana jest ramką. Uwaga. W bardzo popularnej na świecie (m.in. w Polsce) Akademii Sieciowej Cisco na ogół terminem pakiet (packet) określa się datagram IP. Nie mówi się tam o datagramach IP, ale o pakietach (lub pakietach IP). Jednak w niektórych polskich książkach dotyczących sieci komputerowych można spotkać określenie pakiet na dowolną porcję danych utworzoną przez oprogramowanie realizujące protokół dowolnej warstwy modelu TCP/IP. Z kolei w Akademii Sieciowej Cisco i w wielu książkach taka dowolna porcja danych określana jest skrótem PDU – Protocol Data Unit. Przykładowa sekwencja zdarzeń przy wysłaniu danych – opis z wykorzystaniem modelu warstwowego 1. 2. 3. 4. 5. Aplikacja przesyła dane do warstwy transportu (oprogramowania realizującego protokoły warstwy transportu). Dalszy dostęp do sieci realizowany jest przez TCP albo 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ą przesłane jeszcze raz). - UDP nie zapewnia niezawodności, ale jest szybszy. Segment danych lub datagram UDP 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 IP (pakiet). 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 protokołu ARP. Protokół ARP będzie jeszcze szczegółowo omawiany w dalszej części kursu. Ramka przekształcana jest w ciąg sygnałów (odpowiadających bitom – według pewnego systemu kodowania bitów), który zostaje przesłany przez sieć. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega RFC Oficjalne standardy internetowe są publikowane w tzw. RFC (Request for Comments). Niektóre dokumenty RFC nie są standardami, ale pełnią funkcję informacyjną. Każdy dokument RFC posiada swój numer – większe numery oznaczają nowsze dokumenty. Ciekawostka: Prawie każdego roku 1 kwietnia są wydawane specjalne, humorystyczne dokumenty RFC. Są one opublikowane razem z tymi poważnymi. ARP (Address Resolution Protocol) – protokół rozpoznawania adresu fizycznego Opisany w RFC 826, 1122. Uwaga – poniższe rozważania dotyczą tylko wersji 4 protokołu IP (IPv4). W wersji IPv6 protokół ARP nie jest w ogóle wykorzystywany, zastępują go inne mechanizmy. ARP stosowany jest w sieciach Ethernet (jeśli w warstwie sieci wykorzystywany jest protokół IPv4), był też używany w sieciach Token Ring. Zadaniem ARP jest odnalezienie adresu fizycznego MAC na podstawie adresu IP. Jeśli ma być wysłany datagram IP (pakiet) na pewien adres IP, to musi być skonstruowana ramka zawierająca odpowiedni adres MAC. Adres docelowy IP jest znany przez aplikację wysyłającą, ale adres MAC na ogół nie. Adres IP jest znany wprost, gdyż np. w programie ftp wpisany został przez użytkownika lub – częściej – adres ten jest uzyskiwany automatycznie na podstawie wpisanej przez użytkownika nazwy domenowej (np. www.wsb-nlu.edu.pl) dzięki systemowi o nazwie DNS. Adres MAC jest odnajdywany przez protokół ARP. Ze względu na możliwość wymiany karty sieciowej w komputerze o określonym adresie IP ARP musi być dynamiczny, tj nie może polegać na trwałych wpisach np. w plikach konfiguracyjnych. ARP jest protokołem opartym na metodzie rozgłoszeniowej i zasadzie żądania i odpowiedzi. ARP najpierw sprawdza w swojej pamięci podręcznej (cache) tablicę przyporządkowującą adresy MAC adresom IP. Jeśli odpowiedni wpis nie zostanie znaleziony, wówczas zostaje wysł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 ramce tej jest zapisane pytanie, które możemy przetłumaczyć tak: „Kto ma adres ip 149.159.12.15? Proszę podać mi adres MAC”. Węzeł wysyłający nazywany jest ARP requestor. Możliwe są dwa przypadki: 1) W przypadku, gdy węzeł docelowy znajduje się w tym samym segmencie sieci lokalnej (nie jest oddzielony od węzła źródłowego routerem), ARP requestor pyta wprost o to kto ma docelowy adres IP. ARP responder odpowiada wysyłając ramkę ARP Reply pod adres MAC, z którego przyszło żądanie. Adres ten jest znany, gdyż znajduje się w ramce zapytania ARP. 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 w pamięci podręcznej (cache). Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega 2) W przypadku, gdy węzeł docelowy znajduje się w innym segmencie sieci (być może z drugiej strony kuli ziemskiej) datagram musi być skierowany do domyślnego routera. Na ogół adres IP domyślnego routera jest wpisany w konfiguracji TCP/IP. Zatem w takim przypadku ARP requester pyta o to kto ma adres IP – i tu podaje adres IP routera domyślnego. Router odpowiada wysyłając ramkę ARP respond i podaje swój adres MAC. W przypadku, gdy w konfiguracji komputerów w sieci nie ma adresu IP routera domyślnego można skorzystać z tzw. Proxy ARP, który będzie omówiony pod koniec tego rozdziału. Po otrzymaniu ARP Request uaktualniane są również pamięci podręczne cache ARP w komputerach, które otrzymały tę ramkę, a które miały w pamięci podręcznej IP komputera, który wysyłał żądanie. Takie uaktualnienie jest możliwe dzięki temu, że ramka ARP request zawiera adres MAC i adres IP nadawcy. A zatem ważną metodą aktualizacji wpisów w pamięci podręcznej ARP jest samo otrzymanie ramki ARP request. Wpisy w pamięci podręcznej ARP są usuwane po okresie nieużywania rzędu kilku minut. W przypadku użycia wpisu czas ten może wzrosnąć, lecz nie więcej niż pewna wartość np. 10 minut. Tak jest w systemach Microsodft Windows – standardowy czas przechowywania wpisu to 2 min. Jeśli w tym czasie wpis jest używany (czyli były wysyłane datagramy pod adres IP z wpisu), to czas ten jest zwiększany o kolejne 2 min. Limit górny to 10 min., po upływie tego czasu wpisy w pamięci podręcznej ARP są czyszczone i procedura żądań i odpowiedzi jest powtarzana. „Czas życia” wpisu można modyfikować ustawiając w sekundach wartości odpowiednich wpisów w rejestrach systemu. TCP/IP w Microsoft Windows pozwala na użycie statycznych wpisów w pamięci podręcznej ARP, to jest takich, które są wpisane na trwałe poleceniem arp z opcją –s. Jednak ze względu na to, że tablica odwzorowań IP w adresy MAC jest przechowywana w pamięci RAM, to i tak przy wyłączaniu komputera wpisy przepadają i przy późniejszej inicjalizacji TCP/IP pamięć cache jest pusta i należy ją zapisać od nowa. Do sprawdzenia cache służy polecenie arp z opcją -r. Struktura ramki ARP: Typ sprzętu (2 oktety) Typ protokołu (2 oktety) Długość adresu sprzętu (1 oktet) Długość adresu protokołu (1 oktet) Kod operacji (2 oktety) Adres sprzętu nadawcy (dla Ethernet 6 oktetów) Adres protokołu nadawcy (dla IPv4 4 oktety) Adres sprzętu docelowego (dla Ethernet 6 oktetów) Adres protokołu docelowego (dla IPv4 4 oktety) Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Przykładowe wartości: Typ sprzętu: 1 – Ethernet 10 Mbps 6 – 802 Token Ring 15 – Frame Relay 16 – Asynchronous Transfer Mode (ATM) Typ protokołu – dla IP wartość 0x0800. Kody operacji: 1 – ARP Request 2 – ARP Reply 3 – RARP Request 4 – RARP Reply Wykrywanie zduplikowanych adresów IP – „zbędny ARP” Węzeł wysyła ARP Request z zapytaniem o swój własny adres (W Windows domyślnie 3 razy). Jeśli ARP Reply nie nadejdzie, to znaczy, że w lokalnym segmencie nie ma konfliktu adresów. Jeśli odpowiedź nadejdzie, oznacza to konflikt. Węzeł już skonfigurowany traktowany jest jako węzeł z poprawnym adresem (węzeł zgodny, defending node), węzeł wysyłający „zbędny ARP” jest węzłem konfliktowym (offending node). Niestety węzeł konfliktowy wprowadza błąd w pamięci podręcznej ARP komputerów w całym segmencie sieci. ARP Reply z węzła zgodnego nie naprawia sytuacji, gdyż ramka ARP Reply nie jest ramką rozgłoszeniową i jest kierowana tylko do jednego komputera. Dlatego zawsze węzeł zgodny wysyła ARP Request ze swoim adresem po wykryciu konfliktu. Uwaga. Datagramy IP wysłane na w ramkach z niepoprawnym adresem MAC odbiorcy przepadają. Co gorsze, protokół IP nie zapewnia niezawodnej dostawy datagramów i nie spowoduje powtórnego przesłania datagramu w nowej ramce. Za niezawodność odpowiedzialne są protokoły warstwy transportu. Proxy ARP Router ze skonfigurowanym mechanizmem Proxy ARP odpowiada na ramki ARP Request w imieniu wszystkich węzłów – komputerów spoza segmentu sieci lokalnej (RFC 925). Może być używany jest np. w sytuacji, gdy komputery w sieci nie mają ustawionego domyślnego routera (domyślna brama, default gateway). Routery mogą mieć włączoną standardowo opcję Proxy ARP, wówczas jeśli jakiś komputer wyśle ARP Request z adresem spoza danej sieci lokalnej (zwykle to nie następuje), to router odpowie „w imieniu” komputera zewnętrznego. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Uzupełnienia (do przeczytania) Technologie Ethernet W rozdziale tym zostaną przedstawione technologie budowy sieci lokalnych określane czasem wspólnym mianem Ethernet lub 802.3. Specyfikacje i parametry tych technologii są rozważane na poziomie pierwszym i drugim modelu ISO OSI. Historia i podstawy technologii określanych wspólnym mianem Ethernet Parę słów o historii sieci Ethernet 1. Jedna z pierwszych sieci lokalnych (1972 r.) to Ethernet PARC firmy Xerox (PARC – Palo Alto Research Center), tzw. Ethernet I, opierający się na założeniach sieci do transmisji radiowej o nazwie Aloha zaprojektowanej na Uniwersytecie Hawajskim. Łączenie komputerów następowało w topologii magistrali, przewodami koncentrycznymi o grubości ½ cala (12 mm) (tzw. gruby Ethernet, thick Ethernet). Połączenie między komputerem a kablem wymagało użycia tzw. nadbiornika (transceiver) AUI (Attachment Unit Interface) oraz specjalnego kabla AUI. Prędkość przesyłania 2,94 Mbps (mega bity na sekundę). Cechą charakterystyczną tej sieci było to, że transmitery przed rozpoczęciem nadawania nasłuchiwały. Dostęp do nośnika realizowany był na zasadzie CSMA (Carrier Sense, Multiple Access – wielodostęp do nośnika z badaniem stanu nośnika). 2. Następny krok (1979 r.) – DIX Ethernet, (od Digital, Intel, Xerox), powszechnie znany jako Ethernet II. Prędkość przesyłania wynosiła 10 Mbps. Dostęp do nośnika realizowany był na zasadzie CSMA/CD (Carrier Sense, Multiple Access with Collision Detection – wielodostęp do nośnika z badaniem stanu oraz wykrywaniem kolizji). Taki sposób dostępu do nośnika jest charakterystyczny dla prawie wszystkich odmian technologii Ethernet (z wyjątkiem tych najszybszych: 10Gbps i szybszych). 3. W lutym 1980 roku organizacja Institute of Electrical and Electronics Engineers (IEEE) rozpoczęła prace nad Projektem 802 (skrót pochodzi prawdopodobnie od daty: rok 80, drugi miesiąc), w którym zamierzano określić różne standardy sieciowe. Standard nazwany IEEE 802.3 określał działanie technologii sieciowej o ramkach nieco innych niż Ethernet II. 4. Kolejne kroki to popularny 100 Mbps (Fast Ethernet) oraz jego następca, popularny obecnie 1000 Mbps (Gigabit Ehternet), stosowany często do łączenia przełączników czy routerów. Są też wersje szybsze: 10, 40, 100 Gigabit/s. Technologie ta wykraczają poza sieci lokalne, długość połączeń może być rzędu kilkudziesięciu kilometrów. 6. Standard – 802.3-2012. Fragment z dokumentacji: „IEEE Std 802.3u™ added 100 Mb/s operation (also called Fast Ethernet), IEEE Std 802.3x specified full duplex operation and a flow control protocol, IEEE Std 802.3z added 1000 Mb/s operation (also called Gigabit Ethernet), IEEE Std 802.3ae added 10 Gb/s operation (also called 10 Gigabit Ethernet), Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega IEEE Std 802.3ah™ specified access network Ethernet (also called Ethernet in the First Mile) and IEEE Std 802.3ba added 40 Gb/s operation (also called 40 Gigabit Ethernet) and 100 Gb/s operation (also called 100 Gigabit Ethernet). These major additions are all now included in and are superseded by IEEE Std 802.3-2012 and are not maintained as separate documents.” Pełną dokumentację podzieloną na kilka części można pobrać stąd: http://standards.ieee.org/about/get/802/802.3.html. Odmiany 802.3 (Ethernet) różnią się między sobą nośnikami (np. kabel miedziany koncentryczny, skrętka, kabel optyczny), sposobem kodowania bitów i innymi szczegółami. Topologie połączeń komputerów w sieciach Ethernet W najpopularniejszych w tej chwili odmianach – 100Mbps i 1Gbps oraz technologiach wcześniejszych komputery mogą być łączone przy użyciu różnego rodzaju kabli miedzianych. W sieciach Ethernet II podstawową topologią fizyczną i logiczną połączeń była magistrala. Wszystkie komputery przyłączone były do wspólnego kabla. Wszystkie nasłuchiwały, czy któryś nadaje, jeśli nie, to karta sieciowa może wysłać do kabla ramkę. Był realizowany protokół CSMA/CD opisany poniżej. W sieciach Fast Ethernet 100Mbps i 1Gbps topologia fizyczna jest na ogół typu gwiazdy. Jeśli w środku gwiazdy znajduje się koncentrator (100Mbps), to topologia logiczna jest typu magistrala (wszystkie komputery „słyszą” co ktokolwiek w sieci lokalnej wysłał). Jeśli w środku gwiazdy jest przełącznik (100Mbps, 1Gbps), to topologia logiczna jest też typu gwiazdy. Przełączniki przesyłają ramki tylko do jednego komputera a nie tak jak koncentratory do wszystkich. Połączenia w sieci mogą być bardziej złożone, np. kilka „gwiazd” może być połączonych przy użyciu przełączników lub koncentratorów. Połączenia mogą tworzyć drzewo lub inną strukturę (z dublowaniem kluczowych elementów – będzie jeszcze o tym mowa w dalszej części kursu). CSMA/CD, domeny kolizji Protokół CSMA/CD określa, że przed rozpoczęciem transmisji realizowane jest nasłuchiwanie. Tylko wówczas, gdy przez kabel nie są przesyłane żadne dane, karta sieciowa wysyła w trybie rozgłoszenia swoje dane. Ramka nie ma znacznika końca. Między nadawaniem kolejnych ramek zachowuje się małe odstępy (w Ethernet 10Mb i 100Mb odpowiada czasowi przesłania 96 bitów, czyli odpowiednio 9,6 mikrosekundy i 0,96 mikrosekundy, w 1Gigabit Ethernet odstęp odpowiada czasowi przesłania 512 bitów). CSMA/CD obsługuje konflikty: gdy dwa lub więcej węzłów rozpocznie równocześnie wysyłanie danych następuje kolizja (jeśli jest topologia magistrali lub karty pracują w trybie półdupleksowym – patrz niżej). Karta sieciowa potrafi wykryć kolizję. Po wykryciu kolizji karty sieciowe dodatkowo wysyłają sygnał zakłócenia informujący o konflikcie. Jeśli kolizja zostanie wykryta w momencie nadawania tzw. preambuły (najczęściej), wówczas preambuła nadawana jest do końca (jako zakłócenie sygnałów kolizyjnych). Jeśli kolizja wykryta jest w momencie nadawania ramki, wówczas wysyłany jest 32 bitowy sygnał zakłócający. Następnie karty sieciowe uczestniczące w konflikcie przerywają transmisję na czas losowy, po upływie którego następuje ponowienie próby transmisji. W kolejnych próbach czas ten rośnie. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega W prawidłowo skonstruowanych sieciach Ethernet kolizje mogą wystąpić co najwyżej do 64 oktetu ramki. Późniejsze kolizje świadczą na ogół o zbyt długich połączeniach, które skutkują tym, że ramka dociera zbyt późno do komputerów odległych od nadawcy. Skrajne komputery w sieci nie powinny być oddalone od siebie więcej niż określają to dokładne przepisy dla każdej z odmian technologii Ethernet. Zasada 4 repeaterów W starszych technologiach Ethernet, działających w fizycznej topologii magistrali, aby nie dopuścić do występowania tzw. późnych kolizji stosowana była tzw. zasadę 4 repeaterów, zwaną też zasadą 5-4-3 (czasem 5-4-3-2-1). Pięć sekcji sieci, cztery wzmacniaki lub koncentratory, trzy sekcje sieci zawierające hosty (dwie sekcje nie zawierają komputerów, całość stanowi jedną domenę kolizji). Ze względu na możliwość występowania kolizji mówi się o tzw. domenach kolizji – fragmentach sieci, w których może wystąpić kolizja ramek. Powszechne zastosowanie w Ethernecie techniki przełączania pełnodupleksowego (użycie pełnodupleksowych przełączników) zmniejsza lub likwiduje rywalizację o dostęp do medium (zmniejsza domenę kolizji). Większość technologii Ethernet zakłada możliwość pracy urządzeń tzw. półdupleksowych, w których nadawanie i odbieranie jest realizowane naprzemiennie przy pomocy tych samych kabli. Jednak obecnie na ogół stosowane są urządzenia pracujące w trybie pełnodupleksowym (full-duplex), w którym dane wyjściowe i wejściowe przesyłane są między urządzeniem przełączającym a stacją roboczą za pomocą osobnych par przewodów. W tym, przypadku nie występują kolizje. Technologia 10Gb Ethernet i szybsze nie dopuszczają pracy w trybie półdupleksowym, zatem w tej technologii kolizje nie występują. W warstwie fizycznej (PHY) mogą być używane różne rodzaje kodowania bitów oraz różne rodzaje nośników. Przykłady odmian technologii Ethernet (różnych implementacji PHY): 10Base-2 (Thin Ethernet) – cienki kabel koncentryczny (coaxial), maksymalna długość pojedynczego kabla – 185m, topologia magistrali, 10Mbps. 10Base-5 (Thick Ethernet) – gruby kabel koncentryczny, maksymalna długość jednego odcinka – 500m, topologia magistrali, 10Mbps. 10Base-T (UTP) – CAT5 UTP, maks. długość 100m, topologia gwiazdy, przyłączanie do koncentratora (hub) i przełącznika (switche’a) , 10Mbps. 10Base-FL – światłowód (fiber-optic), maks. długość 2000m, 10Mbps. 100Base-TX – CAT5 UTP, maks. długość 100m, topologia gwiazdy, przyłączanie do koncentratora (hub) i przełącznika (switche’a) , 100Mbps. 100Base-FX – światłowód wielomodowy, maks. długość 2000m, 100Mbs. 1000Base-SX – Gigabit Ethernet, światłowód do 550 m. 1000Base-LX – Gigabit Ethernet, światłowód do 3 km. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega 1000Base-CX – Gigabit Ethernet, STP lub kabel koncentryczny do 25 m. 1000Base-T – Gigabit Ethernet, UTP do 100m. 10GBase-SR - 10 Gb/s przeznaczony dla światłowodów wielomodowych o maksymalnym zasięgu od 26 do 82 m (przy 850nm). Umożliwia także zasięg 300 m na nowych światłowodach wielomodowych 2000MHz/km. 10GBase-LX4 - stosując modulację typu 'WDM' umożliwia zasięg 240 lub 300 m za pomocą światłowodów wielomodowych (przy 1310nm) lub 10 km za pomocą jednomodowych. 10GBase-LR - Ethernet za pomocą światłowodów jednomodowych na odległość 10 km. 10GBase-ER - Ethernet za pomocą światłowodów jednomodowych na odległość 40 km. 10GBase-T – umożliwia transmisję o prędkości 10 Gb/s na odległość 100 m kablem nieekranowanym UTP kategorii 6a/7. Możliwe jest również wykorzystanie kabla kategorii 6 – wtedy maksymalna długość kabla nie powinna przekraczać 55m. W oznaczeniach technologii (np. 100BASE-TX) pierwsza liczba oznacza szerokość pasma, określenie BASE oznacza sposób transmisji – bezpośrednie kodowanie bitów, bez sygnału nośnego (w odróżnieniu od standardu BROAD, gdzie jest sygnał nośny, a bity kodowane są za pomocą zmian sygnału nośnego). W technologii 10GbE (Ethernet 10-gigabitowy, IEEE.802.3ae) są zmiany w stosunku do poprzednich wersji związane nie tylko z szybkością przesyłania bitów. Dopuszczono tylko tryb full-duplex, zrezygnowano z CSMA/CD – w związku z brakiem kolizji. Jest to technologia mająca cechy technologii MAN i WAN. Maksymalne dopuszczalne teraz długości połączeń są rzędu dziesiątek kilometrów. Nośnikiem jest światłowód. Szybsze wersje Ethernet: 40, 100 Gb/s (w opracowaniu są jeszcze szybsze). Ramki Ramka Ethernet II (DIX) Ramka Ethernet II opisana jest w RFC 894. Preambuła (8 oktetów) Adres odbiorcy (MAC 6 oktetów) Adres nadawcy (MAC 6 oktetów) Typ danych (2 oktety) „EtherType” Dane od 46 do 1500 oktetów CRC (FCS) (4 oktety) Preambuła to siedem bajtów 10101010 oraz jeden bajt 10101011. Nie licząc preambuły ramka ma więc długość od 64 oktetów do 1518 oktetów. Same dane przenoszone w ramce mogą mieć rozmiar od 46 do 1500 oktetów. Na końcu ramki znajduje się Sekwencja kontrolna ramki (FCS – Frame Check Sequence), która zawiera CRC (Cyclical Redundancy Check). Po otrzymaniu ramki komputer docelowy sprawdza CRC i porównuje z FCS. Jeśli wykryje różnicę, ramka jest odrzucana. Pole „Typ danych” (EtherType) zawiera informację co znajduje się w danych przesyłanych w ramce. Pola „typ danych” i „dane”: Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Typ 0800 datagram IP (46-1500, w razie potrzeby uzupełniony bajtami wypełnienia) typ 0806 ARP zapytanie/ odpowiedź (28 oktetów) PAD (18 oktetów) typ 8035 RARP zapytanie/ odpowiedź (28 oktetów) PAD (18 oktetów) Uwaga! W programach śledzących ruch w sieci preambuła i pole CRC nie są widoczne (za wyjątkiem specjalnych snifferów warstwy 1). Minimalny rozmiar pola danych wynika z mechanizmu detekcji kolizji oraz oszacowania czasu przesyłania sygnałów. Rozmiar ten został określony dla Ethernetu 10Mbps i dla kompatybilności utrzymany w wersjach późniejszych. Sieć Ethernet może się składać z co najwyżej pięciu segmentów przedzielonych węzłami (za taki węzeł uważa się również wzmacniak (repeater)). Przy użyciu kabla 10Base5, każdy segment może mieć maksymalnie 500 metrów, czyli cała sieć nie może być dłuższa niż 2500 metrów. Czas potrzebny na przebycie całej sieci nazywany jest opóźnieniem propagacji i dla najdłuższej sieci Ethernet 10Mbps wynosił 28,8 mikrosekundy (µs). W niekorzystnym przypadku, do rozpoznania kolizji będzie potrzebny czas dwukrotnie dłuższy niż opóźnienie propagacji (jest to tzw. szczelina czasowa). W ciągu 57,6 µs z prędkością 10Mbps węzeł Ethernetu nadaje 72 bajty. Odejmując długość preambuły (8B), adresów docelowego i źródłowego (razem 12B) oraz pola „typ” (2 bajty) i CRC (4B) zostaje na dane 46 bajtów. Jeśli dane tyle nie zajmują, to są uzupełniane. To uzupełnienie nie wlicza się w długość datagramu IP ani ramki ARP czy RARP. PAD (inaczej FP – Frame Padding) uzupełnienie do minimalnej długości. Ramka IEEE 802.3 W wyniku działań grup zadaniowych Projektu IEEE 802 powstały między innymi następujące standardy (a właściwie grupy standardów): 802.2 – standard wspólny dla wszystkich technologii rozważanych w projekcie 802 (Ethernet, Token Ring, Token Bus) – definiuje tzw. warstwę kontroli łącza logicznego (LLC). 802.3 – określa standardy sieci LAN warstw fizycznej i łącza danych (podwarstwa MAC) (nieformalnie: Ethernet). 802.4 – standard sieci z topologią magistrali i metodą dostępu do sieci na zasadzie przesyłania tokenu (Token Bus), technologia ta w praktyce nie rozwinęła się. 802.5 – standard sieci Token Ring (obecnie nie używana). W 802.3 przedefiniowano pole Typ (2 oktety) na pole Długość ramki. Wewnątrz ramki umieszcza się dodatkowo tzw. nagłówek LLC. Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega IEEE w opracowywanych standardach podzielił warstwę łącza danych (warstwę 2 w modelu OSI) na dwie podwarstwy: Logical Link Control (LLC) oraz Media (Medium) Access Control (MAC). Podwarstwa LLC jest odpowiedzialna za multipleksowanie różnych protokołów warstw wyższych, tak by odpowiednie PDU (z różnych protokołów – IP, IPX, Decnet, Appletalk) mogły być transportowane przez wspólny nośnik. LLC obejmuje również sterowanie przepływem oraz kontrolę błędów i zapewnienie niezawodności, jednak te właściwości w większości sieci są realizowane w protokołach warstw wyższych, co czyni LLC niezbyt użyteczną (ta funkcja LLC nie jest wykorzystywana w technologiach z grupy 802.3). Podwarstwa MAC zajmuje się m.in. dodawaniem/sprawdzaniem FCS, wymuszaniem odpowiedniego odstępu między ramkami, odrzucaniem niepoprawnych ramek, dodawaniem preambuły i SFD, uzupełnianiem ramek (PAD). W ramkach 802.3 identyfikacja protokołów została przesunięta do tzw. podramki LLC i SNAP (Sub-Network Access Protocol) dołączanej do pola Dane. Nagłówek LLC zawiera trzy bajty, dla 802.3 jest to AA AA 03. Nagłówek SNAP ma pięć bajtów. Na trzech pierwszych bajtach zawiera zera, natomiast dwa pozostałe służą do identyfikacji protokołów warstwy wyższej. (Generalnie SNAP może zawierać inne wartości na pierwszych trzech bajtach – jest to IEEE Organizationally Unique Identifier OUI zarejestrowany dla firmy lub organizacji; stosowanie OUI daje możliwość definiowania prywatnych protokołów przez różne firmy/organizacje). Długość pól od początku nagłówka LLC do ostatniego bajtu danych musi być większa bądź równa 46 i mniejsza bądź równa 1500. Na same dane (np. datagram IP) zostaje więc maksymalnie 1492 oktety (a minimum 38 oktetów). Podstawowa ramka IEEE 802.3: Preambuła SFD Adres (7 oktetów) (1 oktet) odbiorcy (MAC 6 oktetów) Adres nadawcy (MAC 6 oktetów) Długość LLC+SNAP + Sekwencja (2 oktety) Dane kontrolna (3+5+ ramki 38 do 1492 (4 oktety) oktety) Każdą ramkę poprzedza 7-oktetowa Preambuła (7 oktetów 10101010). Ramka rozpoczyna się za 1 oktetowym ogranicznikiem początku ramki (SFD – Start of Frame Delimiter). Oktet SFD to 10101011. Podramki LLC były wykorzystywane przez niektóre starsze protokoły (NetBEUI, NetWare IPX, SNA). Ze względu na małą wartość LLC oraz zmniejszenie miejsca na dane, ramki Ethernet II zostały uznane za lepsze dla technologii Ethernet i obecnie obydwa formaty ramek są akceptowane przez standard IEEE 802.3. Ponadto dodano możliwość określenia tzw. sieci VLAN (sieci VLAN będą omówione na innym wykładzie) poprzez dodanie opcjonalnego znacznika 802.1Q. Poniższy rysunek obrazuje różne formaty ramek Ethernet (źródło: Wikipedia): Sieci komputerowe. 1. Wprowadzenie, „ABC” sieci komputerowych. dr Henryk Telega Pole „Ethertype” zawiera wartości, które nie mogą być uznane za poprawną długość ramki, zatem zawartość tego pola określa, czy mamy do czynienia z ramką Ethernet II, czy Ethernet z LLC i SNAP. Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Adresacja IPv4 (Internet Protocol, wersja 4) 1. Przypomnienie Komputer, który chce wysłać pewne dane do innego komputera poprzez sieć, musi skonstruować odpowiednią ramkę (ramki). W nagłówku ramki musi znaleźć się adres fizyczny komputera docelowego (w sieci Ethernet jest to tzw. adres MAC). Jednak w Internecie podstawowym adresem komputera jest adres IP, czyli adres zgodny z protokołem IP. W tym dokumencie omówione zostały zasady adresowania (adresacja) IPv4 (IP wersja 4). Nowsza wersja IP – Ipv6 będzie omawiana oddzielnie. Wewnątrz ramki w części przeznaczonej na dane znajduje się na ogół pakiet (datagram IP), a w nagłówku pakietu jest zapisany adres źródłowy i docelowy IP. Na podstawie adresów IP routery kierują pakiety (datagramy IP) tak, by trafiły one do określonego miejsca docelowego w Internecie. Router (ruter) jest specjalnym komputerem, którego zadaniem jest kierowanie datagramów w sieci Internet. Routerem może być również „zwykły” komputer, na którym zostało uruchomione odpowiednie oprogramowanie (np. demon routed w systemie Linux czy usługi routowania w systemie Microsoft Windows Server). Router ma na ogół co najmniej dwie karty sieciowe, nazywane interfejsami. Poprzez interfejsy routery są podłączane do sieci lokalnych, pojedynczych komputerów czy też łączą się między sobą. Routery często mają różne typy interfejsów, wykorzystujących różne technologie, np. Ethernet, ISDN, Frame relay, E1, T1 itd. Wróćmy jeszcze do ramek. Wewnątrz ramki znajdują się na ogół są dwa typy adresów – adresy fizyczne i adresy IP. Adres fizyczny znajduje się w nagłówku ramki, natomiast adres IP znajduje się w nagłówku pakietu IP, który jest zawarty w ramce. W nagłówku ramki znajdują się adresy fizyczne (MAC) komputera wysyłającego i komputera przyjmującego ramkę. Te adresy to niekoniecznie adresy źródła i miejsca docelowego, do którego w końcu ma dotrzeć datagram przesyłany w ramce. To są adresy komputerów bezpośrednio uczestniczących w komunikacji, tj. osiągalnych poprzez jeden „skok” (hop) (np. połączonych wspólnym nośnikiem, kablem lub przyłączonych do jednego przełącznika switcha). Jeśli pakiet jest przekazywany w sieci Internet to może być wielokrotnie pakowany w ramki i rozpakowywany w kolejnych routerach. W pewnych technologiach sieciowych wykorzystywanych do bezpośredniego łączenia komputerów, w ramkach mogą nie być w ogóle używane adresy fizyczne (w połączeniach typu punkt-punkt). Są takie ramki (np. ramka ARP request), które w środku nie zawierają datagramu IP. Jeśli pewien fragment Internetu, przez który w ramkach przekazywany jest datagram IP, wykorzystuje technologie Ethernet, to za automatyczne wyszukanie odpowiedniego adresu 1 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega MAC następnego komputera, do którego ma być przekazany datagram IP przesyłany w sieci Internet jest odpowiedzialny protokół ARP. Uwaga. Adres IP jest przypisywany do karty sieciowej, nie do komputera. W szczególności niektóre komputery mogą mieć więcej niż jeden adres IP. Router na ogół ma przydzielony adres IP do każdego interfejsu. W niektórych technologiach jeden fizyczny interfejs routera może mieć skonfigurowanych więcej tzw. podinterfejsów, z których każdy ma swój adres IP (są to adresy z różnych sieci). 2. Zasady adresacji IPv4 Adres IP (w wersji IPv4) jest liczbą 32 bitową, zapisywaną często w tzw. notacji dziesiętnokropkowej. Każdy bajt adresu przedstawiany jest jako liczba dziesiętna, kolejne liczby określające kolejne bajty są oddzielone od siebie kropką. Przykład: 148.197.17.25 Czy adres 267.12.243.1 jest prawidłowy? Typy adresów IP (IPv4) Są trzy typy adresów IPv4: • • • Adresy jednostkowe (unicast) – przydzielane do pojedynczych interfejsów sieciowych (karty sieciowej), używane w komunikacji między dwoma węzłami (komputerami) sieci (one-to-one) Adresy rozgłoszeniowe (broadcast) – przeznaczone do przetwarzania przez wszystkie węzły w tym samym segmencie sieci, używane w komunikacji od jednego węzła (komputera) w sieci do wszystkich komputerów w pewnym segmencie sieci (one-toeveryone) Adresy grupowe (multicast) – na pakiety z takimi adresami czeka jeden lub wiele komputerów w jednej lub w różnych segmentach sieci. Używane są do przekazywania informacji w grupie użytkowników sieci (one-to-many), często stosowane do transmisji wideo (np. wideokonferencje) do wielu użytkowników. Składniki adresu IP (IPv4) W adresie IP zapisanym binarnie można wyróżnić dwie części: • Identyfikator sieci (Network ID, ID sieci), który składa się z pewnej liczby bitów z lewej strony adresu (tj. bardziej znaczących bitów) oraz 2 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega • Identyfikator hosta (komputera w sieci) (Host ID, ID hosta), który składa się z pozostałych bitów, tj. tych z prawej strony adresu. Terminem host określa się komputer, który jest końcowym konsumentem usług sieciowych (wg RFC 1122). Często zamiast Identyfikator Sieci mówie się prefiks (prefiks, czyli „początkowa” część adresu IP). Granica między identyfikatorem sieci a identyfikatorem hosta może być wyznaczona przez tzw. maskę sieci. Będzie o niej mowa za chwilę. Reguły stosowane do adresów IPv4 przypisanych do komputera (karty sieciowej): • • • • • • • Identyfikator sieci nie może się składać z samych jedynek. Identyfikator sieci nie może się składać z samych zer. Identyfikator sieci nie może się powtarzać w złożonej sieci. W pierwszym oktecie adresu (najbardziej znaczącym) nie może się znaleźć wartość 127 (jest ona zarezerwowana dla adresu tzw. pętli zwrotnej, czyli „samego siebie”). Identyfikator hosta nie może się składać z samych jedynek. Identyfikator hosta nie może się składać z samych zer. Identyfikator hosta (komputera) musi być unikalny w segmencie sieci lokalnej. Adres IP, który zawiera same zera w części dotyczącej hosta jest traktowany jako adres sieci (nie identyfikator sieci). Nie jest to adres pojedynczego komputera. Adres, zawierający same jedynki w części hosta jest traktowany jako rozgłoszenie w danej sieci, tzn. przeznaczeniem datagramu są wszystkie komputery w tej sieci. Adres ograniczonego rozgłoszenia Adres IP składający się z samych jedynek: 255.255.255.255 = 11111111 11111111 11111111 11111111 jest nazywany adresem ograniczonego rozgłoszenia i jest traktowany jako adres rozgłoszenia w danym segmencie sieci ograniczonym routerem/routerami. Pakiet o takim adresie nigdy nie powinien być przepuszczony przez routery. W odróżnieniu od adresów ograniczonego rozgłoszenia, adresy rozgłoszenia do sieci lub podsieci mają jedynki tylko w części hosta. Uwaga. Termin segment sieci lokalnej jest używany w literaturze w różnych znaczeniach. W tym dokumencie termin ten oznacza fragment sieci, który z resztą sieci komunikuje się poprzez jakiś router. W innym znaczeniu segment sieci może to być fragment sieci oddzielony od reszty innym niż router urządzeniem, np. przełącznikiem lub koncentratorem. Adresy IP można podzielić na dwie grupy: unikalne w Internecie (tzn. nie mogą się powtórzyć w skali całego świata) oraz nieunikalne. 3 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Adresy nieunikalne, to np. adresy rozpoczynające się od liczby 127, które oznaczają zawsze komputer lokalny (wspomniany już adres pętli zwrotnej – standardowo taki adres to 127.0.0.1). Adresami nieunikalnymi są również adresy tzw. transmisji grupowej. Do adresów nieunikalnych zaliczane są grupy tzw. adresów prywatnych. Przez długie lata w Internecie stosowane były tzw. klasy adresów. Od pewnego czasu powszechnie stosuje się adresowanie bezklasowe. Zagadnienia te będą omówione w kolejnych podrozdziałach. Binarny zapis liczb Liczba w notacji dziesiętnej (systemie dziesiętnym) może być traktowana jako suma pewnych iloczynów. Na przykład zapis 357 oznacza (będziemy ją analizować od prawej strony) 7*1 + 5*10 + 3*100, czyli liczbę trzysta pięćdziesiąt siedem. Każda cyfra tej liczby ma inną wagę. Kolejne wagi to 1, 10, 100. W systemie dziesiętnym jest dziesięć cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Uwaga. Oczywiście cyfra to coś zupełnie innego jak liczba (choć niektórzy mylą cyfry z liczbami!). Cyfra jest znakiem, podobnie tak jak litera. Przy pomocy cyfr zapisujemy liczby, podobnie jak przy pomocy liter zapisujemy wyrazy. W systemie binarnym (dwójkowym) są tylko dwie cyfry: zero i jeden. Wagi cyfr w zapisie binarnym są następujące: 1, 2, 4, 8, 16, 32, 64, 128, 256, itd. Liczba 10101101 oznacza (analizujemy od prawej strony): 1*1 + 0*2 + 1*4 + 1*8 + 0*16 + 1*32 + 0*64 + 1*128 = 173 Każdą liczbę można przedstawić korzystając z powyższego schematu Największa liczba, kaka może być zapisana na ośmiu bitach (czyli w jednym bajcie) to 1*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 1*128 = 255 Zatem w jednym bajcie można przedstawić 256 różnych liczb (0,1,2,3,…,255). Czy adres 267.12.243.1 jest prawidłowy? 4 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Nie, ponieważ liczby 267 nie da się zapisać w jednym bajcie (największa możliwa to 255). Zamiana zapisu dziesiętnego na binarny może być przeprowadzona w następujący sposób. Załóżmy, że chcemy zapisać binarnie liczbę 152. Wagi cyfr w jednym bajcie począwszy od największej są takie: 128, 64, 32, 16, 8, 4, 2, 1. Liczba 152 jest większa niż 128, zatem w liczbie tej 128 występuje. Cyfra dla tej wagi będzie 1. Następna cyfra musi być zero, ponieważ jej waga to 64. Gdyby cyfra ta była równa jeden, wówczas otrzymalibyśmy już liczbę 192 (1*128 + 1*64), czyli większą od 152. Mamy zatem na razie dwie skrajne lewe cyfry: 10 (1*128 + 0*64). Trzecia cyfra też musi być zero, gdyż jej waga to 32, gdybyśmy dodali do 128 (1*128+0*64) liczbę 32, otrzymamy 160, czyli więcej niż 152. Mamy zatem trzy skrajne lewe cyfry: 100 (1*128 + 0*64 +0*32). Czwarta cyfra musi być jeden, gdyż jej waga to 16. Liczba 152 jest większa od 144 (1*128+0*64 +0*32+1*16=144 ). Mamy już cztery cyfry od lewej strony: 1001 (1*128 + 0*64 +0*32). Piąta cyfra musi być jeden, gdyż jej waga to 8 (1*128+0*64 +0*32+1*16 + 1*8 =152). Mamy już pięć cyfr od lewej strony: 10011 (1*128 + 0*64 +0*32 +1*16 +1*8). Otrzymaliśmy już 152, zatem pozostałe trzy cyfry (liczbę zapisujemy na ośmiu bitach) muszą być równe zero. 10011000 (1*128 + 0*64 + 0*32 + 1*16 + 1*8 + 0*4 + 0*2 + 0*1) = 152. Adresowanie oparte na klasach Adresowanie oparte na klasach (adresowanie klasowe) opiera się na pomyśle podzielenia wszystkich sieci na pewne grupy zwane klasami. Pierwszy bajt adresu determinuje do jakiej klasy należy sieć (patrz tabela poniżej – kolumna zakres 1-go bajta). 195.156.65.12 195.156.72.5 255.255.255.0 Klasy adresów sieci Klasa A B C D E Adres IP w.x.y.z w.x.y.z w.x.y.z w.x.y.z w.x.y.z Adres sieci w.0.0.0 w.x.0.0 w.x.y.0 nie dotyczy nie dotyczy Zakres 1-go bajtu (w) 1 – 126 128 – 191 192 – 223 224 – 239 240 – 255 Najstarsze bity 0 10 110 1110 11110 Jak widać, klasę adresu można określić np. przez podanie pozycji pierwszego bitu zera w pierwszym bajcie (licząc od lewej strony). 5 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Adresy klasy A Jest 126 sieci klasy A, przy czym każda z tych sieci może zawierać 224-2 tj. 16 777 214 komputerów. Jest tak dlatego, że na identyfikator sieci w sieciach klasy A jest przeznaczony tylko jeden bajt (i tylko liczby z zakresu 1-126), zatem na identyfikator komputera (hosta) zostaje trzy bajty. Wszystkich kombinacji zer i jedynek w trzech bajtach (24 bitach) jest 224, przy czym dwie z tych kombinacji nie mogą być wykorzystane na adres komputera – są to same zera i same jedynki. Same zera w części adresu dotyczącej hosta oznaczają adres sieci, natomiast same jedynki oznaczają adres rozgłoszeniowy w danej sieci. Pierwszy (w naturalnej kolejności wynikającej z identyfikatorów sieci) adres sieci klasy A jest 1.0.0.0, ostatni 126.0.0.0. Adres „pierwszego” komputera w sieci klasy A to w.0.0.1 (w jest pierwszym oktetem adresu), adres „ostatniego” komputera to w.255.255.254. Adresy klasy B Z kolei w sieciach klasy B dwa bardziej znaczące bajty adresu oznaczają identyfikator sieci, a dwa mniej znaczące identyfikator hosta. W sieci klasy B może być zatem 216-2 = 65 534 komputerów, a sieci takich jest (191-128+1)*256 = 16 384. Pierwszy adres sieci klasy B jest 128.0.0.0, ostatni 191.255.0.0 Adres „pierwszego” komputera w sieci klasy B to w.x.0.1 (w jest pierwszym oktetem adresu, x jest drugim oktetem), adres „ostatniego” komputera to w.x.255.254. Adresy klasy C W sieciach klasy C trzy najbardziej znaczące bajty sieci oznaczają identyfikator sieci, tylko jeden bajt jest przeznaczony na identyfikator hosta. Zatem w takiej sieci może być co najwyżej 28-2 = 256-2 = 254 komputery, a sieci takich jest (192-223+1)*256*256 = 2 097 152. Pierwszy adres sieci klasy C jest 192.0.0.0, ostatni 223.255.255.0 Adres „pierwszego” komputera w sieci klasy C to w.x.z.1 (w jest pierwszym oktetem adresu, x jest drugim oktetem, z trzecim oktetem), adres „ostatniego” komputera to w.x.z.254. Adresy klasy D Adresy tej klasy przeznaczone są do transmisji grupowych. Transmisja grupowa będzie omówiona w dalszej części zajęć z sieci komputerowych. Adresy klasy E Klasa E to adresy zarezerwowane (nie wykorzystywane normalnie do transmisji pakietów). 6 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Adresy pętli zwrotnej (loopback) Adres postaci 127.x.y.z (na ogół 127.0.0.1) zarezerwowany jest dla tzw. pętli zwrotnej (cały ruch przesyłany na ten adres nie wychodzi z komputera). Maski sieci Identyfikator sieci można określić na podstawie adresu IP oraz tzw. maski sieci. Maska sieci jest też liczbą binarną 32 bitową, zapisywaną podobnie jak adres IP, jednak maska zawsze z lewej strony (na bardziej znaczących bitach) ma jedynki, natomiast z prawej ma zera. Przykłady masek: 11111111.00000000.00000000.00000000 11111111. 11111111.00000000.00000000 W zapisie dziesiętno-kropkowym będzie to odpowiednio 255.0.0.0 i 255.255.0.0. Można też stosować inny zapis – po adresie IP jest ukośnik, a za nim liczba, oznaczająca ile jest jedynek w masce. Dla powyższych masek byłoby to odpowiednio /8 oraz /16. Aby wyznaczyć ID sieci na podstawie adresu IP oraz maski należy przepisać wszystkie wartości tych bitów w zapisie binarnym adresu IP, dla których w odpowiedniej pozycji maski ustawiona jest jedynka. Tak rozumiany ID sieci ma mniej bitów niż 32. Termin ten nie jest powszechnie używany – częściej można spotkać termin adres sieci. Adres sieci ma zawsze 32 bity i jest uzyskany z identyfikatora sieci, do którego w części dotyczącej hosta wpisane są same zera. Na przykład (w zapisie dziesiętno-kropkowym): Adres IP: Maska: ID sieci: Adres sieci: 10.50.100.203 255.0.0.0 10 10.0.0.0 Zapis adresu z maską może być też taki: 10.50.100.203 / 8 Ten sam przykład w zapisie binarnym: Adres IP: Maska: ID sieci: Adres sieci: 00001010.00110010.01100100.11001011 11111111.00000000.00000000.00000000 00001010 00001010.00000000.00000000.00000000 7 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Standardowe maski sieci dla sieci klasowych Klasa A B C Adres IP w.x.y.z w.x.y.z w.x.y.z Maska sieci 255.0.0.0 (/8) 255.255.0.0 (/16) 255.255.255.0 (/24) ID sieci w w.x w.x.y ID komputera (hosta) x.y.z y.z z Dzielenie sieci na podsieci Jeśli dostawca Internetu przydzielił sieć pewnej klasy, to sieć tę można podzielić na mniejsze fragmenty podłączone do różnych interfejsów tego samego routera lub do kilku routerów. Te fragmenty sieci nazywane są podsieciami. Jak już powiedziano, routery są urządzeniami kierującymi (przekazującymi) datagramy IP dalej (do sieci, podsieci lub innego routera. Sieci dzielone są na segmenty m.in. w celu zwiększenia efektywności działania: zmniejszenia ruchu w segmentach, ograniczenia zakresu rozgłaszania pakietów i ramek (np. ramki ARP Request mają dotrzeć do wszystkich komputerów w pewnej sieci lub podsieci i nigdy nie zostaną przekazane poza router). Dzielenie sieci na podsieci zmniejsza tzw. dziedziny rozgłaszania (dziedzina rozgłaszania do obszar, w którym przekazywane są ramki rozgłoszeniowe, tj. ramki z adresem MAC ff-ff-ff-ff-ff-ff-). Inny powód dzielenia sieci na podsieci to względy bezpieczeństwa. Routery mogą działać jako filtry pakietów, które przepuszczają między sobą tylko pakiety spełniające określone kryteria. Adres podsieci można określić przez użycie niestandardowych masek sieci, zwanych w takich przypadkach też maskami podsieci. Przykład. Określamy niestandardową maskę 255.255.255.0 dla sieci klasy B. Jeśli weźmiemy adres np. 149.159.12.136, to 149.159.0.0 jest adresem całej sieci, natomiast 149.159.12.0 jest adresem podsieci (wynikającej z zastosowanej podanej maski podsieci). W sieciach klasy A możemy stosować maski niestandardowe 255.255.0.0 lub 255.255.255.0. Zatem podsieć sieci klasy A też może być dalej dzielona na podsieci. Zwróćmy jednak uwagę na pewien problem. Routery przechowują w swoich pamięciach informacje o znanych im trasach do pewnych sieci. Informacje te znajdują się w tablicach routowania. Administrator w trakcie konfiguracji routera wprowadza informacje o sieciach 8 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega bezpośrednio przyłączonych do routera. Potem, po włączeniu opcji dynamicznego routowania routery wymieniają się informacjami o sieciach i na tej podstawie budują sobie pewien obraz sieci i potrafią wyznaczać trasy datagramów. Ta wymiana informacji między routerami odbywa się zgodnie z protokołami routowania. Popularne protokoły routowania to RIP, RIP2, OSPF, IGRP, EIGRP, BGP. Protokoły te różnią się możliwościami, np. protokół RIP jest starszym protokołem i „rozumie” tylko adresowanie klasowe bez użycia masek podsieci. Rozważmy dwie sieci: 1) 149.159.0.0 z maską 255.255.0.0 (czyli 149.159.0.0/16) – tutaj ID sieci to 149.159, w sieci można zaadresować 216-2 =65 534 komputery 2) 149.159.0.0 z maską 255.255.255.0 (czyli 149.159.0.0/24) – tu ID sieci to 149.159.0, w sieci można zaadresować 28-2 =254 komputery. Są to różne sieci (druga jest podsiecią pierwszej). Jednak routery nie stosujące masek podsieci nie rozróżnią jednej sieci od drugiej. Ponadto adres 149.159.255.255 może być traktowany dwojako. Jeśli maska jest 255.255.0.0, to jest to adres rozgłoszenia w całej sieci 149.156.0.0/16. Natomiast, jeśli maskę przyjmiemy 255.255.255.0, to wówczas adres 149.159.255.255 jest rozgłoszeniem w sieci o adresie 149.159.255.0. Jakie jest wyjście z sytuacji? Można zabronić stosowania adresów typu 149.159.255.0 czy 149.159.0.0/24, czyli takich, w których, jeśli rozpatrujemy je jako adresy klasowe, w części normalnie przeznaczonej na identyfikator hosta pojawiają się na początku jedynki lub zera. Są to adresy podsieci określane czasem jako podsieci jedynek lub podsieci zer. Pierwotnie dokument RFC 950 zakazywał stosowania takich podsieci. Zakaz ten ma oczywiście taką wadę, że zmniejsza się liczba dostępnych podsieci i w konsekwencji część adresów IP pozostaje niewykorzystana. Obecnie dokument RFC 1812 zezwala na używanie podsieci zer i jedynek w środowisku sieci nie opierających się na klasach, tzn. takich w których routery rozpoznają adresowanie bezklasowe. Adresowanie takie jest tematem rozważań w kolejnym podrozdziale. Z podsieciami zer i jedynek należy jednak uważać, gdyż nie wszystkie routery potrafią je obsługiwać, a czasami obsługa jest możliwa, jednak wymaga dodatkowej konfiguracji. Określanie komputerów lokalnych (w tej samej sieci lokalnej) i odległych (oddzielonych co najmniej jednym routerem) Komputery, które mają takie same identyfikatory podsieci (wyznaczone przez maskę podsieci) są w tym samym segmencie i określane są jako lokalne względem siebie, tzn. są w tym samym segmencie sieci lokalnej (segment ten jest oddzielony routerem od innych segmentów). Jeśli choć na jednym bicie w ID podsieci jest różnica, komputery są względem siebie odległe (przedzielone przynajmniej jednym routerem). Przykłady: Komputer A: 162.168.1.100 Komputer B: 162.168.2.101 Maska 255.255.0.0 9 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Komputery są względem siebie lokalne. Przy masce 255.255.255.0 Komputery są względem siebie odległe (przedzielone routerem). Adresowanie bezklasowe Dzielenie sieci na podsieci jest w wielu przypadkach korzystne i prowadzi do lepszego wykorzystania puli adresów IP. Rodzi się też pytanie, czy nie można podzielić sieci na podsieci z użyciem dowolnej liczby jedynek, nie tylko 16 czy 24. Na przykład, jeśli w sieci klasy B o adresie 149.159.0.0 /16 zastosowalibyśmy maskę podsieci nie 24 jedynkową (co daje 254 lub 256 podsieci z możliwością adresowania do 254 komputerów) tylko z 22 jedynkami. Otrzymalibyśmy 62 lub 64 sieci, z których każda mogłaby mieć 1022 komputery. Co więcej – można by w ogóle zrezygnować z wyznaczania klas, jeśli routery potrafią obsługiwać maski o dowolnej liczbie jedynek. Zamiast stosowania zasad adresowania klasowego, w którym do określenia sieci wystarczy podać adres IP sieci, do określenia sieci należałoby podać adres sieci oraz maskę. Obecnie w Internecie powszechnie jest wykorzystywane adresowanie bezklasowe. Przykład. Jeśli firma ma np. 1000 komputerów, to przydzielenie jej adresów klasy B jest marnotrawstwem, gdyż w takiej sieci można zaadresować ponad 65 tysięcy komputerów. Jeśli firma dostałaby np. sieć 149.159.0.0 / 16, to nikt inny w Internecie już nie mógłby mieć adresów rozpoczynających się od 149.159, gdyż routery nie mogą kierować ruchu do sieci 149.159.0.0 /16 w dwa różne miejsca. Należy zatem firmie przydzielić cztery sieci klasy C. Jednak właśnie na adresy z klasy C jest największe zapotrzebowanie i zanim wprowadzono takie mechanizmy jak adresowanie bezklasowe, adresy prywatne i translację adresów były prognozy, że adresy sieci klasy C szybko się wyczerpią (jeszcze w latach 90-tych). Adresowanie bezklasowe umożliwia dzielenie sieci na segmenty o większej (niż w przypadku adresów klasowych) różnorodności rozmiarów. Dla organizacji, która posiada 2000 komputerów klasa C jest zbyt mała, natomiast B jest o wiele za duża (daje możliwość zaadresowania). Można przydzielić osiem sieci klasy C, ale taki sposób działania powoduje to znaczne zapotrzebowanie na adresy klasy C. W przypadku zastosowania adresowania bezklasowego należałoby przydzielić sieć z maską, która ma 21 jedynek (/21). Wówczas w adresie IP 11 bitów przeznaczonych jest na identyfikator hosta, zatem wszystkich możliwych identyfikatorów jest 211-2 = 2048-2 = 2046. Przykład adresu IP z sieci bezklasowej: 145.217.123.7 / 20 Liczba po ukośniku oznacza liczbę jedynek (od lewej strony) w masce. Inny zapis takiej maski: 255.255.240.0 Zadanie: Wyznaczyć ID sieci, adres IP sieci, adres „pierwszego” komputera w tej sieci i adres „ostatniego” komputera w tej sieci oraz adres rozgłoszenia w tej sieci. Rozwiązanie na wykładzie. 10 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Zadanie: Weźmy pod uwagę adres IP z maską: 149.156.14.35, maska 255.255.248.0 Należy wyznaczyć adres IP sieci, adres „pierwszego” komputera w tej sieci i adres „ostatniego” komputera w tej sieci oraz adres rozgłoszenia w tej sieci. Obliczenie adresu sieci: 149.156. 0000 1110 .35 255.255. 1111 1000 .0 Adres sieci: 149.156. 0000 1000 .0 W notacji dziesiętno-kropkowej: 149.156.8.0 Zadanie: Rozważmy dwa komputery: Komputer A: 10.217.123.7 / 10 Komputer B: 10.218.102.31 / 10 Określić ID sieci oraz czy komputery są względem siebie lokalne czy odległe (tj. oddzielone przynajmniej jednym routerem). Zadanie: Rozważmy ID sieci określony następująco: 172.16.8.0 z maską: 255.255.248.0 Należy wypisać przykładowe adresy komputerów, które są lokalne względem siebie (czyli są w tej samej sieci) wg powyższych danych. Przy adresowaniu bezklasowym trzeba jednak jeszcze zwrócić uwagę na jeden problem. W routerach przechowywane są tablice routowania, które zawierają wpisy dla każdej znanej dla routera sieci. Główne routery w Internecie zawierają tysiące wpisów. Pewnym usprawnieniem byłaby możliwość przechowywania tylko jednego wpisu do całej grupy sieci. Istnieje możliwość łączenia sieci w tzw. supersieci (supernets). Wpis w tablicy routowania reprezentujący supersieć bywa określany terminem podsumowanie lub agregacja lub sumaryzacja. Na przykład zamiast wpisywać osobno trasy do sieci 203.124.0.0 / 24, 203.124.1.0 / 24, 203.124.2.0 / 24, 203.124.3.0 / 24 można zapisać trasę do sieci 203.124.0.0 / 22 11001011.01111100.00000000.00000000 11001011.01111100.00000001.00000000 11001011.01111100.00000010.00000000 11001011.01111100.00000011.00000000 11111111.11111111.11111111.00000000 203.124.0.0 / 24 203.124.1.0 / 24 203.124.2.0 / 24 203.124.3.0 / 24 maska 11 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega Sumaryzacja tych sieci: 11001011.01111100.00000000.00000000 203.124.0.0 / 22 11111111.11111111.11111100.00000000 maska Podobny przykład: zamiast wpisywać osobno trasy do sieci 203.124.96.0 / 24, 203.124.97.0 / 24, 203.124.98.0 / 24, 203.124.99.0 / 24 można zapisać trasę do sieci 203.124.96.0 / 22 11001011.01111100.01100000.00000000 11001011.01111100.01100001.00000000 11001011.01111100.01100010.00000000 11001011.01111100.01100011.00000000 11111111.11111111.11111111.00000000 203.124.96.0 / 24 203.124.97.0 / 24 203.124.98.0 / 24 203.124.99.0 / 24 maska Podsumowania tych sieci: 11001011.01111100.01100000.00000000 203.124.96.0 / 22 11111111.11111111.11111100.00000000 maska Uwaga do powyższych przykładów – zezwolono tu na podsieci jedynek i zer (wyjaśnienie na wykładzie). Podsieci o różnych rozmiarach (VLSM – variable length subnet masks) Podział sieci 149.159.0.0 / 16 z wykorzystaniem maski zawierającej 19 jedynek prowadzi do powstania ośmiu sieci, z których każda może zawierać 8190 komputerów. 10010101.10011111.00000000.00000000 149.159.0.0 11111111.11111111.11100000.00000000 maska z 19 jedynkami Oto te podsieci: a) b) c) d) e) f) g) h) 10010101.10011111.00000000.00000000 10010101.10011111.00100000.00000000 10010101.10011111.01000000.00000000 10010101.10011111.01100000.00000000 10010101.10011111.10000000.00000000 10010101.10011111.10100000.00000000 10010101.10011111.11000000.00000000 10010101.10011111.11100000.00000000 podsieć 149.159.0.0 / 19 podsieć 149.159.32.0 / 19 podsieć 149.159.64.0 / 19 podsieć 149.159.96.0 / 19 podsieć 149.159.128.0 / 19 podsieć 149.159.160.0 / 19 podsieć 149.159.192.0 / 19 podsieć 149.159.224.0 / 19 Jednak czasami istnieje potrzeba podzielenia sieci na segmenty (podsieci) niejednakowych rozmiarów (podsieci o różnych liczbach jedynek w masce). Na przykład można byłoby podzielić tę sieć w ten sposób: 12 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega • • • • Połowa adresów będzie przeznaczona na przyszłe zastosowania (np. mogą to być pierwsze cztery sieci z wyżej podanych). Kolejne trzy podsieci będą zawierały do 8190 komputerów każda. Mogą to być podsieci z podpunktów e, f i g. Kolejne 31 podsieci będzie zawierało do 254 komputerów każda. Sieć z podpunktu h można podzielić stosując maskę z 24 jedynkami. Otrzymamy wówczas 32 podsieci 10010101.10011111.11100000.00000000 149.159.224.0 / 24 10010101.10011111.11100001.00000000 149.159.225.0 / 24 ... 10010101.10011111.11111110.00000000 149.159.254.0 / 24 10010101.10011111.11111111.00000000 149.159.255.0 / 24 Wykorzystamy 31 pierwszych podsieci, a ostatnią (32-gą) podzielimy na 16 podsieci po 14 komputerów 16 podsieci będzie zawierało po 14 komputerów. Będą to podsieci uzyskane w wyniku zastosowania maski zawierającej 28 jedynek: 10010101.10011111.11111111.00000000 149.159.255.0 / 24 11111111.11111111.11111111.11110000 10010101.10011111.11111111.00000000 10010101.10011111.11111111.00010000 10010101.10011111.11111111.00100000 ... 10010101.10011111.11111111.11110000 149.159.255.0 / 28 149.159.255.16 / 28 149.159.255.32 / 28 149.159.255.224 / 28 Gdybyśmy mieli wyznaczyć adresy komputerów z podsieci np. 10010101.10011111.11111111.00010000 149.159.255.16 / 28, to byłyby to kolejno 149.156.255.17, 149.156.255.18, ..., 149.156.255.30. Adres 149.156.255.31/28 byłby tu adresem rozgłoszenia w sieci 149.156.255.16/28, natomiast adres 149.156.255.32/28 jest już adresem następnej sieci. Adresy prywatne, translacja adresów Adres IPv4 jest 32 bitowy i gdyby nie wprowadzono pewnych specjalnych mechanizmów takich jak translacja adresów, adresy prywatne i omówione już adresowanie bezklasowe już dawno zabrakłoby adresów w Internecie. Adresy prywatne to adresy, które nie są unikalne w skali świata. Tabela prezentuje grupy adresów prywatnych. Wybrane adresy prywatne: ID Sieci 10.0.0.0 172.16.0.0 192.168.0.0 Maska podsieci 255.0.0.0 255.240.0.0 255.255.0.0 Zakres adresów IP 10.0.0.1 - 10.255.255.254 proszę uzupełnić samodzielnie !!! 192.168.0.1 - 192.168.255.254 13 Sieci komputerowe. 2. Adresacja IPv4. dr H. Telega W Internecie może być bardzo dużo komputerów o pewnym konkretnym adresie wybranym z podanych w tabeli zakresów. Jak zatem mogą do nich docierać datagramy IP, skoro routery nie mogą przekazywać datagramów na adresy prywatne? Otóż w sieciach z takim adresowaniem za kontakt z „resztą świata”, czyli z Internetem jest odpowiedzialny pewien komputer, na którym uruchomiona jest usługa translacji adresów (określana jako NAT – Network Address Translation). Jeśli komputer z adresem prywatnym wysyła coś do Internetu, to przy przejściu przez komputer dokonujący translacji adresów (router NAT), następuje zamiana adresu źródła na zewnętrzny adres IP routera NAT. Zatem komputer docelowy otrzyma pakiet z wpisanym adresem źródłowym równym adresowi zewnętrznemu routera NAT. Adres ten oczywiście nie może być adresem prywatnym. Zatem ewentualna odpowiedź zostanie przesłana do routera NAT (na adres zewnętrzny routera NAT). Router NAT dokona zamiany adresu docelowego na odpowiedni adres komputera docelowego (jest to adres prywatny), przy czym do określenia do którego komputera z sieci wewnętrznej (o adresach prywatnych) pakiet ma dotrzeć, mogą być wykorzystane są tzw. numery portów – wówczas mówi się o wersji NAT o nazwie PAT – Port Address Translation. Do zagadnienia tego jeszcze wrócimy dokładniej po omówieniu protokołów TCP i UDP. Adresy wykorzystywane do samokonfiguracji. Adresy 169.254.0.1 – 169.254.255.254 są używane przez komputery w sieci lokalnej przy braku obecności serwera DHCP po kilku próbach nawiązania z nim kontaktu. 14 Sieci komputerowe, rok akad. 2023/2024 dr H. Telega Routowanie (trasowanie) Routowanie jest to proces przesyłania pakietów (datagramów IP) od hosta nadawczego do odbiorcy na ogół z wykorzystaniem routerów pośredniczących. W literaturze polskojęzycznej spotyka się również inne określenia: trasowanie, routing. Każdy host oraz router podejmuje decyzje jak (którędy) przesłać datagram. Decyzje te są podejmowane na podstawie tzw. tabel routowania oraz pewnych reguł. W przypadku, gdy w routerze tabela routowania jest wypełniona wpisami statycznymi i nie zmienia się, mówi się o routowaniu statycznym. Jeśli tabela routowania zmienia się dynamicznie na podstawie protokołów routowania, mówi się o routowaniu dynamicznym. Protokół IPv4 jest jednym z protokołów routowalnych (routed protocols). Są też inne protokoły routowalne, np. IPX firmy Novell (należący do stosu protokołów określanego jako IPX/SPX), AppleTalk, IPv6. Routery mogą realizować trasowanie również dla pakietów z protokołów innych niż IPv4. Jednak protokół IPv4 jest w tej chwili najważniejszym protokołem routowalnym w Internecie. Jego następcą jest IPv6 (będzie omówiony na innym wykładzie). Tablice routowania w hostach i routerach mogą być uzupełniane częściowo automatycznie, częściowo poprzez wpisy statyczne. Wpisy w tablicy routowania hosta mogą też wynikać z tzw. przekierowania ICMP (będzie o tym w dalszej części wykładu). Ponadto dla routerów tablica routowania na ogół jest modyfikowana dynamicznie na podstawie tzw. protokołów routowania (routing protocols). Protokoły routowania określają w jaki sposób routery mają wymieniać między sobą informacje na temat połączeń między routerami w sieci (topologia połączeń, stan połączeń) i jak na podstawie tych informacji mają aktualizować swoje tablice routowania. Przykładowe protokoły routowania to RIP, RIP2, OSPF, IGRP, EIGRP, BGP. W przypadku, gdy w routerze tablica routowania jest wypełniona wpisami statycznymi i nie zmienia się, mówi się o routowaniu statycznym. Jeśli tablica routowania zmienia się dynamicznie na podstawie protokołów routowania, mówi się o routowaniu dynamicznym. Przesyłanie datagramu może być realizowane do hosta (lub routera) bezpośrednio dołączonego do hosta (lub routera) wysyłającego lub za pośrednictwem routerów. Bezpośrednie połączenie może być typu • • • rozgłoszenia: na przykład – Ethernet; działa protokół ARP, punkt-punkt: technologie sieci rozległych WAN, którym poświęcony będzie inny wykład np. analogowa linia telefoniczna, linia telefonii cyfrowej ISDN, T-carrier: T1, E1, T3, E3; ARP nie jest wykorzystywany; wielodostęp nierozgłoszeniowy (NBMA – Non Broadcast Multiple Access): technologie przełączania pakietów WAN Frame Relay, ATM; ARP nie jest wykorzystywany. Sieci komputerowe, rok akad. 2023/2024 dr H. Telega W przypadku, gdy docelowy host (IP) jest połączony bezpośrednio (połączenie punkt-punkt) lub leży w sieci LAN bezpośrednio dołączonej do hosta, wówczas datagram IP jest wysyłany bezpośrednio do punktu lub sieci. W pozostałych przypadkach host wysyła datagram IP do domyślnego lub innego routera wynikającego z tablicy routowania. Komputery działające pod wieloma systemami operacyjnymi (w tym pod różnymi odmianami systemu Unix, oraz Windows Server) można skonfigurować tak, by pełniły role routerów. Komputer taki musi mieć ca najmniej dwa interfejsy (np. karty Ethernet) łączące go z innymi komputerami/routerami. Tablica routowania IP Tablica routowania zawiera wpisy dotyczące tras do hostów, routerów i sieci. Zwykle w hostach (nie routerach) liczba wpisów jest dużo mniejsza od liczby wpisów w routerach i zawiera informacje o bramie domyślnej. Brama domyślna to router, do którego kierowany jest datagram, jeśli nie została znaleziona dla niego lepsza trasa w tablicy routowania. W każdym hoście i routerze dla każdego przesyłanego pakietu IP na podstawie tablicy routowania wyznaczane są dwie wartości: • • interfejs – reprezentacja fizycznego urządzenia, przez które ma być wysłany pakiet, adres IP następnego routera, do którego ma być skierowany datagram (lub adres docelowy hosta, jeśli jest bezpośrednio dołączony do nadawcy), czasem mówi się o adresie następnego skoku. Przykładowa struktura wpisu (wiersza) w tablicy routowania Tablica routowania zawiera następujące pozycje (pola): Przeznaczenie (Destination). W koniunkcji (logiczne AND) z polem Maska zawiera informację o zakresach adresów IP, które są dostępne przy użyciu tej trasy. Pole to może zawierać ID sieci lub adres IP konkretnego hosta lub routera. W prawidłowym wpisie pole Przeznaczenie nie może zawierać jedynek (w zapisie binarnym) w miejscu, gdzie w Masce sieci są zera (binarnie). Maska sieci (Network mask). Zawiera maskę sieci, może też zawierać same jedynki (255.255.255.255). Adres następnego skoku (Next hop address). Adres IP, do którego datagram będzie przesłany w następnym kroku, jeśli zostanie wybrana ta trasa. Jest bez znaczenia dla połączeń punkt-punkt. Interfejs. Oznaczenie interfejsu, przez który datagram będzie przesłany do miejsca określonego przez pole Adres następnego skoku. W MS Windows interfejsy są określane przez adresy IP przypisane do interfejsów. Mogą być też określone przez numery przypisane do interfejsów. Numery te (oraz całą tablicę routowania) wyświetla polecenie route print. W systemie Linux typowe oznaczenia dla kart Ethernet to eth0, eth1. W routerach Cisco np. e0 (Ethernet 10Mbps), f1 (Fast Ethernet 100Mbps), g0 (Gigabit Ethernet), s1 (Serial). Sieci komputerowe, rok akad. 2023/2024 dr H. Telega Metryka. Liczba wskazująca na koszt trasy. Im wyższa wartość, tym „gorsza” trasa. Metryki są porównywane w przypadku, gdy tablica routowania zawiera więcej niż jedną trasę do miejsca przeznaczenia. Dopuszczalne wartości metryk i ich znaczenie w routerach są różne w zależności od stosowanego protokołu routowania. Odległość administracyjna. Liczba przypisywana na podstawie tego, w jaki sposób router poznał trasę do danego miejsca docelowego. Np. jeśli trasa została wpisana ręcznie przez administratora, wówczas odległość administracyjna standardowo jest równa 1. Jeśli router dowiedział się o trasie do pewnego miejsca docelowego z wykorzystaniem protokołu routowania RIP, wówczas standardowo odległość administracyjna dla tej trasy wynosi 120. Dla protokołu OSPF odległość administracyjna wynosi 110. Odległości administracyjne są brane pod uwagę w przypadku konieczności porównania tras, o których router dowiedział się z wykorzystaniem różnych mechanizmów (np. poprzez wpis statyczny albo z RIP albo OSPF). „Wygrywa” trasa z przypisaną mniejszą liczbą. Trasa domyślna może być oznaczana przez 0.0.0.0 w polu Przeznaczenie i 0.0.0.0 w polu Maska sieci. Proces określania trasy na podstawie tablicy routowania Proces wybierania trasy może być określony następująco: 1. Dla każdej trasy w tablicy routowania określa się, czy jest ona zgodna z adresem IP w przesyłanym pakiecie. Wykonywana jest operacja logiczne AND na docelowym adresie IP oraz na masce sieci. Wynik porównywany jest z polem Przeznaczenie. Jeśli jest identyczny, wówczas trasa jest zgodna. Oprócz tego trasa domyślna jest traktowana zawsze jako zgodna. 2. Spośród tras zgodnych wybierana jest ta (lub kilka), dla której w polu Maska sieci jest największa liczba jedynek (w zapisie binarnym). Może się jednak zdarzyć, że jedyną trasą zgodną jest trasa domyślna. 3. Spośród tras, które zostały wybrane w punkcie 2 wybierane są trasy o najmniejszej metryce. 4. Spośród tras wybranych w punkcie 3 wybierana jest dowolna trasa. Uwaga – routery potrafią również wykonywać równoważenie obciążeń. Wówczas część pakietów może powędrować jedną trasą a inna część drugą trasą o tym samym koszcie (metryce). Routery mogą również przy równoważeniu obciążeń brać pod uwagę kilka tras o różnych metrykach – wówczas odpowiednio więcej pakietów będzie przesyłanych trasą o mniejszej metryce a mniej trasą o większej metryce. Proces porównywania tras preferuje trasy zgodne w następującym porządku: 1. Trasa do hosta – wszystkie bity docelowego adresu IP są zgodne z bitami w polu Przeznaczenie 2. Trasa podsieci – bity docelowego adresu IP zgadzają się na poziomie podsieci 3. Trasa sieci – bity docelowego adresu IP zgadzają się na poziomie sieci 4. Trasa sumaryczna lub supersieci – bity adresu docelowego zgadzają się z adresem sumarycznym (supersieci). Sieci komputerowe, rok akad. 2023/2024 dr H. Telega 5. Trasa domyślna. Przykład. Destination 149.156.17.0 149.156.17.44 149.156.0.0 133.15.0.0 0.0.0.0 Mask 255.255.255.0 255.255.255.255 255.255.0.0 255.255.0.0 0.0.0.0 Next hop 133.23.47.2 211.5.4.2 199.203.45.2 210.14.25.3 219.177.32.2 Interface G0/0/1 G0/0/0 G0/0/2 S0/0 S0/1 Metric 3 (1) 2 (1) 4 (1) 4 (1) (1) W przypadku, gdy trasa nie zostanie znaleziona w hoście nadawczym IP informuje protokół warstwy wyższej. W przypadku routera datagram jest odrzucany i do nadawcy może być wysłany komunikat ICMP Destination Unreachable – Host Unreachable. Komunikaty ICMP o przekierowaniu (materiał nieobowiązkowy). host 1) datagram IP 3) przekierowanie 2) datagram IP router 1 router 2 Komunikaty ICMP o przekierowaniu pozwalają hostom TCP/IP na konfigurację tylko jednego routera – bramy domyślnej nawet w sytuacji, gdy w sieci lokalnej są dwa lub więcej routerów, które są odpowiedzialne za pewne miejsca docelowe. Hosty mogą zacząć pracę z jedną domyślną trasą i uczyć się topologii sieci (w szczególności informacji o routowaniu) poprzez otrzymywanie komunikatów ICMP. Komunikaty ICMP o przekierowaniu powinny być generowane przez routery, ale korzystać z nich mogą tylko hosty – nie routery. Sieci komputerowe rok akad. 2022/2023 dr H. Telega Protokół IPv4 Protokół IP jest protokołem warstwy trzeciej modelu ISO OSI. Implementacja protokołu IP składa się z oprogramowania spełniającego różne funkcje. Oprogramowanie to jest odpowiedzialne za adresowanie IP, tworzenie datagramów IP (pakietów IP) i uczestniczy w kierowaniu ich w sieci z punktu początkowego do punktu docelowego. IP realizuje usługę zawodną, tzn. zawiera mechanizmy dostarczania datagramów, ale w przypadku jakiegoś niepowodzenia (np. przepełnienie buforów routera) datagram IP nie jest przesyłany ponownie. Datagram IP może zaginąć, czasem jest celowo usuwany przez routery i wówczas może być wysłany odpowiedni komunikat do nadawcy. Jest to komunikat protokołu ICMP. Jeśli komunikacja powinna zawierać mechanizmy niezawodności, to muszą one być dostarczone przez protokoły warstwy wyższej. Datagram IP składa się z nagłówka (header) i bloku danych (payload). Nagłówek dzięki informacjom w nim zawartym umożliwia obsługę routowania, identyfikację bloku danych, określenie rozmiaru nagłówka i datagramu oraz obsługę fragmentacji. W nagłówku mogą się znaleźć również tzw. 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ść do 65515 bajtów. Nagłówek IPv4 Nagłówek IPv4 zawiera następujące pola (w kolejności): Wersja (4 bity) (=0100) Długość nagłówka IP (IHL – Internet Header Length) (4 bity) Pierwotnie typ usługi (TOS – Type of Service) (8 bitów), potem określano różne zastosowanie 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ół (8 bitów) Suma kontrolna nagłówka (16 bitów) Adres IP źródła (32 bity) Adres IP docelowy (32 bity) Dodatkowe opcje i wypełnienie (32 bity + ew. więcej). Za nagłówkiem IP w datagramie znajdują się dane (segment TCP, datagram UDP, komunikat ICMP). Sieci komputerowe rok akad. 2022/2023 dr H. Telega Opis pól w nagłówku IP Wersja – liczba 4 dla podstawowego obecnie IPv4 (0100 binarnie). Długość nagłówka – liczba 4-bajtowych bloków. Najczęściej nagłówek ma 20 bajtów, a więc 5 bloków (0101 binarnie). Maksymalnie długość nagłówka może wynosić 15*4 = 60 bajtów (11112 = 1510). Typ usługi (TOS Type of Service) lub DS. (Differentiaded Services) 8 bitów – zawiera dodatkowe informacje, które mogą być użyte w routingu. Pole TOS (DS) przez lata miało wiele różnych definicji, było definiowany w różny sposób przez dokumenty RFC 791, RFC 1122, RFC 1349, RFC 2474 oraz RFC 3168. Historia pola TOS jest opisana w 22. sekcji dokumentu RFC 3168. Pierwotnie w RFC 791 pole TOS było zdefiniowane następująco: Bits 0-2: Bit 3: Bits 4: Bits 5: Bit 6-7: Precedence. 0 = Normal Delay, 1 = Low Delay. 0 = Normal Throughput, 1 = High Throughput. 0 = Normal Relibility, 1 = High Relibility. Reserved for Future Use. 0 1 2 3 4 5 6 7 +-----+-----+-----+-----+-----+-----+-----+-----+ | | | | | | | | PRECEDENCE | D | T | R | 0 | 0 | | | | | | | | +-----+-----+-----+-----+-----+-----+-----+-----+ Pola TOS pierwotnie zawierały informacje o priorytecie (precedence – 3 bity) oraz o tym, czy ma być realizowana minimalizacja opóźnień (opóźnienie – 1 bit), maksymalizacja szybkości przesyłania (przepustowość – 1 bit), maksymalizacja poprawności (niezawodność – 1 bit, używane przy zatorach w routerze, datagramy z ustawioną jedynką powinny być odrzucane w ostatniej kolejności). TOS było ustawiane przez hosta nadającego i nie było modyfikowane przez routery. Pole to miało być używane do obsługi QoS (Quality of Service). W rzeczywistości jednak TOS w takiej postaci nie był obsługiwany przez wiele routerów i jego wykorzystanie było problematyczne. Powstały różne propozycje jak to pole wykorzystać inaczej, ale do tego samego celu (QoS). W RFC 2474 zmieniono nazwę pola na DS (Differentiated Services) i sześć najstarszych bitów nazwano DSCP (Differentiated Services Code Point, DiffServ Services Code). W RFC 3168 pozostałe dwa bity przeznaczono na ECN (Explicit Congestion Notification). 0123456 7 DSCP field ECN field ECN Poniższy opis wymaga znajomości protokołu TCP (będzie omawiany na kolejnym wykładzie). Explicit Congestion Notification (ECN) jest rozszerzeniem protokołów IP oraz TCP, zdefiniowanym w RFC 3168 (2001). ECN umożliwia powiadamianie punktów końcowych IP (i TCP) o nadchodzącym zatorze (congestion), bez usuwania pakietów. ECN jest opcjonalny i Sieci komputerowe rok akad. 2022/2023 dr H. Telega może być użyty tylko jeśli dwie strony komunikacji wspierają ECN i zgadzają się go użyć oraz sieć (routery) też wspiera ten mechanizm. Standardowo (bez obsługi ECN) zator w sieci TCP/IP przejawia się usuwaniem (drop) pakietów. Jeśli komunikacja jest realizowana z wykorzystaniem ECN, wówczas router może ustawić odpowiednią wartość (11) na bitach ECN w nagłówku IP, powiadamiając o grożącym zatorze, zamiast usuwania pakietu. Dopuszczalne wartości na bitach ECN: 00 – Non ECN-Capable Transport, Non-ECT 10 – ECN Capable Transport, ECT(0) 01 – ECN Capable Transport, ECT(1) 11 – Congestion Encountered, CE. Uwaga: znaczenie ECT(0) i ECT(1) jest takie samo. Odbiorca pakietu przesyła informację do źródła, wykorzystując odpowiednie flagi nagłówka TCP (ze względu na to, że zatorowi może przeciwdziałać TCP, nie IP). Pierwotne źródło danych redukuje prędkość transmisji zmniejszając rozmiar okna przeciążeniowego tak, jakby wykrył utratę pakietu z wysłanym segmentem TCP. Protokół TCP wspiera ECN przez wykorzystanie specjalnych trzech flag (bitów) w nagłówku TCP: Nonce Sum (NS), ECN-Echo (ECE) oraz Congestion Windows Reduced (CWR). Wykorzystanie ECN w połączeniach TCP jest opcjonalne (podlega negocjacji poprzez użycie odpowiednich opcji TCP w trakcie ustanawiania połączenia). Po wynegocjowaniu użycia ECN w TCP, pakiety IP będą miały w nagłówku ustawioną wartość ECT na bitach ECN. Po otrzymaniu pakietu z kodem CE (Congestion Experienced) w nagłówku IP, odbiorca TCP ustawia flagę ECE w nagłówku TCP. Druga strona połączenia reaguje na to zmniejszeniem rozmiaru okna przeciążeniowego i ustawia bit CWR w nagłówku TCP. Węzeł transmituje segmenty TCP z ustawionym ECE aż o momentu, gdy otrzyma segment z ustawionym bitem CWR. Całkowita długość – na podstawie tego pola oraz pola Długość nagłówka można określić wielkość bloku danych oraz początek tego bloku. Całkowita długość podawana jest w bajtach. Ze względu na to, że jest to pole 16 bitowe, to maksymalna możliwa długość datagramu IP może wynosić 65535. Jednak rozmiar największego datagramu IP, który jest przesyłany przez pewien fragment sieci zależy od technologii sieciowej, która jest w tym fragmencie używana. Rozmiar ten jest określany jako MTU – Maximum Transfer Unit. Specyfikacja IPv6 umożliwia przesyłanie pakietów większych, tzw. Jumbogramów. Identyfikacja – identyfikacja kolejnych datagramów. Wartość jest wpisywana przez host nadający i dla kolejnych datagramów jest zwiększana. Flagi – 3 bity tworzące dwie flagi używane przy fragmentacji datagramów. Fragmentacja będzie omówiona w dalszej części wykładu. Przesunięcie fragmentu – 13 bitów, 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 Sieci komputerowe rok akad. 2022/2023 dr H. Telega pętlami. TTL dotyczy licznika połączeń („skoków”) a nie routerów. Na przykład, jeśli komputer docelowy oddzielony jest od źródłowego przez 4 routery, to liczba skoków wynosi 5. Datagram wysłany między tymi komputerami z ustawionym TTL na 4 zostanie odrzucony przez czwarty router. Pole TTL zabezpiecza przed sytuacją, w której datagram wędrowałby w nieskończoność (lub „zbyt długo”) przez sieć. TTL jest ustawiany przez system operacyjny lub aplikację, może wynosić np. 128, 254. Niektóre systemy filtrujące i modyfikujące datagramy (tzw. zapory sieciowe, ściany ogniowe, firewalls) potrafią modyfikować pole TTL. Protokół – to jednobajtowe 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 liczona jest tylko dla nagłówka (nie dla danych). Cały nagłówek dzielony jest na słowa 16-to bitowe. W miejscu sumy kontrolnej wpisywane są same zera. Słowa te są dodawane a wynik jest uzupełniony do 1 (tzn. jedynki zamieniane na zera i odwrotnie). Wynik umieszczany jest w polu sumy kontrolnej. W miejscu docelowym suma kontrolna jest ponownie obliczana. Ponieważ nagłówek w miejscu docelowym zawiera wyliczoną w komputerze źródłowym sumę kontrolną, to komputer w miejscu docelowym powinien wyliczyć sumę składającą się z samych jedynek. Jeśli suma kontrolna w miejscu docelowym jest inna niż same jedynki, to znaczy, że nagłówek uległ uszkodzeniu. Wówczas oprogramowanie IP odrzuca odebrany pakiet i nie jest tworzony żaden komunikat o błędzie. Po przejściu przez router jest modyfikowane pole TTL, zatem suma kontrolna powinna ulec zmianie. Dopuszcza się odjęcie przez router jedynki od pola sumy kontrolnej (po uzupełnieniu bitów sumy do 1) lub dodanie jedynki bez zmiany bitów sumy – zamiast ponownego wyliczania całej sumy kontrolnej. Taki sposób wyliczania sumy kontrolnej wykorzystywany jest w protokołach IP, UDP i TCP. Dokładniej opisuje to RFC 1071 (z późniejszymi aktualizacjami). Fragment RFC 1071: In outline, the Internet checksum algorithm is very simple: (1) Adjacent octets to be checksummed are paired to form 16-bit integers, and the 1's complement sum of these 16-bit integers is formed. (2) To generate a checksum, the checksum field itself is cleared, the 16-bit 1's complement sum is computed over the octets concerned, and the 1's complement of this sum is placed in the checksum field. (3) To check a checksum, the 1's complement sum is computed over the same set of octets, including the checksum field. If the result is all 1 bits (-0 in 1's complement arithmetic), the check succeeds. Adres źródła – adres IP komputera źródłowego (chyba, że została zastosowana translacja adresów NAT). Adres docelowy – adres IP komputera docelowego (chyba, że została zastosowana translacja adresów NAT). Sieci komputerowe rok akad. 2022/2023 dr H. Telega Opcje nagłówka IP Opcje to dodatkowe pola dołączane do 20 bajtowego nagłówka, zawierają opcjonalne, dodatkowe informacje, których długość może być różna. Opcje mogą zająć maksymalnie 40 bajtów i mogą zawierać m.in.: zapis trasy (zapisywany adres każdego routera, przez który przeszedł datagram) zapis czasu – timestamp (zapisywany adres każdego routera, przez który przeszedł datagram oraz czas przejścia) • swobodne punkty routowania (routowanie źródłowe) – loose source routing (lista adresów IP, przez które musi przejść datagram) • dokładne punkty routowania (routowanie źródłowe) – strict source routing (podobnie jak poprzednio, tylko datagram musi przejść wyłącznie przez podane routery) Pole opcji zawsze zajmuje wielokrotność 4 bajtów, stąd czasem jest uzupełniane zerami. • • Opcja zapisu trasy Opcja RR (Record Route). Problemem jest maksymalna długość nagłówka, która ogranicza liczbę adresów IP w nagłówku do maksymalnie 9. Struktura zapisu opcji RR: kod 1 bajt (typ opcji) RR=7 length 1 bajt (liczba bajtów opcji, max=39) ptr – adres IP 1 1 bajt (4 bajty) (numer bajta wolnego miejsca na wpisanie kolejnego adresu IP, na początku = 4) … adres IP 9 (4 bajty) Pytanie: jakie wartości może przyjmować wskaźnik ptr? Niektóre wersje programu ping mają opcję oznaczającą wymóg zapisywania adresów routerów, przez które przechodzi datagram. Routery wpisują adresy interfejsu, poprzez który przekazują datagram. Sieci komputerowe rok akad. 2022/2023 dr H. Telega Opcja zapis czasu (timestamp) Struktura zapisu opcji timestamp: kod 1 bajt (typ opcji) timestamp =0x44 length ptr OF (4 FL (4 timestamp … 1 bajt 1 bajt bity) bity) 1 (liczba (numer (4 bajty) bajtów bajtu opcji, wolnego zwykle 36 miejsca na lub 40) kolejny wpis, na początku = 5) timestamp 9 (4 bajty) OF – flaga (znacznik) przepełnienia. Jeśli router nie może dopisać swojego czasu, bo nie ma już miejsca, to powiększa OF o jeden. Na początku OF = 0. FL – znacznik: 0 – zapisuj tylko czasy (8 pozycji czterobajtowych, raczej nieużywane) 1 – zapisuj adres IP i czas (4 wpisy po cztery + cztery bajty) 2 – wysyłający wpisuje adresy IP, router wpisuje czas jeśli to jego adres IP. Czas powinien być wpisany jako liczba milisekund, które upłynęły od północy UTC, ale dopuszczalne są też inne zapisy czasu używane przez różne routery. Opcja routowania źródłowego Normalnie to routery wybierają dynamicznie trasę datagramów (na podstawie odpowiednich tabel, które zmieniają się również dynamicznie). Można jednak określić trasę datagramu w opcjach nagłówka IP. Routowanie źródłowe dokładne – wysyłający komputer określa dokładną trasę, jaką musi przejść datagram. Jeśli kolejne routery na tej trasie są przedzielone jakimś innym routerem, to wysyła komunikat ICMP „source route failed” – (typ 3 z dodatkowo ustawionym polem kod na wartość 3) i datagram jest odrzucany. Routowanie źródłowe swobodne – wysyłający określa listę adresów IP, przez jakie musi przejść datagram, ale datagram może przechodzić również przez inne routery. Uwaga. Programy traceroute (Unix, MacOs) i tracert (Microsoft Windows) mają możliwość włączenia routowania źródłowego z wyświetlaniem wyników przejścia datagramu po określonej trasie. Podobnie możliwość taką ma program ping. Sieci komputerowe rok akad. 2022/2023 dr H. Telega Fragmentacja datagramów IPv4 MTU (Maximum Transmission Unit) to największa porcja danych, jaka może być przesłana w ramce przez pewną sieć (lub połączone sieci) przy wykorzystaniu konkretnej technologii. Jeśli datagram IP jest większy niż wynika to z MTU dla warstwy łącza w danej technologii (np. dla Ethernet II MTU wynosi 1500 bajtów), to IP dokonuje fragmentacji – dzielenia datagramu na mniejsze części. Różne zagadnienia związane z MTU (w tym typowe wartości MTU) opisuje RFC 1191. Informacje o MTU dla danego interfejsu (np. karty sieciowej) wyświetla polecenie netstat (polecenie to wyświetla jeszcze sporo innych informacji; różne wersje tego polecenia są dostępne we wszystkich popularnych systemach operacyjnych). Jeśli datagram IP przechodzi przez kilka sieci, kolejne MTU mogą być różne. Najmniejsze MTU po drodze nazywa się ścieżką MTU. RFC 1191 określa mechanizm ustalania ścieżki MTU. Fragmentacja IP może być wykonana na komputerze wysyłającym bądź na którymś z routerów. Jeśli nastąpiła fragmentacja, to fragmenty docierają do miejsca docelowego, w którym oprogramowanie warstwy IP składa je z powrotem w pakiety oryginalnej wielkości. Fragmenty też mogą być dalej dzielone, informacje z nagłówka IP wystarczają do odtworzenia wyjściowych pakietów. Fragmenty stają się samodzielnymi pakietami, które są dostarczane przez oprogramowanie warstwy IP niezależnie tak jak normalne pakiety niepodzielone. Składanie fragmentów w całość odbywa się na komputerze docelowym. Pole identyfikator (16 bitów) w nagłówku IP zawiera numer wysłanego pakietu. Pole powinno być inicjowane przez protokół warstwy wyższej. Warstwa IP zwiększa identyfikator o 1 dla kolejnych pakietów. Pole to jest kopiowane do pola identyfikacja każdego fragmentu. Pole flagi (3 bity) : Bit 0: zarezerwowane, musi być zero Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment. Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. Jeśli bit 1 jest ustawiony (tzn. równy 1), to znaczy, że pakiet nie może być dzielony. Taki pakiet w przypadku konieczności dzielenia jest odrzucany i do nadawcy wysyłany jest komunikat ICMP (typ 3 z dodatkowo ustawionym polem kod na wartość 4). W ostatnim fragmencie pakietu bit 2 jest wyzerowany (w pozostałych fragmentach jest ustawiony). Pole przesunięcie fragmentu zawiera informację o przesunięciu fragmentu względem początku oryginalnego pakietu. Przesunięcie wyrażane jest w blokach ośmiobajtowych, przesunięcie pierwszego fragmentu wynosi 0. Np. w sieci Ethernet II w części danych ramki można przesłać 1500 oktetów, czyli przy 20-bajtowym nagłówku w rzeczywistości na dane pozostaje 1480 bajtów. Stąd przesunięcie pierwszego fragmentu wynosi 1480 bajtów, czyli 185 bloków po 8 bajtów. Przesunięcie drugiego 1480 bloku danych wynosiłoby 370 itd. Sieci komputerowe rok akad. 2022/2023 dr H. Telega Jeśli zgubiony zostanie chociaż jeden fragment (i nie można odtworzyć oryginalnego pakietu), wówczas cały wyjściowy pakiet jest odrzucony. Jest to jeden z powodów, dla których fragmentacja pakietów jest uznawana za coś niekorzystnego. Jeśli np. segment TCP jest wysyłany w wielu pakietach, to utrata chociaż jednego fragmentu wymaga retransmitowania całego segmentu (TCP zawiera mechanizmy retransmisji segmentów, które nie dotarły do miejsca docelowego). Drugim powodem, dla którego fragmentacja IPv4 nie jest korzystna, jest fakt, że fragmentacja może bardzo obciążać routery. Fragmentację można wywołać np. przez wysyłanie większych komunikatów ICMP przy pomocy programu ping (opcja –l). Ustawianie flagi DF może być wykorzystywane w programach, które ustalają ścieżkę MTU między dwoma komputerami. Ułatwieniem jest określenie dopuszczalnych wartości MTU (RFC 1191). Sieci komputerowe rok akad. 2022/2023 dr H. Telega ICMP (Internet Control Message Protocol) Protokół ICMP opisują dokumenty RFC 792, 950, 1812, 112, 1191, 1256, 2521. Cel – m.in. raportowanie routingu, dostarczanie informacji o błędach podczas przesyłania ze źródła do komputera docelowego. ICMP dostarcza też funkcji sprawdzających czy komputery mogą się ze sobą komunikować przez sieć z wykorzystaniem protokołu IP a także pomaga w automatycznej konfiguracji hostów. Komunikaty ICMP wysyłane są w pakietach IP. W efekcie w ramce znajduje się nagłówek IP, nagłówek ICMP oraz dane komunikatu ICMP. Struktura komunikatu ICMP Nagłówek ICMP ma 8 oktetów, z czego pierwsze cztery mają taką samą strukturę: Typ (1 oktet) Kod (1 oktet) Suma kontrolna (2 oktety) Kolejne cztery oktety mają różne znaczenie w zależności od typu komunikatu ICMP. Na przykład w komunikatach typu 3 albo 11 (patrz kolejny punkt) te oktety nie są używane. Z kolei w komunikatach typu 8 i 0 (echo request i echo reply) dwa z tych oktetów oznaczają identyfikator (odpowiedź echa musi mieć ten sam numer co żądanie echa, by można było powiedzieć na które żądanie jest to odpowiedź), kolejne dwa oktety zawierają numer sekwencyjny (rosnące numery w kolejnych komunikatach). Po nagłówku komunikat ICMP może zawierać pewną liczbę oktetów danych (standardowo kody ASCII 26 liter alfabetu łacińskiego). Wybrane typy komunikatów ICMP 0 3 4 5 8 9 10 11 12 Odpowiedź echa (echo reply) Miejsce docelowe nieosiągalne (destination unreachable) Tłumienie źródła (source quench) Przekierowanie (redirect) Żądanie echa (echo request) Ogłoszenie routera (router advertisement) Wybór routera (router selection) Przekroczenie czasu (time exceeded, TTL equals 0) Problem parametru (parameter problem) Żądanie i odpowiedź echa Cel – wysłanie prostego komunikatu do węzła IP i odebranie echa tego komunikatu. Bardzo użyteczne przy usuwaniu problemów i naprawianiu sieci. Narzędzia takie jak ping oraz tracert i traceroute używają tych komunikatów ICMP do uzyskania informacji o dostępności węzła docelowego. Sieci komputerowe rok akad. 2022/2023 dr H. Telega Żądanie echa: Typ = 8 Kod = 0 Suma kontrolna (2 oktety) Identyfikator (2 oktety) Numer sekwencji (2 oktety) Opcjonalne dane (różna długość) Odpowiedź echa: Typ = 0 Kod = 0 Suma kontrolna (2 oktety) Identyfikator Numer sekwencji Opcjonalne dane. W echo reply pola Identyfikator, Numer sekwencji oraz Opcjonalne dane są przepisywane z echo request. W poleceniu PING (echo request/echo reply) można poprzez odpowiedni parametr (-s) ustawić liczbę przesyłanych oktetów (liter). Przykład: ping -s 100 149.156.65.17 ping -s 1472 149.156.65.17 ping -s 1473 149.156.65.17 Uwaga – w technologiach Ethernet rozmiar większy niż 1472 spowoduje konieczność fragmentacji pakietu IP, ponieważ MTU dla sieci Ethernet wynosi 1500 oktetów. Odejmując 20 oktetów nagłówka IP oraz 8 oktetów nagłówka ICMP dostaniemy maksymalną liczbę oktetów danych ICMP, które można przesłać w pakiecie z wykorzystaniem ramek Ethernet. ROUTOWANIE (TRASOWANIE) DYNAMICZNE, PROTOKOŁY ROUTOWANIA Sposób obsługi routowania przez warstwę IP nazywa się mechanizmem routowania. Określenie to dotyczy przeglądania przez system operacyjny tablicy routowania i podejmo– wania określonych decyzji, co do przesyłania datagramów IP. Przez pojęcie polityka routowania określa się działania procesu routowania podejmowane w celu ustanowienia i bieżącej modyfikacji tablicy routowania. Polityka routowania może obejmować: • ręczną konfigurację tras w routerach – mówi się wówczas o routowaniu statycznym lub • konfigurację zautomatyzowaną, w której routery, powiadamiają się nawzajem o znanych im sieciach używając tzw. protokołów routowania. Mówi się wtedy o routowaniu dynamicznym. Zalety routowania statycznego: • Trasy statyczne nie są rozgłaszane (tzn. routery nie wysyłają informacji o tych trasach do innych routerów). Ma to dwie zalety – większe bezpieczeństwo oraz mniejsze obciążenie sieci (przez rozgłoszenia tras). • Trasa statyczna jest zawsze znana. Wady routowania statycznego: • Konfiguracja jest bardziej złożona i czasochłonna w porównaniu z routowaniem dynamicznym. • Wszelkie zmiany muszą być wprowadzane „ręcznie” przez administratorów. • Wymaga pełnej wiedzy administratorów o wszystkich sieciach i trasach. • Źle się skaluje, co prowadzi do znacznego zwiększenia trudności w konfigurowaniu i utrzymywaniu sieci, jeśli sieć się powiększa. Polityka routowania realizowana jest z wykorzystaniem protokołów routowania. Pożądane cechy protokołów routowania to: • • • Wyznaczenie najlepszej trasy do punktu docelowego (the optimal route). Wymaga to m.in. określenia kryterium porównywania tras. Odporność (robustness). Protokoły routowania muszą działać poprawnie w przypadku nieprzewidzianych zdarzeń, np. awarii sprzętowych, niewłaściwych konfiguracji, nagłych dużych obciążeń sieci. Szybkie osiągnięcie zbieżności (rapid convergence). Przez zbieżność rozumie się tutaj osiągniecie stanu, w którym wszystkie routery „widzą” jednakowo topologię sieci. Szybkość zbieżności rozważa się po zmianie topologii sieci – termin ten określa czas rozpowszechnienia informacji o zmianach do wszystkich routerów. Również po włączeniu routera/routerów dobrze byłoby, gdyby jak najszybciej routery ustaliły swoje „obrazy sieci” (i wynikające z nich tablice routowania). • Dopasowanie do zmian (flexibility). Po różnych zmianach, np. odłączeniu pewnej sieci, zmianie szerokości pasma, zmianie opóźnienia itp. router powinien szybko wyznaczyć nowe optymalne trasy. Internet jest zorganizowany jako grupa tzw. systemów autonomicznych (Autonomous System – AS), z których każdy jest osobno administrowany. W każdym systemie autonomicznym stosowane są protokoły routowania, zwane wewnętrznymi protokołami routowania (ang. IGP – interdomain gateway protocol lub IRP – interdomain routing protocol). Do protokołów klasy IGP należą RIP, RIP2, OSPF, OSPF2, IS-IS, NLSP, IGRP, EIGRP. Dwa ostatnie protokoły zostały utworzone przez firmę Cisco i są jej własnością. Ze względu na sposób działania protokoły routowania wewnętrznego dzielimy na: • protokoły wektora odległości (DV, distance-vector): RIP, RIP2, IGRP, EIGRP • protokoły stanu łącza (link-state): OSPF, OSPF2, IS-IS, NLSP (NetWare Link Services Protocol) Uwaga: w starszych opracowaniach firmy Cisco protokół EIGRP był określany jako protokół hybrydowy. Oprócz protokołów wewnętrznych są też tzw. zewnętrzne protokoły routowania (EGP – exterior gateway protocols) - międzydomenowe protokoły routowania (interdomain routing protocols) używane między routerami działającymi w różnych systemach autonomicznych. Najważniejszym protokołem zewnętrznym jest BGP. Oprócz protokołów routowania rozważa się protokoły routowalne, takie jak IP, IPX, Apple Talk. Protokoły routowalne określają sposoby adresowania, umożliwiające dostarczanie pakietów w złożonej sieci komputerowej. Routery mogą wyznaczać trasy dla różnych protokołów routowalnych, nie tylko IP. Każdy z protokołów routowania i każdy z protokołów routowalnych musi być w routerze skonfigurowany. Protokoły routowania wektora odległości (wektor-odległość) Distance vector – wektor odległości. Protokoły routowania wektora odległości (distance-vector protocols) są oparte na algorytmie Bellmana Forda obliczania najkrótszych ścieżek w grafie. Węzły grafu oznaczają routery i sieci, krawędzie odpowiadają połączeniom między routerami. Połączenia te mają różne koszty, co odpowiada różnym wagom krawędzi grafu. Generalnie w algorytmie Bellmana Forda zakłada się, że wagi krawędzi mogą być liczbami ujemnymi, jednak nie ma w grafie cyklu, w którym suma wag krawędzi jest ujemna. W protokołach routowania wagi nie mogą być ujemne, co oznacza, że można też wykorzystać np. algorytm Dijkstry (jest wykorzystywany w protokołach stanu łącza). Poniższa procedura przedstawia przykładową implementację algorytmu Bellmana Forda bez sprawdzania cykli o ujemnej długości. Procedura wyznacza najkrótszą ścieżkę z wierzchołka źródłowego source do wszystkich wierzchołków w grafie. Wierzchołki są strukturami o polach distance oraz predecessor. Pole distance zawiera odległość wierzchołka od wierzchołka źródłowego. procedure BellmanFord(list vertices, list edges, vertex source) // This implementation takes in a graph, represented as lists of vertices // and edges, and modifies the vertices so that their distance and // predecessor attributes store the shortest paths. // Step 1: initialize graph for each vertex v in vertices: if v is source then v.distance := 0 else v.distance := infinity v.predecessor := null // Step 2: relax edges repeatedly for i from 1 to size(vertices)-1: // size(vertices) = number of vertices for each edge uv in edges: // uv is the edge from u to v u := uv.source v := uv.destination if u.distance + uv.weight < v.distance: v.distance := u.distance + uv.weight v.predecessor := u W protokołach typu wektor odległości realizowana jest rozproszona wersja algorytmu. Analiza działania protokołów routowania typu wektor odległości. Przykłady. Problemy i metody przeciwdziałania. Rozważmy sieć z pięcioma węzłami – routerami i sześcioma połączeniami: A 1 B 3 D 2 C 4 6 E 5 Węzły w powyższym grafie oznaczają routery (nazwane literami alfabetu). Załóżmy, że do każdego routera jest podłączona jedna sieć lokalna, która ma pewien adres IPv4. Będziemy oznaczać te sieci literami takimi samymi, jak routery, tj. A, B, C, D i E. Litera A na powyższym rysunku w jednym z węzłów oznacza, że do tego węzła (routera) A jest podłączona bezpośrednio lokalna sieć oznaczona jako A. Połączenia między routerami też mają przypisane adresy IP (dwa na każde połączenie), ale dla uproszczenia tych adresów nie będziemy rozważać, odpowiednie sieci będą pominięte w tablicach routowania routerów. Router oznaczony literą A ma więc trzy interfejsy sieciowe – jeden do sieci lokalnej A i dwa wykorzystane do połączenia go z innymi routerami. W tablicach routowania będziemy uwzględniać tylko sieci oznaczone literami. Poniższe rozważania nie dotyczą jakiegoś konkretnego protokołu z grupy protokołów wektora odległości (DV – distance vector), tylko będą służyć do wyjaśnienia pewnych typowych zjawisk oraz ogólnych zasad działania protokołów DV. Tablice routowania będą prezentowane w sposób uproszczony. Na początku węzły znają trasy tylko do „swoich” sieci lokalnych, czyli podłączonych bezpośrednio do routera. Każdy router zna jedną sieć lokalną (oraz dwie lub trzy sieci łączące). Załóżmy, że koszt każdego połączenia z sąsiednim routerem wynosi jeden. Koszt sieci podłączonej bezpośrednio wynosi 0. Tablica routowania (uproszczona) w węźle A: Z węzła A do A Połączenie lokalne Koszt 0 Tablica routowania w węźle B: Z węzła B do B Połączenie lokalne Koszt 0 Każdy węzeł przesyła co pewien czas wektor odległości do wszystkich swoich łączy, na których uruchomiono protokół routowania. Wektor odległości wysyłany przez router A zawiera informację: „do sieci A koszt 0”; możemy to zapisać np. tak: A=0. Wektor odległości zawiera zatem informację o znanych trasach do pewnych sieci. Router A przesyła wektor odległości do węzłów B i D. Uwaga: można spotkać określenie, że routery wykorzystujące protokoły wektora odległości, przesyłają między sobą tablice routowania. Jest to uproszczenie, ponieważ w rzeczywistości nie są przesyłane całe tablice routowania, jedynie wektory odległości do znanych sieci. Węzeł po otrzymaniu wektora odległości od sąsiada dodaje do kosztów zawartych tam tras koszt lokalnego połączenia (do sąsiada). Na przykład B po otrzymaniu wektora odległości od A dodaje 1 do kosztu trasy do A i – ze względu na to, że nie posiada trasy do A – dopisuje tę trasę do swojej tablicy routowania. Zatem teraz tablica routowania B wygląda tak: Z węzła B do Połączenie Koszt B lokalne 0 A 1 1 Podobnie w węźle D tablica routowania będzie wyglądała tak: Z węzła D do D A Połączenie lokalne 3 Koszt 0 1 Węzły B i D również przesyłają swoje tablice routowania do sąsiadów, B przesyła do A, E i C, natomiast D przesyła do A i E. Rozważmy teraz węzeł A. Otrzyma on wektory odległości od B i D, załóżmy, że najpierw otrzymał wektor odległości od B. Po otrzymaniu wektora odległości od B węzeł A modyfikuje go tak: B=1, A=2. Trasa do B jest dopisywana do tablicy routowania węzła A, natomiast trasa do A jest gorsza od trasy już przechowywanej w węźle A, zatem nie jest brana pod uwagę (gorsza oznacza, że ma wyższy koszt). Tablica routowania w węźle A wygląda teraz tak: Z węzła A do A B Połączenie lokalne 1 Koszt 0 1 Po otrzymaniu wektora odległości od D tablica routowania w węźle A wygląda tak: Z węzła A do A B D Połączenie lokalne 1 3 Koszt 0 1 1 Załóżmy, że następnie węzeł C otrzymał wektor odległości od B na połączeniu numer 2 i zmodyfikował swoją tablicę routowania do: Z węzła C do C B A Połączenie lokalne 2 2 Koszt 0 1 2 Wektor odległości z węzła B został też przesłany do E, zatem węzeł E zaktualizował swoją tablicę routowania tak: Z węzła E do E B A Połączenie lokalne 4 4 Koszt 0 1 2 Załóżmy, że następnie E dostał wektor odległości od D. Wektor ten zostaje zmodyfikowany o koszt połączenia lokalnego numer 6. Po modyfikacji wektor ten wygląda tak: D=1, A=2. Trasa do węzła D powinna być dopisana do tablicy routowania, natomiast koszt trasy do A jest taki sam jak koszt trasy już wpisanej do tablicy routowania w E. Załóżmy na razie, że w takim przypadku nowa trasa (do A) nie jest dopisywana do tablicy routowania. Zatem tablica routowania w E będzie wyglądała tak: Z węzła E do E B A D Połączenie lokalne 4 4 6 Koszt 0 1 2 1 W węzłach A, C i E zostały wyznaczone nowe tablice routowania, zatem odpowiednie wektory odległości zostaną przesłane do sąsiadów: Z węzła A: A=0, B=1, D=1 Z węzła C: C=0, B=1, A=2 Z węzła E: E=0, B=1, A=2, D=1 do łączy o numerach 1 i 3 do łączy o numerach 2 i 5 do łączy o numerach 4, 5 i 6 Spowoduje to aktualizację tablic routowania w B, D i E: Z węzła B do B A D C E Połączenie lokalne 1 1 2 4 Koszt 0 1 2 1 1 Z węzła D do Połączenie Koszt D A B E lokalne 3 3 6 0 1 2 1 Z węzła E do E B A D C Połączenie lokalne 4 4 6 5 Koszt 0 1 2 1 1 Z kolei teraz w węzłach B, D i E wyznaczane są nowe wektory odległości i zostaną one przesłane do A, C i D, co z kolei spowoduje aktualizację tablic routowania w A, C i D. Z węzła A do A B D C E Połączenie lokalne 1 3 1 1 Koszt 0 1 1 2 2 Z węzła C do C B A E D Połączenie lokalne 2 2 5 5 Koszt 0 1 2 1 2 Z węzła D do D A B E C Połączenie lokalne 3 3 6 6 Koszt 0 1 2 1 2 W A, C i D wyznaczane są nowe wektory odległości i zostaną one przesłane do połączeń lokalnych, ale nie spowodują żadnych zmian w tablicach routowania. Od tej chwili aż do momentu wystąpienia jakichś zmian w konfiguracji sieci, przesyłane wektory odległości nie będą powodować żadnych zmian w tablicach routowania. Węzły wyznaczyły odległości i trasy do wszystkich sieci lokalnych. O stanie tym mówi się, że protokół routowania osiągnął zbieżność. Co się stanie, gdy jedno z połączeń ulegnie awarii? Załóżmy, że awarii uległo połączenie numer 1 (między A i B). Załóżmy, że węzły potrafią sprzętowo wykryć awarię lokalnego połączenia. Załóżmy też, że uszkodzone połączenia mają koszt równy nieskończoności (∞). Zatem tablice routowania w A i B zostaną natychmiast zmodyfikowane tak: Z węzła A do A B D C E Połączenie lokalne 1 3 1 1 Koszt 0 ∞ 1 ∞ ∞ Z węzła B do B A D C E Połączenie lokalne 1 1 2 4 Koszt 0 ∞ ∞ 1 1 Uwaga. Protokoły typu wektor odległości mogą nie rozgłaszać informacji o sieci niedostępnej. Wówczas trasa do takiej sieci staje się niedostępna dla kolejnych routerów dopiero po tym, jak routery te nie otrzymają informacji o tej sieci przez pewną liczbę kolejnych rozgłoszeń (rzędu kilku). Przekazywanie informacji o trasach niedostępnych nazywane jest „zatruwaniem tras” (route poisoning). Oczywiście zatruwanie tras przyspiesza uzyskanie zbieżności. Termin „zatruwanie tras” zwykle można spotkać w kontekście jeszcze jednego mechanizmu, tzw. dzielonego horyzontu (będzie to wyjaśnione niżej). Węzły A i B wyślą (przy najbliższym przesyłaniu wynikającym z protokołu) nowe wektory odległości: Z węzła A: A=0, B=∞, D=1, C=∞, E=∞ do łącza 3 Z węzła B: B=0, A=∞, D=∞, C=1, E=1 do łączy 2 i 4. Węzeł D po otrzymaniu wektora odległości od A i po zmodyfikowaniu tego wektora do: A=1, B=∞, D=2, C=∞, E=∞ stwierdza, że przesłane trasy nie są lepsze od przechowywanych w tablicy routowania D. Jednak trasa do B wiedzie przez łącze 3, a z tego właśnie łącza nadeszła informacja o nieosiągalności B, zatem wpis dotyczący B powinien zostać zmodyfikowany. Nowa tablica routowania w węźle D będzie wyglądała tak: Z węzła D do D Połączenie lokalne Koszt 0 A B E C 3 3 6 6 1 ∞ 1 2 Podobnie zmienią się tablice routowania w węzłach C i E: Z węzła C do C B A E D Połączenie lokalne 2 2 5 5 Koszt 0 1 ∞ 1 2 Z węzła E do E B A D C Połączenie lokalne 4 4 6 5 Koszt 0 1 ∞ 1 1 Węzły D, C i E wyślą nowe wektory odległości. Z węzła D: D=0, A=1, B=∞, E=1, C=2 do łączy 3 i 6 Z węzła C: C=0, B=1, A=∞, E=1, D=2 do łączy 2 i 5 Z węzła E: E=0, B=1, A=∞, D=1, C=1 do łączy 4, 5 i 6 Przesłane wektory odległości spowodują aktualizację tablic routowania w węzłach A, B, D i E: Z węzła A do A B D C E Połączenie lokalne 1 3 3 3 Koszt 0 ∞ 1 3 2 Z węzła B do B A D C E Połączenie lokalne 1 4 2 4 Koszt 0 ∞ 2 1 1 Z węzła D do D A B E C Połączenie lokalne 3 6 6 6 Koszt 0 1 2 1 2 Z węzła E do E B A D C Połączenie lokalne 4 6 6 5 Koszt 0 1 2 1 1 Po tych aktualizacjach zostaną przesłane nowe wektory odległości: Z węzła A: A=0, B=∞, D=1, C=3, E=2 Z węzła B: B=0, A=∞, D=2, C=1, D=1 Z węzła D: D=0, A=1, B=2, E=1, C=2 Z węzła E: E=0, B=1, A=2, D=1, C=1 do łącza 3 do łączy 2 i 4 do łączy 3 i 6 do łączy 4, 5 i 6 To z kolei spowoduje modyfikację tablic routowania w A, B i C: Z węzła A do A B D C E Połączenie lokalne 3 3 3 3 Koszt 0 3 1 3 2 Z węzła B do B A D C E Połączenie lokalne 4 4 2 4 Koszt 0 3 2 1 1 Z węzła C do C B A E Połączenie lokalne 2 5 5 Koszt 0 1 3 1 D 5 2 Kolejne przesyłane wektory odległości nie spowodują żadnych zmian w tablicach routowania, zatem osiągnięta została zbieżność w nowej topologii połączeń. Wszystkie węzły są osiągalne z dowolnego węzła w sieci. Uwaga. Nie zawsze router jest w stanie wykryć uszkodzenie łącza. Ponadto uszkodzeniu może ulec nie tylko łącze, ale np. sąsiedni router (np. zawiedzie oprogramowanie routera). Może też zostać uszkodzona ramka, zawierająca pakiet z wektorem odległości i wektor odległości nie dotrze do docelowego routera. Dlatego w protokołach typu wektor odległości trasa jest zaznaczana jako niedostępna, gdy router nie dostanie o niej informacji od sąsiada przez kilka kolejnych rozgłoszeń. Na przykład w protokole RIP ten czas standardowo wynosi 180 sekund, czyli sześć rozgłoszeń, gdyż rozgłoszenia wektorów odległości są w tym protokole wykonywane co 30 sekund. Zdarza się, że administrator rozłącza łącze na chwilę i po niedługim czasie włączają je ponownie. Trasa niedostępna nie jest jeszcze usuwana z tablicy routowania przez kilka rozgłoszeń, np. w RIP przez kolejne 90 sekund (3 rozgłoszenia). Powoduje to jeszcze większe opóźnienie w czasie uzyskania zbieżności. Pętle routowania (routing loops, bouncing effect) Załóżmy, że koszt połączenia numer 5 jest nie jeden, lecz dziesięć. W poniższej tabeli zamieszczone są trasy do C z każdego z węzłów: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 2 lokalne 3 4 Koszt 2 1 0 3 2 Prześledźmy, co się stanie po uszkodzeniu połączenia numer 2 (z B do C). Przez krótki czas (zanim B prześle nowy wektor odległości) trasy będą takie: Połączenie Koszt z węzła A do C 1 2 z węzła B do C 2 ∞ z węzła C do C lokalne 0 z węzła D do C 3 3 z węzła E do C 4 2 Załóżmy, że zanim węzeł B zdążył wysłać nowy wektor odległości do A i E, otrzymał wektor odległości od A (A wysłał do B i D). W węźle D nic się nie zmieni, ale B po dodaniu jedynki (kosztu łącza) do kosztu trasy z A do C (koszt=2) otrzyma trasę przez A do C o koszcie równym 3. Koszt ten jest niższy od nieskończoności, zatem B zmienia swoją tablicę routowania i nowy wektor odległości zostanie przesłany do A i E. Ze względu na to, że wektor ten dotrze do A i E przez połączenia 1 i 4, które były normalnie używane jako trasy do C z A i E, w węzłach tych (tj. A i E) muszą się zmienić tablice routowania. Sytuacja jest więc następująca: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 1 lokalne 3 4 Koszt 4 3 0 3 4 Teraz tablice routowania zawierają pętlę. Każdy datagram kierowany do C dotrze do B, a następnie będzie „odbijany” (bouncing effect) między B i A aż do wyzerowania pola TTL. Efekt ten zostanie zatrzymany dopiero po osiągnięciu nowego stanu zbieżności. Prześledźmy, co się będzie działo dalej w rozważanej sieci. Jeśli C ogłosi swój wektor odległości do E, E doda 10 do kosztu (10+0=10) i trasa nie zostanie uwzględniona w tablicy routowania E. Jeśli A i E prześlą swoje tablice routowania do D i B to sytuacja się zmieni: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 1 lokalne 3 4 Koszt 4 5 0 5 4 Po przesłaniu nowego wektora odległości z B do A trasa z A do C zwiększy koszt do 6. Po przesłaniu nowego wektora odległości z A do D i B sytuacja będzie taka: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 1 lokalne 3 4 Koszt 6 7 0 7 6 Znowu wektor odległości przesłany przez C do E jest w E ignorowany. Każda „runda” wymiany wektorów odległości zwiększa koszt trasy do C z węzłów A, B, D i E. Po następnej rundzie będziemy mieli: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 1 lokalne 3 4 Koszt 8 9 0 9 8 Po kolejnych „rundach” otrzymamy w pewnej chwili: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 1 lokalne 3 4 Koszt 12 11 0 11 12 Teraz jeśli E otrzyma wektor odległości z C, zmieni tablicę routowania, co w końcu doprowadzi do sytuacji: z węzła A do C z węzła B do C z węzła C do C z węzła D do C z węzła E do C Połączenie 1 4 lokalne 6 5 Koszt 12 11 0 11 10 Otrzymaliśmy zbieżność w nowej topologii, pętla routowania została usunięta. Trwało to jednak stosunkowo długo. W czasie, gdy istniała pętla, gubione były datagramy, ponadto krążenie datagramów może doprowadzić do przeciążenia sieci i datagramy mogą być gubione nawet nie z powodu wyzerowania TTL, co z kolei może doprowadzić do jeszcze większych opóźnień w wymianie wektorów odległości między routerami (jeśli datagramy z tymi wektorami będą gubione). Zliczanie do nieskończoności (counting to infinity) Załóżmy, że w rozważanej sieci jest uszkodzone połączenie numer 1 i uszkodzeniu uległo drugie połączenie – numer 6. Teraz węzły A i D są odcięte od węzłów B, C i E. Rozważmy tylko węzły A i D. Tablica routowania w węźle D będzie taka: Z węzła D do D A B E C W węźle A mamy: Połączenie lokalne 3 6 6 6 Koszt 0 1 ∞ ∞ ∞ Z węzła A do A B D C E Połączenie lokalne 3 3 3 3 Koszt 0 3 1 3 2 Jeśli D wyśle swój wektor odległości najpierw (zanim zrobi to A), wówczas A natychmiast wykryje, że jedynym dostępnym węzłem jest D i została osiągnięta zbieżność. Jeśli jednak zdarzyłoby się, że najpierw wektor odległości zostanie przesłany z A do D: Z węzła A: A=0, B=3, D=1, C=3, E=2 do łącza 3 To spowoduje modyfikację tablicy routowania w D: Z węzła D do D A B E C Połączenie lokalne 3 3 3 3 Koszt 0 1 4 3 4 Pojawi się pętla routowania. Co więcej, za każdym kolejnym przesłaniem wektora odległości koszt połączeń będzie wzrastał o 2. To zjawisko nazywane jest zliczaniem do nieskończoności (counting to infinity). W protokołach typu wektor odległości ustalana jest pewna granica kosztu, powyżej której połączenie traktowane jest jako niedostępne. Np. w protokole RIP liczba 16 oznacza „nieskończoność” (miejsce docelowe niedostępne). Oczywiście w tracie tego „zliczania do nieskończoności” zawartość tablic routowania powoduje pętle. Dzielony horyzont (split horizon) Pętle routowania, efekt odbijania (bouncing effect), zliczanie do nieskończoności to niekorzystne zjawiska związane z routowaniem według protokołów typu wektor odległości. Aby zminimalizować te niekorzystne zjawiska stosowane są różne techniki, m.in. dzielony horyzont (split horizon) i natychmiastowe (wymuszane) aktualizacje (triggered updates). Idea dzielonego horyzontu opiera się na prostej obserwacji: jeśli węzeł A przekazuje datagramy do pewnego miejsca przeznaczenia X przez węzeł B, to nie ma sensu, aby B przekazywał datagramy do X przez A. Podobnie nie ma sensu przekazywanie informacji z A do B, że trasa do X wiedzie przez A. Zatem węzeł nie będzie przekazywał jednakowego wektora odległości do wszystkich łączy. Do łącza nie zostanie przekazana informacja o trasach wiodących przez to łącze. Taka technika spowoduje, że w rozważanej sieci z uszkodzonymi połączeniami numer 1 i 6 nie powstanie pętla routowania między A i D, gdyż A nie prześle do węzła D informacji o trasach z wykorzystaniem łącza numer 3. Dzielony horyzont nie zawsze likwiduje pętle routowania. Przyjrzyjmy się naszej przykładowej sieci z uszkodzonymi połączeniami o numerach 1 i 6. Weźmy teraz pod uwagę routery B, C i E. Zaraz po uszkodzeniu połączenia między D i E sytuacja jest taka: z węzła B do D z węzła C do D z węzła E do D Połączenie 4 5 6 Koszt 2 2 ∞ E wysyła nowy wektor odległości do łączy 4 i 5. Załóżmy, że wektor ten dotarł do B, ale ze względu np. na błędy transmisji nie dotarł do C. Sytuacja jest teraz taka: z węzła B do D z węzła C do D z węzła E do D Połączenie 4 5 6 Koszt ∞ 2 ∞ Informacja z C o trasie do D jest oczywiście potem przesłana do B (do E nie jest przesyłana, bo działa dzielony horyzont), B aktualizuje swoja tablicę routowania: z węzła B do D z węzła C do D z węzła E do D Połączenie 2 5 6 Koszt 3 2 ∞ B przekazuje do węzła E informację o trasie do D. E aktualizuje swoją tablicę routowania i sytuacja jest taka: z węzła B do D z węzła C do D z węzła E do D Połączenie 2 5 4 Koszt 3 2 4 Oczywiście E wysyła do C informację o „nowej trasie” do D i C aktualizuje swoją tablicę routowania, zwiększając koszt trasy do węzła D do 5: z węzła B do D z węzła C do D z węzła E do D Połączenie 2 5 4 Koszt 3 5 4 Otrzymaliśmy znowu pętlę routowania i wystąpi efekt zliczania do nieskończoności (spowoduje on wolniejszą zbieżność). Dzielony horyzont może wykorzystywać pewną wersję zatruwania zatruwania tras – tzw. split horizon with poison reverse – informacja odwrotna (reverse) jest przekazywana, jednak z metryką nieskończoną. Poison reverse updates jest tu odmianą zatruwania tras, ale tych normalnie nie rozgłaszanych w wyniku działania strategii split horizon. Technika ta może zapobiec większym pętlom routowania. Natychmiastowe – wymuszane aktualizacje (triggered updates) W przypadku zmiany metryki trasy musi nastąpić rozgłoszenie (bez względu na okres rozgłoszeń charakterystyczny dla danego protokołu). Powoduje to szybszą zbieżność i częściowo zapobiega pętlom routowania. Zegary hold-down (hold-down timers) Inny mechanizm stosowany w celu uniknięcia niekorzystnych zjawisk związanych z routowaniem typu wektor odległości to tzw. zegary hold-down. Router po otrzymaniu od sąsiada informacji o dezaktualizacji trasy włącza specjalny zegar (hold-down timer). Jeśli przed upływem czasu progowego nastąpi aktualizacja od tego samego sąsiada na trasę aktywną, to trasa jest zaznaczana jako aktywna. Jeśli przed upływem czasu progowego router dostanie od innego routera informację o trasie do rozważanego miejsca docelowego z metryką mniejszą bądź równą tej zdezaktualizowanej, wówczas następuje wpis zgłoszonej trasy. Natomiast jeśli przed upływem czasu progowego router dostanie od innego routera informację o trasie do rozważanego miejsca docelowego z metryką większą od tej zdezaktualizowanej, taka trasa nie jest brana pod uwagę. Protokół routowania RIP (RFC 1058) RIP jest protokołem typu wektor odległości. Metryką w RIP jest liczba skoków (hops) do celu (0 oznacza sieć dołączoną bezpośrednio, 1 oznacza, że po drodze do sieci docelowej jest jeden „skok” do następnego routera itd.). Administrator może skonfigurować inne wartości dla pewnych połączeń, tym samym może wprowadzić np. preferencje dla tras szybszych. Routery Cisco mają możliwość ustawienia automatycznego powiększania metryki o zadaną liczbę dla wszystkich tras, o których router dowiedział się z określonego interfejsu. Na podstawie informacji (wektorów odległości) otrzymanych od sąsiadów router aktualizuje swoją tablicę routowania. Przy najbliższym rozgłoszeniu przesyłany jest zaktualizowany wektor odległości. W typowy dla protokołów DV sposób informacja o dostępnych sieciach rozchodzi się po całej sieci. W protokole RIP metryka 16 oznacza umownie nieskończoność (miejsce niedostępne), zatem RIP nie jest dobrym protokołem w przypadku dużych sieci. Trasa o metryce 16 jest traktowana jak trasa niedostępna. W RIP można ustawić trasę domyślną (adres 0.0.0.0). W wersji RIP obsługiwanej przez routery Cisco można przechowywać więcej niż jedną trasę o takiej samej metryce. Można włączyć równoważenie obciążeń (load balancing) na dwa sposoby: Process switching (packet-by-packet load balancing), kosztowny i dlatego nie polecany, każdy pakiet jest kierowany osobno, dla każdego jest przeglądana tablica routowania. Fast switching (destination-by-destination), tylko dla pierwszego pakietu z pewnego miejsca źródłowego do pewnego miejsca docelowego przeszukiwana jest tablica routowania. Wyznaczona trasa jest zapisywana w pamięci podręcznej (cache) i kolejne pakiety wędrują tą samą ścieżką. W protokole RIP wykorzystywane są następujące mechanizmy typowe dla protokołów wektor odległości: • Split horizon (+ with poison reverse) • Holddown counters (timers) • Triggered updates W protokole RIP są zaimplementowane cztery zegary, liczniki (timers, counters): Update timer (standardowo ustawiony na 30 sekund) – po przesłaniu wektora odległości (routing update) zegar jest zerowany. Po osiągnięciu 30 s. wysyłany jest następny wektor. Invalid timer (standardowo ustawiony na 180 sekund) – za każdym razem jak router dostaje uaktualnienie pewnej trasy (tzn. informację o niej od innego routera) zegar ten dla trasy jest zerowany. Po osiągnięciu wartości progowej (180s.) trasa jest zaznaczana jako niepoprawna (invalid), ale pakiety jeszcze są kierowane tą trasą. Hold-down timer (standardowo ustawiany na 180s.) – po przekroczeniu wartości progowej przez invalid timer trasa jest ustawiana w stan hold-down. Trasa jest ustawiana w stan holddown również wtedy, gdy router dostanie informację o tym, że sieć jest nieosiągalna (i nie ma innej, osiągalnej trasy). Flush-timer (standardowo ustawiony na 240s.) – zegar dla trasy jest zerowany po otrzymaniu informacji o trasie. Po osiągnięciu czasu progowego trasa jest usuwana nawet, jeśli trasa jest jeszcze w stanie hold-down. W protokole RIP przewidziano możliwość odpytywania routera o cały wektor odległości lub o trasy do pewnych miejsc docelowych – takie możliwości są wykorzystywane przy starcie oraz na ogół w celach diagnostycznych. Format komunikatu RIPv1. Komunikaty RIP przesyłane są w datagramach UDP: Nagłówek IP (20 bajtów), nagłówek UDP (8 bajtów), Komunikat RIP: polecenie (1-6) bity 0-7, wersja (1) bity 8-15, musi być zero bity 16-31, rodzina adresów (2) bity 32-47, musi być zero bity 48-63, adres IP kolejne 32 bity, musi być zero kolejne 32 bity, musi być zero kolejne 32 bity, metryka (1-16) kolejne 32 bity, ... (do 24 tras o formacie takim jak poprzednie 20 bajtów). W komunikatach RIP przekazywane są adresy do hostów i sieci z wykorzystaniem klas. Zaletą protokołu RIP jest jego prostota (zatem procesor nie jest nadmiernie obciążony aktualizacją tablicy routowania i innymi działaniami) i łatwość konfiguracji. Wadą jest wolne rozprzestrzenianie się informacji o zmianach w topologii sieci (np. po zerwaniu pewnego połączenia). Mówi się o wolnej zbieżności protokołu RIP. Inną wadą jest stosunkowo częste (co 30s.) przesyłanie dużych porcji informacji w komunikatach RIP (wektory odległości), co obciąża sieć. Wadą RIPv1 jest to, że nie daje możliwości przesyłania masek. RIP w wersji 1 jest protokołem routowania klasowego. W przypadku otrzymania informacji o podsieci pewnej sieci klasowej, przyjmowana jest maska taka, jaka jest ustawiona na interfejsie, do którego dotarł wektor odległości z tą informacją. Na granicach klas jednak routery RIP wykonują automatyczną sumaryzację, co przy niepoprawnych konfiguracjach może prowadzić do błędów w routowaniu (przykład na tablicy). Przypomnienie: zbieżność oznacza stan, w którym wszystkie routery mają taki sam, prawidłowy obraz sieci (na pewnym obszarze). Przed osiągnięciem zbieżności, w trakcie rozprzestrzeniania informacji o zmianach w sieci może występować niekonsekwentne routowanie czy pętle. RIP 2 (RFC1723) RIP2 przekazuje maski podsieci, można stosować sieci bezklasowe (CIDR Classless Interdomain Routing) i podsieci o zmiennym rozmiarze (VLSM Variable Length Subnet Mask). Umożliwia prostą autentykację (przez hasła). Przekazuje adresy następnego skoku w komunikatach. Część wad RIP pozostała: 16 jako metryka oznaczająca nieskończoność, brak alternatywnych tras. Środowiska z wieloma protokołami routowania. Odległości administracyjne. W środowisku współdziałania wielu protokołów routowania, dla tras w zależności od tego jakie jest źródło, z którego router dowiedział się o trasie, ustawiana jest tzw. odległość administracyjna (NIE metryka) – administrative distance. Dla protokołu RIP odległość wynosi 120. Odległość jest używana tylko wewnętrznie przez router. Router wybiera trasy o najmniejszej odległości. Dla wpisu statycznego przyjmuje się odległość administracyjną równą 1, dla sieci dołączonej bezpośrednio odległość jest równa zero. Standardowe odległości dla tras: Źródło trasy Connected interface Static route Summary EIGRP External BGP Internal EIGRP IGRP OSPF IS-IS RIP EGP Internal BGP Unknown Odległość (administrative distance) 0 1 5 20 90 100 110 115 120 140 200 255 Na routerach można również włączyć redystrybucję tras między protokołami routowania według różnych zasad, z odpowiednim przeliczaniem metryk. Odległości administracyjne są również wykorzystywane przy konfigurowaniu tras pływających (ang. floating routes). Trasa pływająca to trasa zapasowa, która będzie użyta w przypadku trasy podstawowej. W routingu statycznym skonfigurowanie trasy pływającej wymaga ustawienia odległości administracyjnej większej niż tej ustawionej dla trasy podstawowej (standardowo równej 1). Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Warstwa transportowa, protokoły UDP i TCP Protokół IP wraz z mechanizmem trasowania (routowania) umożliwia dostarczanie pakietów (datagramów IP) między komputerami w Internecie. Jednak protokół ten nie zawiera (nie określa) żadnych wskazówek na temat programu, do którego ma być skierowana zawartość pakietu. Na przykład komunikat http powinien być dostarczony do serwera WWW albo do przeglądarki WWW, nie powinien trafić do serwera baz danych ani do serwera poczty. Przez sieć komputerową komunikują się ze sobą programy uruchomione na komputerach (procesy). Przeważnie jeden z tych programów jest klientem, drugi serwerem oferującym jakieś usługi. Na przykład, jeśli chcemy oglądać strony WWW, to uruchamiamy przeglądarkę WWW. Przeglądarka łączy się z serwerem WWW. Na jednym komputerze może być uruchomionych wiele procesów komunikujących się z procesami na innych. Zatem niezbędny jest odpowiedni mechanizm dostarczania pakietów nie tylko do konkretnego komputera (czym zajmuje się IP), ale do konkretnego programu (procesu). Informacje o docelowym i źródłowym procesie zawarte są w nagłówkach protokołów warstwy transportu. Stos protokołów TCP/IP zawiera dwa protokoły w warstwie transportu: TCP oraz UDP. Obydwa umożliwiają dostarczenie danych do procesu działającego na komputerze, przy czym wykorzystywane są tzw. porty. Porty są ponumerowane, numer portu jest liczbą dwubajtową. Każda aplikacja komunikująca się przez sieć z wykorzystaniem TCP lub UDP rezerwuje na swoje potrzeby pewne zasoby systemowe (komunikacyjne bufory w pamięci operacyjnej), ma do dyspozycji tzw. gniazda (ang. termin to socket). Każde gniazdo jest identyfikowane przez numer IP oraz numer portu. Do programowej obsługi gniazd wykorzystywane są specjalne biblioteki komunikacyjne. Interfejs komunikacyjny zawierający funkcje systemowe umożliwiające komunikowanie się programów z wykorzystaniem TCP lub UDP nazywa się interfejsem gniazd. Interfejs gniazd jest dostępny w najważniejszych systemach operacyjnych, np. w różnych wersjach systemu Unix lub systemach wywodzących się z Uniksa (Linux, Apple OS X). W Microsoft Windows interfejs ten nazywa się Windows Socket API (WSA,) skrócona nazwa to Winsock. Przykłady pakietów wykorzystujących protokoły warstwy transportu (TCP lub UDP). Pakiet IP zawierający segment TCP z komunikatem HTTP Nagłówek IPv4 Nagłówek TCP Komunikat HTTP, np. 1460 bajtów (zwykle 20 bajtów) (zwykle 20 bajtów) Pakiet IP zawierający segment TCP z komunikatem DNS Nagłówek IPv4 Nagłówek TCP Komunikat DNS (np. transfer strefy między (zwykle 20 bajtów) (20 bajtów) głównych a pomocniczym serwerem DNS w strefie) Pakiet IP zawierający pusty segment TCP (np. segment potwierdzający) Nagłówek IP Nagłówek TCP (zwykle 20 bajtów) (20 bajtów) 1 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Pakiet IP zawierający pusty segment TCP (np. segment nawiązujący połączenie TCP) Nagłówek IP Nagłówek TCP (zwykle 20 bajtów) (20 bajtów+4 bajty opcji MSS) Pakiet IP zawierający datagram UDP Nagłówek IP Nagłówek Komunikat RIP (wektor odległości lub część tego (zwykle 20 bajtów) UDP wektora) (8 bajtów) Pakiet IP zawierający datagram UDP Nagłówek IP Nagłówek Komunikat DNS (zapytanie od klienta do serwera DNS (zwykle 20 bajtów) UDP lub odpowiedź od serwera do klienta) (8 bajtów) Przykład pakietu IP nie wykorzystującego ani TCP, ani UDP Pakiet IP zawierający komunikat ICMP Nagłówek IP Komunikat ICMP, różnej wielkości > 4B. (zwykle 20 bajtów) Może być też przedstawiany jako nagłówek ICMP + ewentualne dane Przypomnienie: pakiety IP są enkapsulowane w ramkach jakiejś technologii warstwy 2 modelu ISO OSI, na przykład jednej z „odmian Ethernetu” (określenie potoczne) albo WIFI (802.11nn): Nagłówek ramki Pakiet IP Suma kontro lna ramki Nagłówki ramek różnych technologii mogą się znacznie różnić. Np. w „technologiach Ethernet” nagłówek zawiera m.in. dwa adresy MAC, w technologiach bezprzewodowych z grupy 802.11nn może zawierać nawet cztery adresy MAC. Uwaga. W sieciach komputerowych stosowane są też inne sposoby przekazywania pakietów. Na przykład w sieciach ATM (Asynchronous Transfer Mode) pakiet dzielony jest na kawałki, które są przesyłane w 53 bajtowych komórkach (48 bajtów danych + 5 bajtów specjalnego nagłówka). 2 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega UDP – User Datagram Protocol RFC 768 (1980 rok). UDP jest prostym protokołem bezpołączeniowym warstwy transportu. Umożliwia przesyłanie danych między procesami działającymi na komputerach obsługujących stos protokołów TCP/IP. Dostarczanie danych do procesów jest możliwe dzięki określeniu adresów IP komputerów komunikujących się oraz 16 bitowych numerów portów. Porcja danych zgodna z protokołem UDP nazywana jest datagramem UDP, czasem też pakietem UDP. UDP nie zapewnia niezawodności, nie ma żadnej gwarancji, że datagramy UDP dotrą do miejsca przeznaczenia. Ewentualne zapewnienie niezawodności (jeśli w danej komunikacji jest wymagane) musi być realizowane przez protokoły warstwy aplikacji. UDP ma niewielki nagłówek (8 bajtów w porównaniu do 20 lub więcej bajtów nagłówka TCP), nie zawiera mechanizmów ustanawiania połączenia ani sterowania przepływem datagramów (takie mechanizmy są w TCP), zatem jest „szybszy” od TCP. W odróżnieniu od segmentów TCP, datagramy UDP mogą być przesyłane w pakietach IP z adresem docelowym przesyłania grupowego (w IPv4 jest to klasa adresowa D), pakiet taki może być kierowany do wielu komputerów jednocześnie. Przykłady zastosowań: strumieniowanie audio/wideo, wideokonferencje, transmisje głosu. UDP jest stosowany w RIP, komunikaty RIP są przesyłane w datagramach UDP kierowanych na port numer 520. Zapytania DNS wysyłane z hostów do serwerów DNS (i odpowiedzi również) są przesyłane w datagramach UDP. Pewne rodzaje komunikacji DNS wykorzystują jednak protokół TCP – dotyczy to np. transferu stref z serwera głównego do serwerów pomocniczych. Porty Przydział numerów portów był kiedyś publikowany w RFC (ostatni z nich to RFC1700). Obecnie aktualne przyporządkowanie można znaleźć na stronie IANA (Internet Assigned Numbers Authority) http://www.iana.org/assignments/port-numbers. Poprawne numery portów: 1..65535. Numer 0 może być używany jako numer portu źródłowego, jeśli nadawca nie oczekuje odpowiedzi. IANA dzieli porty na trzy grupy: 1..1023 – porty ogólnie znane (well-known port numbers), w większości systemów mogą być przypisywane przez procesy systemowe lub działające z uprawnieniami użytkownika uprzywilejowanego. 1024..49151 – zarejestrowane (registered), do użytku przez różne aplikacje, powinny być wykorzystywane po zarejestrowaniu. 49152 ..65535 – dynamiczne (efemeryczne) lub prywatne, do prywatnego użytku, np. dla testowanych aplikacji klient-serwer. Mogą być przydzielane dynamicznie np. dla przeglądarki WWW. 3 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Porty na których dostępne są powszechne usługi w implementacjach TCP/IP: Nazwa Port TCP i UDP RFC echo 7 862 serwer zwraca wszystko co wysyła klient discard 9 863 serwer odrzuca wszystko daytime 13 867 data i czas chargen 19 864 TCP generuje nieprzerwany ciąg znaków do zakończenia połączenia, UDP generuje ciąg o losowej długości time 37 868 czas – liczba sekund od 01-01-1900 GMT Uwaga: w 2036 roku licznik się wyzeruje. telnet 23 ssh 22 http 80 ftp 21 Aplikacja jest odpowiedzialna za rozmiar wysyłanego datagramu. Jeśli wielkość przekroczy MTU sieci, wówczas datagram IP (zawierający w sobie datagram UDP) jest dzielony (następuje fragmentacja IP). Enkapsulacja datagramu UDP w datagramie IP nagłówek IP 20 bajtów nagłówek UDP dane UDP 8 bajtów Nagłówek UDP 0 15 16 31 16 bitowy numer portu źródłowego 16 bitowy numer portu docelowego 16 bitowa długość UDP (nagłówek + dane) – 16 bitowa suma kontrolna UDP wypełniana opcjonalnie (zera jeśli nie (obejmuje tzw. pseudonagłówek, uzupełnione) nagłówek UDP oraz dane) Dane (jeśli są) Suma kontrolna Suma kontrolna jest jedynym mechanizmem w UDP, który umożliwia sprawdzenie, czy datagram UDP dotarł nieuszkodzony do celu. Suma kontrolna jest opcjonalna jeśli datagram UDP jest przesyłany w pakiecie IPv4, ale jest obowiązkowa, jeśli datagram UDP jest przesyłany w pakiecie IPv6. Dodawane są liczby 16 bitowe, stąd możliwa konieczność uzupełnienia datagramu o dodatkowy bajt z samymi zerami (jeśli długość datagramu liczona w bajtach jest liczbą nieparzystą). Ten dodatkowy bajt występuje tylko podczas wyliczania sumy kontrolnej, nie jest on zapamiętywany ani przesyłany. 4 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Do obliczenia sumy kontrolnej używany jest tzw. pseudonagłówek. Poniżej podano strukturę psełdonagłówka przy założeniu, że datagram UDP jest przesyłany w pakiecie IPv4. Pseudonagłówek (12 bajtów): 32 bity adres IP źródła, 32 bity adres IP celu, 8 zer 8 bitów typ protokołu (UDP = 17) 16 bitów długość UDP (powtórzona) Algorytm jest taki sam jak dla sumy kontrolnej nagłówka IPv4 (jednak w IPv4 suma kontrolna obejmowała sam nagłówek, w UDP obejmuje również przesyłane za nagłówkiem dane). Pseudonagłówek nie jest przesyłany. Użycie pseudonagłówka umożliwia dodatkową kontrolę, czy datagram UDP dodarł do odpowiedniego miejsca przeznaczenia (jeśli nie, to wystąpi błąd sumy kontrolnej). 5 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega TCP – Transmission Control Protocol Podstawy protokołu TCP RFC 793 (ze wskazanymi tam aktualizacjami). Oprogramowanie TCP tworzy połączenia (connections) między dwoma procesami z jednoczesną dwukierunkową transmisją. Połączenie TCP Proces 1, IP1, Port1 Wyjście Wejście Wejście Wyjście Proces 2, IP2, Port2 TCP łączy dwa punkty końcowe, które są identyfikowane przez parę: numer IP oraz numer portu. Całe połączenie identyfikowane jest przez cztery liczby: dwa numery IP oraz dwa numery portów. Pomiędzy procesami przesyłane są dwa strumienie 8-bitowych oktetów (bajtów), po jednym w każdą stronę. Stąd mówi się o usłudze strumienia oktetów (bajtów). W strumieniu NIE są umieszczane automatycznie żadne znaczniki rekordów. Bajty wysyłane są porcjami, w segmentach, ale proces docelowy (odbiorca segmentów) nie jest w stanie z góry określić wielkości nadchodzących porcji. Jedna porcja (segment) składa się z nagłówka i pewnej liczby bajtów danych. Termin strumień danych jest zarezerwowany tylko dla bajtów danych, do strumienia NIE wlicza się żadnych bajtów nagłówków. W jednym segmencie może być przesyłany jeden bajt ze strumienia danych albo więcej, ale nie powinno być więcej niż ustalony MSS – Maximum Segment Size (największy dopuszczalny rozmiar segmentu na trasie z komputera źródłowego do docelowego). Na przykład, jeśli segmenty są przesyłane w pakietach IPv4 a te są enkapsulowane cały czas w ramkach Ethernet, wówczas MSS=1460 bajtów. Ważne cechy TCP • • • Partnerzy (komunikujące się procesy) tworzą połączenie z wykorzystaniem mechanizmu uzgodnienia (uzgadnianie trójfazowe – three-way handshake). Zamknięcie połączenia odbywa się z wykorzystaniem mechanizmu uzgodnienia, podczas którego partnerzy wyrażają zgodę na zamknięcie połączenia. TCP zapewnia sterowanie przepływem. Informuje partnera o tym, ile bajtów danych ze strumienia danych może od niego przyjąć (okno oferowane – advertized window). Rozmiar okna jest równy rozmiarowi wolnego miejsca w buforze odbiorcy. Rozmiar ten zmienia się 6 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega • • dynamicznie. Zero oznacza, że nadawca musi zaczekać, aż program użytkowy odbierze dane z bufora. Dane ze strumienia danych dzielone są na fragmenty, które według TCP mają najlepszy do przesłania rozmiar. Jednostka przesyłania danych nazywa się segmentem. TCP zapewnia niezawodność połączenia. Mechanizmy niezawodności Potwierdzanie otrzymania segmentów z mechanizmem zegara. Odebrany segment musi być potwierdzony przez odbiorcę przez wysłanie segmentu potwierdzającego. Jeśli potwierdzenie nie nadejdzie w odpowiednim czasie, segment zostanie przesłany powtórnie. Czas oczekiwania zmienia się dynamicznie i zależy od stanu sieci (obciążenia sieci i jej parametrów). Sumy kontrolne. Jeśli segment zostanie nadesłany z niepoprawna sumą kontrolną, to jest odrzucany i nie jest przesyłane potwierdzenie odbioru, Nadawca po odczekaniu odpowiedniego czasu (RTO – Retransmission Time Out) prześle utracony segment jeszcze raz. Przywracanie kolejności nadchodzących segmentów. Segmenty mogą nadchodzić w kolejności innej niż zostały wysłane, oprogramowanie TCP przywraca prawidłową kolejność przed przekazaniem do aplikacji. Odrzucanie zdublowanych danych. Może się zdarzyć, że pewne dane ze strumienia zostaną przesłane powtórnie, chociaż ich pierwsza kopia (segment) w rzeczywistości nie zaginęła, tylko przesłanie go przez sieć i przesłanie potwierdzenia trwało dłużej niż RTO (albo segment z potwierdzeniem zaginął). Do odbiorcy wówczas dotrą dwie kopie tych samych danych. Jedna z tych kopii jest odrzucana. Enkapsulacja segmentu TCP w datagramie IP: nagłówek IP nagłówek TCP dane TCP (fragment strumienia danych) 7 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Nagłówek segmentu TCP FIN SYN RST PSH ACK URG ECE CWR NS 0 15 16 31 16-bitowy numer portu źródłowego 16-bitowy numer portu docelowego 4-bajtowy numer sekwencji pierwszego oktetu danych. 4-bajtowy numer potwierdzenia 4-bitowa Rezerwa długość (3 bity) – 16-bitowy rozmiar okna nagłówk zera a 16 bitowa suma kontrolna TCP 16 bitowy wskaźnik ważności Opcje (jeśli są) Dane (jeśli są) Objaśnienia: Numer sekwencji. Dla segmentu z ustawionym tylko znacznikiem SYN w to pole wpisywany jest numer sekwencji początkowej, tzw. ISN (Initial Sequence Number). Taki segment jest wysyłany w celu rozpoczęcia nawiązywania połączenia. Pierwszy oktet przesyłanych danych ze strumienia w rzeczywistości będzie miał numer ISN+1. ISN był kiedyś ustalany na podstawie licznika 32 bitowego [zakres 0..232-1]. RFC 793 określa, że numer ISN powinien zwiększać się o jeden co 4 mikrosekundy. W praktycznych implementacjach było inaczej, np. zwiększanie o 64000 co pół sekundy. Co kilka godzin licznik się zeruje. Ze względów bezpieczeństwa obecnie pierwszy numer ISN w strumieniu jest losowy. W kolejnych segmentach w połączeniu TCP w polu numer sekwencji jest numer pierwszego oktetu danych w segmencie, przy czym numer ten nie jest już pobierany z licznika, ale wynika z ciągłej numeracji oktetów w strumieniu bajtów (numer pierwszego bajta został uzgodniony w trakcie nawiązywania połączenia). Numer potwierdzenia jest ważny tylko przy włączonym znaczniku ACK. Znacznik ACK jest włączany tylko wówczas, jeśli segment zawiera potwierdzenie odebrania jakiegoś segmentu. Numer potwierdzenia jest to kolejny numer bajta (w strumieniu danych), którego spodziewa się wysyłający potwierdzenie. Długość nagłówka (w protokole pole to jest określone jako przesunięcie danych). Wielkość nagłówka wyrażona w liczbie bloków 4-bajtowych. Jednobitowe znaczniki (flagi): NS, CWR, ECE – związane z przeciwdziałaniem przeciążeniom na routerach (wprowadzone w 2001 i 2003 r.): http://tools.ietf.org/html/rfc3168. Mechanizm przeciwdziałania nazwany został ECN – Explicit Congestion Notification. NS – (ang. Nonce Sum) jednobitowa suma kontrolna wartości flag związanych z mechanizmem ECN (ECN Echo, Congestion Window Reduced, Nonce Sum) weryfikująca ich integralność; opis bitu NS znajduje się w RFC 3540 (status: experimental). ECE – (ang. ECN-Echo) Jeśli flaga SYN=0, to flaga ECE jest ustawiana na 1 przez odbiorcę segmentu, jeśli segment ten dotarł w pakiecie IP z ustawionym kodem CE (Congestion 8 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Encountered) w bitach ECN nagłówka IP; Jeśli SYN=1, wówczas ECE=1 oznacza, że mechanizm ECN będzie stosowany (czyli jest to element nawiązania połączenia, w którym druga strona połączenia jest informowana o tym, że można stosować ECN), CWR – (ang. Congestion Window Reduced) flaga potwierdzająca odebranie ECE i zredukowanie wielkości okna przeciążeniowego (patrz dalsza część wykładu). Powiadomienie partnera TCP umożliwia zaprzestanie wysyłania echa ECE. URG – wskaźnik ponaglenia (krótkie wyjaśnienie można znaleźć np. tu http://www.tcpipguide.com/free/t_TCPPriorityDataTransferUrgentFunction.htm ), ACK – segment potwierdzenia, PSH – segment „push” – wypchnięcie danych (dobre wyjaśnienie jest np. tu: http://packetlife.net/blog/2011/mar/2/tcp-flags-psh-and-urg/ ), RST – zresetowanie połączenia (opis jest w dalszej części wykładu), SYN – synchronizacja, FIN – nadawca zakończył przesyłanie danych. Rozmiar okna. Oznacza liczbę bajtów, które odbiorca może zaakceptować (poczynając od bajtu o numerze podanym w polu numer potwierdzenia). Suma kontrolna. Liczona dla nagłówka i danych, z użyciem pseudonagłówka (algorytm analogiczny jak w UDP oraz IP). Wskaźnik ważności. Dodatnie przesunięcie, które musi być dodane do numeru przesunięcia sekwencyjnego pierwszego oktetu danych, aby uzyskać numer ostatniego bajta szczególnie ważnych danych w segmencie (dane te są na początku segmentu). Pole to jest brane pod uwagę tylko, jeśli bit URG jest ustawiony na 1. Opcje. Rodzaj opcji (bajt), długość opcji (bajt), opcja. Najważniejsza opcja to MSS – Maximum Segment Size. Może być uzyskana jako MTU (Maximum Transmission Unit) minus rozmiar nagłówka IP oraz TCP. Dla MSS rodzaj opcji określony jest jako liczba 2, długość opcji wynosi 4 bajty, dwa kolejne bajty to wartość MSS. Przykładowo dla Ethernetu MTU=1500, stąd MSS=1500 – 40 = 1460 (40 bajtowy minimalny rozmiar nagłówków IP i TCP). Wartość minimalna MSS dla IPv4 wynosi 536, dla sieci IPv6 1220. MSS podawany jest w segmencie SYN wysyłanym w celu nawiązania połączenia TCP . 9 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Nawiązywanie i zamykanie połączenia, przesyłanie danych Rysunek przedstawia nawiązywanie i zakończenie połączenia oraz wymianę segmentów w połączeniu TCP. klient otwarcie aktywne serwer SYN, j, mss=1460 SYN k, ACK j+1, mss=1024 ESTABLISHED otwarcie bierne LISTEN SYN RECVD ACK k+1 ESTABLISHED dane: żądanie dane: odpowiedź / ew. ACK dla żądania ACK dla odpowiedzi zamknięcie aktywne FIN WAIT-1 Opóźnione potwierdzanie („piggyback – jazda na barana”) FIN m ACK m+1 CLOSE WAIT zamknięcie bierne FIN WAIT-2 FIN n TIME WAIT LAST ACK ACK n+1 CLOSED 10 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Diagram przejść między stanami połączenia TCP stan CLOSED prg: otwarcie bierne []/[] prg: otwarcie aktywne [ ] / SYN LISTEN SYN / SYN, ACK RST / [ ] otwarcie jednoczesne SYN / SYN, ACK SYN RCVD ACK/ [ ] ESTABLISHED [ ] / FIN stan przesyłania zamknięcie jednoczesne FIN WAIT-1 FIN WAIT-2 FIN / ACK LAST ACK CLOSING ACK / [ ] FIN, ACK / ACK FIN / ACK FIN / ACK CLOSE WAIT prg: zamknięcie [ ] / FIN [ ] / FIN ACK / [ ] SYN SENT otwarcie aktywne SYN, ACK / ACK ACK / [ ] zamknięcie bierne TIME WAIT zamknięcie zwykłe przejście między stanami klienta zwykłe przejście między stanami serwera SYN / SYN, ACK = odbiór SYN / wysłanie ACK [ ] - nic 11 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Specyfika stanu TIME WAIT 2 razy MSL (Maximum Segment Life). W RFC 793 MSL określony jest jako 2 minuty, w praktyce od 30 sekund do 2 minut. Spóźnione segmenty są w czasie 2 MSL odrzucane. Para punktów końcowych definiujących połączenie nie może być powtórnie użyta przed upływem 2MSL. Eliminuje to ewentualne kłopoty związane z odbieraniem z sieci segmentów jeszcze ze starego połączenia. Niektóre implementacje dopuszczają bezwarunkowe przechodzenie ze stanu FIN_WAIT_2 do stanu CLOSED po upływie pewnego czasu (10 min.) Półzamknięcie TCP Strona, która zakończyła połączenie i nie nadaje danych, może dane odbierać od partnera TCP. Takie połączenie nazywane jest połączeniem półzamkniętym (half-closed). Przykład: rsh odległy_komputer sort < lokalny_plikdanych Polecenie rsh (remote shell) umożliwia wykonywanie poleceń na odległym komputerze. W tym przypadku komputer odległy będzie sortował zawartość pliku, przesłaną z komputera lokalnego. Jednak polecenie sort nie może być wykonywane, zanim nie zostanie przekazany cały plik. Półzamknięcie jest tu metodą na powiadomienie, że cały plik został przesłany, jednocześnie komputer lokalny będzie otrzymywał dane od odległego (posortowaną zawartość pliku). Segmenty RST Segment RST wysyłany jest przez oprogramowanie implementujące TCP, kiedy nadchodzi segment niepoprawny z punktu widzenia dowolnego połączenia. W protokole UDP w przypadku nadejścia datagramu na port, nie będący w użyciu generowany jest komunikat ICMP o tym, że port jest nieosiągalny. TCP używa tu segmentów RST (nie komunikatów ICMP). Segment RST nie jest potwierdzany. Wszystkie ewentualne przyjęte dane z buforów są odrzucane. Wysłanie RST jest ogólnie metodą poinformowania drugiej strony o nieakceptowaniu połączenia (np. w odpowiedzi na segment SYN). Segment RST jest wysyłany również wtedy, gdy przekroczona jest maksymalna dopuszczalna liczba połączeń TCP. Połączenia półotwarte (połowicznie otwarte) Występuje, jeśli jedna ze stron przerwała połączenie bez informowania drugiej (np. host uległ awarii). Przykład – wyłączenie komputera z uruchomionym programem telnet. Przez połączenie połowicznie otwarte (half-open) rozumie się też połączenie, które nie zostało poprawnie nawiązane. Segment z ustawioną na 1 flagą SYN został przesłany od klienta do serwera, serwer odpowiedział segmentem z ustawionymi na 1 flagami SYN i ACK, ale klient nie odpowiedział segmentem z ustawioną na 1 flagą ACK. Standardowo np. w Microsoft Windows Serwer ponawia SYN, ACK po 3 sekundach, potem po kolejnych 6 i czeka jeszcze 12 sekund na ACK od klienta potem połączenie zostaje przerwane. Od wysłania pierwszego segmentu SYN, ACK mija 21 sekund, w tym czasie są rezerwowane zasoby komputera na połączenie. 12 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Jeden ze sposobów atakowania serwisów (np. WWW) polegał na otwieraniu bardzo dużej liczby połączeń półotwartych. Obecnie implementacje TCP są odporne na tego typu ataki (dokonano zmiany ustawień dotyczących tolerancji liczby jednoczesnych połączeń połowicznie otwartych). Dopuszczalne jest, by oprogramowanie realizujące TCP mogło sprawdzać stan połączenia przez okresowe przesyłanie segmentów sprawdzających aktywność. Segment taki to zawiera ustawioną na 1 flagę ACK i nie zawiera żadnych danych. Dodatkowo ma on ustawiony numer sekwencyjny na o 1 mniejszy od tego, którego normalnie spodziewa się strona wysyłająca ACK. Partner odpowiada też segmentem z ustawioną na 1 flagą ACK ze standardowo ustawionymi prawidłowymi wartościami numerów sekwencyjnych. Jednoczesne otwarcie TCP dopuszcza tzw. jednoczesne otwarcie połączenia. Następuje wtedy przesłanie czterech segmentów (po dwa w każdą stronę). Nie określa się serwera i klienta. aktywne otwarcie SYN j SYN k SYN SENT SYN RECVD aktywne otwarcie SYN SENT SYN RECVD SYN k, ACK j+1 SYN j, ACK k+1 ESTABLISHED ESTABLISHED Każda ze stron musi znać numer portu partnera. Jednoczesne zamknięcie aktywne zamknięcie FIN WAIT-1 CLOSING TIME WAIT FIN j FIN k aktywne zamknięcie FIN WAIT-1 CLOSING ACK j+1 ACK k+1 TIME WAIT Opcje TCP Nagłówek TCP może zawierać opcje. Pierwsza specyfikacja określała tylko opcje: MSS, koniec listy opcji oraz „brak operacji”. 13 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega W nowszych są jeszcze inne: skalowanie okna, selektywne potwierdzanie nadchodzących segmentów, sygnatury czasowe. Opcja „koniec listy opcji” zajmuje 1 bajt i jest w nim wpisana wartość 0. Opcja „brak operacji” zajmuje 1 bajt i jest w nim wpisana wartość 1. Opcja ta jest stosowana po to, by można było dopełnić pola do wielokrotności 4 bajtów. Pozostałe opcje są zapisywane w sposób następujący: -1 bajt – typ opcji -1 bajt – długość opcji (całej) - pewna liczba bajtów opcji. Opcja MSS (Maximum Segment Size) typ = 2 długość = 4 dane – 2 bajty (np. dla Ethernet II 1460, tzn. 1500 minus nagłówki TCP i IP), wielkość segmentu powinna być potem ustawiona na mniejszą wartość z wartości MSS podanych przez strony połączenia. MSS podawany jest w segmentach SYN. Opcja skala okna typ=3 długość = 3 dane – 1 bajt, współczynnik skali, określa liczbę mnożeń przez 2 wielkości „rozmiar okna”. Powód zastosowania – przy użyciu 16 bitów można było określać tylko 64kB okna, w pewnych przypadkach przydają się większe (oryginalnie – transmisja satelitarna). Współczynnik skali określany jest też jako licznik przesunięć (shift-count). Maksymalny współczynnik skali wynosi 14. Pytanie: ile wynosi maksymalny rozmiar segmentu TCP, z wykorzystaniem opcji skali okna? Opcja pozwolenia na selektywne potwierdzanie (SACK-permitted). Typ opcji = 4 długość = 2 Informuje partnera (w segmentach SYN), że może interpretować i odbierać opcję SACK. Opcja selektywnego potwierdzania (SACK). Typ opcji = 5 długość = 10, 18, 26 lub 34 (potwierdzenie jednego, dwóch, trzech lub czterech nieciągłych bloków danych). Lewa krawędź pierwszego bloku – 4 bajty Prawa krawędź pierwszego bloku – 4 bajty ... Lewa krawędź n-tego bloku – 4 bajty Prawa krawędź n-tego bloku – 4 bajty Opcja sygnatury czasowe Stosowana jest do określania RTO (retransmission time-out) RTO wyliczane jest w pewien sposób (patrz dalsza część wykładu) na podstawie RTT (round trip time), który jest mierzony 14 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega dla segmentu i jego potwierdzenia. W pewnych przypadkach, np. dla łącz satelitarnych taki sposób wyliczenia RTO może nie być wystarczający. Wtedy można stosować tę opcję. Opcja dołączona do segmentu SYN oznacza, że będzie stosowana. Potem może być dodawana według uznania do pewnych segmentów. typ = 8 długość = 10 Wartość timestamp – 4 bajty Wartość echa timestamp – 4 bajty. Przepływ danych w TCP Potwierdzenia TCP Skumulowane potwierdzanie Segment TCP z ustawionym znacznikiem ACK jest segmentem potwierdzającym. Numer potwierdzenia (sekwencji danych) to numer następnego bajta ciągłego strumienia bajtów, który nadawca segmentu ACK spodziewa się otrzymać od nadawcy potwierdzanych danych. Wszystkie poprzedzające bajty zostały już odebrane. Taki sposób potwierdzania nazywa się skumulowanym potwierdzaniem. Taki sposób potwierdzania nie jest korzystny w środowisku z dużą liczbą gubionych segmentów. Opóźnione potwierdzenia Potwierdzenie otrzymania segmentu nie jest wysyłane natychmiast. Zalety takiego podejścia są następujące: • Podczas trwania opóźnienia mogą zostać odebrane następne segmenty i potwierdzenie może je obejmować. • Można dołączyć ACK do segmentu przesyłanych danych (piggybacking). • Oprogramowanie TCP realizuje „utrzymanie” połączenia, np. odbiera dane z bufora i uaktualnia rozmiar okna, który może być wysłany z segmentem ACK. Selektywne potwierdzenia Realizowane przez jedną z opcji TCP. Przydaje się np. w łączach satelitarnych, które są szerokopasmowe i mają duże opóźnienie (wyjaśnienie na wykładzie). Rozmiar okna może tu być duży i wynosić np. 250 segmentów, nadawca może na raz transmitować dużą liczbę segmentów (np. 250). Jeśli pierwszy segment zaginie, to nadawca niepotrzebnie retransmituje wszystkie. Selektywne potwierdzanie temu zapobiega. Ruchome okna TCP (sliding windows) Połączenie TCP obejmuje dwa strumienie danych. W każdym strumieniu określony jest nadawca i odbiorca. Kontrolę przesyłania oktetów w strumieniu umożliwiają mechanizmy tzw. przesuwnych (ruchomych) okien, które można sobie wyobrazić jako nałożone na strumień. Dla strumienia określone jest okno nadawcy oraz okno odbiorcy. Nadawca może wysyłać tylko te dane, które są w tej chwili w jego oknie nadawczym, przy czym może to zrobić tylko za zgodą 15 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega odbiorcy. Okno nadawcze jest przesuwane nad wyjściowym strumieniem bajtów, okno odbiorcze nad strumieniem wejściowym. Okno nadawcze Nadawca określa, które oktety w jego strumieniu wyjściowym zostały: a) wysłane i potwierdzone (tzn. do nadawcy dotarło już potwierdzenie, że druga strona otrzymała te oktety), b) wysłane, ale jeszcze nie potwierdzone, c) jeszcze nie wysłane, ale już znajdujące się w oknie nadawczym d) jeszcze nie wysłane i znajdujące się poza oknem nadawczym Dane z pozycji c) mogą być wysłane przez nadawcę, gdyż odbiorca na to zezwolił. Dane z pozycji c) mogą być jeszcze nie wysyłane wskutek realizacji strategii powolnego startu lub zapobiegania zatorom (patrz dalsza część wykładu). Okno nadawcze rozciąga się od oktetu, którego spodziewa się partner w ostatnim potwierdzeniu ACK i ma rozmiar określony przez opcję „rozmiar okna” przesłaną w tym potwierdzeniu przez partnera (partner określa, ile danych może przyjąć). (ACK+Okno wskazuje na pierwszy bajt już poza oknem nadawczym). Okno nadawcze ma lewą i prawą krawędź. W trakcie potwierdzania kolejnych segmentów lewa krawędź okna nadawczego przesuwa się w prawo powodując tzw. zamykanie okna. Jeśli numer potwierdzenia + rozmiar okna wskazują na konieczność przesunięcia prawej krawędzi, to jest ona przesuwana powodując tzw. otwieranie okna. Jeśli bufor odbiorczy u odbiorcy się wypełni (aplikacja wykorzystująca protokół TCP nie zdąży odebrać danych z bufora odbiorczego), to odbiorca przesyła z potwierdzeniem ostatniego segmentu proponowany rozmiar okna równy zero. U nadawcy powoduje to zmniejszenie okna nadawczego do zera. Pojawia się następujący problem – skoro nadawca nic nie wyśle (odbiorca „zakazał”), to odbiorca nie prześle nowego ACK z nowym rozmiarem okna nawet, jeśli swój bufor odbiorczy został całkowicie opróżniony. Rozwiązano to w ten sposób, że odbiorca wysyła „zbędny” segment ACK bez danych i z numerem potwierdzenia takim jak poprzedni ACK. Ten segment nie jest potwierdzany i nie jest też retransmitowany. Jeśli zaginie, to zadziała kolejny mechanizm: nadawca okresowo wysyła segment tzw. „sondy okna” (probing the window), zawierający jeden bajt z zakresu nie wysłanych i będących spoza okna (okno jest zerowe). Ten bajt jest u odbiorcy odrzucany, ale wysyłany jest ACK z poprawnym numerem sekwencji i nowym rozmiarem okna. Czas pomiędzy wysłaniem sond podwaja się (pierwszy to tzw. czas retransmisji – patrz dalsza część wykładu). Okno odbiorcze Odbiorca określa, które oktety w jego strumieniu wejściowym zostały: a) odebrane, potwierdzone i pobrane do warstwy aplikacji b) odebrane, potwierdzone, ale jeszcze nie pobrane do warstwy aplikacji c) odebrane, ale jeszcze nie potwierdzone d) nie odebrane, ale znajdujące się w tzw. bieżącym oknie odbiorczym e) nie odebrane i znajdujące się poza oknem odbiorczym 16 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Maksymalne okno odbiorcze obejmuje b), c) i d). Ma ono stałą wielkość równą buforowi do odbierania danych w połączeniu TCP. Bieżące okno odbiorcze obejmuje c) i d). Punkt d) odpowiada wolnej przestrzeni w buforze odbiorczym. Oktety d) mogą być odebrane, natomiast z e) nie są odbierane – tzn. gdyby dotarły, to zostaną odrzucone, bo nie ma na nich miejsca w bieżącym buforze odbiorczym. Ze względu na to, że oktety ze strumienia oktetów danych są ponumerowane, łatwo można określić, w którym miejscu strumienia powinny się znaleźć. W każdym segmencie jest przekazywany numer pierwszego oktetu danych, które znajdują się w tym segmencie. Bieżące okno odbiorcze ma lewą i prawą krawędź. Zamykanie i otwieranie okna zdefiniowane są analogicznie jak dla okna nadawczego. Prawa krawędź odbiorczego okna bieżącego pokrywa się z prawą krawędzią maksymalnego okna odbiorczego. Jeśli aplikacja odbiera dane z bufora, to krawędź ta przesuwa się w prawo (podobnie jak lewa krawędź maksymalnego okna odbiorczego). Potwierdzanie ACK przesuwa lewą krawędź okna bieżącego w prawo. Jeśli warstwa aplikacji nie odbiera danych z bufora, a wysyłane są kolejne potwierdzenia, to okno bieżące zostaje w pewnym momencie zamknięte. W Microsoft Windows domyślnie maksymalny rozmiar okna odbiorczego wynosi 16 384 bajty, ale może być korygowany przez TCP do pewnej wielokrotności MSS (np. dla Ethernet II wynosi 12*1460=17520). Przesyłanie małych segmentów Tak określa się segmenty o rozmiarze mniejszym od MSS. Przesyłanie małych segmentów zmniejsza efektywność sieci. Aby temu zapobiec stosowane są takie mechanizmy, jak algorytm Nagle’a i unikanie „syndromu głupiego okna” Algorytm Nagle’a (John Nagle) „Dopasowuje się” do sieci, w której przesyłane są segmenty. Idea: TCP powinno przesyłać tylko pojedyncze małe niepotwierdzone segmenty. W czasie oczekiwania na potwierdzenie, dane są gromadzone w buforze. W sieci o szerokim paśmie i małym opóźnieniu akumulacja (gromadzenie pakietów w buforze) jest mała, efektywność mniejsza, ale kompensowana szybkością sieci. W sieciach o małym paśmie i dużych opóźnieniach akumulacja zwiększa efektywność. Algorytm Nagle’a może być wyłączany przez oprogramowanie TCP. Syndrom „głupiego okna” (silly window syndrome - SWS) Jeśli odbiorca ma zerowy rozmiar okna (i nadawca też) oraz warstwa aplikacji pobierze 1 bajt, to okno odbiorcze otwiera się (prawa krawędź przesuwa się w prawo) o jeden bajt. Odbiorca może wysłać ACK z proponowaną wielkością okna równą 1. Gdyby tak było, to druga strona połączenia też powiększy okno nadawcze o jeden bajt i prześle segment zawierający 1 bajt danych itd. 17 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Aby uniknąć SWS odbiorca ogłasza nowy rozmiar okna dopiero, gdy rozmiar ten wynosi co najmniej MSS lub połowę maksymalnego rozmiaru okna odbiorczego (nie wyklucza to wysyłania w „międzyczasie” segmentów potwierdzeń). Nadawca unika SWS wstrzymując się z wysyłaniem danych, dopóki rozmiar okna proponowanego przez odbiorcę nie jest równy co najmniej MSS. „Interaktywne” dane mogą być wysyłane z flagą PSH wg algorytmu Nagle’a. Dodatkowa kontrola przepływu po stronie nadawcy Nadawca może przesłać wszystkie segmenty, które znajdują się w oknie nadawczym (po ogłoszeniu okna przez odbiorcę). Takie działanie może jednak doprowadzić do zatorów w sieci, zwłaszcza mocno obciążonej (np. rutery nie poradzą sobie ze zbyt dużym ruchem danych). Algorytm powolnego startu oraz algorytm unikania zatorów mają na celu uniknięcie negatywnych skutków zbyt dużego obciążenia sieci przez nadawcę. Obydwa bazują na pojęciu okna przeciążeniowego (okna zatoru, congestion window). Algorytm powolnego startu Po otwarciu połączenia lub dłuższym czasie nieprzesyłania danych wielkość okna przeciążeniowego ustawiana jest na 2*MSS. Każde przychodzące potwierdzenie (ACK) powoduje zwiększenie okna przeciążeniowego o jeden MSS. Może to nawet prowadzić (ale nie musi) do wykładniczego wzrostu wielkości tego okna (kiedy?). Rozmiar okna nadawczego ustalany jest jako minimum z wielkości okna przeciążeniowego oraz ogłoszonego przez odbiorcę bieżącego okna przeciążeniowego. Algortym unikania zatoru Tu stosuje się wolniejszy wzrost wielkości okna przeciążeniowego (ozn. x), np. o jeden segment na kilka przychodzących ACK. Przepis na wzrost może być np. taki: x=x+MSS*MSS/x. Algorytm ten działa zwykle od pewnego progu (najpierw działa powolny start). Retransmisje segmentów w TCP W każdym połączeniu definiowana jest zmienna RTO (Retransmission Time-out). Jeśli TCP nie odbierze ACK w czasie RTO dla pewnego nadanego segmentu, to segment musi być retransmitowany. RTO powinien być większy od stale obliczanego RTT (Round Trip Time). RTO nie powinien być ani za duży, ani za mały. Segmenty ACK nie są potwierdzane (chodzi o segmenty z ustawioną flagą ACK i nie zawierające danych). Wyznaczenie prawidłowej wartości RTO jest ważne dla uniknięcia zapaści spowodowanej przeciążeniem (np. RTT rośnie szybciej niż wyliczany RTO, segmenty będą retransmitowane co jeszcze zwiększy ruch w sieci). Omówione już algorytmy powolnego startu oraz unikania zatoru powodują unikanie powtórnej zapaści. 18 Sieci komputerowe, rok akad. 2020/2021 dr H. Telega Zasady retransmisji Jeśli nie określono innych: dla początkowego segmentu przyjmuje się bieżące znane RTO dla połączenia. Po upłynięciu RTO wartość RTO jest podwajana, a segment wysyłany ponownie. (Ilość powtórzeń tego algorytmu jest ograniczona i w końcu połączenie jest przerywane). Obliczenie RTO RFC 793 określa pewien algorytm obliczania RTO, jednak teraz zalecany jest inny (RFC1122): SRTT = RTT + 8*(New_RTT – RTT) New_Dev = Dev + ( | New_Rtt – RTT | - Dev) / 4 RTO = SRTT + New_Dev / 4 Niejednoznaczność potwierdzenia – Algorytm Karna Potwierdzenie dla retransmitowanego segmentu jest niejednoznaczne, nie wiadomo czy jest to opóźnione potwierdzenie pierwszej kopii, czy potwierdzenie drugiej kopii. Rodzi to problemy z szacowanym RTT. Phil Karn zaproponował następującą strategię: Pomiary RTT dla retransmitowanych segmentów są pomijane. Może to rodzić problemy, jeśli RTT gwałtownie wzrośnie. Dlatego tymczasowo stosowane jest dublowanie RTO dla kolejnych retransmitowanych segmentów. Dopiero przyjęcie ACK segmentu nie retransmitowanego powoduje obliczenie RTT i RTO dla tego nowego czasu RTT. 19 Bezpieczeństwo sieci komputerowych. Szyfrowanie z kluczem symetrycznym, szyfrowanie z kluczem publicznym i prywatnym, certyfikaty cyfrowe, podpis elektroniczny. Zagadnienie jest rozległe i obejmuje bezpieczeństwo na poziomie systemów operacyjnych działających na pojedynczych komputerach, sieciowych systemów operacyjnych oraz protokołów i różnych systemów zabezpieczeń. Wykład dotyczy bardziej aspektów związanych z siecią (przesyłaniem danych między komputerami) oraz protokołów sieciowych. Szyfrowanie, podpis elektroniczny Szyfrowanie z kluczem symetrycznym Klucz jest pewną liczbą lub zbiorem liczb. Pojedynczy klucz (jedna liczba) w zapisie binarnym składa się zwykle z kilkudziesięciu do kilku tysięcy bitów. To, co zostało zaszyfrowane przy użyciu pewnego klucza, może być odszyfrowane tylko przy pomocy tego samego klucza. Teoretycznie jest możliwe „złamanie” szyfru metodą brutalnej siły (tj. poprzez sprawdzenie wszystkich kombinacji), jednak wymaga dużych mocy obliczeniowych. Dla odpowiednio dużych kluczy i odpowiednio złożonych metod szyfrowania jest to praktycznie (prawie) niemożliwe. Są też inne sposoby łamania szyfrów, np. wykorzystujące analizy statystyczne i wiele innych, opierających się na niedoskonałościach samego algorytmu albo jego implementacji. Przykładowe długości kluczy: 64, 128, 256. Nie tylko długość klucza ma znaczenie – liczy się również sam algorytm szyfrowania. Przykłady algorytmów z kluczem symetrycznym: DES (Data Encryption Standard), 3DES, RC4 (szyfr strumieniowy wykorzystywany np. w szyfrowaniu ramek w sieciach bezprzewodowych WiFi 802.11 WEP oraz WPA). W tej chwili zalecany standard to AES (Advanced Encryption Standard, szyfr blokowy, wykorzystywany np. w WPA2). Uwaga. Szyfrowanie dużych porcji danych przy użyciu jednego klucza ułatwia złamanie szyfru. Dlatego klucz symetryczny może być zmieniany co pewien czas lub pewną liczbę przesłanych bajtów. Zmiana klucza na inny wymaga ustalenia jakiegoś bezpiecznego kanału przekazania klucza. Zatem podstawowym problemem związanym z użyciem klucza symetrycznego jest jego uzgodnienie. Nie można go wysłać w wersji niezaszyfrowanej przez sieć, bo mógłby go ktoś przechwycić. Ale jak go zaszyfrować, skoro klucz nie został uzgodniony? Można wprawdzie przekazać klucz np. na dysku zewnętrznym, albo nawet (teoretycznie) przedyktować przez telefon czy przesłać faksem (), ale jest lepsza metoda. Klucz może być przesłany zaszyfrowany przy pomocy jakiejś metody szyfrowania z kluczem publicznym i prywatnym. Do szyfrowania przesyłanych przez sieć komputerową danych można generować tzw. klucze sesji i szyfrować je wcześniej uzgodnionym (np. za pomocą szyfrowania asymetrycznego lub innego bezpiecznego kanału) tajnym kluczem symetrycznym. Klucze symetryczne mogą być 1 zmieniane co określony czas lub co określoną liczbę bajtów, z użyciem specjalnych protokołów. Rysunek z wykładu: Szyfrowanie z kluczem asymetrycznym (idea) Szyfrowanie i odszyfrowanie są realizowane przy pomocy pary kluczy. Jeden z nich, zwany kluczem prywatnym jest tajny i przechowywany tylko w jednym miejscu (plus ewentualne kopie zapasowe w plikach przechowywanych w bezpiecznym miejscu) i powinien być tajny. Drugi zwany kluczem publicznym może być powszechnie znany. Jeśli coś zostanie zaszyfrowane przy pomocy klucza prywatnego, to może być odszyfrowane tylko przy pomocy odpowiadającego mu klucza publicznego. Podobnie – jeśli coś zostanie zaszyfrowane przy pomocy klucza publicznego, to może być odszyfrowane tylko przy pomocy odpowiadającego mu klucza prywatnego. Jednak odgadnięcie klucza prywatnego, jeśli znany jest publiczny jest „praktycznie niemożliwe” w sensownym czasie (przy użyciu współczesnych komputerów). Skąd wziąć parę kluczy? Zajmiemy się tym w punkcie „Klucze publiczne i prywatne”. Na razie przyjmijmy, że każdy może wygenerować w pewien sposób parę: klucz publiczny i odpowiadający mu klucz prywatny. Jeśli zatem chcemy coś (dane, plik) przekazać innej osobie w wersji zaszyfrowanej, to powinniśmy zaszyfrować to kluczem publicznym tej osoby. Ponieważ nikt poza tą osobą nie zna odpowiadającego klucza prywatnego, nikt przesyłki nie odszyfruje (przynajmniej przy użyciu współczesnych komputerów). Szyfrowanie z kluczem publicznym i prywatnym jest jednak wielokrotnie kosztowniejsze czasowo od szyfrowania z kluczem symetrycznym (przy zachowaniu podobnego stopnia odporności na złamanie szyfru). 2 Powszechnie wykorzystywany algorytm szyfrowania z wykorzystaniem kluczy publicznych i prywatnych to RSA (Rivest, Shamin, Adelman). Rysunek z wykładu: M.in. ze względu na duży koszt czasowy algorytmów z kluczem publicznym nie są one powszechnie wykorzystywane do szyfrowania przesyłanych danych. Są natomiast stosowane do wymiany (uzgodnienia) kluczy symetrycznych. Przy transmisji dużych porcji danych między komputerami klucze symetryczne powinny być zmieniane (uzgadniane) co pewien czas. Skrót (hash) Szyfrowanie dużych porcji danych może być kosztowne i czasem niepożądane. W podpisach cyfrowych (patrz niżej) tworzy się tzw. skrót wiadomości (danych) za pomocą funkcji haszującej (hash function). Skrót (hash, digest) ma zwykle 128 bitów (dla funkcji MD5, nie jest już uznawanej za bezpieczną), 160 bitów (SHA-1, też już nie jest uznawany za bezpieczny) oraz dla różnych wersji rodziny funkcji o nazwie SHA-2 od 224 do 512 bitów (SHA-224, SHA-256, SHA-384 i SHA-512). Cechą charakterystyczną funkcji haszującej jest to, że jeśli w oryginalnej wiadomości (pliku) zmieniony zostanie chociaż jeden bit, to skrót będzie zupełnie inny niż ten, który został utworzony przed zmianą. Algorytmy haszujące są deterministyczne, tzn. dla niezmieniającej się wiadomości (pliku) za każdym razem zostanie utworzony identyczny skrót. Jednak na podstawie skrótu odtworzenie oryginalnej wiadomości (pliku) jest niemożliwe (z wyjątkiem pewnych specjalnych, nietypowych przypadków). Ponadto, celowa zmiana haszowanych danych tak, by skrót wyszedł taki sam powinna być bardzo trudna („praktycznie” niemożliwa). Podpis cyfrowy Zaszyfrowanie kluczem prywatnym daje gwarancję (a właściwie „bardzo duże prawdopodobieństwo, graniczące z pewnością”), że zaszyfrowana wiadomość pochodzi z 3 odpowiedniego źródła (o ile rzeczywiście znamy jego prawdziwy klucz publiczny a klucz prywatny nie został skradziony). Samej podpisywanej wiadomości (danych) nie musi się szyfrować. Generowany jest jej skrót (z użyciem funkcji haszującej) i ten skrót szyfrowany jest z wykorzystaniem klucza prywatnego osoby podpisującej. Zaszyfrowany skrót stanowi podpis cyfrowy. Niezaszyfrowana wiadomość może być przesłana jawnie razem z zaszyfrowanym skrótem (czyli podpisem cyfrowym). Odbiorca wykonuje dwie czynności. Po pierwsze odszyfrowuje skrót używając klucza publicznego nadawcy (klucz ten jest powszechnie znany, a w każdym razie dostępny). Po drugie, odbiorca tworzy skrót wiadomości używając tej samej funkcji haszującej. Jeśli wyniki obu operacji są identyczne, to znaczy, że wiadomość na pewno („prawie na pewno”) podpisał określony nadawca (bo prawidłowy skrót dało się odszyfrować za pomocą klucza publicznego nadawcy), a ponadto nikt po tej wiadomości nie zmienił już po podpisaniu (gdyż w takim wypadku jej skrót utworzony przez odbiorcę byłby zupełnie inny niż ten przesłany w wersji zaszyfrowanej przez nadawcę). Oczywiście po podpisaniu dodatkowo możemy wiadomość (plik) zaszyfrować, ale to nie należy już do samego podpisu. Jeśli wiadomość (plik, przesyłane dane) jest duża, to najlepiej szyfrować go okresowo zmienianym kluczem symetrycznym, przy czym samo uzgodnienie kluczy jest realizowane przy pomocy szyfrowania z kluczem publicznym i prywatnym. Rysunki z wykładu: Idea Realizacja 4 Klucze publiczne i prywatne, infrastruktura kluczy publicznych (Public Key Infrastructure - PKI) Skąd można wziąć klucz prywatny i publiczny? Klucze mogą być generowane przy pomocy odpowiedniego oprogramowania i powinny być podpisane przez jakieś centrum certyfikacyjne. Centrum certyfikacyjne (inaczej: urząd certyfikacji, ang. CA – Certification Authority) wydaje tzw. certyfikaty cyfrowe. Certyfikat jest specjalnym plikiem, tworzonym przez tzw. Urząd certyfikacji (lub organ certyfikacji, ang. CA - Certificate Authority). Certyfikat zawiera ważne kryptograficzne dane, pozwalające na bezpieczne sprawdzenie kto wydał certyfikat oraz dla kogo (dla jakiej firmy, organizacji lub osoby) został wydany. Certyfikat posiada też informację od kiedy i do kiedy jest ważny oraz jaki jest cel stosowania certyfikatu. Ta ostatnia informacja wiąże się z faktem, że certyfikaty mogą być używane nie tylko to potwierdzenia autentyczności serwera WWW, ale również na przykład do potwierdzania autentyczności maili albo programów komputerowych. Certyfikat wystawiony dla adresu pocztowego nie może być użyty do sprawdzenia autentyczności serwera WWW. Certyfikat zawiera klucz publiczny (NIE zawiera klucza prywatnego). Rodzaje certyfikatów. System wystawiania certyfikatów jest uregulowany i obejmuje metody sprawdzania właściciela strony (witryny), które musi wykonać urząd certyfikacyjny przed wydaniem certyfikatu. Są trzy typy certyfikatów, które różnią się właśnie sposobem weryfikacji: DV (Domain Validation) - z walidacją (sprawdzeniem) domeny. Jest to "najsłabszy" sposób weryfikacji właściciela witryny. Podstawą weryfikacji jest wysłanie maila do administratora domeny i uzyskanie od niego potwierdzenia. Centrum certyfikacji uznaje, że skoro uzyskano potwierdzenie, to certyfikat może być wystawiony. Jednak certyfikat taki nie zawiera żadnych informacji na temat firmy czy osoby, która zostanie właścicielem certyfikatu (ponieważ takie informacje nie są dla certyfikatów DV sprawdzane). 5 OV (Organization Validation) - z walidacją organizacji. Dla tych certyfikatów następuje prawne sprawdzenie danych rejestrowych firmy. Dane te mogą być wpisane do certyfikatu (np. nazwa firmy, adres). EV (Extended Validation) - z rozszerzoną walidacją. Dla takich certyfikatów weryfikowane są prawnie dane rejestrowe firmy (banku) oraz inne wymagane dokumenty firmy. Jak napisano powyżej, są to najbezpieczniejsze certyfikaty (i najdroższe). Banki, duże firmy czy duże sklepy internetowe powinny mieć certyfikat EV. W celu sprawdzenia, dla kogo certyfikat został wydany, należy kliknąć w symbol kłódki w pasku z adresem strony. Różne inne szczegóły certyfikatu, można wyświetlić wybierając (w zależności od przeglądarki) odpowiednią opcję po kliknięciu w symbol kłódki. Wśród tych informacji jest też tzw. ścieżka certyfikacji, umożliwiająca określenie, który urząd certyfikacji wydał dany certyfikat. Przykładowe pola w certyfikacie: Identyfikator osoby/firmy/obiektu Identyfikator Centrum certyfikacyjnego (CA), który wydał certyfikat Numer identyfikacyjny certyfikatu Cel stosowania (np. podpisywanie bezpiecznych stron WWW albo podpisywanie listów elektronicznych) Wartość klucza publicznego Okres ważności Podpis cyfrowy wydawcy (CA) Jest kilka standardów certyfikatów: X.509 (główny standard), PGP, GPG (system darmowy). Każdy certyfikat jest podpisany cyfrowo przez pewien urząd certyfikacji. Podpis cyfrowy umożliwia sprawdzenie autentyczności certyfikatu. Certyfikat może być wystawiony przez jeden z głównych, zaufanych urzędów certyfikacji lub przez urząd pośredni. Urzędy pośrednie też posiadają certyfikaty. Certyfikaty urzędów pośrednich wystawiane są przez urzędy główne lub inne urzędy pośrednie. Może być zatem tak, że bank posiada certyfikat wydany przez jeden z pośrednich urzędów certyfikacji, który z kolei posiada certyfikat wydany przez jeden z urzędów głównych. Zwykle tak właśnie jest. Urzędy główne też mają dla siebie certyfikaty, ale (wyjątkowo) te certyfikaty są wydawane i podpisywane przez te same urzędy (urząd główny sam dla siebie wydaje certyfikat i sam go podpisuje cyfrowo). Certyfikaty urzędów głównych przechowywane są w komputerach użytkowników (w systemie operacyjnym oraz w niektórych programach, które korzystają z systemu certyfikatów, np. Mozilla Firefox ma swój magazyn z certyfikatami urzędów głównych). Główne urzędy certyfikacji i ich certyfikaty są traktowane w systemach operacyjnych i różnych programach jako zaufane. Jednocześnie mechanizmy kryptograficzne umożliwiają sprawdzenie autentyczności podpisu cyfrowego w certyfikacie urzędu pośredniego i w certyfikatach wystawionych przez urzędy pośrednie. Może być również tak, że urząd pośredni jest nadrzędny dla innego urzędu pośredniego i dopiero ten kolejny urząd pośredni wystawia certyfikat dla strony WWW. 6 Jeśli certyfikat serwera WWW (witryny) jest podpisany przez urząd pośredni, którego certyfikat jest podpisany przez inny urząd pośredni itd. aż łańcuch certyfikatów kończy się na którymś z głównych urzędów certyfikacji, to przeglądarka traktuje taką stronę jako autentyczną. Jeśli ufamy danemu wydawcy (CA), to ufamy, że zawarty w certyfikacie klucz publiczny jest rzeczywiście prawdziwy i związany jest z firmą, organizacją, stroną WWW, która jest wpisana do certyfikatu. W systemach operacyjnych oraz różnych programach (np. przeglądarkach internetowych) jest wpisana lista zaufanych tzw. głównych urzędów certyfikacji oraz lista pośrednich urzędów certyfikacji, których certyfikaty są podpisane przez główne urzędy. Można przeglądać i zarządzać listą zaufanych wydawców i dodawać do tej listy certyfikaty swoich zaufanych urzędów certyfikacji. Hierarchię urzędów certyfikacji jest określana jako infrastruktura kluczy publicznych (PKI – Public Key Infrastructure). Darmowe certyfikaty do użycia na serwerze WWW (SSL, opisany poniżej): https://www.sslforfree.com/. Płatne np. https://www.digicert.com - pod tym adresem można znaleźć również ciekawe informacje na temat wykorzystania certyfikatów i protokołu SSL (opisany niżej). Rysunek z wykładu: 7 System PGP Niezależnym standardem opisującym tworzenie kluczy, rejestrowanie i wykorzystywanie certyfikatów jest PGP (Pretty Good Privacy). Powstał standard Open PGP. Standard doczekał się wielu implementacji. Darmowa wersja: np. GNU Privacy Guard GPG: https://www.gnupg.org. Inne sposoby sprawdzenia autentyczności i integralności HMAC, MAC: MAC może być też tworzony przez algorytm szyfrujący – w takim przypadku sprawdzenie autentyczności i integralności jest realizowana łącznie z samym szyfrowaniem (np. może być połączony z AES). Inne metody wymiany kluczy symetrycznych z wykorzystaniem kluczy prywatnych i publicznych. Szyfrowanie klucza symetrycznego wprost kluczem publicznym przypisanym do serwera rodzi różne niebezpieczeństwa. Jedno z nich polega na przykład na tym, że jeśli ktoś kiedyś „złamie” klucz prywatny (odgadnie, wykradnie), to można odszyfrować zgromadzoną gdzieś wcześniej komunikację. Aby temu przeciwdziałać stosuje się różne metody. 8 Metoda Diffiego Helmana – idea (są różne modyfikacje). Tworzone są efemeryczne (nietrwałe) pary kluczy publicznych i prywatnych zarówno u klienta jak i po stronie serwera. Klucze publiczne są przesyłane jawnie. Z tych kluczy publicznych (i zwykle jeszcze innych danych) zarówno serwer jak i klient są w stanie wygenerować taki sam klucz symetryczny, który następnie jest używany do szyfrowania pakietów. Problem – nie ma tu sprawdzania autentyczności. Dlatego metody te przy wymianie kluczy wykorzystują (na różne sposoby) tradycyjny podpis cyfrowy, weryfikowany przy pomocy certyfikatu. Bezpieczne protokoły: IPSec, SSL, TLS Bezpieczne protokoły powinny zapewniać: • Poufność przesyłanych danych (osoby niepowołane nie powinny móc odczytać danych). • Autentyczność (dane pochodzą rzeczywiście od określonego źródła). • Integralność (nikt danych nie zmienił). Bezpieczne protokoły mogą być wykorzystywane w warstwie aplikacji (szyfrowanie komunikatów HTTPS, protokoły SSL, TLS), między warstwą sieci a transportu (szyfrowanie pakietów IP – protokół IPSec), w warstwie łącza danych (szyfrowanie ramek, np. WEP, WPA, WPA2 w sieciach bezprzewodowych). 9 Protokoły szyfrujące przesyłane dane SSL – Secure Socket Layer (warstwa aplikacji w modelu TCP/IP, ale bywa zaliczany do warstwy transportu) – Używany był do zabezpieczania innych protokołów, wykorzystuje połączenie szyfrowania asymetrycznego z kluczem publicznym i symetrycznego. Wykorzystywany kiedyś z HTTP w sieci WWW (HTTPS), ale teraz wycofany. TLS – Transport Layer Security (warstwa aplikacji modelu TCP/IP, bywa zaliczany do warstwy transportu) – obecnie wykorzystywany, wywodzi się z SSL. S/MIME – Secure Multpurpose Internet Mail Extensions – szyfruje i umieszcza podpisy cyfrowe w wiadomościach pocztowych e-mail. Jest rozszerzeniem MIME, standardu włączania danych binarnych do listów elektronicznych. Protokół IPSec IPSec (IP Security) działa w warstwie sieci, może być wykorzystywany do szyfrowania i sprawdzania autentyczności i integralności przesyłanych danych pochodzących z dowolnej aplikacji. Proces szyfrowania i deszyfrowania jest niewidoczny dla użytkownika. IPSec jest w zasadzie frameworkiem, umożliwiającym wykorzystanie pewnych protokołów i metod według określonych zasad. Głównymi częściami IPSec są dwa protokoły: AH (Authentication Headers) oraz ESP (Encapsulating Security Payloads). Cechy IPSec: Autentyczność i integralność danych. AH umożliwia sprawdzenie autentyczności komputerów (nie użytkowników) uczestniczących w transmisji, umożliwia też sprawdzenie integralności danych. Nagłówek IP oraz dane są zabezpieczone przed modyfikacją. Szyfrowanie danych. ESP zapewnia szyfrowanie danych oraz autentyczność i integralność danych. ESP może być używany samodzielnie lub z AH. Przed przesyłaniem danych strony komunikujące się uzgadniają szczegóły takie jak sposób uwierzytelniania, wymiana kluczy, algorytmy szyfrowania. Polityki stosowania IPSec – można ustalić się politykę (zasadę, policy) kiedy IPSec ma być automatycznie zastosowany. Tryby działania IPSec (zarówno AH jak i ESP): • Tryb transportu (w sieci lokalnej) między dwoma punktami końcowymi transmisji. • Tryb tunelowania – szyfrowanie w niezabezpieczonej części sieci (np. dane między biurami przesyłane przez Internet). 10 Metody uwierzytelniania w IPSec: • Kerberos, • Oparty o certyfikaty cyfrowe, • Klucz dzielony (przechowywany we właściwościach napis jednakowy dla obu komunikujących się stron). Filtry IPSec Filtr IPSec pozwala na automatyczne przepuszczenie datagramów IP, blokowanie lub użycie negocjacji (i w konsekwencji użycie IPSec) w zależności od źródła i miejsca docelowego IP, protokołu transportowego, portów źródłowych i docelowych. Opis (rysunki): http://www.unixwiz.net/techtips/iguide-ipsec.html IPSec (ESP w trybie tunelowym) może być wykorzystany do realizacji VPN – Virtual Private Network (wyjaśnienie na wykładzie). Protokoły SSL (Secure Socket Layer) i TLS (Transport Layer Security) TLS 1.3: https://www.thesslstore.com/blog/tls-1-3-everything-possibly-needed-know/ Więcej szczegółów: https://www.thesslstore.com/blog/cipher-suites-algorithms-security-settings/ Inny szczegółowy opis: https://tls13.ulfheim.net (wersja TLS 1.2: https://tls.ulfheim.net ) 11 Transmisje grupowe dla IPv4, protokół IGMP, protokoły routowania dla transmisji grupowych IPv4. Multicast – transmisja grupowa, multiemisja. Idea: Wysłanie jednego pakietu ze źródła do wielu miejsc docelowych. Pakiety są kopiowane w routerach i przełącznikach warstwy drugiej. Zalety multiemisji w stosunku do transmisji jednostkowych (unicast) – mniejsze obciążenie sieci, większa skalowalność. Wykorzystanie: programy radiowe i telewizyjne, wideokonferencje, zdalne nauczanie, dystrybucja plików, ogłoszenia, monitoring, gry itd. Część z powyższych zastosowań wykorzystuje schemat jeden-do-wielu, część wiele-do-wielu. Komunikaty w większości protokołów routowania (RIP2, OSPF, EIGRP i inne) są przesyłane na znane, zarezerwowane dla nich adresy multiemisji. Klasa D adresów IPv4 wykorzystywana w multiemisji: 224.0.0.0 – 239.255.255.255. Przykładowe adresy o zasięgu ograniczonym do łącza: 224.0.0.1 – wszystkie komputery uczestniczące w transmisji grupowej (również routery) w segmencie sieci lokalnej (np. przyłączone do tego samego przełącznika Ethernet). 224.0.0.2 – wszystkie routery uczestniczące w transmisji grupowej (multicast routers) w segmencie sieci lokalnej. 224.0.0.4 – routery DVMRP. 224.0.0.5 – wszystkie routery OSPF. 224.0.0.6 – routery DR OSPF. 224.0.0.9 – routery RIPv2 (RIPv1 wykorzystuje rozgłoszenie – broadcast, nie multicast). Aby uczestniczyć w transmisji grupowej, komputer musi sprawdzać określone adresy w przychodzących pakietach (IP) i generalnie w ramkach (MAC). Transmisja grupowa odbywa się z wykorzystaniem różnych mechanizmów i protokołów. Do komunikacji router – host wykorzystywany jest specjalny protokół IGMP (Internet Group Management Protocol). Ponadto routery wykorzystują odpowiednie protokoły routowania (DVMRP – Distance Vector Multicast Routing Protocol, MOSPF – Multicast OSPF, PIM DM – Protocol Independent Multicast Dense Mode, PIM SM Sparse Mode, PIM Sparse-Dense Mode). Są też różne mechanizmy i protokoły dodatkowe (omówione później). IGMP – Internet Group Management Protocol. Protokół IGMP jest wykorzystywany do dynamicznego rejestrowania/wyrejestrowania odbiornika w routerze. Komunikaty IGMP są przesyłane w pakietach IP z adresem docelowym typu multicast i ustawioną wartością TTL na 1. IGMP Wersja 1 Są dwa typy komunikatów: • • Membership query (general membership query), wysyłany jest okresowo (co kilkadziesiąt sekund) przez routery na adres 224.0.0.1 (adres ten oznacza wszystkie komputery wykorzystujące multicast); służy do sprawdzenia, czy w sieci (na łączu) są odbiorcy dla emisji grupowej. Membership report, wysyłany jest na pewien adres grupy (na przykład 232.32.32.32), służy do zgłoszenia się jako odbiorca pakietów wysyłanych na ten adres; membership report wysyłany jest też w odpowiedzi na membership query. Host (nie router) po otrzymaniu membership query czeka pewien pseudolosowy czas (z zakresu od 0 do 10 sekund) i wysyła membership report. Jeśli w tym pseudolosowym czasie host usłyszy membership report od innego hosta, to nie wysyła swojego raportu. W IGMPv1 host „po cichu” opuszcza grupę. Jeśli router nie dostanie raportu w odpowiedzi na trzy kolejne membership query (lub według innej reguły opisanej w odpowiednim RFC), router usuwa grupę z tablicy multicastu i przestaje przesyłać pakiety kierowane do tej grupy. W IGMPv1 nie ma mechanizmu wyboru jednego routera odpytującego (tzw. querier) w jednym segmencie sieci wykorzystującej technologię wielodostępu z wieloma routerami (multiple access, np. Ethernet albo Frame Relay). Mechanizm ten wprowadzono w IGRP v2. Podobny mechanizm jest też wykorzystywany w protokole routowania multicastu o nazwie PIM. IGMP Wersja 2 W IGMPv2 są cztery typy komunikatów: • Membership query • Version 1 membership report • Version 2 membership report • Leave group Ważne zmiany w porównaniu do wersji pierwszej: • Membership query może być typu group-specific query – zapytanie o członkostwo jest wysyłane na adres grupy zamiast na 224.0.0.1. W ten sposób router może sprawdzić, czy jest uczestnik w konkretnej grupie, bez proszenia uczestników wszystkich grup o raporty. • Leave group message – komunikat o opuszczeniu grupy, wysyłany jest na adres 224.0.0.2 (wszystkie routery multicast na łączu). Powoduje szybsze usunięcie grupy z tablicy multicastu, jeśli nie ma w niej odbiorców. Standardowo router po otrzymaniu tego komunikatu, wysyła group-specific query, żeby upewnić się, czy jest jeszcze jakiś uczestnik tej grupy na łączu. Cały proces opuszczenia i usunięcia grupy trwa typowo 13 sekundy. • Dodano do zapytań IGMP (queries) określenie czasu query-interval response time (max. resp. time), jaki mają uczestnicy na wysłanie raportu (w jednostkach 0,1 s., standardowo wartość jest 100, czyli 10 sekund), czas ten jest określany przez wysyłającego zapytanie. Host po otrzymaniu membership query ustawia liczniki opóźnień dla każdej grupy (z wyjątkiem 224.0.0.1), do której należy na tym łączu. Liczniki są ustawiane na wartość pseudolosową z zakresu od zera do query interval response time. Jeśli licznik był już włączony dla danej grupy multicastowej, to jest on tylko wtedy resetowany do wartości losowej, jeśli query interval response time jest • mniejszy niż pozostała wartość licznika. Jeśli wygaśnie licznik dla grupy, to host musi wysłać wiadomość multicast version 2 membership report. Jeśli host odbierze inną wiadomość Report od innych hostów, to zatrzymuje licznik i nie wysyła już wiadomości Report, w ten sposób unika się powielania raportów dla grupy. Dodano mechanizm wyboru routera odpytującego (querier) w segmencie sieci wykorzystującej wielodostęp. Zostaje nim router, którego adres IP jest najmniejszą liczbą. Domyślnie router zakłada, że jest routerem odpytującym, ale jak dostanie query od routera z „niższym” adresem IP (na tym samym łączu), to przestanie być routerem odpytującym (staje się non-querier). Jeśli router non-querier nie słyszy komunikatów query od routera odpytującego przez pewien czas (other querier present interval), to staje się routerem odpytującym (ale znowu tylko do chwili, gdy dostanie query od routera z niższym adresem IP). IGMP Wersja 3 W IGMPv3 dodano możliwość zgłaszania się do grup z wyspecyfikowaniem adresu (adresów) jednostkowego IPv4 pewnego nadawcy (wielu nadawców). Można więc zgłosić się do grupy na przykład 235.32.32.35, ale z wskazaniem, że interesują nas tylko pakiety od konkretnego źródła (z wyspecyfikowanym adresem IP). Transmisje grupowe a technologie sieci lokalnych. Ethernet daje możliwość adresowania MAC typu multicast. Wykorzystywane są adresy z zakresu 01:00:5e:00:00:00 do 01:00:5e:7f:ff:ff. 23 bity adresu IPv4 są wprost wykorzystane w adresie MAC. Dla IPv4: Zatem każdy adres Ethernet multicast jest związany z 32 adresami IPv4 z klasy D (różniącymi się na 5 bitach). Trzeba to uwzględnić przy projektowaniu multiemisji. Może się zdarzyć, że pewien host będzie otrzymywał ramki zawierające pakiety IPv4 z grupy, której nie jest odbiorcą. Jednak pakiet taki zostanie odrzucony po odczytaniu adresu IPv4. Przykłady 239.20.20.20 odpowiada adresowi MAC: 01-00-5e-14-14-14. 239.10.10.10 odpowiada adresowi MAC: 01-00-5e-0a-0a-0a. Przykład adresów IP multiemisji, które odwzorowane są w ten sam adres MAC: Adresy, które różnią się w zapisie bitowym na pozycjach oznaczonych _ są odwzorowane w ten sam adres MAC 1110_ _ _ _ . _ xxxxxxx. xxxxxxxx.xxxxxxxx 224.7.7.7 225.7.7.7 226.7.7.7 227.7.7.7 … 239.7.7.7 224.135.7.7 225.135.7.7 226.135.7.7 227.135.7.7 … 239.135.7.7 Standardowo przełącznik Ethernet traktuje ramkę z adresem MAC multiemisji jak ramkę z adresem jednostkowym MAC (unicast), którego nie zna, czyli po otrzymaniu takiej ramki na pewnym porcie, przesyła ją do wszystkich pozostałych portów (realizuje broadcast w warstwie drugiej). W celu wyeliminowania tego rozgłoszenia stosowany jest mechanizm nazywany IGMP snooping lub specjalny protokół o nazwie CGMP (to rozwiązanie firmy Cisco jest starsze i gorsze – stosowane w starszych, „słabszych” przełącznikach). IGMP Snooping IGMP snooping polega na tym, że przełącznik warstwy drugiej „słucha” konwersacji między hostami a routerami i analizuje pakiety z komunikatami IGMP (raporty członkostwa w grupie membership reports oraz zgłoszenia opuszczenia grupy – membership leaves). Na podstawie śledzonych komunikatów IGMP przełącznik aktualizuje swoją tablicę przypisania adresów MAC do portów (CAM – Content Addressable Memory) i uwzględnia adresy Ethernet multicast. To rozwiązanie wymaga jednak odpowiednio wydajnych przełączników, najlepiej z dołączonym specjalnym sprzętowym modułem (ASIC) do analizy komunikatów IGMP. Protokół CGMP Cisco Group Management Protocol (CGMP), mimo że opracowany w firmie Cisco, jest wykorzystywany nie tylko przez przełączniki tej firmy. Protokół jest oparty o model klientserver, gdzie router jest serwerem CGMP a przełącznik jest klientem. Na routerze i przełączniku działa oprogramowanie realizujące CGMP. Router tłumaczy komunikaty IGMP (membership report i leave wędrujący od hosta do routera) na komendy CGMP, które są przesyłane do przełącznika i tam wykorzystane do modyfikowania tablicy adresów MAC. Routery wykorzystują ogólnie znany adres multicast MAC (01:00:0c:dd:dd:dd) do przesyłania komend do przełączników. Poniższy tekst należy traktować jako uzupełniający (nie obowiązuje do egzaminu). Protokół routowania multiemisji, PIM (Protocol Independent Multicast). W odróżnieniu od protokołów routowania jednostkowego (unicast) opartych na grafach, protokoły dla multicastu oparte są o drzewa dystrybucji. Drzewa te określają ścieżki od źródła do odbiorników (odbiorców). Wykorzystywane są dwa rodzaje drzew: • Source trees (drzewa źródłowe), • Shared trees (drzewa współdzielone). W przypadku protokołów wykorzystujących source trees oddzielne drzewo jest budowane od każdego źródła do odbiorników. Source tree określa najkrótszą ścieżkę od źródła do odbiorcy, drzewo takie jest też nazywane Shortest Path Tree (SPT). Routery zapamiętują informacje o parach (Source IP address, Group IP address). W przypadku, gdy na pewnym obszarze (z wieloma odbiorcami) takich par jest dużo, czyli gdy grupy zawierają wiele źródeł i jest tych grup dużo, obsługa multiemisji może zajmować sporo zasobów pamięciowych routera. W przypadku protokołów wykorzystujących shared trees, ścieżki od różnych źródeł zawierają wspólną część – drzewo współdzielone, którego korzeń jest routerem służącym jako punkt spotkań – Randezvous Point (RP). Źródła wysyłają pakiety do RP, skąd przesyłane są dalej do odbiorców przez drzewo współdzielone. Ze względu na wykorzystanie wspólnego punktu spotkań, ścieżki od źródła do odbiorcy mogą być nieoptymalne. Zaletą jest jednak znacznie mniejsze wykorzystanie zasobów routerów. Protokół routowania multicastu PIM może być typu dense mode (DM, tryb gęsty) lub sparse mode (SM, tryb rzadki). Dense mode polega na tym, że routery kierują ruch grupowy (multicast) w sposób zalewowy (flooding) do wszystkich sieci na pewnym obszarze, a następnie obcinają te przepływy (krawędzie grafu), dla których nie ma odbiorników wykorzystując okresowy działający mechanizm nazywany flood-and-prune. Generalnie założenie jest tutaj takie, że odbiorcy są prawie wszędzie w rozpatrywanym obszarze. Sparse mode polega na tym, że drzewa dystrybucji są budowane z wykorzystaniem jawnych mechanizmów połączenia (explicit join tree) kierowanych od routerów, do których podłączeni są bezpośrednio odbiorcy do (w kierunku) źródła. Protokoły routowania multicast wykorzystują mechanizm Reverse Path Forwarding do utworzenia najkrótszych ścieżek od źródła do odbiorcy i do zapobiegania pętlom. Można powiedzieć, że jednostkowe (unicast) protokoły routowania skupiają się na tym, gdzie jest odbiorca (jaka jest najkrótsza ścieżka do odbiorcy), natomiast protokoły multicast skupiają się na tym, gdzie jest źródło (najkrótsza ścieżka do źródła). PIM Dense Mode Flood and Prune (rysunek na tablicy) Początkowo (w fazie Flood) multicast jest kierowany do wszystkich interfejsów (w wielu routerach) z wyjątkiem tych, które prowadzą najkrótszą ścieżką do źródła. Nazwijmy te interfejsy non-RPF. Wyznaczenie interfejsów prowadzących najkrótszą ścieżką do źródła (nazwijmy je RPF) następuje dzięki pracy zwykłego protokołu routowania unicastowego (np. EIGRP, OSPF). W fazie Prune routery, które nie mają odbiorców wysyłają do interfejsów RPF i non-RPF komunikaty Prune, które powodują zablokowanie przesyłania ruchu grupowego do fragmentów sieci, w których przesyłanie grupowe nie powinno być realizowane. Router, który ma odbiorców ruchu grupowego wysyła komunikaty Prune do tych interfejsów non-RPF, z których nie powinien nadchodzić ruch grupowy (bo nie są na najkrótszej ścieżce do źródła). Po kilku minutach (w PIM DM standardowo 3 min.) fazy Flood oraz Prune są realizowane ponownie. W przypadku, jeśli w pewnym miejscu, do którego nie dociera ruch grupowy (bo zadziałała faza Prune) pojawia się odbiorca, może być przesłany odpowiedni komunikat (Graft), który szybko przywraca ruch grupowy w odpowiednim fragmencie sieci (nie trzeba czekać 3 min.). PIM Sparse Mode PIM SM wykorzystuje shared distribution trees, chociaż może również wykorzystywać drzewa SPT (przełącza się na SPT). Zwykle PIM SM wykorzystuje RP (Randezvous Point). Źródła rejestrują się w RP (muszą go znać) i wysyłają ruch multicastowy do RP przy pomocy pakietów unicastowych. Odbiorcy przyłączają się do grupy wykorzystując swój DR (designated router) na swoim łączu. Router ten musi znać adres RP i wysyła komunikat dołączenia grupy (*,G) w kierunku RP, wykorzystując informację z normalnego routowania unicastowego (czyli najkrótszą trasą do RP). Komunikat (*,G) wędruje metodą hop-by-hop aż dotrze do RP, budując tym samym gałąź drzewa shared tree. W przypadku, jeśli węzeł wykryje, że zna lepszą ścieżkę do źródła niż przez shared tree, przełącza się na SPT. Są różne usprawnienia/modyfikacje, np. Bidirectional PIM dla ruchu typu many-to-many. Istnieje możliwość skonfigurowania mechanizmu automatycznego wyboru RP. Jest też wersja PIM Sparse-Dense-Mode. W tej wersji PIM, jeśli nie zostanie wykryty RP (można skonfigurować automatyczny wybór RP) ani nie zostanie skonfigurowany ręcznie, PIM przechodzi do trybu PIM DM. Zalecaną wersją PIM jest właśnie PIM Sparse-Dense-Mode. Protokół IPv6 Potrzeba zwiększenia liczby adresów wynika z rosnącej liczby komputerów i innych urządzeń podłączonych do Internetu (komputery PDA, telefony komórkowe, różne urządzenia z „inteligentnego” domu). Jeśli urządzenia te miałyby korzystać z IP to być może IPv4 będzie niewystarczający, mimo stosowania translacji adresów (NAT) czy DHCP. Zanim wprowadzono routowanie bezklasowe, które powoduje lepsze wykorzystanie przestrzeni adresowej i zanim wprowadzono translację adresów i adresy prywatne, były przewidywania, że do końca lat 90-tych ubiegłego wieku adresy IPv4 zostaną wyczerpane (niektóre opracowania mówiły o 2005-2010). Wprowadzenie wspomnianych rozwiązań odsunęło bezwzględną konieczność stosowania IPv6 na nieco dalszą przyszłość. Ze względu na niekompatybilność IPv6 z IPv4 powszechne przejście na nową wersję nie jest jeszcze realizowane. W IPv6 rozmiar adresu wzrasta z 32 bitów do 128 bitów (liczba adresów rośnie do maksymalnie 3,4*10 38, są to tysiące unikalnych adresów na każdy metr kwadratowy kuli ziemskiej). W rzeczywistości jednak powody, dla których powszechne wprowadzenie IPv6 wydaje się być nieuchronne są też inne niż zwiększona przestrzeń adresowa. Prześledźmy najważniejsze cechy IPv6. Cechy IPv6 w odniesieniu do IPv4 • Dłuższe adresy, a zatem dużo większa przestrzeń adresowa (zakres dopuszczalnych adresów). • Złożona hierarchia adresów. W IPv4 hierarchia adresów dotyczy na ogół tylko lokalnej sieci i podsieci, ale nie ma gwarancji, że adresy np. 149.167.0.0/16 i 149.168.0.0/16 należą do tego samego dostawcy i są ulokowane niedaleko w sensie geograficznym. Zatem w IPv4 jest trudniej wpisywać zsumowane trasy w routerach (trasy do wielu sieci). W IPv6 wprowadza się hierarchię adresów, która znacznie ułatwia routowanie (zapis sumarycznych tras do wielu sieci). • Nowa forma nagłówka – podstawowy nagłówek jest uproszczony, zawiera 40 oktetów, dodatkowe informacje przekazywane są za pomocą dodatkowych nagłówków (mogą mieć inną wielkość). Wymagany jest jedynie nagłówek podstawowy, dodatkowe są opcjonalne. W nagłówkach dodatkowych mogą być informacje o trasowaniu, fragmentacji, szyfrowaniu, kontroli autentyczności i integralności (przejęta funkcjonalność z protokołu IPSec). Uproszczona forma nagłówka powoduje przyśpieszenie operacji w routerach. Wprawdzie podstawowy nagłówek jest większy niż w IPv4 (tam zajmował 20 bajtów), lecz w IPv4 cały nagłówek ma zmienną długość (od 20 do 60 bajtów) ze względu na możliwość umieszczenia w nim opcji. W IPv6 w przypadku nagłówka podstawowego pobieranych jest zawsze 40 bajtów, operacja może być wykonywana szybciej sprzętowo. W IPv6 poza adresami źródłowym i docelowym jest tylko osiem bajtów innych informacji. Ewentualne inne informacje mogą być przesyłane w załączonych nagłówkach dodatkowych, które 1 mogą nie być w ogóle przetwarzane przez routery pośrednie, ich przetwarzanie jest realizowane dopiero w komputerze docelowym. Ponadto umieszczenie dodatkowych informacji w nagłówkach dodatkowych a nie w nagłówku podstawowym ułatwia rozszerzanie protokołu i wprowadzanie nowych opcji i nagłówków w przyszłości. • Fragmentacja realizowana jest nie przez routery pośrednie (jak w IPv4), ale przez nadawcę, który musi określić MTU (Maximum Transfer Unit) na drodze datagramu IP (inaczej: pakietu). Procedura wyznaczenia MTU jest nazywana Path MTU Discovery. Celem przesunięcia zadania fragmentacji na nadawcę jest odciążenie routerów. W przypadku decyzji (w pewnym routerze) o przesyłaniu datagramu trasą o mniejszym MTU niż wielkość datagramu IPv6, datagram jest odrzucany (przez ten router) i odpowiedni komunikat ICMPv6 (Packet Too Big) jest wysyłany do nadawcy (komunikat ten zawiera poprawną wartość MTU). Nadawca musi powtórzyć przesłanie z odpowiednim MTU. Proces ten teoretycznie może nastąpić wielokrotnie na drodze datagramu, jednak w praktyce powinien wystąpić rzadko. Protokoły (implementacje protokołów) warstw wyższych (np. TCP) są powiadamiane o nowej wartości MTU i powinny ją uwzględnić. Jeśli jednak nie uwzględnią (czyli będą dalej przesyłać np. za duże segmenty TCP), wówczas komputer źródłowy będzie wykonywał fragmentację zbyt dużych pakietów. • IPv6 zawiera rozwinięte mechanizmy autokonfiguracji. • IPv6 zawiera ulepszone mechanizmy obsługi rozgłaszania grupowego (multicast) oraz nowy rodzaj adresowania – adresy pobliskie anycast (przesłanie do jednego – na ogół najbliższego – routera skonfigurowanego do odbierania określonego adresu typu anycast). • IPv6 zawiera mechanizmy wsparcia dla urządzeń mobilnych. • Do IPv6 włączone są mechanizmy bezpieczeństwa. Jest wparcie dla szyfrowania, kontroli integralności i autentyczności przesyłanych danych (włączony standard IPSec). • Wsparcie dla QoS (Quality of Service) – jest to mechanizm rezerwacji zasobów na potrzeby komunikujących się programów. Mechanizm umożliwia routerowi wiązanie każdego datagramu z podaną rezerwacją zasobów. Wprowadza się pojęcie potoku (flow), oznaczające ścieżkę przez intersieć, na której routery gwarantują określoną jakość usługi, np. programy przesyłające wideo mogą ustanowić potok, w ramach którego mają gwarantowaną określoną przepustowość i opóźnienie. Można również określać priorytet pakietów uwzględniany przy odrzucaniu pakietów wskutek przeciążenia (congestion) na routerze. Struktura nagłówka IPv6 Pięć pól z nagłówka IPv4 zostało usuniętych: długość nagłówka, identyfikacja, flagi, przesunięcie fragmentu (te trzy pola były używane przy fragmentacji), suma kontrolna nagłówka. 2 Pola nagłówka IPv6: Version 4 bity, wersja protokołu, wpisana jest liczba 6. Traffic Class 1 bajt, używana do określenia priorytetu pakietów IPv6. Flow Label 20 bitów, używane do etykietowania pakietów wymagających takiego samego traktowania przez routery. Przyśpiesza obsługę strumienia (potoku, ang. flow) datagramów, które muszą być dostarczone w czasie rzeczywistym (np. wideo), w kolejnych datagramach ze strumienia (za pierwszym) nagłówki nie muszą być przetwarzane pod kątem określania jakości przesyłania. Payload Length 2 bajty, wielkość danych za nagłówkiem, obejmuje też nagłówki dodatkowe. Normalnie daje to możliwości przesyłania 64 kB danych, ale IPv6 daje możliwość tworzenia tzw. Jumbgrams – datagramów większych, które wymagają specjalnego nagłówka dodatkowego Jumbogram Extension header. Next Header 1 bajt, identyfikuje typ następnego nagłówka, np. TCP, UDP lub nagłówka dodatkowego IPv6. Hop Limit 1 bajt, TTL. Source Address 16 bajtów, adres źródłowy. Destination Address 16 bajtów, adres docelowy. W IPv6 to pole czasami może nie zawierać ostatecznego adresu przeznaczenia – jeśli został załączony dodatkowy nagłówek typu Routing. Nagłówki dodatkowe IPv6 (Extension headers) W datagramie IPv6 może być zero lub więcej nagłówków dodatkowych za nagłówkiem podstawowym a przed przesyłanymi danymi (np. segmentem TCP). Typ nagłówka dodatkowego jest określony w polu Next Header w nagłówku poprzedzającym. Nagłówki dodatkowe są sprawdzane i przetwarzane przez węzeł (router, host) o adresie zawartym w polu Destination Address w nagłówku podstawowym. W przypadku transmisji grupowej (multicast) nagłówki dodatkowe są sprawdzane i przetwarzane przez wszystkie węzły należące do grupy. Jeśli nagłówek jest typu Hop-by-hop Options header, to informacje, które przenosi muszą być przeanalizowane przez każdy węzeł na drodze datagramu. Taki nagłówek musi być umieszczony zawsze bezpośrednio za nagłówkiem podstawowym. Wielkość nagłówka dodatkowego jest zawsze wielokrotnością 8 bajtów. Nagłówki dodatkowe muszą być sprawdzane i przetwarzane dokładnie w kolejności występowania. Jeśli węzeł musi przetworzyć nagłówek dodatkowy, ale nie może rozpoznać poprawnej liczby w polu Next Header, powinien odrzucić datagram i wysłać komunikat ICMPv6 Parameter Problem. 3 Jeśli więcej niż jeden nagłówek jest przesyłany, to kolejność musi być taka: 1) IPv6 header (nagłówek podstawowy). 2) Hop-by-hop Options header (jest używany przez routery np. w protokole RVSP – Resource Reservation Protocol, w protokole MLD – Multicast Listener Discovery, w jumbogramach). 3) Destination Options header, jeśli użyty jest nagłówek dodatkowy Routing. Służy do przekazania opcji, które będą przetwarzane przez węzeł o adresie zawartym w polu Destination Address w nagłówku podstawowym oraz przez węzły o adresach wymienionych w nagłówku dodatkowym typu Routing. 4) Routing header (typ 0 – odpowiednik routowania źródłowego z IPv4 oraz typ 2 – wykorzystywany do obsługi mobilności do przekazania Home Address mobilnego węzła docelowego). 5) Fragment header. 6) Authentication header. 7) Encapsulating Security Payload header. 8) Destination Options header (wykorzystywany dla opcji, które będą przetwarzane tylko przez ostatecznego odbiorcę pakietu, wykorzystywany w mobilnym IP do przekazania źródłowego adresu home). 9) Mobility header (wykorzystywany do obsługi mobilności w protokole IPv6). 10) Upper-Layer header (np. TCP, UDP). Przykłady pakietów IPv6: Nagłówek Nagłówek TCP postawowy wraz z danymi IPv6, (segment TCP) Next header = 6 (TCP) Nagłówek postawowy IPv6, Next header = 43 (Routing) Nagłówek Nagłówek TCP Routing, wraz z danymi Next header = 6 (TCP) Nagłówek postawowy IPv6, Next header = 43 (Routing) Nagłówek Routing, Next header = 44 (Fragment) Fragment Nagłówek TCP header, wraz z danymi Next header = 6 (TCP) Inne przykłady w materiałach uzupełniających: http://www.cisco.com/en/US/technologies/tk648/tk872/technologies_white_paper0900aec d8054d37d.html 4 Routing header Routing header jest używany do określenia listy routerów, przez które powinien przejść pakiet na drodze do miejsca przeznaczenia. Odpowiada to opcjom routowania źródłowego. Struktura nagłówka typu Routing: Next header (1 bajt) Header Extension Length (1 bajt) – podaje wielkość tego nagłówka w jednostkach 8bajtowych, pierwsze 8 bajtów nie jest wliczane. Routing Type (1 bajt) Segments Left (1 bajt) – wartość pola określa przez ile węzłów datagram ma jeszcze przejść zanim osiągnie ostateczne miejsce przeznaczenia. Type-Specific Data – zależy od typu nagłówka Routing. Dla typu zero zawiera adresy IPv6 routerów, przez które datagram musi przejść. Dla typu 2 (wykorzystywanego w mobilnym IPv6) zawiera tzw. Home Address urządzenia mobilnego. To pole ma zawsze taką długość, by całkowita długość nagłówka była wielokrotnością liczby 8. Pierwszy węzeł, który przetwarza nagłówek Routing to węzeł (router), którego adres znajduje się w polu Destination Address nagłówka podstawowego. Węzeł ten zmniejsza o jeden liczbę zawartą w polu Segments Left i przepisuje następny adres z nagłówka Routing do pola Destination nagłówka podstawowego. Ostateczne miejsce docelowe datagramu jest określone przez ostatni adres w nagłówku Routing. Jak widać, w odróżnieniu od IPv4, w IPv6 adres docelowy może się zmieniać na drodze datagramu – jeśli wykorzystywany jest nagłówek dodatkowy Routing. Sposób pobierania adresów z nagłówka Routing i wpisywania ich do Destination Address jest zilustrowany w poniższym przykładzie. Przykład Pakiet ma być przesłany z węzła S do węzła D, po drodze muszą być odwiedzone węzły I1, I2, I3. Pakiet z S do I1 IPv6 header Source address: S Destination address: I1 Pakiet z I1 do I2 Source address: S Destination address: I2 Pakiet z I2 do I3 Source address: S Destination address: I3 Pakiet z I3 do D Source address: S Destination address: D Routing header Segments Left 3 Address(1) = I2 Address(2) = I3 Address(3) = D Segments Left 2 Address(1) = I1 Address(2) = I3 Address(3) = D Segments Left 1 Address(1) = I1 Address(2) = I2 Address(3) = D Segments Left 0 Address(1) = I1 Address(2) = I2 Address(3) = I3 5 W polu Routing Type pierwotnie można było tylko wpisać 0. Ten typ Routing Header jest określany RH0. W 2001 roku pokazano, że RH0 może być użyty w celu zablokowania usług (denial of services). Można było wykonywać pętle routowania wpisując odpowiednie adresy pośrednie. W RFC 5095 ogłoszono, że użycie RH0 jest niebezpieczne i w związku z tym należy przestać wykorzystywać ten typ nagłówka. Jednocześnie można stosować inny zdefiniowany typ: 2. Jako adres pośredni można tam wpisać tylko jeden adres IPv6. Jest to wykorzystane do obsługi mobilności węzłów (do przekazania Home Address mobilnego węzła docelowego). Fragment header Fragmentacja występuje tylko w węźle źródłowym. Pakiet ma część, która nie podlega fragmentacji – jest to podstawowy nagłówek i wszystkie nagłówki dodatkowe, które muszą być przetwarzane na drodze datagramu. Część, która podlega fragmentacji składa się z pozostałych nagłówków dodatkowych, nagłówka warstwy wyższej i danych. Część nie podlegająca fragmentacji jest na początku każdego fragmentu, potem jest nagłówek Fragment, potem część fragmentowana. Adresy IPv6 Adresację IPv6 omawia RFC 4291 (IP Version 6 Addressing Architecture) Tekstowe przedstawianie adresów IPv6 Osiem 16 bitowych sekcji w zapisie szesnastkowym, oddzielonych dwukropkami, np.: fe80:0000:0000:0000:0202:b3ff:fe1e:8329 Jeśli w jakiejś sekcji są zera na najstarszych bitach, to nie muszą być wypisywane, np.: fe80: 0:0:0:202:b3ff:fe1e:8329 Długi ciąg zer może być połączony i przedstawiony jako dwa dwukropki „::”. Symbol „::” może być użyty w adresie tylko jeden raz. Na przykład: fe80::202:b3ff:fe1e:8329 Adres 2002:ca01:0000:0000:0056:0000:0000:1234 może być przedstawiony jako 2002:ca01::0056:0000:0000:1234 6 lub 2002:ca01:0000:0000:0056::1234 ale niepoprawny jest następujący zapis: 2002:ca01::0056::1234 W środowisku z węzłami IPv4 oraz IPv6 mogą być w użyciu adresy IPv6, które na ostatnich czterech bajtach zawierają adres IPv4. Wówczas sześć bardziej znaczących sekcji 16-bitowych przedstawianych jest heksadecymalnie, pozostałe 32 bity mogą być przedstawione w postaci dziesiętnej notacji kropkowej. Są dwa typy takich adresów: Typ 1: IPv4-Compatible IPv6 Address 96 bitów zero + adres IPv4 Przykłady Adres 192.168.0.2 może być zapisany jako: 0:0:0:0:0:0:192.168.0.2 lub ::192.168.0.2 ale można też zapisać go tak: ::c0a8:2 Jednak ten typ jest wg RFC4291 przestarzały i nie powinien być używany. Typ 2 to IPv4-Mapped IPv6 Address i ten jest obecnie zalecany. Adres taki ma format: 0000..............................0000 ffff + IPv4 address Adresy takie mogą być stosowane np. w aplikacjach, które korzystają aktywnie z IPv6 i dopuszczają tylko taką wersję IP. Aplikacja taka może działać na komputerach z zaimplementowanym stosem protokołów z IPv4 oraz z IPv6. Komputery obsługujące obydwie wersje IP czasem są określane jako „dual stack”. Przykład: program serwer TCP korzysta tylko z adresów IPv6 (jest taka możliwość), ale chcemy umożliwić komunikację tego programu z klientami IPv4. Komputery „dual stack” dostarczą do programu adres IPv6 typu IPv4-Mapped IPv6 Address (np. w serwerze TCP może być wykorzystywana struktura adresowa gniazda sockaddr_in6). Proponowana forma kanoniczna tekstowej reprezentacji adresów IPv6 Różne sposoby prezentacji tego samego adresu sprawiają jednak wiele kłopotów. Z tego powodu w sierpniu 2010 opublikowano RFC5952 („A Recommendation for IPv6 Address Text Representation”), który określa zalecenia w tym zakresie. Proponuje się formę kanoniczną (canonical format) reprezentacji tekstowej. Jednocześnie wszystkie inne wcześniej omówione formaty są dopuszczalne. 7 Główne postulaty: • Zawsze opuszczać wiodące (początkowe) zera w sekcjach. • Skracać przez dwa dwukropki :: tak dużą część adresu, jak to możliwe. • Nie skracać przez :: pojedynczej sekcji 16-to bitowej złożonej z samych zer. • Pojedyncza sekcja 16-to bitowa złożona z samych zer powinna być reprezentowana jako 0. • Podwójny dwukropek należy stosować w tym miejscu adresu, w którym skrócenie będzie największe. Jeśli jest kilka takich miejsc o tej samej długości, należy wybrać pierwsze z lewej strony. • Należy używać małych liter, nie dużych (ze względu na podobieństwo dużej litery D do 0 oraz dużego B do 8). Prefiksy adresów IPv6 Zamiast identyfikatora sieci (jak było w IPv4), w IPv6 używa się tzw. prefiksu. Prefiks to pewna liczba bitów adresu licząc z lewej strony (najbardziej znaczące bity). Prefiks określa zatem sieć. Prefiks podaje się standardowo jako pewną liczbę sekcji adresu. Przykład: 2001:db8:0:cd30 Prefiks można podać również w formie: ipv6-address/prefix-length Przykłady: 2001:db8:0000:cd30:0000:0000:0000:0000/60 2001:db8::cd30:0:0:0:0/60 2001:db8:0:cd30::/60 Typ adresu IPv6 można określić na podstawie pierwszych jego bitów. Przedstawia to poniższa tabela: Typ Prefiks binarnie Adres niewyspecyfikowany Pętla zwrotna (Loopback) Multicast Link-local unicast Same zera Global unicast (globalne jednostkowe) Wszystkie pozostałe Prefiks szesnastkowo ::/128 Najmłodszy bit 1, ::1/128 reszta same zera 1111 1111 ff00::/8 1111111010 fe80::/10 Część przestrzeni adresowej 1/256 1/1024 8 Typy adresów IPv6 Klasyfikacja adresów IPv6: adresy jednostkowe (unicast), adresy pobliskie (anycast) i adresy grupowe (multicast). Nie ma w IPv6 adresów rozgłoszeniowych, zastępują je adresy grupowe. Inna klasyfikacja – adresy IPv6 mogą być typu: Unique stable IP addresses: przypisane w drodze konfiguracji ręcznej, poprzez serwer DHCP lub w drodze autokonfiguracji z wykorzystaniem adresów MAC (identyfikatorów interfejsów); Temporary transient IP addresses: otrzymane z wykorzystaniem liczby pseudolosowej w miejscu identyfikatora interfejsu. Inny podział: stateful (skonfigurowane przy udziale serwerów DHCPv6) i stateless (autokonfiguracja bez DHCPv6). Uwaga – konfiguracja stateless oznacza, że nie ma obiektów (np. serwera DHCPv6), które utrzymywałyby stan adresu (kiedy i komu adres został przydzielony, na jak długo itp.). RFC 3736 dopuszcza wykorzystanie autokonfiguracji stateless z udziałem serwera DHCPv6 (czasem określany jako DHCP-lite), ale wówczas serwer ten nie przydziela adresu IPv6, lecz podaje inne informacje, np. listę serwerów DNS. Adresy jednostkowe (Unicast addresses) W IPv6 określony pojedynczy adres jednostkowy może być przypisany do wielu interfejsów w węźle (komputerze) lub wielu komputerów. Może to być wykorzystywane do adresacji typu anycast (będzie wyjaśniona dalej) lub do równoważenia obciążeń. Adres jednostkowy generalnie jest podzielony na dwie części: n bitowy prefiks oraz 128-n bitowy identyfikator interfejsu. Typowo prefiks otrzymany od dostawcy ma 48 bitów, 16 bitów mamy na wewnętrzny podział sieci na podsieci (np. w firmie). Adresy jednostkowe o prefiksie różnym od 000 powinny używać 64-bitowego identyfikatora interfejsu, zgodnego ze standardem o nazwie EUI-64. Identyfikator interfejsu może być wyznaczony w trakcie autokonfiguracji na podstawie adresu warstwy łącza danych. Np. dla adresu MAC w technologii Ethernet: najpierw między trzeci i czwarty bajt 6-cio bajtowego adresu MAC wstawiona jest liczba 0xfffe (0x oznacza zapis szesnastkowy), następnie zamieniany jest drugi najmłodszy bit z prawej strony pierwszego (najbardziej znaczącego) bajta adresu (ta zamiana nie jest wykonywana w przypadku adresu typu Link-local). Na przykład dla adresu MAC: 00-02-b3-1e-83-29 otrzymujemy: 0202:b3ff:fe1e:8329. Adres może być budowany automatycznie na podstawie MAC ale nie musi. Można go np. wpisać ręcznie lub może być generowany losowo lub przydzielony przez serwer DHCPv6. Zarezerwowane specjalne adresy jednostkowe Adres nieokreślony 0:0:0:0:0:0:0:0 (lub :: w formacie skompresowanym) – nie może być przypisany do węzła, używany jest np. przy inicjalizacji IPv6, gdy węzeł nie zna swojego adresu (w datagramach IPv6 w miejscu adresu źródłowego). 9 Adres pętli zwrotnej (loopback), odpowiednik 127.0.0.1 z IPv4. 0:0:0:0:0:0:0:1 (lub ::1 w formacie skompresowanym). 2001:db8::/32 - Adresy zarezerwowane tylko dla celów wykorzystywania w dokumentacji – RFC 3849 (nie można ich przypisywać do rzeczywistych interfejsów) Global Unicast Addresses Dawna struktura: FP 001 TLA ID 13 bitów RES 8 bitów NLA ID 24 bity SLA ID 16 bitów ID interfejsu 64 bity Adresy te były zorganizowane w strukturę hierarchiczną. Najwyższy poziom hierarchii był wyznaczony przez tzw. TLA ID – Top Level Aggregation Identifier. Za 8192 trasy typu top level były odpowiedzialne następujące organizacje: ARIN – American Registry for Internet Numbers, RIPE – Reseau IP Europeens Network Coordinator Center in Europe, APNIC – Asia Pacific Network Information Center. NLA ID – Next Level Aggregation Identifier wyznaczał przestrzeń adresową przypisaną do dostawców Internetu. SLA ID – Site Level Aggregation to tzw. topologia siedziby (Site topology). Część adresu poświęcona na potrzeby routowania wewnętrznego (w ramach organizacji). Identyfikator podsieci, pozwalał organizacjom utworzyć wewnętrzną strukturę routingu, 16 bitów daje możliwości obsługi 65536 wewnętrznych podsieci. Obecnie, w RFC 4291 struktura została uproszczona: Global routing prefix n bits Subnet ID m bits Interface ID 64 bits Ze względu na to, że identyfikator interfejsu powinien mieć 64 bity, n+m powinno być równe 64. Adresy jednostkowe używane lokalnie (Link-local Unicast Addresses) Używane na łączach, na których nie ma routerów, przy autokonfiguracji adresu (host sam przydziela sobie adres), do tworzenia sieci tymczasowych lub przed przydzieleniem prefiksu przez router lub serwer DHCPv6. 10 bitów 1111111010 54 bity 0 64 bity ID interfejsu Adresy tego typu mają prefiks fe80/10. Identyfikator interfejsu jest automatycznie wyliczany z adresu MAC (opis znajduje się w tekście wyżej). Typowo adresy te są wykorzystywane np. jako adresy Next Hop Router w tablicy routowania IPv6 (oczywiście interfejs routera o takim adresie może mieć też adres IPv6 unikalny globalnie, jednak użycie takich adresów jako Next Hop nie jest rekomendowane). 10 Adresy jednostkowe siedziby lokalnej (Site-local Unicast Addresses) Ten typ adresów według najnowszej specyfikacji jest już przestarzały, chociaż dotychczasowe implementacje mogą być używane nadal. Są odpowiednikiem adresów prywatnych IPv4, używane do adresacji wewnątrz prywatnej organizacji. Routery nie mogą przesyłać datagramów z tymi adresami na zewnątrz, ale wewnątrz organizacji sieć może być podzielona z wykorzystaniem routerów. 10 bitów 1111111011 38 bitów 0 16 bitów ID podsieci 64 bity ID interfejsu Adresy tego typu mają prefiks fec0. Adresy IPv6 z wbudowanymi adresami IPv4 Wspominane już wcześniej przy okazji omawiania sposobu zapisu adresów IPv6. 80 bitów 0000 .......... 000000 16 bitów a) 0000 lub b) ffff 32 bity Adres IPv4 a) IPv4-compatible IPv6 addresses – przestarzałe, niezalecane. b) IPv4-mapped IPv6 addresses. Adresy pobliskie (Anycast Addresses) Są z zakresu adresów jednostkowych danej organizacji. Nie są przydzielane do pojedynczego węzła, lecz do grupy węzłów (np. routerów, serwerów DNS). Routery muszą być odpowiednio skonfigurowane, aby można było je używać z wykorzystaniem adresów pobliskich. Routowanie powinno być tak skonfigurowane, żeby użycie adresu pobliskiego oznaczało „najbliższy” (w sensie protokołu routowania) komputer (router) z takim adresem pobliskim. Proponowany sposób wykorzystania: można nadać ten sam adres pobliski wszystkim routerom należącym do pewnego dostawcy Internetu. Użycie tego adresu jako adresu pośredniego w Routing Header (odpowiednik „routowania źródłowego” w IPv4) oznacza żądanie przekazywania pakietu przez routery należące do danego dostawcy. Required Anycast Address. Wygląda podobnie, jak adres sieci w IPv4: Subnet prefix n bits 00000000…000 128-n bits Oznacza: najbliższy router na tym łączu (tj. w tym segmencie sieci). Każdy router uczestniczący w tym mechanizmie powinien rozpoznawać ten (odpowiedni) adres jako własny. 11 Adresy grupowe (Multicast Addresses) Zastępują adresy rozgłoszeniowe i grupowe w Ipv4. Adres grupowy jest przydzielany do grupy węzłów (podobnie jak adres pobliski), lecz w odróżnieniu od adresu pobliskiego, wszystkie węzły skonfigurowane do stosowania adresu grupowego odbierają pakiety wysłane do tego adresu. 8 bitów 11111111 4 bity flagi 4 bity zakres 112 bitów ID grupy Czwarty bit w drugim (od lewej) polu równy zero określa trwały przydział adresu grupowego (przydzielony przez IANA), jedynka oznacza adres nietrwały. Pozostałe dwie flagi (bity) są określone w RFC 3306 oraz RFC 3956. Zakresy: 0 reserved 1 zakres węzła lokalnego (interface or node-local) – tylko transmisja loopback typu multicast 2 adres lokalnego łącza (segmentu sieci lokalnej, link-local) 3 reserved 4 Admin-Local scope – zakres konfigurowany przez administratora 5 zakres lokalnej siedziby (site-local) 6 (unassigned) 7 (unassigned) 8 zakres organizacji (organization-local) – wiele siedzib (sites) jednej organizacji 9 (unassigned) A (unassigned) B (unassigned) C (unassigned) D (unassigned) E zakres globalny (global) F reserved Routery nie mogą przekazywać poza określony zakres pakietów wysłanych na adres grupowy. Przykłady adresów typu multicast: ff02:0:0:0:0:0:0:1 – wszystkie węzły (zakres link-local) ff02:0:0:0:0:0:0:2 – wszystkie routery (zakres link-local) ff02:0:0:0:0:0:0:5 – routery OSPF (zakres link-local) ff02:0:0:0:0:0:0:6 – routery DR (Designated Routers) OSPF (zakres link-local) ff02:0:0:0:0:0:0:9 – routery RIP (zakres link-local) ff02:0:0:0:0:0:0:a – routery EIGRP (zakres link-local) ff05: 0:0:0:0:0:0:2 – wszystkie routery (zakres site local) ff05: 0:0:0:0:0:1:2 – wszystkie serwery DHCP (zakres site local) Solicited-Node Multicast Addresses 12 Adres typu Solicited-Node Multicast jest adresem grupowym, tworzonym automatycznie dla każdego adresu jednostkowego (i pobliskiego) w każdym węźle. Adres ten jest tworzony przez 24 najmniej znaczące bity adresu IPv6 (ostatnia część identyfikatora hosta) przez dodanie do nich prefiksu: ff02:0:0:0:0:1:ff00::/104. Na przykład dla adresu MAC 00-02-b3-1e-83-29 adres IPv6 może być fe80::202:b3ff:fe1e:8329, a odpowiadający adres solicited-node multicast będzie: ff02:0:0:0:0:1:ff00:ff1e:8329. Adresy typu solicited-node multicast są wykorzystywane w omawianym poniżej mechanizmie Neighbor Discovery. Wymagane adresy IPv6 Host powinien rozpoznawać następujące adresy: • Link-Local address dla każdego swojego interfejsu. • Dodatkowe adresy Unicast i Anycast skonfigurowane ręcznie lub automatycznie dla interfejsów. • Adres loopback (::1). • Adres All-Nodes multicast (ff02:0:0:0:0:0:0:1). • Adres Solicited-Node multicast dla każdego adresu Unicast i Anycast skonfigurowanego na interfejsach. • Adresy Multicast wszystkich grup, do których host należy. Router powinien ponadto rozpoznawać następujące adresy: • Adres Subnet-Router Anycast na wszystkich łączach, na których działa jako router • Wszystkie inne adresy Anycast, skonfigurowane na routerze. • Adresy multicast dotyczące routerów. ICMPv6 Protokół ICMP dla IPv6 został bardzo zmieniony w porównaniu do IPv4. Przejmuje on zadania protokołu ARP, RARP, jest wykorzystywany w autokonfiguracji, zawiera mechanizmy wykrywania sąsiadów i szukania routerów, zawiera też takie możliwości, jakie były w ICMPv4, tzn. przekazywanie komunikatów o błędach w routowaniu oraz komunikaty Echo Request i Echo Reply. ICMPv6 Error Messages: Destination Unreachable Packet Too Big Time Exceeded (odpowiednik wyzerowania TTL w IPv4, jest też wykorzystywany do zgłoszenia że upłynął czas 60 s oczekiwania na fragmenty datagramu) Parameter Problem ICMPv6 Informational Messages: Echo Request 13 Echo Reply Jeszcze inne komunikaty są związane z mechanizmem Neighbor Discovery (ND) oraz Path MTU Discovery. Wykrywanie sąsiada (Neighbor Discovery) Mechanizmy związane z wykrywaniem sąsiada (Neighbor Discovery ND) zastępują ARP, starą wersję ICMP router discovery oraz przekierowanie a także wykrywanie zduplikowanych adresów IP (DAD – Duplicate Address Detection). Jest też opracowany nowy mechanizm – wykrywanie czy sąsiad jest osiągalny. Do analizy działania mechanizmów wykrywania sąsiada warto przypomnieć o odwzorowaniu adresów rozgłoszenia grupowego (multicast) w adresy MAC w technologiach Ethernet. Dla IPv4: Dla IPv6: Rozgłoszenia grupowe ICMPv6 wykorzystują odpowiednie adresy multicast w warstwie 3, odpowiednio jest to tłumaczone na adresy MAC. Wprowadzono komunikaty ogłoszeniowe routera (Router Advertisement), które zawierają w treści adres warstwy drugiej routera, a zatem węzły otrzymujące takie komunikaty nie muszą wykorzystywać ARP do pytania o adres MAC routera (jak to było w IPv4). Podobnie komunikaty o przekierowaniu zawierają adres warstwy drugiej (MAC). Komunikaty rozgłoszeniowe routera zawierają też prefiks sieci, zatem nie trzeba konfigurować maski sieci. Routery mogą też w komunikatach Router Advertisement ogłaszać MTU na łączu. Komunikaty Router Advertisement są przesyłane regularnie okresowo. Jednak host może poprosić router o wysłanie takiego komunikatu (ogłoszenia) w dowolnym momencie wysyłając komunikat Router Solicitation. 14 Ze względów bezpieczeństwa komunikaty związane z ND i Router Solicitation są przyjmowane tylko z wartością hop limit równą 255. Zapobiega to infiltracji sieci z zewnątrz, gdyż komunikaty z zewnątrz mają hop limit co najmniej o jeden mniejszy (gdyż przeszły przez co najmniej jeden router) Dla celów wykrywania adresów warstwy drugiej (analogicznie do ARP w IPv4) oraz wykrywania osiągalności hosta i wykrywania powtórzenia adresów IP stosuje się komunikaty Neighbor Solicitation oraz Neighbor Advertisement. Komunikaty Neighbor Advertisement są wysyłane po zmianach w sieci oraz w odpowiedzi na Neighbor Solicitation. Neighbor Advertisement zawiera adres MAC. Komunikaty Neighbor Solicitation i Router Solicitation są przesyłane na adres IPv6 typu solicited-node multicast. Poniższa tabela zawiera zwięzły opis procesów (procedur) obejmowanych wspólna nazwą Neighbor Discovery. Proces Opis Router discovery Proces wykorzystywany do wykrycia lokalnych routerów dostępnych na łączu. W ICMPv4 jest odpowiedni process (i komunikat) o takiej samej nazwie: Router discovery. Proces, dzięki któremu host wykrywa prefiksy sieci. W ICMPv4 jest podobny mechanizm. Odpowiednie komunikaty miały nazwy: Address Mask Request/Reply. Prefix discovery Parameter discovery Address autoconfiguration Address resolution Next-hop determination Neighbor unreachability detection Duplicate address detection Redirect function Proces używany przez hosty do wykrycia innych parametrów, takich jak MTU na łączu lub standardowa wartość Hop Limit dla pakietów wychodzących. Proces automatycznej konfiguracji adresów IP dla interfejsów sieciowych zarówno przy obecności jak i nieobecności serwerów Dynamic Host Configuration Protocol version 6 (DHCPv6). Proces wykrycia adresu warstwy drugiej. Odpowiednik protokołu ARP z IPv4. Proces określenia adresu IPv6 sąsiada, do którego pakiet ma być skierowany na podstawie adresu docelowego. Next-hop address jest albo adresem przeznaczenia, albo adresem domyślnego routera na łączu. Proces wykorzystywany do wykrycia, że warstwa IPv6 u sąsiada nie działa poprawnie (nie otrzymuje/wysyła pakietów). Proces służący do wykrycia, czy jakiś sąsiad nie używa “naszego” adresu IP. Odpowiedni mechanizm w IPv4 był zapewniony przez protokół ARP. Komunikat o przekierowaniu. Informuje hosta, że jest lepszy adres IPv6 następnego skoku. W ICMPv4 jest analogiczny komunikat ICMP Redirect. Multicast Listener Discovery (MLD) Multicast Listener Discovery (MLD) w IPv6 jest odpowiednikiem Internet Group Management Protocol (IGMP) w IPv4. MLD obejmuje grupę komunikatów wymienianych między ruterami i 15 zwykłymi węzłami (komputerami), które umożliwiają odpytywanie o uczestnictwo w grupie (multicast address), zgłaszanie uczestnictwa oraz zgłaszanie zakończenia pracy w grupie (nasłuchiwania na adresie grupowym). IGMP wykorzystywał własne komunikaty, natomiast MLD wykorzystuje komunikaty protokołu ICMPv6. Trzy główne typy komunikatów MLD to: 1) Multicast Listener Query (pytanie o uczestnictwo w grupie). 2) Multicast Listener Report (zgłoszenie uczestnictwa oraz odpowiedź na zapytania). 3) Multicast Listener Done (zgłoszenie zakończenia pracy w grupie). Wersja 2 MLD (MLD v.2) umożliwia określanie uczestnictwa w rozgłaszaniu grupowym z określeniem adresów źródłowych, z których ruch będzie przyjmowany (include list) lub odrzucany (exclude list). Wykrywanie ścieżki MTU (Path MTU Discovery) Wykrywanie ścieżki MTU nie musi być implementowane w pełni w każdym węźle. Host zaczyna wysyłać pakiety o wielkości MTU dla wykorzystywanego łącza. Jeśli dostanie komunikat ICMPv6 Packet Too Big, to zmniejsza rozmiar pakietu. Może to wystąpić wielokrotnie w czasie komunikacji do miejsca docelowego. Po ewentualnym zmniejszeniu rozmiaru pakietu od czasu do czasu host próbuje wysłać większy datagram, aby wykryć możliwość przesłania większego datagramu. Bezpieczeństwo w IPv6 IPv6 zawiera elementy bezpieczeństwa przejęte z IPSec. Umożliwia ustalenie wspólnych cech i mechanizmów bezpieczeństwa między komunikującymi się hostami, umożliwia uwierzytelnianie i szyfrowanie datagramów. IPSec w IPv6 Kolejność nagłówków w IPv6 (jak już przedstawiono wcześniej): 1) IPv6 header (nagłówek podstawowy) 2) Hop-by-hop Options header (jest używany przez routery np. w protokole RVSP – Resource Reservation Protocol, w protokole MLD – Multicast Listener Discovery, w jumbogramach). 3) Destination Options header, jeśli użyty jest nagłówek dodatkowy Routing (służy do przekazania opcji, które będą przetwarzane przez węzeł o adresie zawartym w polu Destination Address w nagłówku podstawowym oraz przez węzły o adresach wymienionych w nagłówku dodatkowym typu Routing). 4) Routing header (typ 0 – odpowiednik routowania źródłowego z IPv4 oraz typ 2 – wykorzystywany do obsługi mobilności) 5) Fragment header 6) Authentication header 7) Encapsulating Security Payload header 16 8) Destination Options header (dla opcji, które będą przetwarzane tylko przez ostatecznego odbiorcę pakietu) 9) Mobility header 10) Upper-Layer header (np. TCP, UDP). Ważne elementy IPSec: 1) Ustalenie skojarzeń bezpieczeństwa (Security Associations SA), 2) Stosowanie określonej polityki (policy). Authentication Header Tryb transportowy Integralność jest zapewniona dla następujących elementów: IPv6 Header. Kontrola integralności nie obejmuje pól Version, Class, Flow label, Hop Limit. Authentication Header TCP Header Payload Struktura nagłówka AH: Next header Payload length Reserved Security Parameter Index (identyfikuje SA) Sequence number Authentication data Tryb tunelowy Integralność: IPv6 Header. Authentication Kontrola Header integralności nie obejmuje pól Version, Class, Flow label, Hop Limit. IP Header (oryginalny) TCP Header Payload Encrypted Security Payload 17 Tryb transportowy IP Header (bez szyfrowania) Encryption TCP Header Header (nie cały szyfrowany) Payload Encryption trailer Encryption header: Security Parameter Index (nie szyfrowany) Sequence number (nie szyfrowany) Encryption parameters (szyfrowany) Pole Encryption trailer może zawierać uwierzytelnienie (opcjonalnie). Tryb tunelowy IP Header (bez szyfrowania) Encryption IP Header Header (nie cały szyfrowany) TCP Header Payload Encryption trailer Pole Encryption trailer może zawierać uwierzytelnienie (opcjonalnie). 18 Mechanizmy przejściowe (IPv4/IPv6) 6to4 Przeznaczenie: łączenie sieci 6to4 z innymi sieciami 6to4 i innymi IPv6 poprzez sieć IPv4 w okresie przejściowym. Postać adresu: | 3 | 13 | 32 | 16 | 64 bits | +---+------+-----------+--------+--------------------------------+ |FP | TLA | V4ADDR | SLA ID | Interface ID | |001|0x0002| | | | +---+------+-----------+--------+--------------------------------+ V4addr – adres IPv4 routera granicznego (unikalny globalnie adres). Przykład – dwie sieci 6to4 połączone siecią IPv4 _______________________________ | | | Wide Area IPv4 Network | |_______________________________| / \ 192.1.2.3/ 9.254.253.252\ _______________________________/_ ____________________\____________ | / | | \ | |IPv4 Site A ########## | |IPv4 Site B ########## | | ____________________# 6to4 #_ | | ____________________# 6to4 #_ | || # router # || || # router # || ||IPv6 Site A ########## || ||IPv6 Site B ########## || ||2002:c001:0203::/48 || ||2002:09fe:fdfc::/48 || ||_______________________________|| ||_______________________________|| | | | | |_________________________________| |_________________________________| 19 Połączenie 6to4 z siecią działającą jedynie wg IPv6 następuje przez „Relay router”. ____________________________ ______________________ | | | | | Wide Area IPv4 Network | | Native IPv6 | | | | Wide Area Network | |____________________________| |______________________| / \ // 192.1.2.3/ 9.254.253.252\ // 2001:0600::/48 ____________/_ ____________________\_________//_ / | | \ // | ########## | |IPv4 Site B ########## | __# 6to4 #_ | | ____________________# 6to4 #_ | # router # || || # router # || ########## || ||IPv6 Site B ########## || || ||2002:09fe:fdfc::/48 || __Site A_____|| ||2001:0600::/48_________________|| as before | | | ______________| |_________________________________| Na powyższym rysunku prawy router 6to4 jest routerem typu „relay”. Poniższy przykład ilustruje poprawne skonfigurowanie wielu sieci 6to4. ______________ | AS3 | |_IPv6 Network_| | AS1 | AS2 | |______|______ | // \\ __________//_ _\\__________ | 6to4 Relay1 | | 6to4 Relay2 | |_____________| |_____________| | | ________|______________________|________ ______________ | IPv6 Network | | AS4 | |______________| | | | ______|______ | Global IPv4 Network |-----| 6to4 Relay3 | |________________________________________| |_____________| | | | | ____|___ ___|____ ____|___ ___|____ | 6to4 | | 6to4 | | 6to4 | | 6to4 | | Site A | | Site B | | Site C | | Site D | |________| |________| |________| |________| Routery graniczące NIE mogą przekazać do sieci działającej tylko według IPv6 trasy bardziej szczegółowej niż 2002::/16. Chodzi o to, aby nie „zaśmiecać” natywnych sieci IPv6. W związku z tym nie jest poprawna konfiguracja, w której sieci 6to4 są połączone z dwoma niespójnymi kawałkami sieci działającej według IPv4. 20 Ilustruje to poniższy rysunek (jest to niepoprawna konfiguracja): ______________ | AS3 | |_IPv6 Network_| Both AS1 and AS2 advertise | AS1 | AS2 | 2002::/16, but sites A and B |______|_______| cannot reach C and D. // \\ __________//_ _\\__________ | 6to4 Relay1 | | 6to4 Relay2 | |_____________| |_____________| | | ________|_______ _______|________ | IPv4 Network | | IPv4 Network | | Segment 1 | | Segment 2 | |________________| |________________| | | | | ____|___ ___|____ ____|___ ___|____ | 6to4 | | 6to4 | | 6to4 | | 6to4 | | Site A | | Site B | | Site C | | Site D | |________| |________| |________| |________| Przejście z sieci 6to4 do sieci natywnej IPv6 może nastąpić na drodze rozgłoszenia nowego prefiksu po podłączeniu się do routera IPv6. Inne mechanizmy przejściowe 6over4 6over4 umożliwia konfigurowanie węzłów działających według protokołu IPv6 (dual stack, tj. obsługujących zarówno IPv4 jak i IPv6) w środowisku komputerów IPv4 (na ogół w sieci lokalnej). U podstaw 6over4 leży pomysł wykorzystania IPv4 jako protokołu warstwy łącza danych. Zatem podobnie jak normalne datagramy IPv4 są kapsułkowane np. w ramkach Ethernet (lub innych technologii), tak w 6over4 pakiety IPv6 są kapsułkowane w pakietach IPv4. 6over4 obejmuje sposób tworzenia adresów IPv6 na podstawie adresu IPv4 a także mechanizm Neighbor Discovery z wykorzystaniem możliwości rozgłaszania grupowego (multicast) w IPv4. Adres link-local IPv6 tworzony jest tak: fe80:0000:0000:0000:0000:0000 + adres IPv4 Np. dla 192.0.2.142 będzie to fe80::c000:28e. Implementacja Neighbor Discovery wykorzystuje przesyłanie grupowe na adres IPv4 239.192.x.y, gdzie x i y oznaczają przedostatni i ostatni bajt adresu grupowego IPv6. Przykłady: All-Nodes Multicast (ff02::1) - 239.192.0.1 21 All-Routers Multicast (ff02::2) 239.192.0.2 Solicited Node Multicast dla fe80::c000:28e (adres link-local komputera o adresie IPv4 192.0.2.142) 239.192.2.142 Komputery mają więc możliwość wykorzystania Neighbor Discovery, zatem wykrycia sąsiadów i routerów na łączu. Jak widać, w 6over4 nie trzeba specjalnie konfigurować tuneli między komputerami IPv6 w środowisku IPv4. Wadą 6over4 jest zależność od mechanizmów rozgłaszania grupowego w środowisku IPv4. Nie zawsze routery są skonfigurowane by wspierać te mechanizmy. Kolejny przedstawiony mechanizm przejściowy (ISATAP) nie opiera się na rozgłaszaniu grupowym. ISATAP Inną propozycją na okres przejściowy między IPv4 a IPv6 jest ISATAP (RFC 5214). (Intra-Site Automatic Tunnel Addressing Protocol). Podobnie jak 6over4, mechanizm ten może być wykorzystany w sieci lokalnej, umożliwia koegzystencję IPv4 i IPv6 w ramach sieci lokalnej bez jawnego zestawiania tuneli. Adres ISATAP (ostatnie, najmniej znaczące 64 bity): |0 1|1 3|3 6| |0 5|6 1|2 3| +----------------+----------------+--------------------------------+ |000000ug00000000|0101111011111110|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm| +----------------+----------------+--------------------------------+ gdzie mmmmm…. oznacza adres IPv4. Dla adresu unikalnego globalnie bit „u” ustawiony jest na 1, dla adresu grupowego bit g ustawiony jest na 1. Reszta adresu (pierwsze bity z lewej strony całego adresu mogą być dowolne, może tam być poprawny prefiks nadany przez dostawcę Internetu, prefiks 6to4 itd.). ISATAP nie wykorzystuje rozsyłania na adresy grupowe. Ze względu na to, że adres IPv4 jest zawarty w adresie IPv6 a IPv4 gra tu rolę warstwy łącza danych, Neighbor Solicitation nie jest potrzebny. Natomiast należy rozwiązać problem routerów. W ISATAP Router Solicitation nie występuje, natomiast definiuje się listę potencjalnych routerów (Potential Router List PRL), do których jest wysyłany Router Discovery Message (na adresy jednostkowe). PRL może być budowany ręcznie lub automatycznie – zwykle przez odpytanie serwera DNS o adres isatap.xx.yy.zz (xx.yy.zz jest domeną, może być uzyskana z serwera DHCP). W odróżnieniu od 6over4, ISATAP jest powszechnie implementowany w popularnych systemach operacyjnych. 22 Wzmacniaki (repeaters), koncentratory (hubs), mosty (bridges), przełączniki (switches) Wzmacniaki (repeateres) (już nie używane). Wzmacniaki (repeaters) służą do wzmacniania sygnału, który w trakcie przechodzenia przez nośnik transmisji ulega osłabieniu. Ze względu na to, że wzmacniaki zajmują się sygnałem fizycznym, nie „znają” budowy ramki ani nie „rozumieją” znaczenia bitów, mówi się, że działanie tych urządzeń ogranicza się do warstwy 1 modelu ISO OSI. Obecnie inne urządzenia wzmacniają sygnały (przełączniki, koncentratory), w związku z tym wzmacniaki nie są używane w sieciach lokalnych. Koncentratory (hubs) Podobnie jak wzmacniaki, koncentratory (hubs) są urządzeniami, których działanie opisywane jest w warstwie 1 modelu ISO OSI. Sygnały elektryczne otrzymane na jednym porcie są zawsze przekazywane na wszystkie pozostałe porty. Urządzenia te nie analizują ramek. Koncentratory można konfigurować programowo, np. dzieląc (logicznie) koncentrator na kilka oddzielnie pracujących urządzeń. Większość koncentratorów wzmacnia sygnały, są to zatem wieloportowe wzmacniaki. Fragment sieci budowany w oparciu o koncentrator ma fizyczną topologię połączeń gwiazdy. Sieć taka jest bardziej niezawodna w porównaniu z fizyczną topologią magistrali, gdyż np. uszkodzenie kabla prowadzącego od koncentratora do pewnego komputera nie powoduje uszkodzenia dużego segmentu w sieci. W topologii magistrali uszkodzenie kabla w dowolnym miejscu powoduje, że cały segment sieci przestaje funkcjonować. Niemniej logicznie połączenia uzyskane za pomocą koncentratora są traktowane jako połączenia w topologii magistrali, gdyż każdy z podłączonych komputerów „widzi” wszystkie ramki. W nieużywanych już sieciach Token Ring stosowane były specjalne koncentratory, zwane MAU (Media Access Unit), w sieciach FDDI są stosowane concentrators (w odróżnieniu od hubs). Działanie tych urządzeń również jest opisywane w warstwie pierwszej modelu OSI i jest charakterystyczne dla danej technologii (np. przekazywanie ramki tokenu i innych ramek po okręgu w sieciach Token Ring). Mosty (bridges) (już nie używane) Mosty, pomosty (bridges) są urządzeniami analizującymi ramki, zatem ich działanie przypisuje się do warstwy 2 modelu ISO OSI (choć oczywiście ich działanie obejmuje również warstwę pierwszą). Most posiada kilka portów (co najmniej dwa), do których na ogół łączy się segmenty sieci lub inne wymieniane tu urządzenia. Most ma za zadanie filtrować ruch w sieci lokalnej tak, by pewne ramki pozostawić w jednym segmencie (jeśli adres docelowy MAC jest w tym segmencie), oczywiście przy pozostawieniu możliwości przekazywania ramek do innych segmentów (jeśli adres docelowy MAC jest w innym segmencie). Uwaga. Tak opisane segmenty sieci rozumiane są w sensie warstwy drugiej modelu OSI. Segmenty te nie są przedzielone routerem, tylko mostem. Gdyby takie segmenty rozważać w 1 warstwie trzeciej modelu ISO OSI, to należą one do jednej sieci (podsieci) lokalnej, tzn. mają wspólny ID sieci w adresach IP. Termin segment sieci jest wieloznaczny i można spotkać to określenie w sensie zarówno warstwy 1 (bezpośrednie połączenie kablem np. w topologii magistrali), warstwy 2 i warstwy 3. Na przykład w Akademii Cisco często używa się terminu segment sieci w odniesieniu do domeny kolizji (fragment sieci, w którym jest rywalizacja o dostęp do nośnika transmisji). Most „uczy się” który adres MAC „należy” do jakiego portu. Jeśli otrzyma ramkę z adresem docelowym, który już zna i pamięta jego położenie (tzn. przypisanie do portu), to wysyła ramkę do przypisanego portu. Jeśli odpowiedniego przypisania jeszcze nie ma, to wysyła ramkę do wszystkich portów z wyjątkiem tego, z którego ramkę dostał. Przełączanie następuje na ogół na drodze programowej. Wszystkie porty dzielą (wykorzystują) wspólną przepustowość (a więc inaczej jak przełączniki – switch’e). Przełączniki (switches) Ethernet Przełączniki (switches, przełączniki warstwy drugiej) są urządzeniami analizującymi ramki. Ich działanie przypisuje się do warstwy 2 modelu ISO OSI. Przełącznik posiada pewną liczbę portów (na ogół kilka – kilkadziesiąt) i podobnie jak most „uczy się” z jakim portem związany jest jaki adres MAC i zapamiętuje tę informację w tablicy o nazwie CAM (Content Addressable Memory – rodzaj tablicy asocjacyjnej). Często do portu przypięty jest jeden komputer, ale bywa też, że do portu przyłączane jest inne urządzenie rozgałęziające, np. koncentrator lub inny przełącznik. Wówczas przełącznik pamięta dla każdego swojego portu wszystkie adresy MAC osiągalne poprzez ten port. Inaczej jak w przypadku mostów, w przełącznikach warstwy drugiej przełączanie realizowane jest na zasadzie sprzętowej mikrosegmentacji. Każde zestawione połączenie (mikropołączenie) między portami ma maksymalną przepustowość charakterystyczną dla danej technologii (niezależnie od obciążenia pozostałych mikropołączeń). Jeśli na dwa różne porty zostaną jednocześnie przesłane ramki, które mają to samo miejsce docelowe, to nie występuje kolizja, tylko buforowanie ramek. Standardowe przełączniki warstwy drugiej mogą pracować w dwóch trybach pracy: 1. Store-and-Forward – przełącznik pobiera całą ramkę, analizuje czy nie jest błędna i przesyła ją dalej. Ten tryb wprowadza największe opóźnienie. 2. Cut-through (dwa podtypy): a) Fast-forward switching, po otrzymaniu adresu MAC miejsca docelowego ramki już rozpoczyna się jej nadawanie. Jest to najszybsza metoda, ale nie sprawdza się czy nie nastąpiła kolizja i ramka jest niepoprawna. b) Fragment-free switching, ramka jest przesyłana do portu docelowego dopiero po otrzymaniu 64 bajtów (rozmiar najmniejszej poprawnej ramki w Ethernecie). Zapewnia to, że ramka nie koliduje z inną. Niektóre przełączniki mogą pracować w jeszcze innym trybie – adaptive cut-through. W tym trybie przełącznik zaczyna pracę z wykorzystaniem metody cut-through, jednak po wykryciu pewnej liczby błędów (wyższej od zadanego progu) przełącznik przechodzi w tryb store-andforward. 2 Przełączniki są na ogół konfigurowalne programowo. Przełączniki umożliwiają również analizę adresów IP i budowanie tzw. wirtualnych sieci lokalnych – Virtual LANs (VLAN). Wirtualne sieci LAN (VLAN) VLAN – wirtualne sieci LAN tworzone są przy pomocy przełączników. Przez odpowiednią konfigurację portów w przełącznikach można tworzyć podsieci (sieci wirtualne) „przełączalne”, ze wspólną dziedziną rozgłaszania w warstwie trzeciej (i drugiej). Każda sieć VLAN musi mieć przypisany inny adres IP (adres sieci). Sieci VLAN są konfigurowane programowo, zatem ewentualne zmiany konfiguracji nie wymagają zmian w okablowaniu. Komputery z każdej utworzonej sieci wirtualnej nie muszą być dołączone bezpośrednio do jednego przełącznika (jednak wszystkie połączone przełączniki muszą być odpowiednio skonfigurowane). Komputery odległe od siebie, np. na różnych piętrach budynku, podłączone do różnych przełączników mogą należeć do jednej sieci VLAN – mają wtedy taki sam adres sieci w warstwie trzeciej (adres IP). Na jednym przełączniku można zbudować wiele sieci VLAN. Urządzenia należące do jednej sieci wirtualnej mogą się ze sobą komunikować tak jakby były w jednym segmencie sieci LAN (segment w warstwie drugiej i trzeciej ISO OSI). W całym takim segmencie na przykład działa protokół ARP, czyli ramka ARP request wysłana na adres rozgłoszeniowy MAC (48 jedynek) powinna dotrzeć (dociera) do wszystkich komputerów dołączonych do tej samej sieci VLAN (i przypiętych do tego samego przełącznika lub do różnych przełączników). Natomiast komunikacja między sieciami wirtualnymi wymaga routera, nawet jeśli sieci wirtualne utworzone są tylko na jednym przełączniku (tzn. jest tylko jeden przełącznik podzielony na kilka sieci VLAN). Są jednak przełączniki (przełączniki obsługujące warstwę 3), które potrafią wykonywać routowanie między równymi sieciami VLAN. Sieci VLAN tworzone są w technologiach Ethernet (IEEE 802.3), FDDI, („antyczny” Token Ring też :)). Sieci VLAN mogą być budowane w oparciu o • • porty w przełącznikach (porty przypisywane są do odpowiednich VLAN’ów), takie sieci VLAN określa się jako statyczne, port-centric lub port-based. Ten typ sieci VLAN jest najczęściej stosowany. Umożliwia łatwą współpracę z serwerami DHCP. adresy MAC (urządzenie o danym adresie MAC będzie zawsze przypisywane do jednej określonej sieci VLAN bez względu na to, do którego przełącznika jest w danej chwili bezpośrednio dołączone). Wymaga sporo dodatkowej pracy administracyjnej (zapisanie każdego adresu MAC i przypisanie go do odpowiedniego VLAN w konfiguracji przełączników). Uwaga! adresy MAC można łatwo w komputerze zmieniać na drodze konfiguracji, trzeba to mieć na uwadze tworząc taki typ sieci VLAN. Korzyści związane z zastosowaniem VLAN: 3 • • • • można łatwo zmieniać położenie stacji roboczych w sieci VLAN można łatwo zmieniać konfigurację sieci lokalnej VLAN można łatwo kontrolować ruch w sieci (np. na routerach łączących różne sieci VLAN) można zwiększyć bezpieczeństwo (rozdzielenie użytkowników do różnych sieci VLAN). Połączenia między przełącznikami są określane jako „trunk” (mówi się też o łączach „trunkingowych”). Połączenie tupu trunk umożliwia przekazywanie ramek należących do różnych sieci VLAN po jednym fizycznym nośniku. Za kontrolę połączenia trunk odpowiada protokół VTP (VLAN Trunking Protocol). Protokół VTP umożliwia zautomatyzowaną konfigurację wielu przełączników z jednego miejsca. Połączenie typu trunk może być również tworzone między przełącznikiem a routerem (router on a stick). Konfiguracja routera dla odpowiedniej sieci VLAN jest realizowana poprzez tzw. logiczne podinterfejsy (sub-interfaces). Jeden fizyczny interfejs routera dzielony jest logicznie (poprzez odpowiednią konfigurację) na wiele podinterfejsów. Router połączony jest tylko jednym połączeniem trunk z jednym z przełączników, ale logicznie działa tak, jakby było kilka interfejsów, każdy przypisany do innej sieci VLAN. Zatem dla kilku sieci VLAN podłączonych z przełącznika do routera należy w routerze skonfigurować kilka podinterfejsów. Ramki przekazywane połączeniem trunk są w specjalny sposób zmieniane – wędruje z nimi dodatkowa informacja – o przypisaniu ramki do odpowiedniej sieci wirtualnej. Takie zaznaczanie ramek (frame tagging) może być realizowane na różne sposoby, zależnie od producentów przełączników. Najpopularniejsza metoda to: • Najczęściej stosowany standard IEEE 802.1Q, w którym zmieniony jest nagłówek ramki 802.3. Inna metoda (przestarzała): ISL (Cisco Inter-swirch Link), metoda, w której ramka jest enkapsulowana w ramce ISL. W nagłówku ISL jest pole identyfikujące VLAN. Są też inne. • Protokół VTP umożliwia konfigurację wielu przełączników na drodze wymiany odpowiednich ramek z sąsiadującymi przełącznikami. Przełącznik można skonfigurować jako serwer VTP, klient VTP lub „transparent VTP”. Można tworzyć tzw. dziedziny składające się z wielu przełączników (każda dziedzina jest identyfikowana przez nazwę). Informacje VTP są przekazywane i interpretowane w ramach odpowiednich dziedzin. W dziedzinie jeden przełącznik powinien być serwerem, reszta to na ogół klienci. Zmiany konfiguracji przeprowadza się na serwerze. Dla dziedziny należy określić hasło (w celu zabezpieczenia). Między sieciami VLAN musi być zapewnione routowanie. Można to osiągnąć łącząc router łączem trunkingowym z pewnym przełącznikiem (wystarczy z jednym – wspomniany wcześniej router on a stick). Jeśli router jest wykorzystywany jedynie do przekazywania pakietów między różnymi sieciami VLAN, to można rozważyć też zastosowanie innego rozwiązania – przełączników warstwy trzeciej. Taki przełącznik umożliwia zdefiniowanie sieci VLAN oraz sam zapewnia routing między sieciami. Przełącznik ma „w sobie” router. Router ten może być łączony z innymi routerami, można na nim konfigurować protokoły routowania. Zwykle jednak przełącznik warstwy trzeciej nie ma interfejsów technologii sieci rozległych WAN. 4 Rysunki z wykładu: W firmie są trzy działy: Sales, Marketing i Accounting. Każdy dział ma mieć inny adres IP sieci. Przykładowa sieć nie wykorzystująca VLAN-ów: 5 Jak można zorganizować sieć, gdybyśmy chcieli umieszczać komputery z różnych działów na różnych piętrach? Niżej przedstawione rozwiązanie ma wadę – może być problem z umieszczeniem dużej liczby kabli między piętrami. Ponadto są ograniczenia długości kabli. 6 Pewien pomysł: Wada – stosunkowo duża komplikacja. Rozwiązanie – VLAN’y. 7 Wykorzystanie wielowarstwowego przełącznika: 8 STP (Spanning-Tree Protocol) W nieco bardziej rozbudowanej sieci łączy się kilka lub więcej przełączników. Korzystnie jest, gdy przełączniki w sieci są połączone tak, by umożliwić zduplikowane ścieżki między nimi, ale żeby nie występowały pętle i niekorzystne zjawiska z nimi związane (burze rozgłoszeń w warstwie drugiej, dublowanie ramek, niestabilność zawartości tablicy CAM). Do realizacji tego celu służy protokół STP. Przykład prostej sieci z połączeniami redundantnymi (na wykładzie omówiono negatywne zjawiska, z których najważniejsze to burza broadcastów – broadcast storm): Przykład bardziej rozbudowany (Enterprise Architecture): STP umożliwia tworzenie redundantnych ścieżek (połączeń) między przełącznikami, ale w danej chwili tylko jedno ze zduplikowanych połączeń jest aktywne. Aktywne połączenia tworzą strukturę drzewiastą z jednym przełącznikiem wybranym jako korzeń (root, root-switch lub root-bridge). STP powstał jak mosty były jeszcze powszechnie wykorzystywane i stąd w terminologii STP często zamiast switch mówi się bridge. 9 STP wykorzystuje specjalne ramki BPDU (Bridge Protocol Data Units), które są regularnie przesyłane między przełącznikami (np. co dwie sekundy). Ramki BPDU mają specjalny adres MAC docelowy typu multicast (01:80:C2:00:00:00) i są przesyłane według innych zasad jak zwykłe ramki (otrzymane ramki BPDU nie są wprost przekazywane do innych portów, przełącznik buduje swoje ramki BPDU uwzględniające otrzymane od innych informacje). Standard STP określany jest jako IEEE 802.1D (jest kilka wersji, najnowsza z roku 2004). STP wykorzystuje algorytm drzewa rozpinającego (STA – Spanning Tree Algorithm). W 2012 został przyjęty jeszcze nowszy standard – Shortest Path Bridging IEEE 802.1aq. Działanie STP 1) Wybór przełącznika (mostu) – korzenia (root-bridge). Wybór jest realizowany na podstawie priorytetu przełącznika, który jest konfigurowalny. W pierwszej wersji STP priorytet był liczbą 16-bitową, później uwzględniono w protokole sieci VLAN i na priorytet pozostawiono bardziej znaczące 4 bity, pozostałe 12 oznaczają numer sieci VLAN. STP jest więc niezależnie realizowany w każdym VLAN-ie. Standardowo np. przełączniki Cisco Catalyst mają ustawiony priorytet na 32768. Jako korzeń wybierany jest przełącznik o najniższym priorytecie. Jeśli priorytety są jednakowe, to wybierany jest przełącznik o najniższym identyfikatorze BID (Bridge Identifier). Każdy przełącznik ma przypisany podstawowy adres MAC (basic Ethernet address) i jest on traktowany jako identyfikator przełącznika (BID). Oprócz tego każdy port przełącznika ma też przypisany pewien adres MAC. Wybór korzenia drzewa rozpinającego jest realizowany z wykorzystaniem specjalnych ramek BPDU. 2) Wybór portów do korzeni (root ports). Są to porty, którymi będą przekazywane ramki do przełącznika-korzenia. Port staje się zawsze „root-portem” jeśli jest bezpośrednio połączony do przełącznika – korzenia. Jeśli nie ma portów bezpośrednio dołączonych do korzenia, to jest analizowany koszt połączenia. Koszt ten jest zależny od szerokości pasma i według starych zaleceń był wyliczany wg wzoru: 1000/szerokość pasma. Np. dla 100Mbps (100 megabitów na sekundę) koszt wynosił 10, dla 10Mbps koszt wynosił 100. Dla 10Gbps koszt był ustalany taki jak dla 1Gbps, czyli 1. Według kolejnych, nowszych zaleceń koszt dla 10Gbps wynosił 2, dla 1Gbps było to 4, dla 100Mbps koszt był równy 19 a dla 10 Mbps wartość była podobnie jak poprzednio 100. Standard 802.1w-2004 (określający inną wersję protokołu o nazwie RSTP – Rapid STP, pierwotnie oznaczoną jako IEEE 802.1w, potem pomysły z RSTP zostały włączone do najnowszej wersji standardu 802.1D) określa dla 100Mbps koszt 200 000, dla 1Gbps 20 000, dla 2 Gbps 10 000 i dla 10 Gbps 2000. Koszty są przekazywane w ramkach BPDU i przełączniki wyliczają całkowite koszty połączenia z przełącznikiem korzeniem – jako sumy kosztów poszczególnych połączeń. W każdym przełączniku port o najniższym koszcie trasy do przełącznika korzenia staje się root-portem (oczywiście tylko w przypadku, gdy w danym przełączniku nie ma bezpośredniego połączenia z przełącznikiem-korzeniem). 3) Wybór tzw. portów wyznaczonych (designated ports). Są to porty, które uczestniczą w wymianie informacji w drzewie rozpinającym (spanning tree). Dla każdego segmentu sieci LAN jest określany jeden przełącznik wyznaczony (designated switch), przez który wiedzie najlepsza droga (tj. o najniższym koszcie) z danego segmentu do przełącznikakorzenia. Przykładowy segment sieci LAN: koncentrator połączony z dwoma przełącznikami oraz z pewną liczba komputerów – hostów. 10 4) Po ustaleniu stanu połączeń wszystkie porty umożliwiające połączenia redundantne, a nie będące root-portami ani portami wyznaczonymi, są blokowane. Stan połączeń jest analizowany na podstawie ramek BPDU, które są przesyłane cyklicznie, standardowo co 2s (ten czas można zmienić). W przypadku, gdy nastąpi uszkodzenie jakiejś wykorzystywanej ścieżki (lub przełącznika), to działający STP spowoduje automatycznie odblokowywane pewnych do tej pory blokowanych portów. Porty te przejmą przekazywanie ramek, ramki będą zatem przesyłane nową trasą. Konfiguracja STP obejmuje trzy zegary: Hello time (standardowo 2 sekundy) Forward delay (standardowo 15 sekund) Maximum age (maksymalny czas, przez który przełącznik traktuje informację z BPDU za aktualną; standardowo 20 sekund). Stany portów w STP (dla każdego portu wyznaczane oddzielnie): 1) Blocking (zwykłe ramki nie są przekazywane, odczytywane są tylko ramki BPDU, ale przez port nie są wysyłane własne ramki BPDU). 2) Listening (zwykłe ramki są odczytywane, ale nie są przekazywane; ramki BPDU są odczytywane i przez port, który jest w tym stanie, są wysyłane własne ramki BPDU) 3) Learning (zwykłe ramki są odczytywane, następuje uczenie adresów MAC (i zapisywanie ich do CAM), zwykłe ramki nie są jeszcze przekazywane, ramki BPDU są odczytywane i wysyłane) 4) Forwarding (uczenie adresów, zwykłe ramki są przekazywane, ramki BPDU są odczytywane i wysyłane) 5) Disabled (żadne ramki nie są przekazywane, żadne ramki nie są odczytywane), port jest wyłączony przez administratora. Wadą STP jest stosunkowo wolna zbieżność. Stan listening trwa standardowo 15 sekund (forward delay), potem learning też 15 s (forward delay). W tym czasie ramki nie są przekazywane. Po włączeniu przełącznika jego porty są w stanie blocking. Jeśli żadna ramka BPDU w tym stanie nie dotrze do żadnego portu, to przełącznik zakłada, że jest korzeniem, porty przełączane są w stan listening i wysyłane są ramki BPDU z informacją: „jestem korzeniem, mój BID=….”. Jeśli w tym samym czasie włączymy więcej połączonych przełączników, wówczas każdy z nich wysyła informację, że jest korzeniem. Jednak po otrzymaniu ramki BPDU z „lepszą” wartością BID (tj. mniejszą liczbą) przełącznik wie, że korzeniem jest inny przełącznik, oblicza koszt dotarcia do tego przełącznika i odpowiednią informację rozsyła dalej (do bezpośrednio połączonych przełączników) w utworzonych przez siebie ramkach BPDU. W czasie trwania stanu blocking i listening ustalany jest przełącznik root, root-porty oraz porty wyznaczone i przełączniki wyznaczone. Do stanu learning przechodzą te porty, które będą przekazywać zwykłe ramki. Są to root-porty oraz porty wyznaczone. Po upływie 15 sekund w stanie learning port, który ma uczestniczyć w przekazywaniu zwykłych ramek przełączany jest do stanu forwarding. Pozostałe porty są blokowane. Jeśli nastąpiło uszkodzenie pewnego połączenia (np. zostało celowo rozłączone), wówczas odpowiedni port przechodzi natychmiast do stanu blocking. Po włączeniu połączenia odpowiednie porty też są w stanie blocking, jednak wskutek wymiany BPDU przełącznik może 11 zdecydować, że port będzie uczestniczył w przekazywaniu ramek i wówczas port przechodzi do stanu listening (tu już wysyła własne BPDU), potem po 15s. przechodzi do stanu learning i po kolejnych 15s. do stanu forwarding. Ze stanu listening (oraz learning) port może być przesunięty do stanu blocking. Jest tak, gdy po wymianie ramek BPDU przełącznik stwierdzi, że dany port nie będzie uczestniczył w drzewie rozpinającym (tj. nie będzie przekazywał zwykłych ramek). Pewien problem z uszkodzonym połączeniem wiąże się z faktem, że przełączniki pamiętają przez kilka minut (przełącznikach Cisco standardowo 5) przypisanie adresów MAC do portów, przy czym pamiętane są wszystkie adresy MAC osiągalne z pewnego portu przełącznika. Zatem po wyłączeniu pewnego połączenia, informacja o tym zdarzeniu powinna być ogłoszona do wszystkich przełączników w drzewie tak, by przełączniki mogły usunąć wpis z tablic CAM. W rzeczywistości odbywa się to w ten sposób, że informacja jest przekazywana przez root-port i osiąga przełącznik korzeń. Wykorzystywane są specjalne ramki BPDU TCN (Topology Change). Zwykłe BPDU nie są normalnie przekazywane od liści do korzenia, ramki BPDU TCN są. Korzeń z kolei przez pewien czas (max. age + forward delay = 35 s.) ustawia bit TC w swoich ramkach BPDU normalnie przesyłanych co 2 s. w dół drzewa, do liści. Przełączniki po otrzymaniu takiej ramki skracają ważność wpisów w tablicy CAM do 15 sekund (forward delay). Firma Cisco wprowadziła pewne udoskonalenia do protokołu STP. Należy do nich PortFast – ustawienie portu, mówiące, że port nie jest połączony z żadnym kolejnym przełącznikiem, tylko z hostem. Taki port jest natychmiast przestawiany ze stanu blocking do stanu forwarding. Tego typu ustawienie warto stosować np. w sieciach z serwerem DHCP. Bez tego ustawienia może się zdarzyć, że komputer nie doczeka się adresu IP, ponieważ odpowiedni port przełącznika nie zostanie w odpowiednim czasie przestawiony do stanu forwarding. Inne usprawnienia to UplinkFast oraz BackboneFast. Idee te zostały włączone do nowszego standardu STP – RSTP (Rapid STP), znanego też jako 802.1w-2004. Rapid STP (RSTP) W Rapid STP wprowadzono nieco inne stany portów oraz role portów. Istotą nowego protokołu jest uzyskanie szybszej zbieżności, tzn. stanu, w którym porty albo przekazują ramki, albo są zablokowane. Dokładniejszy opis znajduje się w pliku rstp.pdf dołączonym do wykładu. Najnowsza wersja tego protokołu znana jest opisana w standardzie 802.1w-2004. Standard 802.1q-2005 opisuje rozszerzenie RSTP uwzględniające m.in. wiele sieci VLAN – Multiple Spanning Tree Protocol MSTP (802.1s). Idea MSTP: STP był stosowany w każdym VLAN’ie oddzielnie, co w przypadku dużej liczby VLAN’ów powoduje zbyt duże obciążenie i komplikację w konfiguracji. Protokół STP działający na wielu VLAN’ach nazywał się PVSTP (Per-VLAN STP). Zwykle tylko niewielka liczba drzew STP (mniejsza od liczby VLAN’ów) ma sens dla danej sieci, dlatego zaproponowano mechanizm tworzenia pewnej liczby drzew STP niezależnie od VLAN’ów, a potem przypisanie do VLAN’u jednego z drzew STP. Opis MSTP można znaleźć na przykład tu: https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24248147.html oraz np. tu: https://blog.ine.com/2010/02/22/understanding-mstp. 12 Shortest Path Bridging (SPB), IEEE 802.1aq W 2012 roku został zatwierdzony standard IEEE 802.1aq, który jest rozwinięciem idei STP na większe sieci. W SPB wiele redundantnych ścieżek jest wykorzystywanych jednocześnie. Węzły przełączniki w SPB wykorzystują metodę link-state do wyznaczenia najkrótszych ścieżek w warstwie drugiej (podobnie jak w metodach routowania link-state w warstwie trzeciej, np. OSPF). Z danego przełącznika może prowadzić do pewnego miejsca wiele ścieżek o tym samym najmniejszym koszcie. SPB umożliwia budowę sieci warstwy drugiej w skali np. miasta (szybkie technologie Ethernet >=10Gb umożliwiają to). EtherChannel, 802.3ad. EtherChannel – technologia dostępna na większości przełączników firmy Cisco, pozwala na połączenie kilku ethernetowych łączy fizycznych w jedno łącze logiczne. Przełączniki mogą wówczas równomiernie rozkładać obciążenie na łączu. Dzięki temu jest możliwe utworzenie wysokowydajnych połączeń pomiędzy urządzeniami sieciowymi np. przełącznikami, routerami lub serwerami. Łącze EtherChannel może być utworzone z wykorzystaniem od dwóch do ośmiu portów. W zależności od szybkości portu, używając 8 portów można stworzyć łącze 800 Mbit/s, 8 Gb/s albo 80 Gb/s. Gdy EtherChannel jest uaktywniony, wszystkie porty biorące udział w procesie mają ten sam adres MAC i adres IP. IEEE opracował w roku 2000 wersję otwartą standardu 802.3ad o analogicznych możliwościach. Graficzne przedstawienie połączenie EtherChannel. (Cisco) Enterprise Architecture. Materiały ogólnodostępne: http://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Campus/campover.html Rysunki pochodzą z powyższej strony WWW. Figure 1 13 Figure 2 Figure 4 (uzasadnienie tworzenia warstwy Core). 14 Figure 3 (Przykład architektury dla kampusu). Figure 5 – przywrócenie komunikacji po awarii. Figure 7 (Dwie główne odmiany Multi-Tier Distribution Block). 15 Figure 9 (Koncepcja Virtual Switch – Virtual Switching System) Figure 10 (Virtual switch vs. Spanning Tree Topology). 16 Figure 11 Figure 17 17