1 Podstawy systemu dwójkowego i arytmetyki binarnej



Podobne dokumenty
Sieć komputerowa Adresy sprzętowe Adresy logiczne System adresacji IP (wersja IPv4)

ZASADY PODZIAŁU SIECI NA PODSIECI, OBLICZANIA ADRESÓW PODSIECI, ADRESÓW HOSTÓW I ADRESU ROZGŁOSZENIOWEGO

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Struktura adresu IP v4

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Komunikacja w sieciach komputerowych

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

Adresacja IPv4 - podstawy

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Sieci Komputerowe. Zadania warstwy sieciowej. Adres IP. Przydzielanie adresów IP. Adresacja logiczna Trasowanie (ang. routing)

Plan wykładu. Wyznaczanie tras. Podsieci liczba urządzeń w klasie C. Funkcje warstwy sieciowej

Laboratorium Sieci Komputerowe

SIECI KOMPUTEROWE Adresowanie IP

1. Sieć komputerowa - grupa komputerów lub innych urządzeń połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów.

Ćwiczenia z arytmetyki komputera Budowa adresu IP

Sprawozdanie z zajęć laboratoryjnych: Technologie sieciowe 1

Warstwa sieciowa. Adresowanie IP. Zadania. Warstwa sieciowa ćwiczenie 5

Adresacja IP w sieciach komputerowych. Adresacja IP w sieciach komputerowych

Dzielenie sieci na podsieci

Scenariusz lekcji Opracowanie: mgr Bożena Marchlińska NKJO w Ciechanowie Czas trwania jednostki lekcyjnej: 90 min.

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

LABORATORIUM 2 Adresacja IP

Jedną z fundamentalnych cech IPv4 jest występowanie klucza bitowego w sposób jednoznaczny dzielącego adres na network-prefix oraz host-number.

Podsieci IPv4 w przykładach. mgr inż. Krzysztof Szałajko

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Podstawy sieci komputerowych

Sieci lokalne Adresowanie IP Usługi sieciowe. Sieci. Jacek Izdebski. ektanet.pl. 27 stycznia 2011

Podział sieci na podsieci wytłumaczenie

Podstawy sieci komputerowych

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

URZĄDZENIA TECHNIKI KOMPUTEROWEJ

SK Moduł 6 - Studia Informatyczne

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

SYSTEMY LICZBOWE 275,538 =

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

SIECI KOMPUTEROWE ADRESACJA, MEDIA I URZĄDZENIA SIECIOWE

LABORATORIUM Systemy teletransmisji i transmisja danych

Laboratorium - Obliczanie podsieci IPv4

Jak dokonać podziału sieci metodą VLSM instrukcja krok po kroku.

Wstęp do informatyki- wykład 1

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Systemy liczbowe używane w technice komputerowej

Model sieci OSI, protokoły sieciowe, adresy IP

Adresy w sieciach komputerowych

Laboratorium Wykorzystanie kalkulatora Windows do obliczania adresów sieciowych

Warstwa sieciowa (technika VLSM)

Laboratorium - Obliczanie podsieci IPv4

Klasy adresowe ip. xxx to dowolne numery w zakresie 0-255

Systemy Operacyjne i Sieci Komputerowe Adres MAC 00-0A-E6-3E-FD-E1

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

1. Operacje logiczne A B A OR B

Technologie Informacyjne

Stos TCP/IP Warstwa Internetu. Sieci komputerowe Wykład 4

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Adresacja IPv4 (Internet Protocol wersja 4)

Wstęp do informatyki- wykład 1 Systemy liczbowe

PORADNIKI. Routery i Sieci

Sieci komputerowe. Wykład 3: Protokół IP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski. Sieci komputerowe (II UWr) Wykład 3 1 / 25

Moduł 2. Adresowanie sieci IPv4. 1. Obliczanie adresu sieci i adresu rozgłoszeniowego 2. Obliczanie przynależności adresów do danej sieci

L6.1 Systemy liczenia stosowane w informatyce

Sieci komputerowe. Wstęp

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

Laboratorium - Przeglądanie tablic routingu hosta

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Technologie informacyjne - wykład 8 -

Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych. Ćwiczenie Nr 18. ZASADY ADRESOWANIA IP cz. I. Opracował Sławomir Zieliński

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Arytmetyka liczb binarnych

Funkcje warstwy sieciowej. Podstawy wyznaczania tras. Dostarczenie pakietu od nadawcy od odbiorcy (RIP, IGRP, OSPF, EGP, BGP)

Akademia CISCO. Skills Exam Wskazówki

Stan wysoki (H) i stan niski (L)

Akademia Górniczo-Hutnicza im. Stanisława Staszica

Techniki multimedialne

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Maski o stałej i zmiennej długości (VLSM) Autor: Natalia Dajniak IVFDS

Zadania z sieci Rozwiązanie

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Tutorial 3 Adresacja sieci IPv4

Adresacja w sieci komputerowej

Sieci Komputerowe. Zajęcia 2 c.d. Warstwa sieciowa. Adresacja IPv4

Laboratorium - Podział topologii na podsieci.

Systemy liczbowe. 1. System liczbowy dziesiętny

WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU BIAŁYSTOK, ul. Ciepła 40 filia w EŁKU, ul. Grunwaldzka

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Formaty zapisu zapis kropkowo-dziesiętny zapis szesnastkowy Oxacld2042

Sieci komputerowe - adresacja internetowa

Systemy zapisu liczb.

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Które z poniższych adresów są adresem hosta w podsieci o masce

1.1. Pozycyjne systemy liczbowe

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

Internet Protocol v6 - w czym tkwi problem?

Transkrypt:

Spis Treści 1 Podstawy systemu dwójkowego i arytmetyki binarnej...1 1.1 System dziesiętny...1 1.2 System dwójkowy (binarny)...2 1.3 Inne systemy liczbowe...3 1.4 Konwersja liczb systemu dziesiętnego do dwójkowego...3 1.5 Konwersja liczb systemu dwójkowego do dziesiętnego...8 1.6 Dodatkowe informacje o liczbach dwójkowych...9 2 Adresacja IP w sieciach komputerowych...9 2.1 Adres IP a system dwójkowy...9 2.2 Struktura adresu IP i klasy adresowe...10 2.3 Adres sieci i adres rozgłoszeniowy...13 2.4 Dostępna liczba adresów IP...15 2.5 Publiczne i prywatne adresy IP...16 2.6 Adresacja klasowa i bezklasowa...17 2.6.1 Wady adresacji klasowej...17 2.6.2 Maska i adres podsieci...18 2.6.3 Zapis maski podsieci...21 2.6.4 Adresacja bezklasowa...24 2.6.5 Nadsieci (supernets) i sumaryzacja...26 2.7 Maski podsieci o różnej długości...30 3 Wprowadzenie do budowy sieci komputerowych...34 3.1 Funkcje sieci komputerowych...34 3.2 Urządzenia sieciowe i hosty...35 3.3 Ogólny model sieci komputerowej...36 3.4 Cechy sieci komputerowych...39 3.5 Topologie sieci komputerowych...40 3.6 Komunikacja w sieciach komputerowych...42 3.7 Stos protokołów TCP/IP...45 3.7.1 Model stosu TCP/IP...45 3.7.2 Rola urządzeń sieciowych...48

1 Podstawy systemu dwójkowego i arytmetyki binarnej 1.1 System dziesiętny W codziennych zastosowaniach zwykliśmy zapisywać liczby i wartości korzystając z systemu dziesiętnego (ang. decimal, base 10). W systemie tym kolejne pozycje w zapisie liczby dziesiętnej odpowiadają kolejnym potęgom liczby 10 (pozycja to po prostu miejsce danej cyfry w liczbie): pozycja w liczbie 7 6 5 4 3 2 1 potęga liczby 10 10 6 10 5 10 4 10 3 10 2 10 1 10 0 wartość dziesiętna 1000000 100000 10000 1000 100 10 1 Przykład: Liczbę 217 możemy zapisać jako sumę wielokrotności kolejnych potęg liczby 10: pozycja w liczbie 3 2 1 potęga liczby 10 10 2 10 1 10 0 wartość dziesiętna 100 10 1 zapis liczby 217 2 1 7 2 * 10 2 + 1 * 10 1 + 7 * 10 0 = = 2 * 100 + 1 * 10 + 7 * 1 = = 200 + 10 + 7 = 217 Wystarczy zapisać współczynniki (cyfry) stojące obok kolejnych potęg liczby 10, aby otrzymać postać tej liczby w systemie dziesiętnym: 217 (w informatyce niekiedy stosowany jest zapis postaci: 0d217, d oznacza system dziesiętny) Dostępne w systemie dziesiętnym cyfry to 9,8,7,6,5,4,3,2,1 oraz 0. 1

1.2 System dwójkowy (binarny) Komputery i maszyny cyfrowe nie stosują systemu dziesiętnego, lecz dwójkowy, zwany też binarnym (ang. binary, base 2). W systemie tym, w odróżnieniu od systemu dziesiętnego, każda cyfra może przyjmować tylko dwie wartości: 0 lub 1. W systemie binarnym każda pozycja w danej liczbie odpowiada kolejnej potędze liczby 2: pozycja w bajcie bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 potęga liczby 2 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 wartość dziesiętna 128 64 32 16 8 4 2 1 Przykład: Tę samą liczbę 217 możemy zapisać jako sumę wielokrotności kolejnych potęg liczby 2: pozycja w bajcie bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 potęga liczby 2 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 wartość dziesiętna 128 64 32 16 8 4 2 1 zapis dwójkowy liczby 217 1 1 0 1 1 0 0 1 1 * 2 7 + 1 * 2 6 + 0 * 2 5 + 1 * 2 4 + 1 * 2 3 + 0 * 2 2 + 0 * 2 1 + 1 * 2 0 = = 1 * 128 + 1 * 64 + 0 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = = 128 + 64 + 0 + 16 + 8 + 0 + 0 + 1 = 217 Współczynniki (1 lub 0) stojące przed każdą z kolejnych potęg liczby 2 tworzą liczbę w zapisie binarnym, który dla powyższego przykładu jest następujący: 11011001 (używa się też notacji: 0b11011001; b oznacza system binarny; dzięki takiemu zapisowi od razu staje się jasne, że chodzi o liczbę dwójkową o wartości dziesiętnej 217, a nie o liczbę dziesiętną o wartości przekraczającej 11 milionów!) W systemie binarnym istnieją tylko dwie cyfry: 0 i 1. 2

1.3 Inne systemy liczbowe Istnieją również inne systemy liczbowe, które oparte są o kolejne potęgi innych liczb. Oto dwa najpopularniejsze z nich, które znalazły swoje zastosowanie głównie w informatyce. System szesnastkowy (heksadecymalny, ang. hexadecimal, hex), oparty o kolejne potęgi liczby 16, wykorzystywany jest między innymi do zapisu adresów fizycznych kart i interfejsów sieciowych (tzw. adresy MAC) lub adresów IPv6. W systemie szesnastkowym dostępne cyfry to 0-9 oraz A-F (A=10, B=11, C=12, D=13, E=14 i F=15) I tak, liczba 217 zapisana w systemie heksadecymalnym ma postać: 13 * 16 1 + 9 * 16 0 = D * 16 1 + 9 * 16 0 = 208 + 9 = 217 Współczynniki (0-9, A-F) stojące przed każdą z kolejnych potęg liczby 16 tworzą liczbę w zapisie szesnastkowym, który dla powyższego przykładu jest następujący: D9 (niekiedy zapis przyjmuje postać: 0xD9; x oznacza system hexadecymalny) Ta sama liczba zapisana w systemie ósemkowym (oktalnym, ang. octal), który jest używany między innymi w systemach wywodzących się z systemu UNIX (także w Linuxie) np. do definiowania uprawnień użytkowników poleceniem chmod, i który wykorzystuje cyfry od 0 do 7, wyglądać będzie tak: 331 (niekiedy zapisywany w postaci: 0o331, o oznacza system ósemkowy) 1.4 Konwersja liczb systemu dziesiętnego do dwójkowego Ponieważ jesteśmy od urodzenia zaznajomieni z systemem dziesiętnym, a maszyny cyfrowe, które stworzyliśmy, stosują system dwójkowy, umiejętność tłumaczenia (przeliczania, czy też konwersji) liczb dziesiętnych na dwójkowe jest przydatna, szczególnie tym osobom, które zawodowo zajmują się maszynami cyfrowymi. Umiejętność ta jest również konieczna dla tworzenia prawidłowych schematów adresowania w sieciach IP, obsługi urządzeń sieciowych i projektowania sieci komputerowych każdej wielkości. 3

