instrukcja - Politechnika Warszawska
Transkrypt
instrukcja - Politechnika Warszawska
Politechnika Warszawska Wydział Elektryczny Laboratorium Teletechniki Skrypt do ćwiczenia T.24 Sieć LAN. Protokół TCP/IP. Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 1. Historia i przegląd możliwości TCP/IP TCP/IP 1 jest zestawem protokołów sieciowych funkcjonujących w górnych warstwach sieci. Są to w rzeczywistości dwa protokoły TCP 2 (ang. Transmission Control Protocol), oraz IP 3 (ang. Internet Protocol). Standard TCP/IP, rozwijano i udoskonalano przez ponad 20 lat. Dziś TCP/IP nie jest własnością żadnej firmy softwerowej ani instytucji normalizacyjnej. Patronat nad TCP/IP sprawuje Departament Obrony USA, starając się o zachowanie pewnego minimum porządku i spójności standardu. Historia TCP/IP zaczęła się od projektu amerykańskiego ministerstwa obrony. Wojsko potrzebowało sieci komputerowej zdolnej do przetrwania wojny atomowej potrafiącej automatycznie rozpoznać uszkodzone łącza i wybrać zastępczą drogę dla przesyłanych danych. Zniszczenie pojedynczych węzłów sieci nie mogłoby doprowadzić do unieruchomienia całego systemu. W wyniku prac nad tym projektem powstała sieć ARPANET 4, którą można uznać za kamień węgielny późniejszego Internetu. Jej nazwa wywodzi się od nazwy Instytutu Rozwoju Zaawansowanych Technologii (ang. Advanced Research Project Agency). Agencja ARPA uległa w 1971 roku przekształceniom organizacyjnym, w wyniku których jej nazwę zmieniono na DARPA. Sieć ARPANET pozostała pod nadzorem tej organizacji, która skupiła się na badaniach nad technologią komutacji pakietów i rozwojem mechanizmów transportowych wykorzystujących między innymi fale radiowe i satelity telekomunikacyjne. W roku 1975 kontrolę nad siecią ARPANET przejęła Agencja Komunikacyjna Departamentu Obrony USA nazywana w skrócie DCA. W tym czasie opracowano nowy, udoskonalony zestaw protokołów sieciowych. Zestaw ten stał się trzonem protokołu TCP/IP, który w 1978 roku był już na tyle kompletny, że mógł być zaprezentowany światu. Powstanie TCP/IP było przełomem umożliwiającym budowę dużej liczby nowych sieci połączonych z ARPANETem. W roku 1982 Departament Obrony utworzył sieć DDN 5, zaprojektowaną jako coś w rodzaju obszaru centralnego dla rozproszonych sieci tworzących Internet. W rok później Departament Obrony wydał oświadczenie akceptujące TCP/IP w roli protokołu sieciowego, który miał być stosowany przez wszystkie węzły łączące się z Internetem. Było to początkiem lawinowego rozwoju sieci TCP/IP ponieważ powstał standard pozwalający na komunikację pomiędzy maszynami różnych typów. TCP/IP rozwijał się i nadal się rozwija w ośrodkach naukowych, uczelniach, organizacjach rządowych oraz wielu innych miejscach, a zainteresowanie tym protokołem wciąż rośnie. Powstanie w latach osiemdziesiątych wielu tysięcy sieci lokalnych LAN 6 (ang. Local Area Networks), również przyczyniło się do wzrostu znaczenia TCP/IP. Sieć lokalną można bardzo łatwo zbudować, a w miarę rosnących wymagań dowolnie rozbudowywać. Wielkie 1 TCP/IP (ang. Transmission Control Protocol/Internet Protocol) – wspólna nazwa zestawu protokołów wprowadzonych przez Departament Obrony USA w 1970r. Obsługuje on sieci rozległe o zasięgu ogólnoświatowym. 2 TCP (ang. Transmission Control Protocol) – protokół połączeniowy w warstwie transportu, który zapewnia niezawodną, w pełni dwukierunkową transmisję danych. TCP jest częścią stosu protokołów TCP/IP 3 IP (ang. Internet Protocol) –protokół warstwy sieci w stosie protokołów TCP/IP zapewniający bezpołączeniowe usługi sieciowe, zapewnia adresowanie, specyfikacje zależną od typu usługi, fragmentację i składnię oraz bezpieczeństwo. 4 ARPANET (ang. Advanced Research Proecs Agency Network) – sieć z komutacją pakietów wynaleziona w 1969r , w późniejszym czasie przekształcona w Internet. 5 DDN (ang. Defence Data Network) – amerykańska sieć wojskowa utworzona z jawnej sieci MILNET i wielu tajnych i supertajnych sieci. 6 LAN (ang. Local Area Network) – sieć lokalna o dużej szybkości, stosowana na małych obszarach (do kilku tysięcy metrów). Sieć LAN łączy stacje robocze, peryferia, terminale i inne urządzenia znajdujące się w pojedynczym budynku lub innym niewielkim obszarze. 2 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. znaczenie dla ekspansji TCP/IP miało masowe wprowadzenie technologii sieciowej w sektorze biznesu i finansów. TCP/IP wydaje się "naturalnym" środkiem umożliwiającym przekazywanie danych pomiędzy firmami używającymi różnorodnego sprzętu produkowanego przez setki lub tysiące różnych firm. Do końca lat osiemdziesiątych TCP/IP uzyskało status siły napędowej rozwoju sieci na całym świecie, wielkość sieci zwiększała się bardzo szybko, liczba węzłów po niecałych trzydziestu latach urosła z początkowych czterech do ponad trzydziestu milionów. 3 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 2. Odniesienie protokołu TCP/IP do modelu OSI "Podręcznikowa sieć" złożona jest z siedmiu tzw. warstw. Poszczególnym warstwom odpowiadają określone elementy sprzętowe i programowe biorące udział w procesie wymiany informacji. Nazwy poszczególnych warstw wraz z opisem zostały przedstawione w tablicy.1. Tablica 1. Porównanie modeli referencyjnego OSI i TCP/IP Nazwa warstwy modelu referencyjnego OSI Aplikacji Numer warstwy OSI Nazwa równoważnej warstwy TCP/IP 7 (składa się z programów użytkowych, które korzystają z sieci) Prezentacji 6 Prosesu/Aplikacji (składa się z aplikacji i procesów używających sieci) (standaryzuje sposób przedstawiania danych aplikacjom) Sesji 5 (zarządza sesjami między aplikacjami) Hosta z hostem Transportu (udostępnia usługi dostarczające dane z jednego miejsca w inne) 4 (zapewnia wykrywanie i korekcje błędów po obu stronach połączenia) Sieci 3 (zarządza połączeniami nawiązywanymi poprzez sieć przez wyższe warstwy) Łącza danych (definiuje datagramy i wyznacza trasy) 2 (zapewnia rzeczywiste dostarczanie danych poprzez fizyczne połączenie) Fizyczna (definiuje fizyczne właściwości medium transmisyjnego sieci) Internetu 1 Dostępu do sieci (składa się z procedur umożliwiający dostęp do fizycznej sieci) Najniższa warstwa, nazwana fizyczną odpowiedzialna jest za przesyłanie bitów. Odpowiada jej karta sieciowa lub modem. Na tym poziomie realizowana jest fizyczna transmisja danych bez "kontroli ruchu" i bez uwzględnienia rodzaju informacji. Ciągłość transmisji nie jest zabezpieczona - jeśli medium zostanie zablokowane lub uszkodzone, komunikacja zostanie przerwana. Warstwa fizyczna porozumiewa się z warstwą łącza. Ta warstwa steruje fizyczną wymianą bitów. W większości przypadków obie warstwy połączone są w jedną całość tworząc w ten sposób kartę sieciową. Następna z kolei warstwa sieciowa zamienia ciąg bitów w kanał komunikacyjny. Warstwa sieciowa dba o to, aby informacje przepływały między odpowiednimi komputerami. Dane wymieniane są w postaci pakietów wysyłanych od nadawcy do odbiorcy, nie jest jednak sprawdzana ich zawartość. Kolejna warstwa, warstwa transportowa przesyła wiadomości kanałem stworzonym przez warstwę sieciową. Dopiero ta warstwa troszczy się o bezpieczeństwo i pewność wymiany danych. W przypadku warstw leżących poniżej, nie są brane pod uwagę względy bezpieczeństwa. Istotne jest natomiast zapewnienie maksymalnej prędkości przesyłania danych. 4 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Na warstwie transportowej bazuje warstwa sesji . W tym momencie kończy się czysta wymiana bajtów, a znaczenia nabiera rodzaj informacji. Dopiero ta warstwa pozwala realizować usługi takie jak na przykład pobieranie danych z serwera. Przedostatnia warstwa nosi nazwę warstwy prezentacji. Na tym poziomie dane dostarczane z niższych warstw przetwarzane są w taki sposób, aby mogły być odebrane przez aplikację użytkownika. Tutaj dokonywana jest konwersja danych, jeśli np. komputer-klient używa innego formatu liczb niż komputer serwer. Ostatnia warstwa aplikacji jest po prostu programem komunikacyjnym, a więc np. przeglądarką WWW. W większości przypadków również warstwy prezentacji i sesji łączone są w jedną całość. 3. Architektura protokołów TCP/IP Zestaw protokołów taki jak TCP/IP, jest kombinacją wielu różnych protokołów działających w kilku warstwach. Zestaw protokołów TCP/IP rozważa się zwykle jako system czterowarstwowy. Poszczególne warstwy wraz z protokołami przedstawiono w tablicy. 2. Tablica 2. Warstwy w architekturze protokołów TCP/IP 4 Warstwa aplikacji Telnet, FTP, itp. 3 Warstwa transportowa (hosta z hostem) TCP, UDP 2 Warstwa sieci (Internetu) IP, ICMP 1 Warstwa łącza (dostępu do sieci) Programy obsługi urządzeń i karta interfejsu Podobnie jak w modelu OSI, dane są przekazywane w dół stosu podczas ich wysyłania przez sieć i w górę stosu przy odbiorze. Czterowarstwowa struktura TCP/IP jest widoczna, gdy przyjrzymy się w jaki sposób przetwarzane są dane podczas przekazywania ich z warstwy aplikacji do najniżej położonej fizycznej sieci. Każda warstwa stosu dodaje informacje sterujące tak, aby zapewnić właściwe dostarczenia danych do warstwy niższej. Informacje te noszą nazwę „nagłówków”, gdyż są umieszczone na początku przekazywanych informacji. Każda warstwa traktuje wszystkie informacje otrzymane z warstwy wyższej jako dane i umieszcza swój nagłówek na początku. Dodawanie informacji dostarczanie danych przez każdą warstwę nazywamy „enkapsulacją” (opakowaniem). Proces enkapsulacji przedstawiono na rysunku 1. Przy odbiorze danych ma miejsce działanie odwrotne. Każda warstwa odcina swój nagłówek przed przekazaniem danych do wyższej warstwy. W miarę jak informacja przechodzi w górę stosu, jest ona interpretowana przez kolejną warstwę jako dane opatrzone nagłówkiem. 5 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Dane Warstwa aplikacji Nagłówek Dane Nagłówek Nagłówek Dane Nagłówek Nagłówek Nagłówek Dane Warstwa transportowa Warstwa internetu Warstwa dostępu do sieci Wysyłanie danych Odbiór danych Rys. 1. Mechanizm enkapsulacji danych; opracowano wg [1] Każda warstwa ma swoje niezależne struktury danych i z założenia jest nieświadoma struktur danych używanych przez warstwy wyższą i niższą. W rzeczywistości przez wzgląd na bardziej efektywne przekazywanie danych, struktury danych warstwy są tak projektowane, aby były zgodne ze strukturami stosowanymi przez warstwy otaczające. Każda warstwa ma swoje własne struktury i własną terminologię do jej opisu. Na rysunku 2 pokazano terminy używane przez różne warstwy TCP/IP do określania przekazywanych danych. Aplikacje stosujące protokoły TCP traktują swoje dane jako „strumień” (ang. stream), podczas gdy aplikacje korzystające z protokołu UDP7 odnoszą się do danych jak do „wiadomości” (ang. message). TCP nazywa dane „segmentem”, a UDP określa swoje struktury danych jako „pakiety”. Warstwa Internet widzi wszystkie dane jako bloki nazywane „datagramami”. Większość sieci traktuje przesyłanie danych jako „pakiety” lub „ramki” (ang. frames). Warstwa aplikacji Warstwa transportowa Warstwa internetu Warstwa dostępu do sieci TCP strumień segment UDP Wiadomość pakiet datagram datagram ramka ramka Rys. 2. Struktury danych i ich nazwy; opracowano wg [1] Poniżej warstwy dostępu do sieci znajduje się warstwa fizyczna w której przesyłany jest sygnał w medium transmisyjnym. Dokładny opis tej warstwy znalazł się w „Skrypcie do ćwiczenia LAN 1” Przyjrzyjmy się teraz bliżej funkcjom wszystkich warstw, zaczynając od warstwy łącza, a kończąc na warstwie aplikacji. 7 UDP (ang. User Datagram Protocol) – jest protokołem warstwy transportu używanym w połączeniu z protokołem IP 6 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 3.1 Warstwa łącza danych Warstwa łącza danych (nazywana również warstwą dostępu do sieci) jest najniższą warstwą w hierarchii architektury protokołów TCP/IP. W warstwie tej do datagramów IP8 dodaje się nagłówki oraz zakończenie i w ten sposób otrzymuje się ramki9 przesyłane w sieci. Funkcje tej warstwy odpowiadają w przybliżeniu funkcjom trzech najniższych warstw modelu ISO/OSI. Do komunikacji w sieciach rozległych lub przez łącza szeregowe mogą być stosowane takie protokoły jak PPP10 lub SLIP11. Te dwa protokoły zostały specjalnie opracowane do przesyłania datagramów IP poprzez szeregowe łącza dwupunktowe. Protokół SLIP zazwyczaj jest stosowany do łączenia pojedynczych komputerów poprzez łącza szeregowe. Natomiast w sieciach rozległych zalecane jest stosowanie protokołu PPP. Funkcje wykonywane na tym poziomie obejmują opakowanie datagramów IP, tak by stawały się one ramkami przesyłanymi przez sieć. Następuje tu także zamiana adresów IP na fizyczne adresy stosowane w sieci. Wielką zaletą TCP/IP jest schemat adresowania, który jednoznacznie identyfikuje każdy komputer w Internecie (adresowanie zostało opisane w dalszej części skryptu). 3.1.1 Ramka Eternetowa Ramka jest strukturą wykorzystywaną do przesyłania bloków danych w sieci. Rozmiar i struktura ramki zależą od rodzaju używanego przez sieć protokołu warstwy sprzętowej. Ramka jest podobna do koperty listowej. Wiadomo że każdy rodzaj koperty ma określone i stałe rozmiary. Zawartość koperty tego samego rodzaju może jednak różnić się rozmiarem, wagą, zawartością i pilnością. Typowa ramka składa się z tylu pól (podstruktur), ile niezbędnych jest do zagwarantowania bezpiecznego dostarczenia danych wskazanemu odbiorcy. Najczęściej spotykane pola to: - ogranicznik początku ramki, - adres źródłowy (nadawcy), - adres docelowy (adresata), - dane, - sekwencje kontrolne ramki. Budowa ramki Ethernetowej została pokazana na rys. 3, a jej szczegółowy opis znajduje się w „Skrypcie do ćwiczenia LAN 1”. 7 1 Preambuła SFD 6 Adres docelowy 6 2 Adres Długość źródłowy min 20 min 20 46 - 1482 4 Nagłówek IPX Nagłówek TCP Dane FCS Rys. 3. Umieszczenie pakietu IP w ramce Ethernet. Długości pól podane w bajtach 8 Datagram IP (ang. IP datagram) – podstawowa jednostka informacji przenoszonej w Internecie. Datagram zawiera adres źródłowy, adres docelowy oraz pola, które definiują takie cechy jak długość datagramu, suma kontrolna nagłówka i znaczniki określające, czy datagram jest podzielony na fragmenty. 9 Ramka (ang. frame) – logiczne zgrupowanie informacji wysyłanych przez nośnik transmisji jako jednostka w warstwie łącza danych. Termin ten często dotyczy nagłówka i stopki transmisji, stosowanych do synchronizacji i nadzoru błędów. Otaczają one dane użytkownika zawarte w jednostce transmisji. 10 PPP (ang. Point-to-Point Protocol) - jest to protokół przeznaczony do pracy z protokołami warstwy sieci, takimi jak IP, IPX oraz ARA. Zapewnia połączenie routera z routerem oraz hosta z siecią w łączach synchronicznych i asynchronicznych. 11 SLIP (ang. Serial Line Internet Protocol) – standardowy protokół dla szeregowego połączenia dwupunktowego, stosujący odmianę TCP/IP. Jest to poprzednik PPP. 7 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 3.1.2 Współdziałanie warstw łącza danych Ethernet oraz sieciowej IP Do poprawnego przesłania ramki od stacji nadawczej do stacji odbiorczej niezbędne są: adresy IP stacji nadawczej i odbiorczej oraz ich adresy fizyczne MAC (ang. Media Access Control). Przyjmuje się, że nieznanym adresem jest adres MAC stacji odbiorczej, co ma duże znaczenie w przypadku wymiany karty sieciowej w stacji odbiorczej, a o fakcie tym nie jest powiadamiana stacja nadawcza. Musi zatem istnieć mechanizm automatycznego określenia adresu MAC odbiorcy na podstawie jego adresu IP. Pakiet ARP request Inne elementy interfejsu znany FF:FF:FF:FF:FF:FF znany znany IAnad IAodb HAnad HAodb Adres sieci: 132.17.0.0 1 Adres HAnad 1 Adres HAk+1 2 Adres IAnad 2 Adres IAk+1 3 3 4 4 Stacja sieciowa k (nadawcza) o adresie 132.17.0.1 Kabel sieciowy ... 1 Adres HAodb 2 Adres IAodb 3 4 Stacja sieciowa k+1 (nadawcza) o adresie 132.17.0.2 Stacja sieciowa w (odbiorcza) o adresie 132.10.0.17 Rys. 4. Wysyłanie pakietu ARP request; HA – Hardware Address, IA – Internet Address; opracowane wg [2] Mechanizmem takim jest protokół ARP, którego działanie poprzedza właściwą transmisję. Działanie tego mechanizmu można podzielić na dwa etapy. W etapie pierwszym stacja nadawcza wysyła do kabla sieciowego pakiet o nazwie „ARP request”, z rozgłoszeniowym adresem MAC o wartości HAodb= FF:FF:FF:FF:FF:FF. Adres ten każda karta sieciowa traktuje jako upoważnienie do przyjęcia tego pakietu. W każdej stacji sieciowej następuje porównanie adresu IAodb zawartego w pakiecie „ARP request” z adresem IAodb skonfigurowanym. Stacja, dla której te adresy są równe, wysyła do stacji nadawczej pakiet „ARP response”. W rezultacie karty sieciowe umożliwiają porównanie adresu IP każdej stacji sieciowej z adresem IP zawartym w pakiecie. Proces wysyłania pakietu „ARP request” przedstawiono na rysunku 4. 8 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Pakiet ARP response Inne elementy interfejsu znany znany znany znany IAnad IAodb HAnad HAodb Adres sieci: 132.17.0.0 1 Adres HAnad 1 Adres HAk+1 2 Adres IAnad 2 Adres IAk+1 3 3 4 4 Stacja sieciowa k (nadawcza) o adresie 132.17.0.1 Kabel sieciowy ... 1 Adres HAodb 2 Adres IAodb 3 4 Stacja sieciowa k+1 (nadawcza) o adresie 132.17.0.2 Stacja sieciowa w (odbiorcza) o adresie 132.10.0.17 Rys. 5. Wysyłanie pakietu ARP response; HA – Hardware Address, IA – Internet Address; opracowane wg [2] W drugim etapie stacja odbiorcza, której adres IP zgadza się z adresem zawartym w pakiecie „ARP request” wysyła do kabla sieciowego pakiet „ARP response” z poszukiwanym adresem MAC (HAodb). Trafia on do stacji nadawczej, która już może w ramce Ethernet uzupełnić brakujący adres MAC (HAodb) i zapisuje go w pamięci „ARP cache”, aby korzystać z niego w przyszłości i nie korzystać ciągle z mechanizmu ARP. Sytuację tą przedstawiono na rysunku 5. Mechanizm ARP wykorzystywany jest również wtedy, gdy stacja nadawcza i odbiorcza znajduję się w różnych sieciach. Za pomocą protokołu ARP maszyna może uzyskać adres fizyczny innego komputera, znając jego adres IP. Adres IP jest zwykle przechowywany w pamięci zewnętrznej komputera, skąd jest pobierany w trakcie ładowania systemu operacyjnego. Stacja robocza może również uzyskać adres IP znając adres MAC. Jest to możliwe za pomocą protokołu odwrotnego odwzorowania adresów RARP, który umożliwia uzyskiwanie adresu IP na podstawie znajomości własnego adresu fizycznego. 9 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Rys. 6. Przykładowa sieć LAN z urzadzeniami i ich adresami MAC wykorzystywanymi w warstwie łącza danych Rys. 7. Przykład sieci LAN z urządzeniami i ich adresami IP wykorzystywanymi w warstwie sieciowej W sieci LAN te same urządzenia w tej samej sieci w różnych warstwach wykorzystują różne adresy. W warstwie łącza danych wykorzystywane są adresy MAC pobierane z kart sieciowych, natomiast w warstwie sieci wykorzystywane są adresy IP, co pokazano na rysunku 6 i rysunku 7. LAN 1 LAN 2 WAN Rys. 8. Przykładowa sieć WAN 10 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Na rysunku 8 przedstawiono przykładową sieć WAN. Sieć WAN powstanie jeśli za pomocą routerów połączymy sieć LAN 1 z siecią LAN 2. W tym przypadku w warstwie sieci będziemy wykorzystywać adresy IP, aby zlokalizować konkretne urządzenia. 3.1.3. Adresy IP W sieciach wykorzystujących protokoły TCP/IP aktualnie są stosowane 32-bitowe adresy które jednoznacznie określają sieć oraz komputer dołączony do tej sieci. Adresy zapisane są w postaci czterech oktetów co pokazano w tablicy 3. Dla przypomnienia każda cyfra binarna (bit) może przyjąć wartość 0 lub 1. W przypadku liczb binarnych, wartość bitu znajdującego się z prawej stroniy (zwanego także bitem najmniej znaczącym) wynosi 0 lub 1. Odpowiednia wartość dziesiętna każdego bitu podwaja się w miarę przesuwania się w lewą stroną liczby binarnej. Dlatego wartość drugiego bitu od prawej strony to 0 lub 2. Trzeci bit to 0 lub 4, czwarty 0 lub 8 i tak dalej. Tablica 3. Adresy można wyrazić jako numery binarne składające się z 1 i 0. Oktet (8 bitów) 2726252423222120 11000000 Oktet (8 bitów) Oktet (8 bitów) 7 6 5 4 3 2 1 0 22222222 2726252423222120 00000101 00100010 wartość dziesiętna 5 34 192 Oktet (8 bitów) 2726252423222120 00001011 11 Adresy IP są często wyrażone jako liczby dziesiętne oddzielone kropkami – 32 bity adresu są podzielone na cztery oktety (oktet to grupa 8 bitów). Maksymalna wartość dziesiętna każdego oktetu to 255. Najwyższa 8 bitowa liczba binarna to 11111111. Te bity czytane od strony lewej do prawej mają dziesiętne wartości 128, 64, 32, 16, 8, 4, 2 i 1. Po zsumowaniu tych wartości otrzymujemy wartość 255. Adres IP składa się z dwóch części: części sieciowej, części identyfikującej komputer wewnątrz sieci. Numer sieci w adresie IP identyfikuje sieć, z którą połączone jest urządzenie co pokazano na rysunku 9. Część hosta identyfikuje konkretne urządzenia w sieci. Ponieważ adres IP składa się z czterech oktetów oddzielonych kropkami, jeden, dwa lub trzy z tych oktetów mogą być użyte do identyfikacji sieci lub hosta w adresie IP. 32 bity Sieć # Host # 1 bajt 8 bitów 172 1 bajt 8 bitów • 16 1 bajt 8 bitów • 122 1 bajt 8 bitów • 204 Rys. 9. Struktura klas adresów IP 11 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Adresy IP można sklasyfikować wg ich formatów. W adresie IP wzajemna relacja między liczbą bitów określających sieć i liczbą bitów określających komputer zależy od klasy adresów. Istnieje 5 klas adresów: Adresy klasy A posiadają pierwszy bit równy 0. Następne 7 bitów określa sieć, a pozostałe 24 bity komputer wewnątrz sieci. Zauważmy, że ta klasa adresów obejmuje tylko 127 numerów sieciowych i ponad 16 mln komputerów w jednej sieci. Adresy klasy B rozpoczynają się od pary bitów o wartościach 10 binarnie. Kolejne 14 bitów określa sieć, a pozostałe 16 bitów komputer wewnątrz sieci. W klasie B istnieje ponad 16 tys. sieci, a w każdej z nich ponad 65 tys. komputerów. Adresy klasy C identyfikowane są następującą sekwencją trzech pierwszych 110 bitów. Następne 21 bitów przeznaczone jest na wskazanie sieci, a tylko 8 na określenie komputera w każdej sieci. Pozwala to obsłużyć ponad 2 mln sieci i 254 komputery. Adresy klasy D mają na pierwszych 4 bitach sekwencję 1110, a na pozostałych adres grupowy. Odnoszą się one nie do sieci, a do grupy komputerów, które nie koniecznie muszą się znajdować w tej samej sieci fizycznej. Taki adres IP umożliwia jednoczesną komunikację z grupą komputerów. Adresy klasy E rozpoczynają się od sekwencji 11110 i są przeznaczone do przyszłych zastosowań. Rys. 10. Struktura klas adresów IP Przypisanie ustalonych wartości pierwszym bitom pierwszego bajtu adresu IP powoduje, że wartość pierwszej liczby dziesiętnej jest ściśle związana z klasą adresu, a zatem: - wartości mniejsze od 128 - klasa A, - wartości 128 - 191 - klasa B, - wartości 192 - 223 - klasa C, - wartości 224 - 229 - klasa D, - powyżej 229 - klasa E. 12 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 3.2. Warstwa Internetu Warstwa znajdująca się w hierarchii protokołów powyżej warstwy dostępu do sieci jest to warstwa Internet. Protokół Internet jest sercem TCP/IP i najważniejszym protokołem tej warstwy. Protokół IP umożliwia dostarczenie pakietów, na bazie których zbudowane są sieci TCP/IP. Wszystkie dane TCP/IP, zarówno wysyłane jak i odbierane, przepływają przez IP, niezależnie od ich końcowego przeznaczenia. 3.2.1 Protokół Internet Protokół Internet jest fundamentalnym elementem Internetu. Jego funkcje obejmują: - definiowanie datagramów, będących w Internecie podstawowymi jednostkami transmisyjnymi, - definiowanie schematu adresowania używanego w Internecie, - przekazywanie danych między warstwą dostępu do sieci, a warstwą transportową host to host, - kierowanie datagramów do komputerów odległych, - dokonywanie fragmentacji i ponownego składania datagramów. Protokół ten jest odpowiedzialny za przesyłanie pakietów zwanych datagramami między użytkownikami sieci. Jest to protokół bezpołączeniowy, co oznacza, że datagramy są przesyłane przez sieć bez kontroli poprawności ich dostarczenia. W efekcie datagram może zostać zgubiony w sieci, przekłamany lub zniekształcony. Protokół IP jest przeznaczony do sieci o bardzo dobrej jakości i niezawodności łączy transmisyjnych. 3.2.2. Datagram IP Ze względu na to, że w różnych sieciach mogą być ustalone różne maksymalne długości datagramów, w zależności od potrzeb, datagram może być podzielony na kilka mniejszych części, tzn. na kilka datagramów. Tę operację nazywamy „fragmentacją datagramów”. Format każdego fragmentu jest taki sam jak format każdego innego niepodzielnego datagramu. Konieczność fragmentacji datagramu może być również następstwem przesyłania datagramów przez sieci rozległe dopuszczające inne protokoły i inne długości pakietów, np. sieci X.25 z pakietami o maksymalnej długości 128 bajtów. Kompletowanie pierwotnego datagramu z fragmentów dokonuje się w komputerze docelowym. Z chwilą nadejścia pierwszego fragmentu ustala się czas oczekiwania na skompletowanie datagramu. Jeśli w tym okresie czasu nie nadejdą pozostałe fragmenty to następuje przerwanie oczekiwania i skasowanie już otrzymanych fragmentów. Bity 1 4 Wersja Słowa 12 Czas życia 16 20 Typ usługi Identyfikator 2 3 8 IHL flagi Protokół 28 Przesunięcie fragmentu Suma kontrolna nagłówka 4 Adres źródła 5 Adres przeznaczenia 6 24 31 Długość całkowita Opcja Nagłówek 0 wypełnienie W tym miejscu rozpoczynają się dane... Rys. 11. Budowa datagramu IP; opracowano wg [1] Na rysunku11 pokazano budowę datagramu IP. Pierwsze pięć lub sześć 32- bitowych słów datagramu nosi nazwę „nagłówka”. Domyślnie nagłówek ma długość pięciu słów, szóste jest opcjonalne. Ponieważ długość nagłówka jest zmienna, zawiera on pole „długości 13 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. nagłówka Internet” (ang. Internet Header Lenght – IHL) określające jego długość w słowach. Nagłówek zawiera wszystkie informacje niezbędne do dostarczenia pakietu. W polu danych, poniżej szóstego słowa znajdują się dane pochodzące z warstwy wyższej. Opis poszczególnych pól datagramu IP wygląda następująco: 1) Słowo pierwsze składa się z: Pole „wersja” (4 bity) - określa numer użytej wersji protokołu IP. Jest ono konieczne, ponieważ routery lub komputery w sieci mogą używać różnych wersji IP. Pole „długość nagłówka” (IHL) (4 bity) - określa liczbę słów 32 bitowych składających się na nagłówek datagramu. Typowa (minimalna) długość nagłówka wynosi 5. Pole „typ usługi” (8 bitów) - określa jakość usług jakiej wymaga się od sieci. Znaczenie poszczególnych bitów tego pola jest następujące: Pierwsze trzy pola określają tzw. pierwszeństwo, np. 000 - oznacza datagram zwykły, 001 - PRIORYTETOWY, 010 - natychmiastowy, 011 - błyskawiczny, 100 - datagram super błyskawiczny. Bit czwarty to bit D określający opóźnienie w sieci: (D=0 oznacza normalne, D=1 małe opóźnienie), Kolejny bit to bit T związany z przepustowością: (T=0 oznacza normalną, a T=1 dużą przepustowość), Bit szósty R pozwala wybrać niezawodność w dostarczeniu datagramu: (R=0 normalna, R=1 duża niezawodność). Ostatnie dwa bity mają wartości równe zeru i są zarezerwowane dla przyszłych zastosowań. Pole „całkowita długość pakietu” (16 bitów) - definiuje długość datagramu IP w bajtach (oktetach). Maksymalna długość datagramu wynosi 65535 bajtów. 2) Trzy pola drugiego słowa w nagłówku są wykorzystywane przez protokół IP do fragmentacji datagramów i do operacji odwrotnej, tzn. do składania z krótkich fragmentów pierwotnego datagramu. Te pola to: identyfikacja, flaga i przesunięcie fragmentu. Pole „identyfikacja” (16 bitów) - jest używane do jednoznacznego oznaczenia każdego fragmentu pierwotnego datagramu. Identyfikator zamieszczony w tym polu jest powtarzany we wszystkich fragmentach składających się na pierwotny datagram. Pole „flagi” (3 bity) - pierwszy - zawsze zero, drugi określa czy można (1) czy nie można (0) fragmentować datagram, trzeci - identyfikacja ostatniego fragmentu składającego się na pierwotny datagram (wartość 0 określa ostatni, 1 oznacza kolejny fragment). Pole „przesunięcie fragmentu” (13 bitów) - wskazuje, którą częścią całości pierwotnego datagramu jest dany fragment. Poszczególne fragmenty mają pola danych o długości będącej wielkością 8 bitów. Wyjątkiem jest ostatni fragment, którego długość wynika z długości pierwotnego datagramu. W polu tym podaje się o ile zawartość fragmentu jest przesunięta w stosunku do początku pola danych pierwotnego datagramu. 3) Słowo trzecie składa się z następujących pól: Pole „czas życia” (8 bitów) - jest parametrem określającym ile czasu datagram może przebywać w sieci. Czas życia datagramu ustala nadawca umieszczając w tym polu liczbę naturalną. Przy przejściu przez kolejny router liczba ta jest zmniejszana o 1. Zmniejszenie do zera powoduje odrzucenie datagramu. 14 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Pole „protokół” (8 bitów) - określa numer protokołu warstwy transportowej, do którego należy przesłać dane z datagramu; np. numer 6 oznacza protokół TCP, a numer 1 protokół UDP. Pole „suma kontrolna nagłówka” (16 bitów) - służy do sprawdzania poprawności odbioru wyłącznie nagłówka datagramu. Jest to szesnastobitowe jedynkowe uzupełnienie, jedynkowo uzupełnionej sumy wszystkich szesnastobitowych słów nagłówka i danych pakietu. Przy obliczaniu sumy kontrolnej przyjmuje się, że pole to zawiera same zera. Suma ta podlega weryfikacji i modyfikacji np. w trakcie zmian pola „czas życia” w każdym węźle sieci. 4) SŁOWO CZWARTE W CAŁOŚCI ZAJMUJE POLE „ADRES ŹRÓDŁA” (32 BITY) ADRESY IP ODPOWIEDNIO KOMPUTERA ŹRÓDŁOWEGO I DOCELOWEGO. - KTÓRE ZAWIERAJA 5) Słowo piąte wskazuje pole „adres przeznaczenia” (32 bity) - zawierają adresy IP odpowiednio komputera źródłowego i docelowego. 6) Na słowo szóste składają się pole „opcje” oraz pole „wypełnienie”. Pole „opcje” jest zmiennej długości będącej wielokrotnością 8 bitów i jest wykorzystywane do określenia dodatkowych wymagań dotyczących sposobu przesyłania datagramu, np. do rejestrowania przebytej trasy lub do zapamiętania trasy zdefiniowanej w węźle źródłowym. Pole to nie musi występować w nagłówku datagramu. Pole „wypełnienie” jest ewentualnym dopełnieniem pola „opcje” do wielokrotności 32 bitów. Protokół Internet dostarcza datagramy sprawdzając „adres przeznaczenia” w piątym słowie nagłówka. Adres przeznaczenia jest standardowym 32 – bitowym adresem IP, który identyfikuje docelową sieć i określa konkretny komputer w tej sieci (format adresu IP jest wyjaśniony w dalszej części skryptu). Jeżeli adres przeznaczenia wskazuje na komputer znajdujący się w lokalnej sieci, pakiet jest dostarczany bezpośrednio. Natomiast jeśli adres przeznaczenia nie znajduje się w sieci lokalnej, pakiet jest przekazywany do urządzenia o nazwie „gateway”. Gateway przekazuje pakiety między różnymi sieciami fizycznymi. Decydowanie o tym, który gateway wybrać, nosi nazwę „rutowania” (ang. routing). Protokół IP dokonuje osobnego rutowania dla każdego pakietu. WIĘCEJ INFORMACJI O MECHANIZMIE RUTOWANIA PODANO W SKRYPCIE DO ĆWICZENIA „LAN 4 SIECI WAN – ROUTERY”. 3.2.3 ICMP Integralną częścią IP jest protokół ICMP (ang. Internet Control Message Protocol). Jest on ściśle związany z protokołem IP oraz warstwą Internet. Protokół IP jako protokół bezpołączeniowy nie posiada mechanizmów informowania o błędach. Do tego celu przeznaczony jest protokół ICMP. Umożliwia on przesyłanie między komputerami lub routerami informacji o błędach występujących w funkcjonowaniu sieci IP podczas, np.: - braku możliwości dostarczenia datagramu do miejsca przeznaczenia, - zmiany wcześniej wyznaczonej trasy przez jeden z pośredniczących routerów, - braku wolnej pamięci buforowej dla zapamiętania datagramu. Informacje o tych zaburzeniach w działaniu sieci noszą nazwę komunikatów. Komunikaty protokołu ICMP są przesyłane wewnątrz datagramów IP. Każdy komunikat ma własny format. Jednak wszystkie rozpoczynają się takimi samymi polami: - pole „typ” - określa rodzaj komunikatu, - pole „kod” - opisuje kod błędu, - pole „suma kontrolna” - zawiera szesnastobitowe jedynkowe uzupełnienie, jedynkowo uzupełnionej sumy szesnastobitowych słów komunikatu ICMP, - pole „wskaźnik” określa bajt, w którym wystąpił błąd, - pole „informacja” - zawiera nagłówek oraz pierwsze 64 bity datagramu IP, w którym 15 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. wykryto błąd. Występowanie dalszych pól zależy od typu komunikatu ICMP. Protokół ICMP posługuje się 12 komunikatami, które są wymieniane między routerami i / lub komputerami. Niektóre komunikaty mają postać jak poniżej: - „przekroczenie czasu życia datagramu” - komunikat jest wysyłany jeśli po wykonaniu odpowiednich obliczeń, wartość pola czas życia datagramu IP osiągnie zero, - „wystąpienia niezrozumiałego parametru” - komunikat ten sygnalizuje wystąpienie niedopuszczalnej wartości w pewnym polu nagłówka datagramu IP, - „wykrycie nieosiągalnych miejsc przeznaczenia” - jeśli nieosiągalnym adresatem jest komputer w sieci, to komunikat ten jest wysyłany przez routery pośredniczące w transferze datagramów. Jeżeli nieosiągalnym miejscem przeznaczenia jest port, to komputer docelowy wysyła komunikat chwilowego wstrzymania nadawania. W celu sprawdzenia poprawności działania zdalnego systemu wysyła się sygnał echa. System po otrzymaniu tego komunikatu musi natychmiast odesłać go do nadawcy. Brak odpowiedzi oznacza, że testowany system nie jest sprawny, - „wskazania innej trasy dla datagramów” - komunikat wysyłany do źródłowego routera wskazuje, że znaleziono krótszą trasę dla datagramu. Protokół ICMP służy do wysyłania komunikatów określających status węzłów sieci. Komunikat taki może być powiadomieniem o błędzie lub po prostu zawierać informacje o bieżącym stanie węzła. ICMP umożliwia wydawanie poleceń dla urządzeń sieciowych, które "odpowiadają" zwracając informacje o swoim stanie. W tym celu wykorzystywany jest specjalny program „PING”. Protokoły ICMP i IP są implementowane razem ponieważ muszą ściśle współdziałać udostępniając mechanizmy wyznaczania trasy i uzyskiwania informacji. Sposób komunikowania się urządzeń przedstawia rysunku 12. Rys. 12. Za pomocą polecenia „PING” generowana jest prośba o echo 3.3. Warstwa transportowa Bezpośrednio nad warstwą Internet znajduje się warstwa transportowa Host-to-Host. Zapewnia ona bezpośrednie połączenie między końcowymi użytkownikami (systemami) wymieniającymi informacje. Do najważniejszych protokołów tej warstwy zaliczamy TCP oraz UDP. Protokół TCP zapewnia usługi niezawodnie dostarczające dane, z wykrywaniem na obu krańcach błędów transmisji i ich korekcją. UDP udostępnia usługi dostarczające datagramy z małym narzutem, metodą bezpołączeniową. Oba protokoły przekazują dane między warstwą aplikacji a warstwą Internet. 16 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 3.3.1 Protokół TCP Protokół TCP jest protokołem połączeniowym umożliwiającym wykrywanie błędów na obu końcach połączenia. Ma on możliwość ustanowienia i utrzymania połączenia wirtualnego między dwoma użytkownikami w celu przesyłania danych, sterowania przepływem, przesyłania potwierdzeń oraz kontroli i korekcji błędów. Jak już wspomniano wcześniej pakiety mogą do stacji odbiorczej docierać w innej kolejności, niż zostały wysłane ze stacji nadawczej. Aby poradzić sobie z tą niedogodnością, został wprowadzony protokół TCP. To właśnie mechanizm protokołu TCP powoduje, że przybywające do stacji odbiorczej pakiety są porządkowane w takiej kolejności, w jakiej zostały nadane w stacji nadawczej. Ponadto protokół TCP przez cały czas transmisji czuwa nad kompletnością komunikatu, który w stacji odbiorczej zostanie złożony z odebranych pakietów, porządkowanych w kolejności ich nadawania. Może się zdarzyć, że jakiś pakiet (lub większa ich liczba) nie dotrze do stacji odbiorczej. Wtedy także z pomocą przychodzi TCP. Istota mechanizmu TCP w tym wypadku polega na tym, że w każdym pakiecie jest zapisana liczba sekwencyjna, zwiększana przez protokół IP w momencie wysyłania pakietu do stacji odbiorczej. Każdy pakiet niesie więc w sobie także informację o tym, jakie jest jego miejsce w komunikacie. Liczba sekwencyjna pozwala więc protokołowi TCP na uporządkowanie pakietów w stacji odbiorczej niezależnie od tego, w jakiej kolejności tam dotarły. Ponadto liczba sekwencyjna umożliwia protokołowi TCP stwierdzenie, czy wszystkie pakiety komunikatu dotarły do celu. Jeśli z jakiegoś powodu niektóre pakiety nie dotarły do stacji odbiorczej, to protokół TCP wysyła do stacji nadawczej komunikat żądający ponownego przesłania brakujących pakietów. Dzieje się to tak długo, aż wszystkie pakiety zostaną przesłane do stacji odbiorczej. Wtedy ponownie zostaje sformowany komunikat (złożony z odebranych pakietów) jako ciągły strumień informacji, który w takiej postaci może być przetworzony przez stację odbiorczą. Protokół TCP wprowadza dodatkowe możliwości funkcjonalne sieci, dotyczące przychodzących (odbieranych) komunikatów a polegające na rozróżnianiu usługi według numerów portów. Podobnie jak adresy IP pozwalają identyfikować poszczególne stacje sieciowe, numery portów określają typ usługi realizowanej przez daną stację. Organizacja taka pozwala na to, że ten sam serwer może realizować wiele różnych usług, na przykład Gopher, WAIS, WWW, Telnet itp. Niektóre wartości portów są traktowane jako standardowe. I tak port 20 jest używany dla usługi FTP, port 70 dla Gophera, a port 80 dla usług HTTP (WWW). Pomimo, że protokół TCP (obok protokołu IP) stanowi istotny mechanizm zapewniający komunikację sieciową, to jednak są pewne sytuacje, kiedy można obejść się bez stosowania tego mechanizmu. Ewidentnym tego przykładem jest sytuacja, kiedy komunikat składa się tylko z jednego pakietu (ok. 200 bajtów). W takim przypadku nie ma potrzeby zmiany kolejności pakietów w stacji odbiorczej. Stosuje się wtedy protokół UDP, który podobnie jak TCP - wprowadza zróżnicowanie według numerów portów, co umożliwia trafianie komunikatu w tryby odpowiedniej usługi. Trzeba podkreślić, że numery portów określane przez UDP nie są równe numerom portów określanym przez TCP, na przykład TCP 50 nie określa tej samej usługi co UDP 50. Na rys. 13 przedstawiono format segmentu TCP, natomiast pod rysunkiem znajduje się opis poszczególnych pól segmentu. 17 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Bity 0 4 8 12 16 Port źródłowy 1 Słowa 6 28 31 Port przeznaczenia Numer potwierdzenia 3 5 24 Numer sekwencji 2 4 20 Dł. nagłówka Zarezerwowane Okno Flagi Priorytet Suma kontrolna Opcja wypełnienie W tym miejscu rozpoczynają się dane... Rys. 13. Format segmentu TCP; opracowano wg [1] 1) Słowo pierwsze składa się z pola zawierającego numer „portu źródłowego” (16 bitów) i pola zawierającego numer „portu przeznaczenia” (16 bitów) procesów aplikacyjnych korzystających z usług TCP. Kombinacja tych numerów z adresami sieciowymi określa parę gniazd tworzących połączenie protokołu TCP. 2) Słowo drugie to numer sekwencji (32 bity) zawiera numer sekwencji pierwszego bajtu danych w segmencie. Ta wartość określa pozycję segmentu w strumieniu bajtów. Podczas ustanawiania połączenia jeśli bit SYN w polu flagi jest ustawiony na 1, to w tym polu zawarty jest inicjujący numer sekwencyjny ins, od którego rozpoczyna się numerację bajtów w połączeniu. Zatem pierwszy wysłany bajt ma numer ins+1. 3) Słowo trzecie – „numer potwierdzenia” (32 bity) zawiera numer sekwencyjny następnego oczekiwanego bajtu po stronie odbiorczej. Jednocześnie jest to potwierdzenie poprawnego odbioru bajtów o numerach sekwencyjnych mniejszych od zawartego w tym polu. Potwierdzenia mówią nadawcy ile bajtów danych zostało już poprawnie odebranych. 4) Słowo czwarte składa się z pola „długość nagłówka” (4 bity), które określa liczbę 32 bitowych słów w nagłówku segmentu TCP. Tym samym określone zostaje miejsce, w którym rozpoczynają się dane. Pole to ma tak określone znaczenie tylko wtedy, gdy bit „ack” równy jest 1. Następnie pole „zarezerwowane” (6 bitów) jest przeznaczone dla przyszłych zastosowań i zawiera same zera. Pole „flagi” składa się z sześciu bitów sterujących, które mają następujące znaczenie: - UGR wskazuje na ważność pola „priorytet”, - ACK wskazuje na ważność pola „numer potwierdzania”, - PSH WSKAZUJE NA DZIAŁANIE FUNKCJI WYMUSZAJĄCEJ WYSYŁANIE SEGMENTU, - RST wyzerowanie połączenia, - SYN wskazuje, że w polu „numer sekwencyjny” umieszczony jest inicjujący numer sekwencyjny INS. Jest on przeznaczony do synchronizacji numerów sekwencyjnych w fazie ustanowienia połączenia. - FIN wskazuje, że nadawca nie ma nic więcej do nadania czyli oznacza sygnał końca danych. Ostatnim elementem w czwartym słowie jest pole „okno” (16 bitów), które określa liczbę bajtów jaką może jeszcze zaakceptować odbiorczy moduł TCP. 18 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 5) Słowo piąte zawiera pole „suma kontrolna” czyli jest to 16 - bitowe jedynkowe uzupełnienie, jedynkowo uzupełnionej sumy wszystkich 16 - bitowych słów w segmencie. Ta suma obejmuje zarówno nagłówek jak i dane segmentu, a pole „priorytet” (16 bitów) jest interpretowane tylko wtedy, gdy bit UGR jest równy 1. Pole to zawiera numer sekwencyjny bajtu następującego po pilnych danych. 6) Ostatnie słowo szóste zawiera pole „opcja” które ma długość zmienną będącą wielokrotnością 8 bitów. Zawiera ono numery opcji - każdy numer zapisany w jednym bajcie. Dla protokołu TCP zdefiniowano trzy opcje: 0 - koniec listy opcji, 1 - brak działania, 2 - MAKSYMALNA DŁUGOŚĆ SEGMENTU. Ostatnim elementem jest pole „wypełnienie” uzupełniające nagłówek do wielokrotności 32 bitów. Ze względu na to, że TCP jest protokołem zorientowanym połączeniowo, więc w celu przesłania danych między dwoma modułami TCP, zainstalowanymi w różnych komputerach, konieczne jest ustanowienie, utrzymanie i rozłączenie „połączenia wirtualnego”. Rys. 14. Potrójne uzgodnienie, przed wymianą danych Na rysunku 14 pokazano proces ustanowienia połączenia, który odbywa się w następujących etapach : nadawczy moduł TCP wysyła do odbiorczego modułu TCP segment z bitem SYN=1 i z proponowanym numerem INS w polu numer sekwencyjny. Odbiorczy moduł TCP, jeśli zgadza się na ustanowienie połączenia, przesyła zwrotnie segment z bitami SYN=1 i ACK=1, a w polu numer sekwencyjny podaje numer INS, z którym rozpocznie działanie. Następnie nadawczy moduł TCP wysyła segment z potwierdzeniem otrzymania zgody (ACK=1) na ustanowienie połączenia. W ten sposób zostaje ustanowione połączenie wirtualne między dwoma modułami TCP i mogą zostać przesyłane segmenty z danymi. Segmenty te mogą być przesyłane tym połączeniem w obu kierunkach, ponieważ TCP umożliwia transfer danych między dwoma modułami w trybie dupleksowym. Dla zapewnienia niezawodnej transmisji TCP wykorzystuje sekwencyjną numerację bajtów oraz mechanizm pozytywnych potwierdzeń z retransmisją. „Numer sekwencji” przypisany do każdego przesyłanego bajtu danych pozwala na jego jednoznaczną identyfikację, a także jest używany w mechanizmie przesyłania potwierdzeń. Ze względu na to, że kolejne bajty są numerowane począwszy od INS, a zatem numer pierwszego bajtu wysłanego w połączeniu wirtualnym wynosi INS+1 ( zazwyczaj INS=0). 19 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Nadawczy moduł TCP dokonuje retransmisji danych do czasu, aż otrzyma potwierdzenie poprawnego ich przyjęcia przez odbiorczy moduł TCP. Rozpoczęcie retransmisji uwarunkowane jest przekroczeniem wcześniej ustalonego czasu oczekiwania na nadejście potwierdzenia. Po stronie odbiorczej poprawność odbioru danych sprawdzana jest przy użyciu pola „suma kontrolna” znajdującego się w nagłówku segmentu. Jeżeli dane są akceptowane to moduł TCP wysyła zwrotnie pozytywne potwierdzenie. Jest ono zawarte w polu „numer potwierdzenia”. Wszystkie bajty danych o numerach sekwencyjnych mniejszych od wartości zawartej w tym polu zostały odebrane poprawnie. W sytuacji, gdy dane zostały odebrane poprawnie, a nadawczy moduł TCP retransmitował je np. z powodu zaginięcia segmentu z pozytywnym potwierdzeniem, odbiorczy moduł TCP ma możliwość odrzucenia nadmiarowych danych (duplikatów). Protokół TCP umożliwia również zarządzanie buforami. Odbywa się to przez wskazanie ile bajtów odbiorczy moduł TCP jest w stanie zaakceptować. Liczba akceptowanych bajtów określona jest w polu „okno” w nagłówku segmentu przesyłanego do nadawczego modułu TCP. Liczba ta może być zmieniana w trakcie trwania połączenia wirtualnego. TCP realizuje również koncepcję funkcji wymuszającej. Operacja ta jest realizowana wtedy, gdy aplikacja chce mieć pewność, że wszystkie dane przekazane przez nią do modułu TCP zostały wysłane. W odpowiedzi na żądanie aplikacji, moduł TCP wysyła wszystkie dane znajdujące się w buforach w postaci jednego lub kilku segmentów do odbiorczego modułu TCP. Działanie funkcji wymuszającej sygnalizowane jest bitem PSH równym 1. Po przesłaniu danych następuje rozłączenie połączenia wirtualnego. Jest ono realizowane trójetapowo z użyciem bitu FIN ustawionego na 1. Należy tu przypomnieć, że moduł TCP w celu przesyłania segmentu przez sieć przekazuje go do warstwy internet. Tam jest on umieszczany wewnątrz datagramu, czyli inaczej segment jest uzupełniany o nagłówek datagramu IP. Z kolei protokół IP przekazuje ten datagram do warstwy dostępu do sieci, gdzie po obudowaniu o kolejny nagłówek tworzona jest ramka przesyłana przez sieć. 3.3.2 Protokół UDP Protokół UDP jest protokołem bezpołączeniowym, nie posiadającym mechanizmów sprawdzania poprawności dostarczenia danych do miejsca przeznaczenia. Segmenty TCP jak i pakiety UDP w celu ich dalszego przesłania są umieszczane wewnątrz datagramu IP. Bity 0 16 32 Port źródłowy Port przeznaczenia Długość Suma kontrolna W tym miejscu rozpoczynają się dane... Rys. 15. Format wiadomości UDP; opracowano wg [1] Na rysunku 15 przedstawiono format wiadomość UDP który składa się z kilku elementów: Pole „port źródłowy” (16 bitów) określa numer portu nadawczego procesu aplikacji. Jeśli pole to nie jest wykorzystane, to zawiera same zera. Pole „port przeznaczenia” (16 bitów) zawiera numer procesu aplikacji na komputerze docelowym. 20 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Pole „długość” (16 bitów) zawiera całkowitą długość pakietu (nagłówek i dane) w bajtach. Pole „suma kontrolna” jest szesnastobitowym jedynkowym uzupełnieniem jedynkowo uzupełnionej sumy słów nagłówka i danych pakietu. Protokół UDP jest wykorzystywany w sytuacjach, gdy przesyłamy niewielką liczbę danych. Również protokół ten może być wykorzystywany przez aplikacje działające według modelu zapytanie-odpowiedź. Odpowiedź można potraktować jako potwierdzenie przyjęcia pytania. Jeżeli odpowiedź nie nadchodzi w określonym czasie, aplikacja po prostu wysyła kolejne pytanie. Wiele aplikacji ma wbudowane własne metody zapewniające poprawność transmisji, a narzucanie im metod warstwy transportowej jest nieefektywne. 3.4 Warstwa aplikacji Na szczycie protokołów TCP/IP znajduje się warstwa aplikacji. Obsługuje ona funkcje związane z określoną aplikacją korzystającą z sieci. Istnieje wiele aplikacji TCP/IP, które dostępne są wraz z prawie każdą implementacją tego protokołu. Przykładami mogą być programy: Telnet, FTP, Sendmail, itd. Protokoły warstwy prezentacji i aplikacji przedstawiono poniżej: 3.4.1 FTP FTP działający na zasadzie klient-serwer jest to protokół umożliwiający przesyłanie plików przez sieć Internet. FTP jest najpopularniejszą metodą kopiowania plików z odległej maszyny do lokalnej lub odwrotnie. Protokół FTP jest znacznie starszy niż stosowany w sieci WWW protokół HTTP, będąc obecnym w Internecie od samych jego początków (dokładnie od 1971 roku). Obok poczty elektronicznej i Telnetu jest jedną z trzech podstawowych usług zaprojektowanych dla sieci ARPANet, poprzedniczki Internetu. Aby użytkownik mógł pobrać plik z komputera znajdującego się w sieci, konieczne jest, aby komputer ten posiadał zainstalowane oprogramowanie mogące rozpoznawać i realizować tego typu żądania nadchodzące z sieci Internet. Maszyna spełniająca te warunki nazywana jest serwerem FTP. Użytkownik łączy się z serwerem FTP za pomocą specjalnego programu, nazywanego klientem FTP. Sesja FTP składa się z trzech części. Pierwsza z nich to zalogowanie się na odległym komputerze przez podanie nazwy użytkownika i hasła. Na ich podstawie serwer FTP identyfikuje użytkownika i przydziela mu na czas sesji określone prawa dostępu do swoich zasobów. Posiadanie konta i związanych z nim odpowiednich uprawnień na komputerze docelowym jest warunkiem koniecznym do rozpoczęcia transmisji jakichkolwiek danych. Konto takie jest przydzielane przez administratora systemu. Druga część sesji to już „właściwa” praca, podczas której wykonuje się operacje na odległych plikach i katalogach – kopiowanie, przenoszenie, zmiana nazwy, itp. Przed rozpoczęciem transmisji konieczne jest podanie identyfikatora użytkownika oraz hasła zabezpieczającego odległy komputer przed niepowołanym dostępem. Na serwerach FTP z dostępem publicznym - tzw. anonimowym FTP - identyfikatorem użytkownika jest zazwyczaj „anonymous”, a hasłem własny adres poczty elektronicznej. Etap ostatni to zamknięcie sesji poleceniem „close”. Niektóre serwery wysyłają na zakończenie krótką statystykę, w której zawarte są m.in. informacje o czasie trwania sesji oraz ilości przesłanych danych. Przesyłanie plików przez FTP może odbywać się na dwa sposoby – binarnie oraz w trybie ASCII. Pierwszy z nich przesyła plik „taki, jaki jest” – bez dokonywania w nim żadnych zmian. Drugi natomiast, w założeniach przeznaczony do transmisji zbiorów tekstowych, modyfikuje sposób kodowania niektórych bajtów. Należy pamiętać, że plik binarny (program, grafika, archiwum ZIP) przesłany w trybie ASCII nie będzie się już do niczego nadawał. Tryb binarny można natomiast bez obaw stosować do transmisji plików tekstowych. 21 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Podobnie jak każdy komputer dostępny w sieci Internet serwer FTP posiada własny, indywidualny adres pozwalający jednoznacznie go zidentyfikować. Nazwa domenowa bardzo często rozpoczyna się od członu „ftp”, po którym następuje domena instytucji bądź firmy utrzymującej dany serwer, np. ftp.microsoft.com. Pełny adres internetowy (URL) wygląda nieco inaczej niż w przypadku serwerów WWW, bowiem zamiast prefiksu „http://” jest używany „ftp://”. Pozostając przy poprzednim przykładzie, URL serwera FTP firmy Microsoft będzie miał postać: „ftp://ftp.microsoft.com.” Dalsze człony adresu (ścieżka dostępu do katalogu lub pliku) są już budowane podobnie do adresów w sieci WWW. Powyższe adresy wskazują na serwer anonimowy. Jeżeli dostęp do serwera wymaga podania nazwy użytkownika oraz hasła, należy dołączyć te dane do adresu w następujący sposób: ftp://uzytkownik:[email protected]”. 3.4.1.1 Korzystanie z FTP Aby użytkownik mógł pobrać plik z komputera znajdującego się w sieci, konieczne jest by komputer ten posiadał zainstalowane oprogramowanie zdolne rozpoznawać i realizować tego typu żądania nadchodzące z sieci. Maszyna spełniająca te warunki nazywana jest serwerem FTP. Użytkownik łączy się z serwerem FTP za pomocą specjalnego programu, nazywanego klientem FTP. Dawniej, kiedy nie było jeszcze programów graficznych, korzystanie z klienta FTP wymagało opanowania komend pochodzących z języka angielskiego. Przykładem takiego klienta działającego w trybie tekstowym jest dostarczany wraz z systemem Windows 95/98 program ftp.exe - można go uruchomić otwierając menu Start, wybierając polecenie Uruchom i wpisując w otwartym oknie "ftp". Rysunek 16 przedstawia widok ekranu podczas sesji FTP. Rys. 16. Widok ekranu podczas sesji FTP. 3.4.1.2 Podstawowe polecenia Chociaż w dzisiejszych czasach coraz rzadziej używa się do połączeń FTP klientów pracujących w trybie tekstowym, możemy spotkać się z sytuacją, w której będziemy zmuszeni do skorzystania z takiego programu. Wówczas pomocny może okazać się prezentowany w tablicy 4 zestaw najważniejszych poleceń FTP. Na początek można również wpisać komendę help, która przedstawia listę dostępnych poleceń wraz z ich składnią. Tablica 4. Podstawowe polecenia FTP 22 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Polecenie ascii, asc binary, bin cd close delete dir, ls get, recv hash, ha help, ? lcd mget mput open prompt put, send pwd status user Opis ustanowienie tekstowego trybu transmisji ustanowienie binarnego trybu transmisji zmiana bieżącego katalogu na serwerze zakończenie sesji FTP usunięcie pliku o podanej nazwie wyświetlenie zawartości bieżącego katalogu przesłanie pliku z serwera do komputera lokalnego włączenie/wyłączenie wyświetlania znaków "#" po przesłaniu każdego kilobajta danych lista wszystkich dostępnych poleceń zmiana katalogu na dysku komputera lokalnego transfer wielu plików z serwera do komputera lokalnego transfer wielu plików z komputera lokalnego do serwera otwarcie połączenia z serwerem włączenie/wyłączenie wyświetlania zapytań podczas transmisji wielu plików przesłanie pliku z komputera lokalnego do serwera wyświetlenie nazwy bieżącego katalogu na serwerze wyświetlenie aktualnego stanu wszystkich opcji logowanie użytkownika 3.4.2 HTTP Protokół leżący u podstaw działania WWW (ang. World Wide Web) określa sposób formatowania i przesyłania dokumentów oraz komendy sterujące pracą serwerów internetowych i przeglądarek. Przykładowo, po wpisaniu w przeglądarce URL adresu strony WWW (rozpoczynającego się prefiksem "http://") do serwera zostaje przesłana komenda protokołu HTTP nakazująca odszukanie i wysłanie żądanego dokumentu. Poważną wadę HTTP stanowi brak możliwości zapamiętywania informacji o wcześniejszych wywołaniach każde polecenie wykonywane jest niezależnie od wyniku poprzednich. Uniemożliwia to w praktyce tworzenie witryn zdolnych w sposób interaktywny reagować na poczynania użytkownika. Stało się to głównym impulsem do opracowania nowych technologii, które pozwoliłyby ominąć tę niedogodności (ActiveX, ASP, CGI, cookie, Java). Większość przeglądarek oraz serwerów akceptuje najnowszą wersję protokołu - HTTP 1.1. Jedną z najważniejszych cech HTTP 1.1 jest możliwość utrzymywania stałego połączenia między serwerem i klientem. Przeglądarka może teraz w czasie jednego połączenia pobrać z serwera większą liczbę plików, podczas gdy wcześniejsza wersja protokołu wymagała nawiązywania nowego połączenia dla każdego pliku. Osiągnięto w ten sposób blisko 20 procentowe przyspieszenie ładowania się dokumentów WWW. 3.4.3 POP Protokół obsługi poczty elektronicznej opisujący sposób wymiany informacji między klientem a serwerem. Umożliwia przechowywanie nadchodzących wiadomości na serwerze internetowym do czasu pobrania ich przez program zainstalowany na komputerze użytkownika. Wykorzystywany przede wszystkim tam, gdzie brak jest stałego połączenia z siecią - np. połączeniach modemowych. Zamiast czytać i przygotowywać przesyłki będąc cały czas połączonym z serwerem, użytkownik może zapłacić jedynie za czas potrzebny na ściągnięcie poczty na swój dysk twardy i już w trybie offline przygotowywać odpowiedzi. Domyślnie pobrana poczta jest usuwana z serwera. Można jednak zażądać jej pozostawienia, jeśli korzystamy z więcej niż jednego komputera - zmieniając ustawienia programu pocztowego. Istnieją dwie wersje standardu: POP2 obowiązujący w latach 80-tych i wymagający dodatkowo do wysyłania wiadomości protokołu SMTP, oraz najnowszy POP3, 23 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. który może być używany niezależnie od SMTP. Obsługę POP3 zapewniają wszystkie najważniejsze programy pocztowe: Netscape Messenger, MS Outlook, Eudora, Pegasus Mail. 3.4.4 DNS Protokół organizujący system nazewnictwa w sieci Internet. Pozwala nadawać komputerom świadczącym pewne usługi w sieci opisowe nazwy domenowe (np. www.netscape.com) i tłumaczy je na używane przez komputery adresy IP (np. 198.95.251.10). Nazwy domenowe służą jedynie wygodzie użytkowników Sieci. Komputery potrafią operować wyłącznie na adresach IP – zanim przeglądarka WWW uzyska dostęp do wybranej strony internetowej, musi najpierw poznać przyporządkowany jej adres IP. Podobnie jest w przypadku programów pocztowych, klientów FTP oraz innych narzędzi internetowych. Dopiero uzyskanie przez program adresu IP odległego komputera pozwala na nawiązanie połączenia i rozpoczęcie transmisji danych. Ze względu na to, że większość użytkowników woli posługiwać się nazwami domenowymi zamiast trudnych do zapamiętania adresami IP, konieczny jest jakiś sposób „tłumaczenia” jednych na drugie. Jednak przyporządkowywaniem nazw domenowych do adresów IP nie rządzą żadne stałe reguły. Dlatego jedynym wyjściem jest utrzymywanie specjalnych baz danych z informacjami o każdym adresie symbolicznym i odpowiadającym mu adresie IP. Bazy te mieszczą się na wyróżnionych serwerach, nazywanych serwerami nazw lub serwerami DNS12 (ang. nameserver, domain name server). Działają one w sieci przez 24 godziny na dobę i udostępniają usługę polegającą na przekształcaniu adresów symbolicznych na adresy IP i vice versa. Wobec ogromu możliwych i istniejących nazw zrozumiałe jest, że pojedynczy komputer nie poradziłby sobie z taką ilością informacji oraz liczbą odwołań do niego. Bazy przechowywane są zatem w postaci rozproszonej – żadna z tych maszyn nie dysponuje informacjami adresowymi dotyczącymi całego Internetu. Serwery nazw znajdują się natomiast w każdej domenie przechowując jedynie część informacji – adresy serwerów nazw dla obejmowanych przez nią domen niższego poziomu. Dla przykładu serwer DNS dla krajowej domeny .pl będzie rozpoznawał takie nazwy w następujących domenach: „edu.pl”, „com.pl”, „org.pl”, ”wroc.pl”, itp. oraz będzie potrafił wskazać adresy serwerów DNS tych domen, natomiast serwer DNS dla domeny „edu.pl” będzie zawierał adresy serwerów DNS dla takich poddomen jak np. „icm.edu.pl” czy „agh.edu.pl”. Serwer DNS niższego poziomu (np. dla poddomeny icm.edu.pl) „będzie pamiętał” już nazwy domenowe konkretnych komputerów (np. sunsite.icm.edu.pl lub infoseek.icm.edu.pl) oraz odpowiadające im adresy IP. Na poziomie globalnym system DNS wieńczą tak zwane główne serwery nazw (ang. root level servers), które znajdują się w Stanach Zjednoczonych i podłączone są do dużych i szybkich sieci szkieletowych Internetu. Przechowują one adresy serwerów nazw dla domen najwyższego poziomu (a więc „.com”, „.edu”, „.org”, itp. oraz domen krajowych), a ich adresy muszą być znane każdemu innemu serwerowi nazw. Serwery DNS działają na tyle skutecznie, że w zasadzie do podróży po sieci znajomość adresów IP nie jest potrzebna – wystarczy znać tylko opisowe adresy domenowe. Gdy zechcemy połączyć się z dowolnym komputerem w sieci Internet, następuje cała seria „odpytywania” serwerów nazw znajdujących się na kolejnych poziomach hierarchii domen, począwszy od serwera DNS skojarzonego z najszerszą domeną wysokiego poziomu aż do serwera DNS, znającego adres IP szukanego komputera. Aby móc pracować w sieci Internet, nasz komputer musi znać adresy IP serwerów DNS dla swojej domeny – podaje je najczęściej provider lub, jeżeli łączymy się z pracy czy uczelni, administrator sieci lokalnej. Są to jedne z najważniejszych danych, które należy podać podczas konfiguracji systemu do połączeń z Siecią. Zazwyczaj dla każdej domeny są prowadzone dwa niezależne serwery nazw, dzięki czemu w razie awarii 12 DNS (ang. Domain Name System) – system stosowany w Internecie dla translacji nazw węzłów sieci na adresy sieciowe. 24 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. lub zbyt dużego obciążenia podstawowego serwera DNS (ang. primary name server) można szybko „odpytać” serwer rezerwowy (ang. secondary name server). 3.4.5 DHCP DHCP13 to protokół usługi TCP/IP oferujący dynamiczną, dzierżawioną konfigurację adresów IP pozwalający dodatkowo na rozsyłanie innych parametrów konfiguracji do odpowiednich klientów sieciowych. Protokół DHCP zapewnia bezpieczną, niezawodną i łatwą konfigurację sieci TCP/IP, zapobiega występowaniu konfliktów adresów i ułatwia optymalne wykorzystanie adresów IP klientów w sieci. Protokół DHCP wykorzystuje model typu klient/serwer, w którym serwer DHCP zajmuje się centralnym zarządzaniem adresami używanymi w sieci. Klienci obsługujący protokół DHCP mogą żądać i uzyskać dzierżawiony adres IP z serwera DHCP jako część procesu rozruchu. 3.4.6 SNMP Protokół SNMP definiuje zależność klient-serwer - klientem jest program zarządzający (ang. network manager), który łączy się z serwerami za pomocą specjalnych programów, zwanych agentami SNMP, wchodzących w skład wewnętrznego oprogramowania urządzeń sieciowych. Każdy agent SNMP obsługuje własną niewielką bazę danych MIB14 (ang. - Management Information Base), zawierającą informacje o stanie i historii pracy urządzenia, a także zmienne sterujące jego pracą. Specyfikacja SNMP umożliwia rozszerzenie standardowego zestawu wartości o zmienne charakterystyczne dla danego urządzenia (private MIB). Urządzeniami tymi mogą być praktycznie dowolne urządzenia sieciowe - mostki, bramki, routery, serwery, modemy, drukarki itd. Instrukcje wysyłane przez program zarządzający odwołują się do zmiennych MIB, które - w zależności od przeznaczenia - mogą być odczytywane lub modyfikowane. Definicja zmiennych MIB obsługiwanych przez obecnego w urządzeniu agenta SNMP opisana jest w plikach deskryptorów w formacie ASN.1 (ang. Abstract Syntax Notation), dzięki czemu program zarządzający orientuje się w możliwościach agenta. W ten sposób zapewniono rozszerzalność protokołu i możliwość dostosowania go do specyfiki konkretnych urządzeń. Specyfikacja SNMP definiuje trzy aspekty protokołu: standardowy format komunikatów UDP (ang. User Datagram Protocol), standardowy zestaw obiektów (przede wszystkim wartości umożliwiających monitorowanie TCP, IP, UDP oraz interfejsów urządzenia) oraz standardowy sposób rozszerzania zestawu obiektów. Zestaw komunikatów obejmuje trzy żądania oraz komunikat inicjowany przez agenta. Żądanie "get" umożliwia odczytanie wartości wybranego obiektu MIB w celu sprawdzenia stanu urządzenia, jego sprawności itp. bez ustanawiania z nim połączenia TCP, wiążącego się z dodatkowym obciążeniem. W zamian agent wysyła komunikat ("get-response") również opisany standardem. Żądanie "get next" powoduje zwrócenie wartości następnego obiektu MIB bez podawania jego nazwy umożliwia to szybkie przeglądanie kolejnych wartości opisujących stan urządzenia. Żądanie "set" służy do ustawiania wartości obiektów, co pozwala sterować funkcjami urządzenia i konfigurować parametry jego pracy (włączanie i wyłączanie interfejsów, odłączanie użytkowników, ustawianie rejestrów). Ostatnim komunikatem jest "trap" - komunikat wysyłany przez agenta SNMP w celu np. zasygnalizowania jakiegoś problemu. Możliwość sygnalizowania wymaga oczywiście uprzedniego skonfigurowania urządzenia - podania adresu jednego lub większej liczby urządzeń, do których informacja taka ma trafić. Zestaw 13 DHCP (ang. Dynamic Host Configuration Protocol) – protokół dynamicznego przydziału adresów IP, umożliwiający ponowne użycie tych samych adresów, gdy host już ich nie potrzebuje. 14 MIB (ang. Management Information Base) – baza danych informacji o zarządzaniu siecią, która jest przeszukiwana przez protokół zarządzania siecią, jaki jak SNMP. Wartość obiektu MIB może być zmieniona albo odszukana za pomocą poleceń SNMP. Obiekty MIB są zorganizowane w strukturę drzewa, która zawiera publiczne (standardowe) oraz prywatne (zastrzeżone) gałęzie. 25 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. danych, na którym operuje agent SNMP nosi nazwę MIB (ang. Management Information Base). Warto nadmienić, że termin ten używany jest również do określenia pojedynczego obiektu SNMP lub części zestawu danych. Standardowy MIB zawiera obiekty umożliwiające pomiar i monitorowanie aktywności IP, TCP, UDP, ścieżek IP, połączeń TCP, interfejsów, a także ogólny opis urządzenia. Każdej wartości zestawu danych towarzyszy oficjalna nazwa (np. "sysUpTime") oraz jednoznaczny z nią liczbowy identyfikator obiektu (w tym przypadku "1.3.6.1.2.1.1.3.0"). Naturalną tendencją jest używanie raczej bardziej czytelnych nazw zamiast enigmatycznych identyfikatorów. Proces rozszerzania MIB o obiekty nie przewidziane standardem (co jest jednym z filarów sukcesu SNMP) nazywany jest kompilacją MIB. Takiej kompilacji dokonuje producent w przypadku nowego urządzenia - od tej pory MIB urządzenia ma w zasadzie niezmienną postać. Definicja MIB dostarczana jest użytkownikowi wraz z urządzeniem w postaci plików ASN.1 i służy do skompilowania MIB dla programu zarządzającego. Baza MIB ma strukturę drzewiastą, zaczynającą się od głównej gałęzi "internet" zawierającej gałęzie "mgmt" (standardowe obiekty SNMP), "private" (rozszerzone obiekty SNMP), "experimental" i "directory". "Liśćmi" drzewa są obiekty, które można podzielić na dwa rodzaje: tzw. dyskretne, zawierające po jednej wartości oraz tablicowe, w których można przechowywać wiele wartości. Obiekty dyskretne używane są dla wartości opisujących np. przepływność danych. Przykładem zastosowania obiektów tablicowych może być np. opis poszczególnych interfejsów urządzenia. W zależności od rodzaju przechowywanych danych i sposobu ich obsługi wyróżnia się różne typy obiektów: tekstowe, wyliczeniowe, liczniki (wartość może tylko rosnąć), mierniki, zegary, adresy IP, adresy fizyczne (MAC) itd. Każdy z obiektów zaopatrzony jest w atrybut, determinujący sposób dostępu - tylko odczyt, tylko zapis oraz odczyt i zapis. Do odczytu i zapisu obiektu wymagana jest również znajomość tzw. community name, czyli nazwy definiowanej przez administratora przy konfigurowaniu urządzenia - wbrew znaczeniu określenia "community name" nazwy te nie są zazwyczaj podawane do publicznej wiadomości i pełnią rolę swego rodzaju haseł ograniczających dostęp do obiektów. 3.4.7 SMTP SMTP to względnie prosty, tekstowy protokół, w którym określa się co najmniej jednego odbiorcę wiadomości (w większości przypadków weryfikowane jest jego istnienie), a następnie przekazuje treść wiadomości. Łatwo przetestować serwer SMTP przy użyciu programu telnet. SMTP zaczęło być szeroko używane we wczesnych latach osiemdziesiątych dwudziestego wieku. W tamtym okresie było to uzupełnienie protokołu UUCP, który lepiej sprawdzał się przy przekazywaniu poczty między maszynami posiadającymi jedynie okresowe połączenie. SMTP natomiast lepiej działa, gdy zarówno maszyna nadająca jak odbierająca są na stałe przyłączone do sieci. Jednym z pierwszych programów do przesyłania poczty, w którym zastosowano SMTP był sendmail. W roku 2001 istniało przynajmniej 50 programów implementujących SMTP jako klienta (nadawca) lub serwer (odbiorca wiadomości). Niektóre inne popularne programy serwerów SMTP to exim, Postfix firmy IBM, Qmail Bernsteina, i Microsoft Exchange. Protokół ten nie radził sobie dobrze z plikami binarnymi, ponieważ stworzony był w oparciu o czysty tekst ASCIL. W celu kodowania plików binarnych do przesyłu przez SMTP stworzono standardy takie jak MIME. W dzisiejszych czasach większość serwerów SMTP obsługuje rozszerzenie 8BITMIME pozwalające przesyłać pliki binarne równie łatwo jak tekst. SMTP nie pozwala na pobieranie wiadomości ze zdalnego serwera. Do tego celu służą POP3 lub IMAP. Jednym z ograniczeń pierwotnego SMTP jest brak mechanizmu weryfikacji nadawcy, co ułatwia rozpowszechnianie niepożądanych treści poprzez pocztę elektroniczną (wirusy, spam). Żeby temu zaradzić stworzono rozszerzenie SMTP-AUTCH. 26 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. 3.4.8 TFTP Protokół TFTP15 zdefiniowany w specyfikacji RFC16 uaktualnianej przez dokumenty RFC 1783, 1785, 2347 oraz 2349, jest względnie prostym protokołem wykorzystywanym do przesyłania plików, które są (zazwyczaj) małe i nie wymagają dużej liczby fragmentacji. Jest on implementowany na protokole UDP, chociaż jego definicja nie wyklucza stosowania innych protokołów. Jest on pozbawiony większości funkcji protokołu FTP — na przykład nie może wyświetlać katalogów, ani uwierzytelniać użytkowników — a jego jedynym zadaniem jest odczytywanie plików z komputera zdalnego i transmitowanie do niego plików. Protokół TFTP jest przeważnie wykorzystywany przez aplikacje poczty elektronicznej. Przesył TFTP rozpoczyna się od żądania odczytu lub zapisu pliku, które żąda również połączenia. Plik wysyłany jest w blokach o stałej długości 512 bajtów. Każdy z pakietów musi być potwierdzony przez pakiet potwierdzający, zanim będzie mógł zostać wysłany następny pakiet. Pakiet danych mniejszy niż 512 bajtów wskazuje zakończenie przesyłu. Jeżeli jakiś pakiet ulegnie zagubieniu, to u planowanego odbiorcy następuje przeterminowanie, a ten następnie żąda transmisji zagubionego pakietu. Pakiet retransmitowany w tym przypadku, to ostatni pakiet poprzedniej transmisji, więc nadawca musi zachować do retransmisji tylko jeden pakiet. Poprzednie potwierdzenia gwarantują, że pakiety uprzednio wysłane zostały otrzymane. Wskazówka: Specyfikacja RFC 1783 definiuje opcję rozmiaru bloku, która pozwala TFTP stosować rozmiar pakietu danych inny (zazwyczaj większy) niż 512 bajtów. Każdemu z pakietów danych towarzyszy numer bloku. Bloki mają kolejne numery rozpoczynające się od „1”, za wyjątkiem pozytywnej odpowiedzi na żądanie zapisu, która jest pakietem potwierdzającym o numerze bloku „0”. Zazwyczaj pakiet potwierdzający zawiera numer bloku potwierdzanego pakietu danych. Poza jednym wyjątkiem (opisanym poniżej), błąd sprawia zakończenie połączenia. Błąd, sygnalizowany przez pakiet błędu nie jest potwierdzany ani retransmitowany. Dlatego też, kiedy pakiet ulegnie zagubieniu, do wykrycia zakończenia wykorzystywane jest przeterminowanie. Jeżeli port źródłowy otrzymanego pakietu jest niewłaściwy, to owa okoliczność błędu nie powoduje zakończenia. Zamiast tego do hosta, od którego pochodzi pakiet, wysłany zostaje pakiet błędu. 4. Podsieci Standardowa struktura adresów IP może być lokalnie modyfikowana poprzez użycie bitów adresowych komputerów jako dodatkowych bitów określających sieć. W istocie „linia podziału” między bitami adresowymi sieci i bitami adresowymi komputerów jest przesuwana, tworzy dodatkowe sieci, ale redukuje maksymalną liczbę systemów, jakie mogą znaleźć się w każdej z nich. Te nowo wykorzystane bity noszą nazwę podsieci (ang. subnets). Pozwalają definiować logiczne sieci wewnątrz jednej większej posiadającej jeden adres IP. Podsieć jest definiowana za pomocą maski bitowej, tzw. maski podsieci, przykładanej do adresu IP. Jeśli bit w masce jest 1, to odpowiedzialny mu bit w adresie IP jest interpretowany jako bit adresu sieci. Natomiast jeżeli bit maski wynosi 0, oznacza to, że należy on do części adresu określającego komputer. Podsieć jest znana wyłącznie lokalnie, dla całej reszty Internetu adres jest zawsze interpretowany jako standardowy. Maska podsieci która może być powiązana z typowym adresem klasy B wynosi 255.255.0.0. Najczęściej używana maska podsieci rozszerza części sieciową adresu klasy B na dodatkowy bajt. Maska ma wtedy postać 255.255.255.0, zatem wszystkie bity w trzech 15 TFTP (ang. Trivial File Transfer Protocol) – uproszczona wersja FTP, która pozwala na transfer plików między komputerami w sieci. 16 RFC (ang. Request For Comments) – dokumenty używane jako podstawowy zestaw informacji na temat Internetu. 27 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. pierwszych bajtach są jedynkami, a w ostatnim zerami. Pierwsze dwa bajty definiują sieć klasy B, następny stanowi adres podsieci, a ostatni bajt identyfikuje komputer w podsieci. Rys. 18. Podział sieci 172.16.0.0 na cztery podsieci W środowiskach wielosieciowych każda podsieć jest połączona z Internetem za pośrednictwem wspólnego punktu, routera co zostało pokazane na rysunku 18. Wewnątrz prywatnej sieci, część hosta w adresie IP może być podzielona w celu utworzenia podsieci. Rys. 19. Adresowanie podsieci rozszerza numer sieci poprzez utworzenie podsieci Rys. 19. Sposób rozszerzenia adresowania, przez utworzenia podsieci Ze względu na to, że adres podsieci jest pobierany w części numeru hosta w adresach klasy A, B, i C, adres jest przypisywany lokalnie, zazwyczaj przez administratora sieci. Ponadto, tak jak w przypadku innych części adresów IP, każdy adres podsieci musi być unikatowy w danych ramach co pokazano na rysunku 19. 28 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Spis treści: 1. HISTORIA I PRZEGLĄD MOŻLIWOŚCI TCP/IP......................... 2 2. ODNIESIENIE PROTOKOŁU TCP/IP DO MODELU OSI ....... 4 3. ARCHITEKTURA PROTOKOŁÓW TCP/IP ...................................... 5 3.1 WARSTWA ŁĄCZA DANYCH ............................................................................................. 7 3.1.1 Ramka Eternetowa .................................................................................................... 7 3.1.2 Współdziałanie warstw łącza danych Ethernet oraz sieciowej IP ........................... 8 3.1.3. Adresy IP ................................................................................................................ 11 3.2. WARSTWA INTERNETU ................................................................................................. 13 3.2.1 Protokół Internet ..................................................................................................... 13 3.2.2. Datagram IP........................................................................................................... 13 3.2.3 ICMP ....................................................................................................................... 15 3.3. WARSTWA TRANSPORTOWA ......................................................................................... 16 3.3.1 Protokół TCP........................................................................................................... 17 3.3.2 Protokół UDP.......................................................................................................... 20 3.4 WARSTWA APLIKACJI .................................................................................................... 21 3.4.1 FTP.......................................................................................................................... 21 3.4.2 HTTP ...................................................................................................................... 23 3.4.3 POP ........................................................................................................................ 23 3.4.4 DNS ........................................................................................................................ 24 3.4.5 DHCP ..................................................................................................................... 25 3.4.6 SNMP ..................................................................................................................... 25 3.4.7 SMTP...................................................................................................................... 26 3.4.8 TFTP....................................................................................................................... 27 4. PODSIECI .......................................................................................................................... 27 29 Protokół do ćwiczenia LAN2 - Sieć LAN, protokół TCP/IP. Spis ilustracji: Rys. 1. Mechanizm enkapsulacji danych; opracowano wg [1]................................................. 6 Rys. 2. Struktury danych i ich nazwy; opracowano wg [1] ..................................................... 6 Rys. 3. Umieszczenie pakietu IP w ramce Ethernet. Długości pól podane w bajtach ............... 7 Rys. 4. Wysyłanie pakietu ARP request; HA – Hardware Address, IA – Internet Address; opracowane wg [2] .................................................................................................................... 8 Rys. 5. Wysyłanie pakietu ARP response; HA – Hardware Address, IA – Internet Address; opracowane wg [2] .................................................................................................................... 9 Rys. 6. Przykładowa sieć LAN z urzadzeniami i ich adresami MAC wykorzystywanymi w warstwie łącza danych ............................................................................................................. 10 Rys. 7. Przykład sieci LAN z urządzeniami i ich adresami IP wykorzystywanymi w warstwie sieciowej ................................................................................................................................... 10 Rys. 8. Przykładowa sieć WAN................................................................................................ 10 Rys. 9. Struktura klas adresów IP ........................................................................................... 11 Rys. 10. Struktura klas adresów IP ......................................................................................... 12 Rys. 11. Budowa datagramu IP; opracowano wg [1] ............................................................ 13 Rys. 12. Za pomocą polecenia „PING” generowana jest prośba o echo ............................... 16 Rys. 13. Format segmentu TCP; opracowano wg [1] ............................................................ 18 Rys. 14. Potrójne uzgodnienie, przed wymianą danych .......................................................... 19 Rys. 15. Format wiadomości UDP; opracowano wg [1]........................................................ 20 Rys. 16. Widok ekranu podczas sesji FTP................................................................................ 22 Rys. 18. Podział sieci 172.16.0.0 na cztery podsieci................................................................ 28 Rys. 19. Adresowanie podsieci rozszerza numer sieci poprzez utworzenie podsieci ............... 28 Rys. 19. Sposób rozszerzenia adresowania, przez utworzenia podsieci .................................. 28 Bibliografia: 1. „Akademia sieci CISCO” PIERWSZY ROK NAUKI wydanie II przekład z wydania amerykańskiego Aleksandra Jakubowska 3. „Sieci komputerowe - Księga Eksperta – Mark Sportack 4. TCP/IP Administracja sieci – Craig Hunt 5. „Sieci komputerowe” Kompedium – Karol Krysiak 6. Miesięcznik „Sieci komputerowe i telekomunikacja” - Marzec 97` 7. Miesięcznik „Sieci komputerowe i telekomunikacja” - Kwiecień 97` [1] Rysunek opracowano wg „TCP/IP Administracja sieci” Craig Hunt [2] Rysunek opracowano wg miesięcznika „Sieci komputerowe i telekomunikacja”- Marzec 1997 30