Laboratoria mają na celu przybliżyć wewnętrzną budowę protokołów, pokazać odwzorowanie modelu ISO/OSI w praktyce oraz przybliżyć działanie skanerów sieci.
Zapoznanie się z Ethereal'em badając żądanie HTTP do strony HTML
Rysunek 1
Poniższy diagram ma przedstawiać fragmentację i defragmentację pakietów
Rysunek 2
1. Napisz implementację funkcji udostępnianej przez warstwę sieci dla warstwy transportu:
//wysyła segment otrzymany od warstwy transportu na podany adres void Wyślij_Segment( Segment dane, Adres odbiorca );
Funkcja ta stanowi część interfejsu pomiędzy warstwą transportu oraz warstwą sieci. Dane są przesyłane przez warstwę transportu do warstwy sieci w postaci segmentów za pomocą wywołania tej funkcji. Ponieważ warstwa sieci posługuje się adresami IP, warstwa transportu musi jej dostarczyć taki adres. Funkcja Wyślij_Segment ma za zadanie utworzyć pakiet z segmentu (zakładamy, że segment jest mały i nie nastąpi fragmentacja); w nagłówku pakietu trzeba wpisać adres odbiorcy. Następnie warstwa sieci musi jeszcze wybrać interfejs, na którym ma wysłać ten pakiet tak, żeby dotarł on do odbiorcy. Potem warstwa sieci przekazuje pakiet do warstwy łącza, która go wyśle, korzystając z odpowiedniej funkcji warstwy łącza.
Warstwa łącza udostępnia warstwie sieci funkcję:
//wysyła pakiet p, utworzony przez warstwę sieci, poprzez interfejs i void Wyślij_Pakiet( Pakiet p, Interfejs i );
Biblioteka stosu protokołów udostępnia funkcje:
//tworzy nagłówek zawierający adres nadawcy i odbiorcy Nagłówek Utwórz_Nagłówek( Adres nadawca, Adres odbiorca ); //tworzy pakiet z nagłówka i segmentu Pakiet Utwórz_Pakiet( Nagłówek n, Segment s ); //wybiera interfejs, przez który należy wysłać pakiet Interfejs Wybierz_Interfejs( Adres a ); //zwraca adres hosta, na którym została wywołana Adres Mój_Adres();
2. Zaimplementuj funkcję warstwy sieci, wywoływaną przez warstwę łącza:
//odbiera pakiet od warstwy łącza void Odbierz_Pakiet( Pakiet p );
Ta funkcja warstwy sieci odbiera otrzymany pakiet od warstwy łącza. Pakiet ten może być zaadresowany do naszego hosta, i wtedy należy usunąć nagłówek warstwy sieci i przekazać dane (segment, bo zakładamy że nie ma fragmentacji) do warstwy transportu. Jeśli jednak pakiet nie jest przeznaczony dla naszego hosta, to trzeba go przekazać dalej - wysłać przez odpowiedni interfejs.
Oprócz funkcji opisanych powyżej, mamy także funkcje warstwy transportu:
//odbiera segment od warstwy sieci void Odbierz_Segment( Segement s );
Biblioteka stosu protokołów:
//usuwa nagłówek warstwy sieci z pakietu Segment Usuń_Nagłówek( Pakiet p ); //zwraca adres odbiorcy zapisany w nagłówku pakietu Adres Adres_Odbiorcy( Pakiet p );
Dostępny jest również operator porównujący obiekty Adres.
Na hoście była zainstalowana karta Ethernet. Host był podłączony kablem Ethernet z siecią. Teraz karta Ethernet została wyjęta i zastąpiona przez kartę optyczną, a host został połączony z siecią za pomocą światłowodu. Zakładamy, że zostały wykonane wszystkie czynności na zewnętrznym sprzęcie potrzebne do tego, żeby host komunikował się nową kartą. Nie zostały jedynie wykonane żadne zmiany w oprogramowaniu ani konfiguracji hosta.
Rysunek 3
Diagram przedstawia sieć, w której dwa hosty połączone są za pośrednictwem rutera. Ruter w warstwie sieci używa protokołu IPv4. Wybierz te z pośród narysowanych czterech stosów protokołów A, B, C, D i E, które umożliwiają komunikację obu hostom.