Jak wiadomo liczba w systemie dwójkowym zapisywana jest za pomocą cyfr 0 i 1. Taka pojedyncza cyfra to bit. Opisuje ona elementarną (czyli podstawową, najmniejszą) jednostkę informacji. Z kolei ciąg ośmiu bitów nazywany jest bajtem (ang. byte) lub oktetem (ang. octet) Jeden bajt to 8 bitów, zatem taka 8-cyfrowa liczba dwójkowa może przyjąć wartości pomiędzy 0 (00000000). a 255 (11111111). W tajniki przeliczania liczb dziesiętnych na dwójkowe wprowadzić ma nas niniejszy rozdział. Zapis bajtowy jest powszechnym zapisem liczb dwójkowych, zwłaszcza w kontekście sieci komputerowych, dlatego w dalszej części tego opracowania będziemy używali takiego właśnie zapisu. Oznacza to, iż niezależnie od wielkości danej liczby, zapis będzie obejmował pełne 8 bitów, nawet jeśli kilka wiodących (najbardziej skrajnych z lewej strony) bitów przyjmie wartość 0. To tak, jakby do zapisu liczb dziesiętnych od 0 do 9999 używać zawsze czterech cyfr, np. 0004, 0012, 0278, 2462 itd. Poniższa tabela pokazuje wszystkie osiem bitów w bajcie, odpowiadające im kolejne potęgi liczby 2 oraz ich dziesiętne wartości. pozycja w bajcie bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 potęga liczby 2 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 wartość dziesiętna 128 64 32 16 8 4 2 1 Przykłady: liczba dziesiętna 0 przyjmie postać 00000000, liczba dziesiętna 5 przyjmie postać 00000101, liczba 0d126 przyjmie postać 01111110, a liczba dziesiętna 217 oczywiście będzie wyglądała tak: 11011001 Jak widać wiodące zera pozostają w zapisie liczby; w ten sposób wszystkie cyfry w ramach bajtu są widoczne. W bajcie, podobne jak w każdym innym ciągu bitów, bit skrajny z lewej strony nazywany jest bitem najbardziej znaczącym (ang. MSB Most Significant Bit), a bit ostatni z prawej strony zwany jest bitem najmniej znaczącym (ang. LSB Least Significant Bit): bit 8 (MSB) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 (LSB) 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 4

Chcąc dokonać konwersji liczby dziesiętnej X na odpowiadającą jej liczbę dwójkową, należy: 1. odszukać największą dziesiętną wartość potęgi liczby 2 (czyli 1, 2, 4, 8, 16 itd), która jest mniejsza lub równa X 2. na odpowiadającej jej pozycji (patrz powyższy diagram) w poszukiwanej liczbie dwójkowej zapisać 1, a na wszystkich wolnych pozycjach w tym samym bajcie na lewo od tej pozycji zapisać 0 3. odjąć od X znalezioną w punkcie 1. wartość potęgi liczby 2 4. jeśli otrzymana w wyniku odejmowania wartość jest większa od 0, przyjąć ją za nowy X i przejść do punktu 1. 5. jeśli otrzymana wartość jest równa 0, zapisać 0 na wszystkich pozostałych wolnych pozycjach w tym samym bajcie. Jest to koniec konwersji. Przykład 1: Dokonać zamiany liczby dziesiętnej 217 na jej postać dwójkową. 1. X=217; największa potęga liczby 2, która wciąż jest mniejsza lub równa 217 to 128 (2 7 ) 2. w poszukiwanej liczbie dwójkowej, na pozycji odpowiadającej wartości 128 zapisujemy 1 : Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1....... 3. 217 128 = 89 4. 89 > 0, a więc nowy X=89 i wracamy do punktu 1 1. X=89; największa potęga liczby 2, która wciąż jest mniejsza lub równa 89 to 64 (2 6 ) 2. na pozycji odpowiadającej wartości 64 zapisujemy 1 : Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 1...... 5

3. 89 64 = 25 4. 25 > 0, a więc nowy X=25 i wracamy do punku 1 1. X=25; największa potęga liczby 2, która wciąż jest mniejsza lub równa 25 to 16 (2 4 ) 2. na pozycji odpowiadającej wartości 16 zapisujemy 1, a na wolnej pozycji na lewo od niej zapisujemy 0 : Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 1 0 1.... 3. 25 16 = 9 4. 9 > 0, a więc nowy X=9 i wracamy do punku 1 1. X=9; największa potęga liczby 2, która wciąż jest mniejsza lub równa 9 to 8 (2 3 ) 2. na pozycji odpowiadającej wartości 8 zapisujemy 1 : Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 1 0 1 1... 3. 9 8 = 1 4. 1 > 0, a więc nowy X=1 i wracamy do punku 1 1. X=1; największa potęga liczby 2, która wciąż jest mniejsza lub równa 1 to 1 (2 0 ) 2. na pozycji odpowiadającej wartości 1 zapisujemy 1, a na wolnych pozycjach na lewo od niej zapisujemy 0 : 6

Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 1 0 1 1 0 0 1 3. 1 1 = 0 i nie ma więcej pozycji do zapisania 4. Koniec zamiany poszukiwana postać dwójkowa liczby 217 to 11011001 Przykład 2: Dokonać zamiany liczby 0d136 na jej postać dwójkową. Zapis 0d... oznacza, że mamy do czynienia z liczbą dziesiętną. 1. X=136; największa potęga liczby 2, która wciąż jest mniejsza lub równa 136 to 128 (2 7 ) 2. w poszukiwanej liczbie binarnej, na pozycji odpowiadającej wartości 128 zapisujemy 1 : Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1....... 3. 136 128 = 8 4. 8 > 0, a więc nowy X=8 i wracamy do punktu 1 1. X=8; największa potęga liczby 2, która wciąż jest mniejsza lub równa 8 to 8 (2 3 ) 2. w liczbie binarnej, na pozycji odpowiadającej wartości 8 zapisujemy 1, a na wszystkich wolnych pozycjach z lewej strony zapisujemy 0 : Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 0 0 0 1... 7

3. 8 8 = 0, więc na wszystkich pozostałych wolnych pozycjach zapisujemy 0. Liczba dwójkowa ma postać: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 0 0 0 1 0 0 0 4. Koniec konwersji. Poszukiwana postać dwójkowa liczby 136 to 10001000 1.5 Konwersja liczb systemu dwójkowego do dziesiętnego Równie ważna, jak konwersja liczb dziesiętnych na dwójkowe, jest umiejętność wykonania operacji odwrotnej czyli zamiany liczb dwójkowych na dziesiętne. Na szczęście operacja ta jest stosunkowo nieskomplikowana i polega na sumowaniu wielokrotności kolejnych potęg liczby 2. Dla przypomnienia, oto wartości dziesiętne kolejnych potęg liczby 2 i ich pozycja w liczbie zapisanej w systemie dwójkowym: Pozycja w bajcie 8 7 6 5 4 3 2 1 Potęga liczby 2 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 Wartość dziesiętna 128 64 32 16 8 4 2 1 A oto przykładowy zapis dwójkowy pewnej liczby: Pozycja w bajcie 8 7 6 5 4 3 2 1 Potęga liczby 2 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 Wartość dziesiętna 128 64 32 16 8 4 2 1 Liczba dwójkowa 1 1 0 1 1 0 0 1 Wartość dziesiętną tej liczby otrzymamy mnożąc kolejne cyfry (wartości bitów, czyli 0 lub 1) liczby dwójkowej przez odpowiadające im wartości dziesiętne i sumując tak otrzymane iloczyny. Dla powyższego przykładu, operacja ta wygląda następująco: 1 * 128 + 1 * 64 + 0 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 217 8

1.6 Dodatkowe informacje o liczbach dwójkowych Jak wiemy, jeden bajt to osiem bitów. Na ośmiu bitach można zapisać liczby dwójkowe: 00000000, 11111111, a także wszystkie kombinacje pośrednie. Najmniejsza wartość wynosi 0d0, a największa 0d255. Na czterech bitach można zapisać liczby dwójkowe w zakresie od 0000 do 1111, czyli dziesiętnie od 0 do 15. Jeśli przy pomocy jednego bajtu można wyrazić liczby dziesiętne od 0 do 255, to oznacza to, iż dostępnych jest 256 różnych wartości. Podobnie, dla czterech bitów, rożnych wartości jest 16. W ogólności, na n bitach można zapisać liczby o wartości dziesiętnej od 0 do 2 n 1, czyli 2 n różnych liczb. 2 Adresacja IP w sieciach komputerowych 2.1 Adres IP a system dwójkowy Adres IP to nic innego, jak unikalny identyfikator komputera, który umożliwia mu komunikację w sieci komputerowej opartej o rodzinę protokołów TCP/IP. Protokół to z kolei wspólny język, który daje pewność, że posługujące się nim komputery będą się wzajemnie rozumiały. Istnieje wiele protokołów komunikacyjnych i związanych z nimi typów adresów, jednak protokół IP jest najpowszechniejszy, po części dzięki temu, że właśnie ten protokół używany jest w sieci Internet. Adres IP, który większości ludzi znany jest w postaci czterech liczb dziesiętnych oddzielonych kropkami (np. 192.168.4.56) jest niczym innym, jak specyficznym, dziesiętnym zapisem liczby dwójkowej. Każda z czterech liczb dziesiętnych w adresie IP odpowiada jednemu bajtowi (czyli ośmiu bitom) w systemie binarnym. Te cztery bajty tworzą razem jedną 32-bitową liczbę dwójkową. Kropki w adresie nie mają żadnego znaczenia i są w nim obecne tylko i wyłącznie dla ułatwienia ludziom zapisu i operacji na adresach IP. Taki zapis adresu IP nazywa się w terminologii angielskiej dotteddecimal notation, czyli notacją dziesiętną z kropkami. Przykład: Adres 192.168.4.56 możemy przepisać do postaci dwójkowej: 11000000.10101000.00000100.00111000 9

lub, bez kropek: 11000000101010000000010000111000 Powyższa 32-bitowa liczba dwójkowa, zapisana w innych powszechnie używanych systemach, ma wartość: 0d323223660 0xC0A80438 0o30052002070 Wszystkie powyższe wartości reprezentują dokładnie tę samą liczbę i, z punktu widzenia komputera, nie różnią się niczym. Jednak dla nas najwygodniejszym sposobem zapisu jest zapis dziesiętny 4-bajtowy z kropkami rozdzielającymi poszczególne bajty. 2.2 Struktura adresu IP i klasy adresowe Adres IP składa się z dwóch podstawowych części: adresu sieci i adresu hosta (host to nic innego, jak komputer, serwer lub dowolne urządzenie podłączone do sieci komputerowej i posiadające adres IP). Strukturę adresu IP ilustruje poniższy diagram: Adres sieci jest identyfikatorem określającym pewien zbiór hostów. Zaś adres hosta to pole, którego używa się, aby wskazać konkretne hosty w tym zbiorze. Można przywołać analogię do numerów klatek schodowych i numerów mieszkań adres sieci odpowiada numerowi klatki schodowej, w której z kolei jest wiele numerów mieszkań. Numery mieszkań mogą się powtarzać pomiędzy różnymi klatkami schodowymi (ale nie w ramach jednej klatki!), lecz podanie razem numeru klatki i numeru mieszkania zawsze jednoznacznie wskazuje na konkretny lokal. W zależności od tego, w którym miejscu przebiega podział między częścią adresu opisującą adres sieci, a częścią opisującą adres hosta, wyróżnia się określone klasy adresów IP. 10

Klasa A (ang. class A): adresy klasy A są przeznaczone dla bardzo dużych sieci o wielu hostach. W adresie klasy A tylko pierwszy bajt wskazuje adres sieci, a pozostałe trzy bajty określają adresy hostów. Pierwszy (najbardziej skrajny z lewej strony, czyli MSB) bit adresu klasy A ma zawsze wartość 0, a zatem pierwszy bajt może przyjmować wartości dziesiętne miedzy 0 (0b00000000) a 127 (0b01111111). Wartość 127 (0b01111111) pierwszego bajtu (czyli adresy IP w zakresie 127.0.0.0 127.255.255.255) jest zarezerwowana na potrzeby tzw. adresacji własnej (ang. loopback addresses), która jest używana przez hosty w celu wysyłania pakietów do samych siebie (najczęściej w celach testowych). Podobnie wartość 0 (0b00000000) pierwszego bajtu jest zarezerwowana i nie może być użyta do adresacji hostów. 0 Bajt 1 Bajt 2 Bajt 3 Bajt 4 Adres sieci Adres hosta Adresy klasy A mogą zatem przyjmować wartości z zakresu: 1.0.0.0 126.255.255.255 (adresy 0.x.x.x i 127.x.x.x są zarezerwowane) Istnieje 126 różnych adresów sieci należących do klasy A (liczba ta wynika z dostępnych wartości, jakie może przyjąć pierwszy bajt adresu). W każdej sieci istnieje 16777216 potencjalnych adresów hostów. Klasa B (ang. class B): adresy klasy B przeznaczone są dla średnich i dużych sieci. W adresie tej klasy dwa bajty definiują adres sieci, a dwa bajty przeznaczone są dla adresów hostów. Pierwsze dwa bity adresu klasy B maja zawsze wartość 10, zatem pierwszy bajt może przyjmować wartości dziesiętne między 128 (0b10000000) a 191 (0b10111111). 1 0 Bajt 1 Bajt 2 Bajt 3 Bajt 4 Adres sieci Adres hosta Adresy klasy B należą do zakresu: 128.0.0.0 191.255.255.255 Istnieją 16384 różne adresy sieci należące do klasy B (liczba ta wynika z dostępnych wartości, jakie mogą przyjąć pierwsze 2 bajty adresu). W każdej sieci jest dostępnych 65536 adresów hostów. 11

