1. Ćwiczenia Linux/Knoppix

2. Skaner sieci - Ethereal

3. Automaty skończone

4. SMTP, POP3, HTTP kontynuacja

5. Warstwa tranportowa

7. Protokoły rutingu

8. Warstwa sieci

9. Powtórzenie materiału

Wyjście

Ogólne założenia

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.

Zadanie 1

Zapoznanie się z Ethereal'em badając żądanie HTTP do strony HTML

Rysunek 1

  1. Na przykładzie obserwacji w skanerze pakietów, opisz nagłówki, jakie są dodawane do danych przez każdą z warstw. Nazwij te nagłówki nazwami protokołów z odpowiednich warstw, zaobserwowanych w skanerze pakietów, i uzupełnij diagram, pokazujący enkapsulację i dekapsulację danych przez stos protokołów.

  2. Wyobraź sobie, że dwa hosty przedstawione na diagramie są połączone za pośrednictwem rutera. Ruter jest to urządzenie sieciowe posiadające warstwy 1, 2, 3. Narysuj samodzielnie diagram taki, jak powyższy, przedstawiający komunikację między hostami za pośrednictwem rutera, i opisz na diagramie jak przebiega enkapsulacja i dekapsulacja.

Zadanie 2

Poniższy diagram ma przedstawiać fragmentację i defragmentację pakietów

Rysunek 2

  1. Uzupełnij go, zakładając, że każda z warstw T, S, Ł dzieli otrzymane dane co najmniej na dwie części.

  2. Przyjmij założenia, że: dane mają 60KB, maksymalny rozmiar jednostki danych (bez nagłówka) wynosi: w warstie T: 12 KB, w warstwie S: 3KB, w warstwie Ł: 1KB. Zakładając, że nagłówek TCP oraz IP mają po 20 bajtów, zaś nagłówek Ethernet: 26 bajtów, oblicz, ile informacji jest dodawane przez stos protokołów do danych.

  3. Nazwij odpowiednio jednostkę danych w każdej z warstw A, T, S, Ł, F.

  4. Czy nagłówki TCP1 i TCP2 narysowane na diagramie są jednakowe? Jeśli nie, to czym się różnią?

  5. Jakie adresy mogą być stosowane przez każdą z warstw A, T, S, Ł?

  6. W sieci działa usługa IP_To_MAC która tłumaczy adresy IP na adresy MAC. Która warstwa będzie korzystała z tej usługi?

Zadanie 3

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.

Zadanie 4

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.

  1. Opisz, w jakich warstwach trzeba dokonać zmian (być może w żadnych), żeby host mógł się poprawnie komunikować z siecią.

  2. Co trzeba zrobić, żeby host wykorzystywał nową kartę, gdyby karta optyczna została włożona dodatkowo, a stara karta Ethernetowa i połączenia kablowe nadal pozostały na miejscu? Jak można wtedy zamienić z powrotem komunikację na Ethernet, jeśli światłowód ulegnie uszkodzeniu?

Zadanie 5

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.

Zadanie 6

  1. które z warstw realizują komunikację typu end-to-end?

  2. które warstwy mogą posiadać funkcje:

    • niezawodnej komunikacji

    • kontroli przeciążeń

    • ochrony informacji

    • komutacji

    • multipleksacji