Klasa C (ang. class C): adresy należące do klasy C przeznaczone są dla małych sieci o ograniczonej liczbie hostów. Pierwsze trzy bajty definiują adres sieci, a ostatni bajt określa adres hosta. Pierwsze trzy bity w adresie klasy C mają zawsze wartość 110, w związku z tym wartości dziesiętne, które może przyjąć pierwszy bajt, należą do zakresu 192 (0b11000000) do 223 (0b11011111) 1 1 0 Bajt 1 Bajt 2 Bajt 3 Bajt 4 Adres sieci Adres hosta Adresy klasy C mogą przyjmować wartości: 192.0.0.0 223.255.255.255 Istnieją 2097152 różne adresy sieci należące do klasy C (liczba ta wynika z dostępnych wartości, jakie mogą przyjąć pierwsze 3 bajty adresu). W każdej sieci może być 256 potencjalnych adresów hostów. Dodatkowo wyróżniono dwie klasy adresów specjalnych, które nie mogą być używane do adresacji sieci i hostów w sieciach IP, a o których tu wspominamy dla zapewnienia pełnej informacji. Klasa D (ang. class D): adresy klasy D są używane jako adresy grup w technologii IP multicast, która daje hostom możliwość realizacji pojedynczej transmisji do wielu odbiorców należących do wspólnej grupy multikastowej. Adresy klasy D są zawsze adresami grup odbiorców i nigdy nie są przypisane do interfejsu sieciowego hosta (czyli nie są adresami źródłowymi pakietów IP). Pierwsze cztery bity w adresie klasy D mają zawsze wartość 1110, a zatem wartości dziesiętne, które może przyjąć pierwszy bajt mieszczą się w zakresie od 224 (0b11100000) do 239 (0b11101111) Bajt 1 Bajt 2 Bajt 3 Bajt 4 Adres grupy multikastowej 1 1 1 0 Adresy grup multikastowych mogą przyjmować wartości: 224.0.0.0 239.255.255.255 Istnieje 268435456 adresów grup multikastowych. Klasa E (ang. class E): adresy tej klasy zostały zarezerwowane przez organizację IETF (Internet Engineering Task Force) do celów badawczych i nie są dostępne do użytku w Internecie i sieciach IP. 12

Pierwsze cztery bity w adresie klasy E mają zawsze wartość 1111, co oznacza, że pierwszy bajt adresu klasy E może przyjąć wartości dziesiętne pomiędzy 240 (0b11110000) a 255 (0b11111111). 2.3 Adres sieci i adres rozgłoszeniowy Nie wszystkie wartości pola adres hosta mają identyczne znaczenie - istnieją pewne adresy w każdej z klas, które pełnią specjalną rolę i nie mogą być wykorzystane do zaadresowania hostów. Tymi adresami są adres sieci (ang. network address, network ID) i adres rozgłoszeniowy (ang. broadcast address). Adres sieci to adres IP, w którym wszystkie bity pola adres hosta mają wartość 0. Przykłady: w klasie A, dla hosta o adresie IP 10.1.2.3, adresem sieci jest adres 10.0.0.0 w klasie B, dla hosta o adresie IP 172.16.24.45, adresem sieci jest 172.16.0.0 w klasie C, dla hosta o adresie IP 192.168.12.221, adresem sieci jest 192.168.12.0 Warto zaznaczyć, że adres sieci nie jest przypisany do żadnego urządzenia czy interfejsu. Adres ten wynika z adresu IP urządzenia lub interfejsu i klasy, do której ten adres IP należy. Adresy sieci są używane przez routery do kierowania pakietów IP do miejsc przeznaczenia. Dzięki temu nie ma potrzeby przechowywania w pamięci routerów wszystkich adresów hostów jeden adres sieci opisuje wszystkie adresy hostów wchodzące w jej skład. W ogólności, urządzenia sieciowe o tym samym adresie sieci mogą komunikować się ze sobą bezpośrednio. Urządzenia o rożnych adresach sieci, nawet jeśli współdzielą tę samą fizyczną infrastrukturę (np. są podłączone do tego samego huba lub switcha), nie mogą komunikować się bez pośrednictwa routera. Dlatego ważne jest aby każde urządzenie znało nie tylko swój adres IP, ale także adres swojej sieci. Adres rozgłoszeniowy to adres IP, w którym wszystkie bity pola adres hosta mają wartość 1. 13

Przykłady: w klasie A, dla hosta o adresie IP 10.1.2.3, adresem rozgłoszeniowym jest adres 10.255.255.255 w klasie B, dla hosta o adresie IP 172.16.24.45, adresem rozgłoszeniowym jest 172.16.255.255 w klasie C, dla hosta o adresie IP 192.168.12.221, adresem rozgłoszeniowym jest 192.168.12.255 Podobnie jak adres sieci, adres rozgłoszeniowy nie jest przypisany do żadnego urządzenia, czy interfejsu, lecz wynika on z adresu IP i klasy, do której ten adres IP należy. Adres rozgłoszeniowy używany jest do przesyłania pakietów IP do wszystkich hostów w danej sieci. Utworzony w opisany wyżej sposób adres rozgłoszeniowy nazywany jest w terminologii angielskiej network broadcast lub directed broadcast. Pakiety IP z tego typu adresem docelowym mogą być przesyłane przez routery, ponieważ posiadają w adresie docelowym adres sieci. Wiele routerów jednak (w tym routery firmy Cisco) nie przesyła ich bez dodatkowej konfiguracji, gdyż pakiety tego typu mogą być użyte do ataku typu DoS (ang. Denial Of Service zablokowanie usługi). W sieciach IP funkcjonuje też innego typu adres rozgłoszeniowy, w którym wszystkie bity (zarówno w adresie sieci jak i adresie hosta) mają wartość 1. Taki adres ma postać 255.255.255.255 i nazywany jest w terminologii angielskiej all networks broadcast lub local broadcast. Pierwsza nazwa dobrze oddaje istotę tego adresu jego użycie wskazuje na chęć wysłania pakietu IP do wszystkich sieci i wszystkich hostów. Jednak pakiety tego typu, tak jak wymaga tego dokument RFC1812, nie mogą być przekazywane przez routery, stąd ich zasięg ograniczony jest do jednej, lokalnej sieci, i stąd także bierze swoje źródło druga z nazw. RFC (ang. Requests For Comments) to zbiór dokumentów tworzonych przez społeczność internetową i mających na celu ustandaryzowanie mechanizmów i protokołów używanych w sieci Internet. Są to, po zatwierdzeniu przez organizację IETF (Internet Engineering Task Force) i uzyskaniu pełnego statusu RFC, tzw. de-facto standardy, które są uwzględniane przez twórców oprogramowania i sprzętu sieciowego, wliczając w to największe firmy jak Cisco, Juniper Networks, HP, IBM itp. Nowe RFC często uzupełniają lub zastępują starsze. Pełna baza dokumentów RFC znajduje się w Internecie pod adresem: http://www.ietf.org/rfc 14

2.4 Dostępna liczba adresów IP Jeśli znamy adres sieci i adres rozgłoszeniowy, możemy łatwo określić które adresy spośród dostępnych w danej sieci mogą być przypisane do hostów czy interfejsów sieciowych. Recepta jest prosta wszystkie pozostałe. Dla przypomnienia mając do dyspozycji n bitów w adresie hosta, można utworzyć różnych 2 n wartości. Dwie spośród tych wartości tworzą adres sieci (liczbowo najmniejszy, czyli pierwszy) i adres rozgłoszeniowy (liczbowo największy, czyli ostatni) i nie mogą być przypisane hostom. Zatem, dla zaadresowania hostów lub interfejsów sieciowych pozostaje do dyspozycji 2 n - 2 adresów IP. Przykłady: w klasie A można użyć 2 24 2, czyli 16777214 adresów IP w każdej ze 126 sieci w klasie B można użyć 2 16 2, czyli 65534 adresów IP w każdej z 16384 sieci w klasie C można użyć 2 8 2, czyli 254 adresów IP w każdej z 2097152 sieci W klasie B istnieje jeden specjalny zakres adresów IP: 169.254.0.0 169.254.255.255 Adresy z tego zakresu to tak zwane adresy lokalne (ang. link-local); używane są przez mechanizm autokonfiguracji (ang. autoconfiguration) w sytuacji, gdy adres IP nie mógł być nadany ręcznie przez administratora lub dynamicznie przez usługę DHCP (ang. Dynamic Host Configuration Protocol). W takim przypadku, jeśli host jest zgodny z RFC3927, może wygenerować dla swego użytku adres z powyższego zakresu. Jeśli inne hosty w danej sieci również są zdolne do wygenerowania tego typu adresów, możliwa jest komunikacja między nimi, nie wymagająca żadnej interwencji administratora sieci. Jedyną niedogodnością tego typu adresacji jest fakt, że zgodnie z przywołanym wyżej RFC3927, routery nie mogą przekazywać pakietów wysyłanych do tego zakresu adresów. A zatem, jak wskazuje angielska terminologia (link-local), użycie takich adresów jest ograniczone do jednej, lokalnej sieci. Skoro routery używają adresu sieci (w tym przypadku jest to adres 169.254.0.0) do przesłania pakietów IP, to adres sieci musi być unikalny, inaczej pakiety nie trafią do miejsca przeznaczenia. Tego nie da się zagwarantować w przypadku mechanizmu autokonfiguracji, gdyż zawsze używany jest jeden i ten sam adres sieci. 15

2.5 Publiczne i prywatne adresy IP Aby komunikacja w sieciach IP przebiegała sprawnie, czy to w ramach jednej zamkniętej sieci (na przykład jednego przedsiębiorstwa lub organizacji), czy to w ramach globalnego Internetu, adresy nie mogą się powtarzać. W związku z tym niezbędne stało się zapewnienie unikalności adresów IP. Początkowo to zadanie spoczywało w rękach organizacji InterNIC (ang. Internet Network Information Center). Organizacja ta została zastąpiona inną, o nazwie IANA (ang. Internet Assigned Numbers Authority), która obecnie administruje adresami IP, dbając o to, aby nie zdarzyło się, że te same adresy IP zostaną przydzielone więcej niż jeden raz. IANA powołała regionalne organizacje zajmujące się rejestrowaniem i przydzielaniem adresów IP. Każda z nich jest tzw. regionalnym rejestratorem (ang. regional registry): Asia Pacific Network Information Center (APNIC) American Registy for Internet Numbers (ARIN) Reseux IP Europens Network Coordination Centre (RIPE NCC) Organizacje te administrują pulami adresów IP i przydzielają z nich bloki adresów operatorom i użytkownikom końcowym. W normalnych warunkach końcowy użytkownik zwraca się po adresy IP do swojego dostawcy usług internetowych (ISP ang. Internet Service Provider), a dostawca przydziela adresy z bloku uprzednio jemu nadanego przez dostawcę nadrzędnego lub bezpośrednio przez regionalnego rejestratora. Istnieją jednak zastosowania, w których sieci nie mają bezpośredniego styku z siecią Internet, bądź są sieciami zamkniętymi (np. sieci banków, szpitali, wojska itp.) i nie potrzebują unikalnych w skali globu adresów IP. Dla takich zastosowań organizacja IETF opublikowała dokument RFC1918, w którym wydzieliła w każdej z klas adresowych po jednym bloku adresów do tzw. użytku prywatnego: 1 sieć klasy A: 10.0.0.0 16 sieci klasy B: od 172.16.0.0 do 172.31.0.0 256 sieci klasy C: od 192.168.0.0 do 192.168.255.0 Adresy należące do powyższych bloków nie wymagają rejestracji organizacji rejestracyjnych i mogą być użyte przez każdego do dowolnych potrzeb. Należy tutaj zaznaczyć, że, zgodnie z RFC1918, routery dostawców usług internetowych powinny odrzucać pakiety adresowane do powyższych bloków, co ma zapewnić utrzymanie unikalności adresów, nawet w przypadku, gdyby ktoś jednak użył adresów prywatnych w sieci Internet. Większość dostawców usług stosuje się do zaleceń RFC1918 i blokuje łączność od i do adresów prywatnych. 16

2.6 Adresacja klasowa i bezklasowa 2.6.1 Wady adresacji klasowej Stosowanie adresów zgodnie z ich przynależnością do poszczególnych klas nazywane jest często adresacją klasową (ang. classfull addressing). W adresacji opartej o klasy adresów założono, że to wartość adresu IP (a konkretnie pierwszego bajtu) ma określać w którym miejscu przebiega granica pomiędzy adresem sieci a adresem hosta. Możliwości jest tyle, ile klas: trzy. Taki schemat adresacji niesie z sobą pewne, nie zawsze korzystne, konsekwencje. Jak już wiemy, tylko urządzenia o tym samym adresie sieci mogą komunikować się z sobą bezpośrednio. Urządzenia o rożnych adresach sieci, nawet jeśli współdzielą tę samą fizyczną infrastrukturę (np. są podłączone do tego samego huba lub switcha), nie mogą komunikować się bez pośrednictwa routera. Skąd urządzenia wiedzą, że należą do danej sieci? W przypadku adresacji klasowej, przynależność do danej klasy adresowej (A, B lub C) wynika wprost z wartości liczbowej pierwszego bajtu: wartość pierwszego bajtu 1 126 oznacza klasę A wartość pierwszego bajtu 128 191 oznacza klasę B wartość pierwszego bajtu 192 223 oznacza klasę C Z kolei dla każdej z klas znana jest wielkość i liczba dostępnych sieci: dla klasy A jest to 16777214 dostępnych adresów w każdej sieci, a sieci takich jest 126 dla klasy B jest to 65534 dostępnych adresów, a sieci takich jest 16384 dla klasy C jest to 254 adresów w każdej z 2097152 sieci Warto zauważyć, że użycie adresów klasowych powoduje, iż dostępnych jest w sumie tylko 2113662 różnych adresów sieci to dalece zbyt mało na potrzeby całego globu. Adresy klasy C nadają się do użycia w małej lub średniej wielkości sieci, gdzie liczba hostów nie przekracza 250. Adresy klasy B pozwolą zaadresować nawet bardzo dużą sieć, obejmującą tysiące hostów. A adresy klasy A? Trudno sobie wyobrazić sieć komputerową, która potrzebowałaby ponad 16 milionów adresów! 17

Użycie adresów klasowych powoduje, że musimy trzymać się trzech schematów adresowania, zgodnych z klasami A, B i C, co prowadzi na ogół do marnotrawienia adresów IP. Jeśli zastosujemy adresy klasy C, najmniejszej, pod względem liczby hostów, do zaadresowania małej sieci złożonej z kilku bądź kilkunastu (a nawet kilkudziesięciu) komputerów, spowodujemy, że z 254 dostępnych adresów wykorzystane są tylko nieliczne. Podobna, a nawet skrajna sytuacja ma miejsce w przypadku adresacji łącza typu punkt-punkt zamiast niezbędnych do tego celu dwóch adresów IP, stosując adresację z klasy C marnujemy 252 adresy. Z kolei gdybyśmy chcieli zaadresować sieć o liczbie hostów przekraczającej 254, na przykład sieć o 300 hostach, jedynym wyjściem byłoby użycie adresu klasy B, w którym dostępne są 65534 hosty. W takim przypadku 65234 adresy pozostaną niewykorzystane. Jak widać, trzy możliwe klasy adresacji pozostawiają wiele do życzenia, jesli chodzi o efektywne użycie adresów IP. Przydałby się mechanizm pozwalający bardziej elastycznie określać położenie granicy pomiędzy adresem sieci a adresem hosta. Na szczęście mechanizm taki istnieje. Konieczność lepszego wykorzystania adresów IP, zwłaszcza w dobie lawinowego wręcz rozrostu sieci Internet obserwowanego w ostatnich latach, doprowadziła do wprowadzenia adresacji bezklasowej (ang. classless addressing). Z adresacją tego typu wiąże się angielskojęzyczny termin CIDR (ang. Classless InterDomain Routing), który odnosi się do routing internetowego z wykorzystaniem adresów bezklasowych. Adresacja bezklasowa pozwala zerwać z ograniczeniami narzuconymi przez klasy adresowe i lepiej wykorzystać dostępne adresy IP, których niedobór staje się coraz bardziej dokuczliwy. 2.6.2 Maska i adres podsieci Z adresacją bezklasową nierozerwalnie związane jest pojęcie maski podsieci (ang. subnet mask lub subnetwork mask). Maskę podsieci podaje się jako uzupełnienie adresu IP, a zapisuje się ją w sposób podobny do adresu IP, czyli za pomocą czterech bajtów wyrażonych w systemie dziesiętnym i rozdzielonych kropkami. Szczegóły zapisu maski podsieci zostaną przedstawione w następnej sekcji. Maska określa która część adresu IP jest adresem sieci, a która część jest adresem hosta, pozwalając tym samym zerwać ze sztywnym podziałem adresów na klasy. Przy czym można spotkać się z rozróżnieniem pomiędzy adresem sieci (wciąż wyznaczonym przez klasę A, B lub C danego adresu), a adresem podsieci. Adres podsieci jest dodatkowym polem, utworzonym poprzez pożyczenie kilku bitów z pola adres hosta na potrzeby adresu podsieci: 18

172 17 159 45 10101100 00010001 10011111 00101101 adres sieci adres podsieci adres hosta Powyższy adres, jak wskazuje na to wartość pierwszego bajtu (0d172) jest adresem klasy B o adresie sieci 172.17.0.0, lecz pożyczono w nim osiem bitów z adresu hosta na potrzeby adresu podsieci. Dzięki temu, w ramach tej samej sieci 172.17.0.0, można wyodrębnić 256 podsieci (2 8, gdyż pożyczono 8 bitów), z których każda ma 254 użyteczne adresy hostów (2 8 2, gdyż pozostało 8 bitów dla hostów) Co ważne, wielkość pola adres podsieci wcale nie musi być ograniczona do wielokrotności jednego bajtu, co ilustruje kolejny przykład: 172 17 159 45 10101100 00010001 1 0 0 1 1 1 1 1 00101101 adres sieci adr. podsieci adres hosta Powyższy adres, co widzimy po wartości pierwszego bajtu (0d172) jest wciąż adresem klasy B, lecz tym razem pożyczone zostało tylko pięć bitów z adresu hosta na potrzeby adresu podsieci. Dzięki temu, w ramach tej samej sieci 172.17.0.0, można wyodrębnić tylko 32 podsieci (czyli 2 5, gdyż pięć bitów definiuje podsieć), z których każda ma 2046 użytecznych adresów hostów (czyli 2 11-2, gdyż pozostałe 11 bitów definiuje adres hosta). Adresy poszczególnych podsieci możemy otrzymać przez wyliczenie wszystkich możliwych kombinacji bitów w polu adres podsieci, przy zachowaniu bitów pola adres hosta ustawionych na 0. Przykład: Poniższa lista pokazuje adresy kolejnych podsieci dla przykładowej sieci klasy B 172.17.0.0 i pola adres podsieci o długości pięciu bitów. Oznacza to, że z dwóch pełnych bajtów adresu hosta pożyczone zostało 5 bitów i utworzyły one dodatkowe pole adres podsieci w ramach trzeciego bajtu. Kolorem szarym zaznaczono dodatkowo te bity trzeciego bajtu, które nie należą do pola adres podsieci, lecz pozostały w polu adres hosta. Jednak poprzez samą swoją obecność, wpływają one na dziesiętną wartość tego bajtu. 172.17.8.0 - pole adres podsieci ma wartość 00001000 172.17.16.0 - pole adres podsieci ma wartość 00010000 172.17.24.0 - pole adres podsieci ma wartość 00011000 172.17.32.0 - pole adres podsieci ma wartość 00100000 172.17.40.0 - pole adres podsieci ma wartość 00101000... 19

172.17.152.0 - pole adres podsieci ma wartość 10011000 172.17.160.0 - pole adres podsieci ma wartość 10100000... 172.17.240.0 - pole adres podsieci ma wartość 11110000 172.17.248.0 - pole adres podsieci ma wartość 11111000 Adres 172.17.159.45 z przykładu należy do podsieci 172.17.152.0. Do podsieci tej należą wszystkie adresy hostów z zakresu: 172.17.152.1 172.17.159.254 Adres 172.17.159.255 jest adresem rozgłoszeniowym tej podsieci czyli posiada wszystkie bity pola adres hosta ustawione na wartość 1. Jak obliczyć adres podsieci i adres rozgłoszeniowy dla podanego adresu wyjaśnimy w części poświęconej adresacji bezklasowej. Także adresy innych klas mogą być wyposażone w podsieci, na przykład adres klasy C: 192 168 5 66 11000000 10101000 00000101 0 1 0 0 0 0 1 0 adres sieci adr. podsieci adr. hosta Powyższy adres, jak wskazuje na to wartość pierwszego bajtu (0d192) jest adresem klasy C, lecz poprzez pożyczenie czterech bitów z adresu hosta na potrzeby adresu podsieci, w ramach tej samej sieci 192.168.5.0 można wyodrębnić 16 (czyli 2 4, gdyż cztery bity definiują podsieć) podsieci, z których każda będzie miała 14 użytecznych adresów hostów (czyli 2 4-2, gdyż 4 bity definiują adres hosta). Możliwe adresy podsieci (czyli różne kombinacje bitów w polu adres podsieci, przy zachowaniu wartości 0 w polu adres hosta ) są następujące: 192.168.5.16 192.168.5.32 192.168.5.48 192.168.5.64 192.168.5.80... 192.168.5.224 192.168.5.240 20

Będący przedmiotem przykładu adres IP 192.168.5.66 należy do podsieci 192.168.5.64. Do podsieci tej należą wszystkie adresy hostów z następującego zakresu: 192.168.5.65 192.168.5.78 Adresem rozgłoszeniowym tej podsieci jest adres 192.168.5.79 (wszystkie bity pola adres hosta są w nim ustawione na wartość 1 ). Jak obliczyć adres podsieci i adres rozgłoszeniowy dla podanego adresu IP zostanie pokazane w rozdziale poświęconym adresacji bezklasowej. 2.6.3 Zapis maski podsieci Jak wspomnieliśmy wcześniej, to właśnie maska podsieci, powiązana z danym adresem IP, wskazuje jaka liczba bitów określa podsieć (jest to suma długości pola adres sieci i pola adres podsieci ) a tym samym, jaka jest liczba bitów pola adres hosta. Maska podsieci, tak, jak adres IP, jest 32-bitową liczbą binarną. I tak, jak adres IP, zapisujemy ją w postaci dziesiętnej, rozdzielając każdy z czterech bajtów kropkami. Z reguły maska towarzyszy adresowi IP, bo tylko wtedy ma ona sens. W 32-bitowej liczbie dwójkowej reprezentującej maskę podsieci, bity ustawione na wartość 1 wskazują adres sieci (i podsieci) w danym adresie IP, zaś bity ustawione na 0 wskazują adres hosta. Przykład: Adres IP: 11001001.11000001.10000011.00000101 (201.193.131.5) Maska: 11111111.11111111.11111111.00000000 (255.255.255.0) Jedynki w zapisie dwójkowym maski pokazują, które bity adresu IP opisują adres sieci. W powyższym przykładzie adres sieci obejmuje 24 bity (trzy pierwsze bajty) adresu IP. Z kolei zera w masce określają bity adresu hosta, które w naszym przykładzie zajmują ostatni bajt adresu. Poprawna maska podsieci jest ciągła, to znaczy że składa się z jednego ciągu bitów ustawionych na wartość 1, zaczynającego się od skrajnego lewego bitu pierwszego bajtu. Innymi słowy, ciąg jedynek w masce musi zaczynać się od skrajnego lewego bitu i nie może być rozdzielony zerami. 21

Przykładowe poprawne maski podsieci: 128.0.0.0 10000000.00000000.00000000.00000000 248.0.0.0 11111000.00000000.00000000.00000000 255.192.0.0 11111111.11000000.00000000.00000000 255.255.252.0 11111111.11111111.11111100.00000000 255.255.255.240 11111111.11111111.11111111.11110000 Przykładowe niepoprawne maski podsieci: 160.0.0.0 10100000.00000000.00000000.00000000 127.0.0.0 01111111.00000000.00000000.00000000 255.0.255.0 11111111.00000000.11111111.00000000 255.255.255.253 11111111.11111111.11111111.11111101 Pomimo, że zgodnie z RFC950 maska nie musi być ciągła, to jednak to samo RFC mocno zaleca, aby jednak stanowiła ona ciągły blok bitów zaczynający się od najbardziej znaczącego bitu (MSB) adresu. Stosując się do tego zalecenia, większość urządzeń sieciowych nie obsługuje nieciągłych masek. Skoro maska podsieci ma być ciągła, to oznacza to, że w ramach jednego bajtu, może ona przyjąć tylko nieliczne, dokładnie określone wartości: wartość bitowa wartość dziesiętna 11111111 255 11111110 254 11111100 252 11111000 248 11110000 240 11100000 224 11000000 192 10000000 128 00000000 0 Inne wartości nie są dozwolone, gdyż byłyby to maski nieciągłe. Maskę podsieci podajemy w dwóch możliwych notacjach: najpopularniejszej, w której maskę zapisuje się jako cztery dziesiętne liczby rozdzielone kropkami i towarzyszące adresowi IP, lub w notacji podającej tylko długość ciągu jedynek tworzących maskę. Ponieważ maska podsieci musi być ciągła, podanie jej długości wyrażonej w liczbie bitów, które są w niej ustawione na 1 (ang. bit count notation) jest wystarczające. I tak maska 255.0.0.0 może być zapisana jako /8, gdyż jej długość wynosi 8 bitów (to znaczy, że jest w niej 8 jedynek ). Znak / odziela maskę od adresu IP. 22

Przykłady: maska 128.0.0.0 = /1 maska 255.255.0.0 = /16 maska 255.255.255.0 = /24 maska 255.255.255.240 = /28 maska 255.255.255.252 = /30 maska 255.255.255.255 = /32 maska 0.0.0.0 = /0 taka maska określa dowolny adres w dowolnej sieci, używają jej routery, lecz nie spotkamy jej przypisanej do adresu jakiegokolwiek hosta. Notacja taka jest bardzo wygodna, gdyż pozwala na zapisanie adresu IP i powiązanej z nim maski w jednym prostym wyrażeniu, zamiast zapisu w dwóch wierszach. Na przykład zapis: 192.168.5.66 255.255.255.240 możemy zastąpić krótszym: 192.168.5.66/28 Zapis maski typu bit count często spotyka się w diagramach ilustrujących topologię sieci, gdyż zajmuje on mniej miejsca, niż zapis tradycyjny. W niniejszym opracowaniu zapis ten będzie używany na równi z notacją tradycyjną. Adres sieci z maską podaną w notacji bit count (czyli np. 10.12.134.0/24) nazywany jest często prefiksem (ang. prefix), a długość maski w tym zapisie nazywamy długością prefiksu (ang. prefix length). Spoglądając na adresy klasowe zauważymy, że w ich przypadku również możemy mówić o masce, z tym, że wówczas określa się ją mianem maski sieci, dla zaznaczenia, że sieć nie jest podzielona na podsieci. Maska ta dla poszczególnych klas ma następujące długości: klasa A: maska 255.0.0.0, klasa B: maska 255.255.0.0 klasa C: maska 255.255.255.0 Powyższe maski to tzw. maski domyślne (ang. default mask, native mask), wynikające z przynależności adresów do danych klas. Mimo, że dla adresów klasowych granica między adresem sieci i adresem hosta wciąż może wynikać z wartości pierwszego bajtu adresu, współczesne implementacje protokołów z rodziny TCP/IP nie biorą tego faktu pod uwagę i oczekują podania maski sieci wraz z adresem IP, jako mechanizmu bardziej uniwersalnego. 23

W związku z tym, można powiedzieć, że istniejące w każdej z klas A, B i C bloki adresów prywatnych są opisane następującymi prefiksami: klasa A: 10.0.0.0 maska 255.0.0.0 prefiks 10.0.0.0/8 klasa B: 172.16.0.0 maska 255.240.0.0 prefiks 172.16.0.0/12 klasa C: 192.168.0.0 maska 255.255.0.0 prefiks 192.168.0.0/16 2.6.4 Adresacja bezklasowa Ponieważ adresacja klasowa jest przestarzała i od dawna nie jest stosowana, konfigurując każde urządzenie sieciowe, czy to router, czy serwer, czy też zwykły komputer, zawsze, obok adresu IP, musimy wyspecyfikować także maskę podsieci. Podanie maski umożliwia urządzeniu, a konkretnie części jego oprogramowania odpowiedzialnej za komunikację z użyciem protokołu IP, określenie które adresy są osiągalne bezpośrednio, a z którymi należy łączyć się z wykorzystaniem routera. A zatem to maska, a nie wartość pierwszego bajtu, wyznacza w tym przypadku podział adresu IP na adres (pod)sieci i adres hosta. Dzięki temu, że maska może przyjmować dowolną długość w bitach (od 0 do 32), granica między adresem sieci a adresem hosta przestaje być zgodna z wymogami którejkolwiek z klas adresowych. Stąd nazwa adresacja bezklasowa (ang. classless addressing). Wprowadzenie adresacji bezklasowej spowodowało, że choć dobrze jest znać klasy adresowe i ich charakterystykę, to jednak można nareszcie zapomnieć o ograniczeniach związanych z ich stosowaniem i przestać przywiązywać nadmierną wagę do wartości liczbowej pierwszego bajtu adresu. Oprogramowanie TCP/IP stosuje funkcję logiczną AND (iloczyn logiczny) w celu określenia adresu podsieci na podstawie podanego adresu IP i maski. Funkcja AND operuje na dwóch bitach, a jej wynik jest równy 1 wtedy i tylko wtedy, kiedy obydwa bity mają wartość 1; w pozostałych przypadkach wynik jest równy 0 : wartość bitu A 0 0 1 1 wartość bitu B 0 1 0 1 A AND B 0 0 0 1 Aby móc sensownie planować adresację IP w sieciach komputerowych, musimy posiadać umiejętność obliczania następujących parametrów i adresów na podstawie podanego adresu IP i maski: 24

adres podsieci obliczamy go stosując funkcję AND do kolejnych, odpowiadających sobie par bitów adresu IP i maski adres rozgłoszeniowy wyznaczamy go mając obliczony adres podsieci i przyjmując wartości wszystkich bitów w polu adres hosta na 1 możliwe adresy hostów należą do zakresu od adresu podsieci powiększonego o 1 aż do adresu rozgłoszeniowego pomniejszonego o 1 adres następnej podsieci oblicza się dodając 1 do adresu rozgłoszeniowego Przykład 1: Proszę określić adres podsieci dla podanego adresu IP i maski. Proszę podać także możliwe adresy hostów i adres rozgłoszeniowy dla tej podsieci oraz adres kolejnej podsieci. adres IP: 172.17.159.45 maska: 255.255.248.0 adres IP 10101100 00010001 10011111 00101101 maska 11111111 11111111 11111000 00000000 adres AND maska (bin) 10101100 00010001 10011000 00000000 adres podsieci (dec) 172 17 152 0 adres rozgłoszeniowy (bin) 10101100 00010001 10011111 11111111 adres rozgłoszeniowy (dec) 172 17 159 255 adres kolejnej podsieci (bin) 10101100 00010001 10100000 00000000 adres kolejnej podsieci (dec) 172 17 160 0 Kolorem szarym oznaczono bity pola adres hosta wyznaczone przez maskę. Skoro zatem znany jest adres podsieci (172.17.152.0) i adres rozgłoszeniowy (172.17.159.255), można określić adresy hostów. W tym przypadku jest to zakres: 172.17.152.1 172.17.159.254 Adres kolejnej podsieci to 172.17.160.0 25

Przykład 2: Zadanie polega na określeniu adresu podsieci dla podanego adresu IP i maski. Należy podać możliwe adresy hostów i adres rozgłoszeniowy dla tej podsieci oraz adres następnej podsieci. Adres IP: 192.168.5.66/28 adres IP 11000000 10101000 00000101 01000010 maska 11111111 11111111 11111111 11110000 adres AND maska (bin) 11000000 10101000 00000101 01000000 adres podsieci (dec) 192 168 5 64 adres rozgłoszeniowy (bin) 11000000 10101000 00000101 01001111 adres rozgłoszeniowy (dec) 192 168 5 79 adres kolejnej podsieci (bin) 11000000 10101000 00000101 01010000 adres kolejnej podsieci (dec) 192 168 5 80 Kolorem szarym oznaczono bity pola adres hosta wyznaczone przez maskę. Skoro zatem znany jest adres podsieci (192.168.5.64) i adres rozgłoszeniowy (192.168.5.79), można określić adresy hostów. W tym przypadku jest to zakres: 192.168.5.65 192.168.5.78 Adres następnej podsieci to 192.168.5.80 2.6.5 Nadsieci (supernets) i sumaryzacja Adresacja bezklasowa pozwoliła zerwać z ograniczeniami narzuconymi przez klasy adresowe, jeśli chodzi o liczbę sieci i możliwą dla danej sieci liczbę hostów. To maska podsieci określa która część adresu IP jest adresem (pod)sieci, a która adresem hosta. Przy tym długość maski (czyli liczba jedynek ) bezpośrednio wpływa na liczbę możliwych do zaadresowania hostów: im dłuższa maska podsieci, tym mniej dostępnych adresów hostów i odwrotnie, im krótsza maska, tym więcej bitów przeznaczonych jest dla hostów. Jeśli zastosujemy maskę krótszą, niż maska domyślna dla danej sieci, otrzymamy adres będący zbiorem kilku sieci, a więc nadsiecią (ang. supernet). A skoro maska jest krótsza, to, jak już wiemy, w takiej nadsieci może być więcej komputerów, serwerów itp. 26

Przykład: adres sieci: 192.168.6.0 maska: 255.255.254.0 (w równoważnym zapisie: 192.168.6.0/23) Jak widzimy, maska jest o jeden bit krótsza od domyślnej maski klasy C, która standardowo ma maskę o długości 24 bitów (255.255.255.0 = /24), i do której należy przykładowa sieć. W postaci binarnej powyższy adres sieci i maska mają postać następującą: adres sieci 11000000 10101000 00000110 00000000 maska 11111111 11111111 11111110 00000000 W tabeli kolorem szarym zaznaczyliśmy te bity, które tworzą adres hosta. Są one wyznaczone przez 23-bitową maskę. A zatem nastąpiła tutaj pożyczka odwrotna : zamiast pożyczać z pola adres hosta na rzecz podsieci, tym razem jeden bit adresu sieci został pożyczony na rzecz hostów. W ten sposób liczba adresów hostów zwiększyła się dwukrotnie. Jest dla nich dostępne 9 bitów, czyli można zaadresować 2 9-2 = 510 hostów. Adresy hostów mogą mieć wartości: 192.168.6.1 192.168.6.2... 192.168.6.255 192.168.7.0 192.168.7.1... 192.168.7.254 Spośród powyższych adresów, adres 192.168.6.255 normalnie byłby adresem rozgłoszeniowym sieci 192.168.6.0/24, a adres 192.168.7.0 byłby adresem sieci 192.168.7.0/24. Tutaj jednak należą one do środka zakresu dostępnych adresów IP i jak najbardziej mogą być przypisane do hostów, oczywiście przy założeniu bezklasowej adresacji i bezklasowego routingu. Tym samym można stwierdzić, że nadsieć z powyższego przykładu obejmuje swoim zakresem dwie sieci: 192.168.6.0/24 i 192.168.7.0/24 27

Adres 192.168.6.0 jest adresem sieci, a adres 192.168.7.255 jest adresem rozgłoszeniowym nadsieci 192.168.6.0/23 Bez użycia nadsieci, aby umożliwić zaadresowanie 510 hostów, należałoby zastosować sieć klasy B (bo sieć klasy C może obsłużyć tylko do 254 hostów) i podzielić ją na 128 podsieci, a następnie użyć jednej z tak powstałych podsieci do adresacji. Pozostałe 127 podsieci tej samej sieci klasy B marnowałyby się. Tworzenie nadsieci nazywamy sumaryzacją (ang. summarization) lub agregacją (ang. aggregation) adresów. Sumaryzacji adresów podsieci dokonują również routery, a to w celu zmniejszenia liczby prefiksów wysyłanych do innych routerów. Routery informują się wzajemnie o tym jakie podsieci są dzięki nim osiągalne. Kolejne routery, otrzymując informacje o podsieciach, mogą, jeśli to możliwe, dokonywać sumaryzacji i wysyłać do dalszych routerów już zsumaryzowane podsieci. W ten sposób zmniejsza się zużycie pamięci i mocy obliczeniowej niezbędnych do przechowywania i przetwarzania informacji o sieciach. Poprawnie przeprowadzona sumaryzacja gwarantuje mniejszą liczbę adresów podsieci w pamięci routerów, a jednocześnie pozwala na poprawne zarządzanie ruchem pakietów. 28

Jak widzimy na powyższym przykładzie, routery A, B i C przesyłają do routera D informacje o podłączonych do nich podsieciach z maską /24. Router D mógłby wszystkie te informacje po prostu przekazać dalej, do routera E, ale zamiast tego, dokonuje on sumaryzacji adresów podsieci i do routera E przesyła już tylko zsumaryzowany adres z maską /22. Aby otrzymać zsumaryzowany adres kilku podsieci, zapisujemy ich adresy w postaci dwójkowej. Następnie, zaczynając od skrajnego lewego bitu i kierując się w prawą stronę, porównujemy odpowiadające sobie bity w każdym z adresów, aż do miejsca, w którym zaczynają być one różne. Ostatni bit, na którym adresy mają identyczne wartości, wyznacza granicę podsieci zsumaryzowanej, a tym samym długość maski zsumaryzowanego prefiksu. Należy przy tym pamiętać, że sumaryzacji dokonuje się z reguły dla sąsiadujących z sobą adresów podsieci. Dla podsieci z powyższego przykładu, proces ten będzie wyglądał następująco: 192.168.1.0/24 = 11000000.10101000.00000001.00000000 192.168.2.0/24 = 11000000.10101000.00000010.00000000 192.168.3.0/24 = 11000000.10101000.00000011.00000000 Zaznaczona linia pokazuje w którym miejscu bity adresów składowych zaczynają się od siebie różnić. Jeśli bity znajdujące się na lewo od tej linii przepiszemy bez zmian, a bity na prawo od niej ustawimy na wartość 0, otrzymamy adres zsumaryzowanej podsieci, który w tym przypadku ma postać: 11000000.10101000.00000000.00000000 = 192.168.0.0 Ta sama linia wyznacza także granicę, w której w masce zsumaryzowanej podsieci kończą się jedynki, a zaczynają zera. Zatem maska zsumaryzowanej podsieci ma wartość: 11111111.11111111.11111100.00000000 = 255.255.252.0 = /22 Uważny czytelnik stwierdzi oczywiście, że taka podsieć i maska obejmują nie trzy, ale cztery podsieci: oprócz trzech podsieci z diagramu, w zakres zsumaryzowanej podsieci wchodzi także podsieć 192.168.0.0/24. Jeśli podsieć ta nie jest używana, to wszystko jest w porządku, ale gdyby podsieć taka istniała gdzieś w innym miejscu sieci, to taki schemat sumaryzacji byłby niewłaściwy. W takim przypadku należałoby, zamiast jednego, użyć dwóch prefiksów na routerze D: jednego, który sumaryzuje dwie podsieci 192.168.2.0/24 i 192.168.3.0/24 w jedną o prefiksie 192.168.2.0/23, oraz oryginalnego prefiksu pozostałej podsieci 192.168.1.0/24. 29

2.7 Maski podsieci o różnej długości Dotychczas każdy podział sieci skutkował powstaniem pewnej liczby podsieci, które były jednakowej wielkości. Ich liczba zależała od liczby bitów pola adres podsieci. Podział taki, choć pozwala na znacznie efektywniejsze użycie adresów IP, niż w przypadki adresów klasowych, w dalszym ciągu ma pewne wady. Wielkość wszystkich podsieci musi być taka, jaka jest wielkość największej sieci, która wymaga zaadresowania. Jeśli firma X ma jeden duży oddział z 60 komputerami i 12 małych oddziałów po 5 komputerów w każdym, dotychczasowy sposób podziału sieci na podsieci zakładał, że wszystkie sieci będą tej samej wielkości, to znaczy z maską /26 (255.255.255.192). Maska taka pozwala zaadresować 62 hosty, co w przypadku małych oddziałów jest wysoce nadmiarowe i powoduje stratę cennych adresów IP. Aby zaradzić zbyt szybkiemu wyczerpywaniu się dostępnych adresów IP, wprowadzono możliwość podziału sieci na podsieci o różnej długości masek w ramach tej samej sieci. Mechanizm ten określany jest skrótem VLSM (ang. Variable Length Subnet Mask). Dzięki temu mechanizmowi można dzielić już istniejące podsieci na kolejne, mniejsze podsieci, każdą niezależnie od pozostałych, a wszystko to w celu zmniejszenia zużycia adresów IP. Wiadomo, że używając n bitów w polu adres podsieci, można uzyskać 2 n podsieci. Gdy pole adres podsieci ma długość 1 (jeden bit), uzyskuje się dwie podsieci, a to oznacza, że sieć zostaje podzielona na 2 części. Od tej pory każdą z tych części (podsieci) można traktować jako samodzielną sieć, pod warunkiem, że zawsze pamięta się o jej aktualnej masce podsieci. I każdą z tych właśnie otrzymanych sieci można dalej, niezależnie od pozostałych, dzielić na kolejne podsieci. Cały ten proces można powtarzać, aż do uzyskania wymaganej liczby podsieci o żądanych wielkościach. 30

Przykład 1: Przykład ten i poniższy diagram ilustrują jak można dokonać podziału sieci z użyciem masek o różnej długości. Podsieć o prefiksie 172.10.100.0/22 została podzielona w taki sposób, aby zapewnić właściwą liczbę adresów IP w każdej z sieci lokalnych (przedstawionych na rysunku jako chmurki ) oraz nadać adresy IP poszczególnym łączom, które są łączami typu punkt-punkt. Sieć podłączona do routera A jest największa otrzymała podsieć 172.10.100.0/24. Z kolei sieci obsługiwane przez routery B i C otrzymały zakresy adresów o połowę mniejsze, powstałe z podziału podsieci 172.10.101.0/24 na dwie części. Podsieć 172.10.102.0/24 została sama dalej podzielona na różnej wielkości podsieci, które są podłączone do routerów E i F. Ostatnia podsieć, 172.10.103.0/24 została podzielona na prefiksy /30 aby zapewnić adresację łączom. Przykład ten ilustruje w jaki sposób VLSM pozwala tworzyć hierarchię podsieci. Gdyby ta sieć miała być połączona z inną, na przykład przez router E, router ten mógłby (i powinien!) dokonać sumaryzacji wszystkich zastosowanych adresów podsieci i wysyłać dalej informację o jednym tylko prefiksie: 172.10.100.0/22 31

Przykład 2: Firma X ma jeden duży oddział z 60 komputerami i 12 małych oddziałów po 5 komputerów każdy. Jak efektywnie zaadresować te sieci, mając do dyspozycji jedną sieć klasy C 192.168.234.0/24? 60 komputerów wymaga 6-bitowego pola adres hosta (2 6-2 = 62). Dzieląc dostępną sieć 192.168.234.0/24 na dwie części z użyciem jednego bitu podsieci, otrzymujemy 2 podsieci: 192.168.234.0/25 192.168.234.128/25 Pierwszą z podsieci można ponownie podzielić na 2 części otrzymując kolejne podsieci, podczas gdy druga podsieć pozostaje na razie bez zmian. Otrzymujemy następujące 3 podsieci (dwie nowe, a jedną z poprzedniego podziału): 192.168.234.0/26 192.168.234.64/26 192.168.234.128/25 Jak widać w ramach jednej sieci klasy C (192.168.234.0/24) mamy do dyspozycji 3 podsieci, z których dwie mają maskę o długości 26 bitów, a jedna ma maskę 25- bitową. Czyli maski podsieci w ramach jednej sieci mają rożną długość! Jedną z podsieci o 26-bitowej masce można użyć dla adresacji dużego oddziału firmy X (niech to będzie podsieć 192.168.234.0/26), jednak wciąż pozostaje do zaadresowania 12 małych oddziałów, każdy z pięcioma komputerami. 12 * 5 = 60 i wydawałoby się, że druga podsieć o 26-bitowej masce wystarczy, ale przecież nie ma podsieci o wielkości 5 adresów, najbliższa wielkość podsieci, która umożliwi zaadresowanie pięciu komputerów to podsieć 8-adresowa (3 bity w polu adres hosta, bo 2 3 = 8), choć w rzeczywistości może w niej być tylko 6 hostów. 12 takich 8-adresowych podsieci wymaga 96 adresów. Ponownie, nie ma podsieci o 96 adresach, najbliższa, spełniająca wymagania co do wielkości, jest podsieć 128-adresowa. Podsieć taka wymaga tylko 1 bitu w polu adres podsieci i ma 7 bitów w polu adres hosta (2 7 = 128, choć w rzeczywistości może w niej być tylko 126 hostów). Podsieć taka ma maskę /25 Zatem to podsieć 192.168.234.128/25 należy podzielić tak, aby znalazło się w niej 12 podsieci po 8 adresów. 32

Ponieważ nie da się dokonać podziału na 12 części (12 nie jest wartością potęgi liczby 2), należy znaleźć taką wartość potęgi liczby 2, która umożliwi podział na co najmniej tyle podsieci, ile potrzeba. Wartością taką jest w tym przypadku 16 (2 4 ). Aby podzielić podsieć 192.168.234.128/25 na 16 mniejszych podsieci, należy użyć 4 bitów podsieci, czyli wydłużyć maskę o 4 bity. Zatem nowe podsieci będą miały maskę /29 (255.255.255.248): 192.168.234.128/29 192.168.234.136/29 192.168.234.144/29... 192.168.234.216/29 192.168.234.224/29 192.168.234.232/29 192.168.234.240/29 192.168.234.248/29 Spośród powstałych szesnastu podsieci, dwanaście pierwszych można użyć do zaadresowania komputerów w małych oddziałach firmy X. Zostaną cztery niewykorzystane podsieci z maską /29. Można dokonać ich sumaryzacji (agregacji) w jedną, większą podsieć: 192.168.234.224/27 W rezultacie, otrzymamy 13 podsieci: 12 małych i jedną powstałą z agregacji czterech małych podsieci: 192.168.234.128/29 192.168.234.136/29 192.168.234.144/29 192.168.234.152/29 192.168.234.160/29 192.168.234.168/29 192.168.234.176/29 192.168.234.184/29 192.168.234.192/29 192.168.234.200/29 192.168.234.208/29 192.168.234.216/29 192.168.234.224/27 33

W zapasie pozostaną dwie podsieci, które firma X może dowolnie wykorzystać. 192.168.234.64/26 192.168.234.224/27 3 Wprowadzenie do budowy sieci komputerowych 3.1 Funkcje sieci komputerowych Aby rozumieć zasadę działania sieci komputerowych, musimy zapoznać się z podstawowymi ich elementami oraz pojęciami, które je opisują. Pojęcia te spotkać można w każdej fachowej literaturze, a więc ich znajomość ma kluczowe znaczenie. Najważniejsze to zdać sobie sprawę z tego czym jest sieć komputerowa i w jaki sposób przyczynia się ona do zwiększenia produktywności, tak nas ludzi, jak i przedsiębiorstw czy firm. Sieć komputerowa to po prostu zbiór połączonych urządzeń i systemów, takich jak komputery i serwery (ogólnie znane jako hosty ), które mogą dzięki tej sieci się z sobą komunikować. Specjalne urządzenia sieciowe zapewniają połączenia pomiędzy różnymi typami sieci. Z sieciami komputerowymi spotykamy się w wielu miejscach: w domu, w małych firmach i wielkich korporacjach. W przypadku tych ostatnich, sieci są najbardziej rozbudowane i obejmują największą liczbę różnych typów lokalizacji. Główna siedziba główne biuro firmy to często miejsce, w którym sieć łączy wiele setek, czy nawet tysięcy hostów. Inne lokalizacje na ogół odwołują się, poprzez sieć komputerową, do zasobów sieci głównego biura, takich jak serwery czy dyski sieciowe. Zdalne lokalizacje, wśród których możemy wyróżnić: - oddział w oddziałach pracują mniejsze grupy ludzi i komunikują się między sobą oraz z ludźmi w innych oddziałach i w siedzibie głównej, poprzez sieć komputerową. Oddziały mogą mieć własne zasoby, takie jak drukarki czy serwery, jednak większość danych ważnych dla firmy, przechowywanych jest w siedzibie głównej i do nich przede wszystkim odwołują się użytkownicy z oddziałów. - biuro domowe wielu pracowników korzysta z możliwości pracy zdalnej, pracując z domu. Pozwala to obniżyć koszty utrzymania biur. Osoby takie łączą się z zasobami sieciowymi zgromadzonymi w siedzibie głównej lub w oddziale, skąd czerpią dane niezbędne do wykonania swojej pracy i gdzie zapisują jej wyniki. - użytkownicy mobilni użytkownicy mobilni to osoby często zmieniające miejsce, w którym wykonują swoją prace. 34

Mogą łączyć się z siecią firmy w jej siedzibie głównej, kiedy akurat tam przebywają, mogą odwiedzać oddziały, lub nawet pracować w trakcie podróży. 3.2 Urządzenia sieciowe i hosty Urządzenia sieciowe, to, w odróżnieniu od hostów (czyli komputerów, serwerów, drukarek sieciowych itp.), urządzenia, których głównym zadaniem jest zapewnienie pracy sieci komputerowej i łączności pomiędzy hostami. Zależnie od wielkości sieci i usług w niej dostępnych, liczba i wielkość urządzeń sieciowych może być różna, ale najważniejsze z nich, spotykane praktycznie w każdej sieci są następujące: Hub (zwany też koncentratorem); hub zapewnia możliwość podłączenia hostów do sieci, jednak nie posiada żadnych zaawansowanych funkcji sterowania ruchem Switch (pol. przełącznik); switche zapewniają możliwość podłączenia hostów do infrastruktury sieci komputerowej oraz świadczą usługi inteligentnego sterowania ruchem w sieci lokalnej Router routery łączą różne sieci i zapewniają wybór najlepszej trasy z jednej sieci do drugiej Oprócz dwóch wyżej wymienionych urządzeń sieciowych, sieci nie istniałyby bez połączeń (ang. interconnections), których zadaniem jest zapewnić przepływ danych między różnymi punktami sieci. Ta kategoria zawiera w sobie następujące składniki: - interfejsy sieciowe (ang. NIC Network Interface Card), których zadaniem jest zamienić dane płynące z komputera na postać możliwą do przesłania w lokalnej sieci - medium transmisyjne należą tutaj kable, światłowody, częstotliwości radiowe, które zapewniają transmisję sygnału zawierającego dane między dwoma urządzeniami podłączonym do sieci - styki (ang. connectors), dzięki nim medium transmisyjne można podłączyć do urządzenia lub hosta. Hosty to kategoria urządzeń, które są urządzeniami końcowymi w sieci (ang. end devices), co oznacza, że korzystają one z usług świadczonych przez sieć i dzięki niej mogą się komunikować. Najczęściej mówiąc host mamy na myśli komputer osobisty, laptop, serwer, ale hostem jest także drukarka sieciowa (wyposażona w interfejs sieciowy i przyłączona bezpośrednio do sieci), macierz dyskowa, telefon IP (czyli telefon, który przesyła głos przez sieć komputerową a nie telefoniczną) i inne urządzenia, które nie posiadają funkcji aktywnego sterowania ruchem w sieci. 35

Przykład sieci złożonej z różnego rodzaju hostów, przedstawia poniższy rysunek. Obok hostów, widzimy także dwa typy urządzeń aktywnych: routery i switche. 3.3 Ogólny model sieci komputerowej Komunikacja w sieci komputerowej może wydawać się sprawą prostą z punktu widzenia kogoś, kto podłącza swój komputer do sieci i bez żadnych specjalnych zabiegów, może korzystać z jej usług. Aby to jednak było możliwe, wiele złożonych mechanizmów zostało opisanych, stworzonych i ulepszanych przez organizacje zajmujące się standaryzacją sieci komputerowych. Zgodność ze standardami jest o tyle ważna, że wszyscy chcemy aby nasze komputery działały prawidłowo w sieci, niezależnie od tego gdzie ta sieć się znajduje i z jakich urządzeń jest zbudowana. Powstanie standardów było możliwe dzięki wypracowaniu ogólnego opisu działania różnych komponentów sieci. Takim opisem, do którego odwołują się wszystkie sieci komputerowe i mechanizmy nimi sterujące jest 7-warstwowy model ISO/OSI. Międzynarodowa Organizacja Standaryzacyjna (International Standards Organization) stworzyła go aby zdefiniować ogólne zasady funkcjonowania sieci komputerowych. Jego poznanie jest kluczowe dla zrozumienia w jaki sposób hosty komunikują się ze sobą i jaką rolę w tej komunikacji odgrywają urządzenia sieciowe. Model jest bardzo ogólny, stąd jego nazwa Open Systems Interconnections (OSI). Nie jest on sam w sobie standardem, ale opisem ogólnych mechanizmów, którym podlegają sieci komputerowe. Niezależnie od tego, jakie rozpatrzymy typy hostów, urządzeń sieciowych czy łączy, jedno jest kluczowe muszą one mieć pewien zbiór zasad, który umożliwi im wzajemną komunikację. W przypadku ludzi, takimi zbiorami zasad są języki. W skład języka wchodzą reguły budowy zdań i użycia słów. 36

Obok zasad komunikacji, musi także istnieć medium, po którym komunikacja, zgodna z tymi zasadami, będzie się odbywać. Dla ludzi przykładem takiego medium jest powietrze (dla języka mówionego) lub papier (dla słów pisanych), przy czym większość języków pozwala użyć obu tych mediów. Jak wiemy, ludzie mówiący różnymi językami mają utrudnione komunikowanie się. Urządzenia sieciowe i hosty są produkowane przez wielu wytwórców i używają odmiennych programów. Jednak jeśli chcą one komunikować się ze sobą, muszą używać wspólnego zestawu reguł, zrozumiałego dla każdego z nich. Te zasady, opisujące sposób komunikacji pomiędzy urządzeniami i systemami noszą nazwę protokołów (ang, protocols). Istnieje wiele protokołów, których mogą używać systemy i wiele z tych protokołów zapewnia podobny zakres usług. Aby zaproponować powszechnie dostępne i otwarte zasady tworzenia protokołów, ISO opublikowała w 1984 roku uniwersalny model odniesienia znany jako 7- warstwowy model ISO/OSI. Mimo, że istnieją inne modele, to jednak większość z nich i tak odnosi się i porównuje do modelu ISO/OSI, jako najbardziej rozpowszechnionego. Model ten jest także uważany za najlepsze narzędzie w poznawaniu zasad działania sieci komputerowych i rozumieniu zagadnień przesyłania danych pomiędzy hostami. Model ISO/OSI składa się z siedmiu warstw, pokazanych na poniższym rysunku: Warstwy odpowiadają poszczególnym funkcjom sieci. Model ten definiuje i dokładnie opisuje każdą z nich. Co ważniejsze jednak, model ten pomaga zrozumieć jak wygląda przepływ informacji w sieci komputerowej, na przykład jak płyną dane z aplikacji uruchomionej na jednym hoście (dajmy na to na komputerze osobistym) do innej aplikacji, uruchomionej na innym hoście (powiedzmy na serwerze), nawet, jeśli nadawca i odbiorca podłączeni są do różnych sieci, opartych o różne media transmisyjne. 37

Zalety podziału warstwowego modelu ISO/OSI są trudne do przecenienia. Należą do nich: zmniejszenie złożoności podział warstwowy pozwala podzielić zagadnienia komunikacji na mniejsze, prostsze części; ustandaryzowanie interfejsów dzięki podziałowi na warstwy, poszczególne komponenty mogą być tworzone przez różnych wytwórców i wciąż ze sobą współpracować; izolacja zmiany dokonane w danej warstwie nie wpływają na inne warstwy; szybki rozwój możliwe jest wprowadzanie usprawnień do poszczególnych warstw, bez konieczności uaktualnienia całego protokołu; Każda warstwa zawiera funkcje, które umożliwiają danym przepływ między nadawcą i odbiorcą. Warstwa 7: Warstwa Aplikacji (ang. Application Layer); jest to warstwa położona najbliżej użytkownika. Zapewnia one usługi sieciowe aplikacjom, których używa użytkownik. Tym różni się od innych warstw, że nie świadczy usług na rzecz wyższej warstwy, lecz na rzecz aplikacji, które nie należą już do model ISO/OSI. Warstwa 6: Warstwa Prezentacji (ang. Presentation Layer); zadaniem tej warstwy, która świadczy usługi warstwie aplikacji, jest zapewnienie, że dane wysyłane przez jedną aplikację, są zrozumiałe dla komunikującej się z nią aplikacji działającej w innym systemie. Jeśli, na przykład, aplikacja na komputerze używa kodowania znaków ASCII, a jej odpowiednik na innym komputerze koduje znaki z użyciem kodu EBCDIC (Extended Binary Coded Decimal Interchange Code), to zadaniem warstwy prezentacji jest zapewnić tłumaczenie między tymi sposobami kodowania. Warstwa 5: Warstwa Sesji (ang. Session Layer); zapewnia ustanowienie, utrzymanie i zakończenie sesji pomiędzy dwoma komunikującymi się z sobą hostami. Warstwa sesji synchronizuje komunikację pomiędzy warstwami prezentacji na obu hostach. Przykładem może być sesja VPN zestawiona pomiędzy dwoma hostami z użyciem protokołu IPSec. Warstwa 4: Warstwa Transportowa (ang. Transport Layer); warstwa ta, jak sama nazwa wskazuje, zapewnia usługi transportu danych przez sieć. Usługi te polegają na segmentacji napływających z wyższej warstwy danych na małe porcje, które mogą być przesłane między hostami. Warstwa ta może zapewniać usługę niezawodnej transmisji (ang. reliable transmission), poprzez system potwierdzeń odbioru i retransmisji zagubionych segmentów. Do warstwy tej należą popularne protokoły TCP i UDP. 38

Pomiędzy warstwą transportową a warstwą sesji istnieje umowna granica, która oddziela protokoły aplikacji od protokołów odpowiedzialnych za przepływ danych. Warstwa transportowa zapewnia izolację wyższych warstw od szczegółów związanych z implementacją mechanizmów transportu danych. Protokoły tej warstwy posiadają możliwość wykrywania i korygowania błędów transmisji, jak również sterowania przepływem. Warstwa 3: Warstwa Sieciowa (ang. Network Layer); protokoły tej warstwy mają za zadanie zapewnić wybór optymalnej w danych warunkach ścieżki pomiędzy dwoma hostami, które mogą być dowolnie odległe jeden od drugiego. Najpopularniejszym protokołem tej warstwy jest protokół IP. Warstwa 2: Warstwa Łącza (ang. Data-Link Layer); mechanizmy tej warstwy określają sposoby formatowania danych dla celów ich transmisji oraz sposób dostępu do medium transmisyjnego. Warstwa ta jest odpowiedzialna za komunikację pomiędzy systemami podłączonymi do tego samego medium transmisyjnego, w tym za adresację i sygnalizację w ramach tego medium. Powszechnie znanymi protokołami tej warstwy są różne pochodne technologii Ethernet, takie jak: Ethernet II, IEEE 802.3 oraz protokoły sieci WAN, takie jak: HDLC czy PPP. Warstwa 1: Warstwa Fizyczna (ang. Physical Layer); warstwa fizyczna określa elektryczne, optyczne, mechaniczne i funkcjonalne właściwości fizycznego łącza pomiędzy dwoma systemami. Cechy takie, jak napięcia elektryczne, taktowania zegarów, szybkości i maksymalne odległości transmisji, fizyczne styki (wtyczki, gniazda) i inne podobne atrybuty, są opisane w specyfikacji warstwy fizycznej. 3.4 Cechy sieci komputerowych Planując budowę sieci komputerowej czy też nadzorując jej codzienną pracę, należy zdawać sobie sprawę z charakterystycznych dla danej sieci cech i parametrów tę sieć opisujących. Często wiele z tych parametrów wzajemnie ze sobą koliduje (na przykład szybkość i koszt, lub koszt i niezawodność), a zatem należy dokonać takiego ich doboru, aby sieć spełniała możliwie największą liczbę przyjętych założeń. Najważniejsze parametry opisujące sieć komputerową są następujące: szybkość (ang. speed); określa z jaką prędkością dane są w sieci transmitowane. Odpowiedni jest tutaj angielski termin data rate. koszt określa ile kosztuje zaplanowanie, zbudowanie i utrzymanie sieci; w jego skład wchodzi zarówno koszt urządzeń, jak i koszt łączy oraz koszty zapewnienia serwisu wszystkich elementów. 39

poziom bezpieczeństwa (ang. security); wskazuje na ile bezpieczna jest dana sieć; zabezpieczenia wymagają zarówno dane przechowywane na sieciowych hostach, jak i dane przepływające przez medium transmisyjne. dostępność (ang. availability); jest miarą prawdopodobieństwa, że sieć będzie dostępna wtedy, kiedy tego wymagamy. Dostępność wyraża się w procentach i określa poprzez podzielenie czasu, gdy sieć była niedostępna, przez cały czas pomiaru, np. jeśli sieć jest niedostępna przez godzinę w ciągu roku, jej dostępność wynosi: (8760 1)/8760 * 100% = 99.989% skalowalność (ang. scalability); wskazuje na ile sieć jest gotowa, aby obsłużyć dodatkową liczbę hostów, lub dodatkową ilość danych do przesłania. niezawodność (ang. reliability); określa na ile można polegać na elementach składowych sieci i na ile jest ona w stanie zachować ciągłość działania w przypadku awarii któregoś z komponentów. topologia (ang. topology); sieci możemy scharakteryzować podając dwa typy topologii: logiczną i fizyczną. Topologia fizyczna określa przebieg kabli łączących poszczególne elementy składowe sieci (hosty, urządzenia sieciowe), a topologia logiczna mówi nam o tym, jaką naprawdę drogą dane płyną poprzez topologię fizyczną. 3.5 Topologie sieci komputerowych Działanie każdej sieci komputerowej bardzo silnie zależy od jej topologii, zwłaszcza logicznej. O ile topologia fizyczna określa, przebieg kabli w sieci, to topologia logiczna definiuje rzeczywisty przepływ danych. Jest to istotny parametr, mający wpływ na wiele z pozostałych cech sieci, o których mowa była w poprzedniej sekcji. Najpowszechniejsze spotykane obecnie topologie fizyczne sieci to: szyna (ang. bus); zarówno urządzenia sieciowe, jak i hosty podłączone są do tego samego liniowego kabla. Przykładem może być siec Ethernet 10Base-2. 40

pierścień (ang. ring); hosty i urządzenia sieciowe połączone są szeregowo, a ostatnie z nich łączy się z pierwszym, tworząc zamknięte koło połączeń. Jako przykład tej topologii można podać sieć TokenRing. gwiazda (ang. star); jedno centralne urządzenie koncentruje w sobie wszystkie kable łączące pozostałe urządzenia i hosty. Nowoczesne sieci Ethernet zbudowane w oparciu o switche tworzą fizyczną topologię gwiazdy. Jak wspomnieliśmy, topologia logiczna, określająca w jaki sposób dane płyną w fizycznych połączeniach (kablach) pomiędzy hostami i urządzeniami sieciowymi, nie zawsze musi pokrywać się z topologią fizyczną. Jeszcze kilkanaście lat temu sieci Ethernet typu 10Base-2 budowano w oparciu o kabel koncentryczny, tworzący fizyczną szynę, do którego, przy pomocy rozgałęziaczy typu T, podłączano hosty. W przypadku takiej sieci topologia fizyczna pokrywała się z topologią logiczną. Wprowadzenie hubów sieciowych (zwanych też koncentratorami), zmieniło topologię fizyczną: połączenia kablowe przyjęły topologię gwiazdy, podczas gdy topologia logiczna nie uległa zmianie. Sytuację tę możemy zilustrować przy pomocy takiego oto diagramu: 41

Kable fizycznie tworzą topologię gwiazdy, schodząc się w centralnym punkcie sieci, którym jest hub. Lecz wewnątrz huba, w dalszym ciągu istnieje szyna, do której schodzą się wszystkie jego gniazdka. Podobnie wygląda sytuacja w przypadku koncentratorów sieci TokenRing: kable schodzą się gwiaździście do koncentratora, który wewnątrz de-facto tworzy topologię pierścienia: 3.6 Komunikacja w sieciach komputerowych Proces komunikacji w sieci komputerowej zaczyna się od hosta źródłowego, a kończy się na hoście docelowym. Protokół sieciowy, używając wszystkich lub wybranych warstw modelu ISO/OSI, zapewnia przesył danych między hostami i urządzeniami. Proces ten polega na przekazywaniu komunikatu, który ma być przesłany, od aplikacji w dół stosu, poprzez kolejne warstwy, z których każda dodaje właściwe dla siebie informacje do pierwotnego komunikatu. Te dodatkowe informacje, zwane nagłówkami (ang. header) zapewniają, że przekazywana informacja będzie zrozumiana przez kolejne (niższe) warstwy w tym samym hoście. Opisany sposób dodawania przez kolejne warstwy danego protokołu nagłówków, nazywa się enkapsulacją (ang. encapsulation). 42

Enkapsulacja zapewnia dodatkowo, że gdy informacja dotrze do hosta-odbiorcy, jego oprogramowanie, korzystając z nagłówków, będzie potrafiło przekazać w poprawny sposób treść komunikatu w górę, od warstwy fizycznej do warstwy aplikacji. Jest to proces podobny do wysyłania tradycyjnego listu pocztowego. List napisany na kartce papieru wkładamy do koperty, dodajemy adres odbiorcy (i nadawcy, gdy jest to list polecony) i zanosimy na pocztę. Odbiorca zdejmuje kopertę z listu i odczytuje treść naszej wiadomości: Zasadę działania procesu enkapsulacji w przypadku protokołu sieciowego ilustruje poniższy rysunek: Pola oznaczone literą H oznaczają nagłówki (ang. header) dodane przez kolejne warstwy. Jak widać, i co jest kluczowe dla zrozumienia procesu enkapsulacji, dane, czyli pola D, jednej warstwy, wraz z dołączonym nagłówkiem, stanowią 43

z kolei dane dla kolejnej, niższej warstwy. Proces ten powtarza się aż do warstwy łącza danych, która przekazuje warstwie fizycznej wielokrotnie opakowany komunikat, do przekazania go przez fizyczne łącze do docelowego hosta. Host docelowy, przeprowadza operację odwrotną do enkapsulacji, zwaną deenkapsulacją (ang. de-encapsulation). W procesie de-enkapsulacji, oprogramowanie protokołu, przekazując komunikat do wyższych warstw, kolejno zdejmuje nagłówki dodane przez nadawcę, aż w końcu dane trafiają do aplikacji, która udostępnia je użytkownikowi. Aby dane mogły być bez przeszkód przekazywane z aplikacji hosta nadawcy do aplikacji hosta odbiorcy, każda z warstw nadawcy musi komunikować się z odpowiadającą jej warstwą odbiorcy. Taka forma komunikacji nosi nazwę komunikacji peer-to-peer (nie należy mylić tego z aplikacjami typy peer-topeer, takimi jak edonkey czy podobne!). W jej procesie protokoły tych samych warstw wymieniają między sobą informacje w postaci tzw. jednostek danych protokołu (ang. protocol data unit). Komunikacja peer-to-peer jest komunikacją wirtualną, co oznacza, iż w rzeczywistości całość przepływu informacji odbywa się od warstwy aplikacji w hoście-nadawcy, w dół do warstwy fizycznej, a potem, u odbiorcy, ponownie od warstwy fizycznej w górę, do aplikacji. Na poniższym rysunku przerywanymi strzałkami zaznaczono komunikację peerto-peer pomiędzy odpowiednimi protokołami każdej z warstw. Małe strzałki ilustrują przepływ danych między warstwami w każdym z hostów: Dodatkowo rysunek zawiera, obok hostów, dwa urządzenia sieciowe: switch i router. Te dwa typy urządzeń, oraz huby sieciowe, działają na trzech najniższych warstwach sieci. Na rysunku widać wyraźnie ich rolę w przesyłaniu 44

danych i udział w poszczególnych warstwach. Więcej informacji na ten temat podamy w sekcji poświęconej modelowi protokołów TCP/IP. 3.7 Stos protokołów TCP/IP 3.7.1 Model stosu TCP/IP Stos protokołów TCP/IP bierze swą nazwę od dwóch protokołów do niej należących. TCP to skrót od nazwy Transmission Control Protocol, a IP to oczywiści Internet Protocol. Podobne jak model ISO/OSI, również protokoły rodziny TCP/IP można podzielić na warstwy, choć zarówno liczba tych warstw, jak i podział między nimi przebiegają nieco odmiennie. Mimo, że model ISO/OSI jest ogólniejszy i szerzej rozpoznawany, to jednak właśnie rodzina protokołów TCP/IP ustanowiła standard, którym dziś posługuje się większość sieci komputerowych na świecie, włączając w to sieć Internet. Stos protokołów TCP/IP zawiera w sobie cztery warstwy. Należy zaznaczyć, że choć nazwy niektórych z tych warstw są podobne lub nawet identyczne, jak nazwy warstw ISO/OSI, to jednak warstwy te w TCP/IP pełnią nieco inną rolę. Warstwa Aplikacji - (ang. Application Layer); warstwa ta pełni rolę protokołów wyższych warstw modelu ISO/OSI. Skupia w sobie wszystkie mechanizmy odpowiedzialne za reprezentację, sposoby kodowania danych i nadzór dialogu z użytkownikiem. Przygotowuje dane do obsługi przez niższe warstwy. Warstwa Transportowa (ang. Transport Layer); do zadań tej warstwy należy przede wszystkim zapewnienie jakości i niezawodności transmisji oraz korekcja błędów. Protokół TCP należy właśnie do tej warstwy. Zapewnia on usługi niezawodnej transmisji, poprzez wbudowane mechanizmy retransmisji zgubionych segmentów danych i sterowanie przepływem. 45

Warstwa sieciowa (ang. Internetwork Layer); dzięki usługom tej warstwy pakiety z danymi wysłane przez nadawcę mogą docierać do odbiorcy niezależnie od tego jaką w danej chwili drogą płyną. Na tej warstwie pracują routery, zapewniając kierowanie ruchem pakietów w sieci. Warstwa interfejsu sieci (ang. Network Interface Layer, Network Access Layer); nazwa tej warstwy może być myląca stąd nieraz nazywa się ją host-tonetwork layer". Zawiera ona protokoły odpowiedzialne za warstwę łącza danych i warstwę fizyczną modelu ISO/OSI (czyli usługi transmisji danych po fizycznym łączu, włączając w to charakterystyczną dla danego typu łącza adresację). Każdej z warstw modelu TCP/IP odpowiada inny typ komunikatu, w zależności od tego, pomiędzy którymi warstwami jest wymieniany. Znajomość pojęć, które wprowadza poniższy rysunek jest kluczowa,dla poprawnego rozumienia dalszych części niniejszego opracowania oraz terminologii sieciowej: Dane, które mają być przesłane pomiędzy dwoma hostami, na poziomie aplikacji tworzą komunikat. Przesłane do warstwy transportowej, zostają podzielone na segmenty, zależnie od zastosowanego protokołu. Z kolei warstwa transportowa zleca zadanie przesłania segmentów danych warstwie sieciowej, która formuje dane w pakiety. W każdym pakiecie zawarty jest adres docelowy i adres źródłowy (mówimy tutaj o adresach IP), a pakiet taki przesyłany jest niezależnie od pozostałych pakietów, zarówno tego samego, jak i innych segmentów. Pakiety, w celu przesłania przez fizyczne łącza, przekazywane są do warstwy interfejsu sieci, która zaopatruje każdy pakiet w adresy fizyczne interfejsów nadającego i docelowego (na przykład adresy MAC sieci Ethernet), tworząc tym samym ramkę. Ramki są transmitowane w fizycznym łączu z użyciem 46

właściwych dla danego typu połączenia sygnałów elektrycznych, optycznych czy elektromagnetycznych (radiowych). Model TCP/IP posłużył za bazę dla rozwoju komunikacji w sieci Internet, a dzięki sukcesowi, który Internet odniósł, model ten upowszechnił się do tego stopnia, że obecnie większość sieci budowana jest w oparciu o niego. Dla kontrastu, bardzo niewiele sieci i protokołów wykorzystuje wszystkie warstwy modelu ISO/OSI. Powstało kilka implementacji, lecz albo były to wdrożenia eksperymentalne czy naukowe, albo nie spotkały się z pozytywnym przyjęciem wśród twórców oprogramowania. Można uznać, że model praktyczny zwyciężył w porównaniu z modelem teoretycznym. Wciąż jednak model ISO/OSI pozostaje modelem odniesienia, do którego stosy protokołów są porównywane i który stanowi wzorcowe rozwiązanie komunikacji w sieciach komputerowych. Porównanie modeli ISO/OSI i TCP/IP przedstawia poniższy rysunek. Zwróćmy uwagę na zaznaczoną granicę pomiędzy protokołami związanymi z aplikacją a protokołami odpowiedzialnymi za przesyłanie danych w TCP/IP warstwa transportowa związana jest z aplikacją, inaczej niż w ISO/OSI: 47