wydawać się nieco dziwne, dlatego też przy takich informacjach będę
zapisywać oznacznie oryginalności zapisu (<strong>sic/sic!</strong>).
</p>
-
+ <h1 id="1.8.networklayer">1.8. Wartstwa sieciowa</h1>
+ <p>
+ Warstwa sieciowa dostarcza usługi pozwalające na wymianę danych między
+ hostami. Podstawowym jej protokołem jest protokół IP zarówno w wersji
+ 4 jak i 6. Warstwa sieciowa odpowiada adresacje urządzeń końcowych,
+ enkapsulacja, routing oraz deenkapsulacje.
+ </p>
+ <h2 id="1.8.1.networklayecharacteristics">1.8.1. Charakterystyki warstwy sieciowej</h2>
+ <p>
+ Protokół IP enkapsuluje segmenty z wartstwy transportowej, nie ma
+ znaczenia czy użyjemy wersji 4 czy 6 protokołu IP, na ten segment
+ nie będzie to miało wpływu. Pakiet IP będzie analizowany przez
+ wszystkie urządzenia warstwy 3 (lub mogące w niej działać) na swojej
+ drodze do punktu docelowego. Generalnie to adres protokołu IP nie
+ powinny się zmienić ma drodze między hostem źródłowym a hostem
+ docelowym, wyjątkiem od tej reguły jest mechanizm NAT. Protokół IP
+ opisywany jest jako bezpołączeniowy, niezależny od medium transmisyjnego
+ oraz najlepszej możliwości.
+ </p>
+ <p>
+ Protokół IP jest bezpołączeniowy. IP nie ustanawia żadnego połączenia
+ ze stroną docelową przed wysłaniem pakietu, nie potrzeba żadnych
+ informacji kontrolnych. Host docelowy otrzyma pakiet kiedy on nadejdzie
+ nie ma żadnych wcześniejsych powiadomień. Jeśli wymagane jest
+ połączenie, wówczas jest to powierzane warstwie wyższej, warstwie
+ transportowej, a konkretnie protokołowi TCP.
+ </p>
+ <p>
+ Protokół IP jest uznawana za protokół najlepszej możliwości porzez
+ zmniejszenie narzutu spowodowanego brakiem mechnizmów retransmisji,
+ nie ma potwierdzeń o tym, że pakiet dotarł. IP nawet na nie,
+ nie oczekuje. Protokół również nie ma informacji na temat czy
+ host w ogóle funkcjonuje i otrzymuje wysłane do niego pakiety.
+ </p>
+ <p>
+ Ze względu na to, że protokół IP jest protokołem najlepszej możliwości
+ uznawany jest za nierzetelny. Jak te funkcje nie sprawdzają się w
+ każdym możliwym przypadku, dlatego też brak ich w protokole IP, który
+ w obenych czasach musi obsłużyć 99% ruchu w sieci. Protokół IP jest
+ protokołem niezależnym od medium transmisjynego oznacza to, że
+ może on przesyłać dane przez dowolne połączenie między dwoma hostami.
+ Przyczym wprowadza on pojęcie <strong>MTU</strong>
+ (<em>Maximum Transmission Unit</em>). Przyczy ten protokół utrzymuje
+ informacje o tym jakie MTU ma ustawić od warstwy łącza danych. Innym
+ mechanizmem protokołu IP jest <strong>Fragmentacja</strong>, pozwala
+ to dzielić pakiety na mniejsze części, na przykład gdy nasza
+ technologia WAN ma mniejsze MTU.
+ </p>
+ <h2 id="1.8.2.ipv4packet">1.8.2. Pakiet IPv4</h2>
+ <p>
+ Protokół IP wersji 4 jest podstawowym protokołe komunikacyjnym w
+ warstwie sieciowej, a sam nagłówek jest dość istotny w całej
+ transmisji. Zapewnia, że pakiet zostanie wysłany do właściwego
+ odbiorcy, zawiera w swoich polach wiele informacji ważnych dla
+ przetwarzania pakietów. Informacje z nagłówka wykorzystują wszystkie
+ urządzenia mogące przetwarzać dane z warstwy sieciowej. W nagłówku IP
+ mimo wszystko najważniejszą informacją są pola a zawierające adresy,
+ dość ciekawy polem tutaj jest pole <em>Protocol</em>, gdyż może mieć
+ więcej niż jedną funkcję. Poniżej znajduje się bardziej szczegółowy
+ opis poszczególnych pól:
+ </p>
+ <ul>
+ <li><strong>Wersja</strong> - 4-bitowe pole zawierające wersję IP w tym
+ przypadku: <em>0100</em> = 4.</li>
+ <li><strong>Zróżnicowane usługi</strong> - pole wykorzystywane przez
+ QoS, może mieć rózne oznaczenie: DS, DiffServ lub IntServ czy ToS
+ <em>Type of Service</em>.</li>
+ <li><strong>Suma kontrolna nagłówka</strong> - pole wykorzystywane do
+ detekcji uszkodzeń nagłówka.</li>
+ <li><strong>Pole TTL</strong> - licznik skoków w warstwie 3. Kiedy
+ zostanie wyzerowane router odrzuci pakiet.</li>
+ <li><strong>Protokoł</strong> - wskazuje na protokół, którego dane
+ są niesione w tym pakiecie, np.: ICMP, TCP czy UDP.</li>
+ <li><strong>Adres źródłowy IPv4</strong> - adres IPv4 hosta wysłającego
+ pakiet.</li>
+ <li><strong>Adres źródłowy IPv6</strong> - adres IPv4 hosta docelowego.</li>
+ </ul>
+ <h2 id="1.8.3.ipv6packet">1.8.3. Pakiet IPv6</h2>
+ <p>
+ Protokół IPv4 posiada swoje ograniczenia. Pierwszym z nich jest
+ wyczerpanie się adresów IP w wersji, inna przeszkodą może być brak
+ bezpośrednich połaczeń, obecnie łączymy się z pośrednictwem adresów
+ prywatnych oraz NAT-u, a użycie mechnizmu NAT powoduje potrzebę zmiany
+ nagłówków, co może powodować opóźnienia oraz zwiększać złożoność sieci.
+ </p>
+ <p>
+ Remedium na powyższe ograniczenia jest globalne wdrożenie IPv6.
+ IPv6 zwiększa długość adresu z 32-bitów do 128 przez co ich ilość
+ zwiększa o bardzo duża liczbę (340 x 10^36), gdzie adresów IPv4 mamy
+ lekko powyżej 4 miliardy. Zmniejsza się również nagłówek pakietu,
+ zostaje pozbawiony kilku pól. Ze względu na ilość operowalnych adresów
+ nie ma potrzeby stosowania NAT-u.
+ </p>
+ <p>
+ Sam nagłówek IPv6 został uproszczony, ale nie zmniejszony. Nagłówek
+ IPv6 ma długość 40B, wiele z pól zostało zostało usuniętych aby
+ zwiększyć wydajność. Ponizej znajduje się opis poszczególnych pól
+ nagłówka IPv6.
+ </p>
+ <ul>
+ <li><strong>Wersja</strong> - wersja protokołu 4 bity dla IPv6 to:
+ <em>0110</em>.</li>
+ <li><strong>Klasa ruchu</strong> - pole dla QoS.</li>
+ <li><strong>Etykieta przepływu</strong> - 20-bitowe pole informujące
+ urządzenia, aby przetwarzały pakiety z tą samą wartością tego pola
+ w ten sam sposób.</li>
+ <li><strong>Długość ładunku</strong> - 16-bitowe pole określa długość
+ danych niesionych przez ten pakiet.</li>
+ <li><strong>Następny nagłówek</strong> - wskazuje na protokół
+ warsty wyższej, której dane niesie.</li>
+ <li><strong>Limit skoków</strong> - licznik skoków w warstwie sieciowej</li>
+ <li><strong>Adres źródłowy IPv6</strong> - 128-bitowy adres źródłowy.</li>
+ <li><strong>Adres docelowy IPv6</strong> - 128-bitowy adres docelowy.</li>
+ </ul>
+ <p>
+ Dodatkowo pakiety IPv6 mogą zawierać rozszerzenie nagłówka, które może
+ zawierać dodatkowe informacji warstwy sieciowej takie jak fragmentacja,
+ informacje odnośnie bezpieczeństwa czy wsparcie dla mobilności. To
+ rozszerzenie jest opcjonalne i umiesczone jest między danymi a
+ nagłówkiem. W przeciwieństwie do IPv4 routery IPv6 nie fragmentują
+ pakietów.
+ </p>
+ <h2 id="1.8.4.howhostsroutes">1.8.4. W jaki sposób host przesyła pakiety</h2>
+ <p>
+ Każdy host posiada w swojej konfiguracji TCP/IP tablicę routingu.
+ Pakiety przez niego wygenerowane mogą być wysłane do siebie po przez
+ adres pętli zwrotnej: <em>127.0.0.1</em> (IPv4), <em>::1</em> (IPv6);
+ do hostów lokalnych znajdujących się w tej samej sieci czy też do
+ hostów zdalnych znajdujących się poza naszą siecią lokalną.
+ </p>
+ <p>
+ To host źródłowy decyduje o tym czy adres docelowy jest adresem
+ lokalnym czy też pochodzącym z poza sieci. W zależności od wersji
+ protokołu są dwie metody. Host konfrontuje swój adres oraz maskę
+ obliczając adresy sieciowe (adres sieci i broadcast) z adresem
+ docelowym w przypadku IP w wersji 4. W przypadku IP w wersji 6, host
+ wykorzystuje adres sieci oraz prefix przedstawiony mu przez najbliższy
+ router. Ruch lokalny opuszcza kartę sieciową hosta i jest przetwarzany
+ przez urządzenia pośredenie, takie jak przełączniki. Jeśli ruch jest
+ ewidentnie adresowany na zewnątrz, jest on kierowany do prosto do bramy
+ oczywiści z pośrednictwem urządzeń po drodze do routera.
+ </p>
+ <p>
+ Urządzenia warstwy 3, takie jak routery lub przełączniki L3 mogą być
+ domyślną bramą dla hostów w sieci lokalnej. Cechami domyślnej bramy
+ są na pewno: adres IP urządzenia/interfejsu musi znajdować się w tej
+ samej sieci lokalnej, urządzenia tego typu przyjmują ruch z sieci
+ lokalnej i kierują ją po za nią, mogą trasować ruch do innych sieci.
+ Jeśli hosty w sieci nie posiadają skonfigurowanej bramy lub jej adres
+ adres jest nie poprawny nie będą wstanie przsyłać danych poza sieć.
+ </p>
+ <p>
+ Host adres bramy może mieć zapisany w swojej konfiguracji statycznie
+ lub otrzymać go wraz z dzierżawą adres IP z serwera DHCP, w przypadku
+ protokołu IPv6 adres bramy może zostać otrzymany z komunikatów
+ <em>router solicitation</em> (RS) lub skonfigurowany ręcznie.
+ </p>
+ <p>
+ Za pomocą poleceń <code class="code-inline">netstat -r</code> dla
+ (systemy MS Windows) czy <code class="code-inline">ip route</code>
+ (dystrybucje Linuksa). Możemy wyświetlić tablicę routingu zapisaną
+ na systemie hosta.
+ </p>
+<pre class="code-inline">
+ xf0r3m@laptop-026253a/ ~/ ip route
+default via 192.168.8.1 dev enp0s31f6 proto dhcp src 192.168.8.133 metric 100
+192.168.8.0/24 dev enp0s31f6 proto kernel scope link src 192.168.8.133 metric 100
+<pre>
+ <h2 id="1.8.5.introductiontorouting">1.8.5. Wprowadzenie do routingu</h2>
+ <p>
+ Załóż czysto hipotetycznie, że chcemy przesłać pakiet do sieci obok,
+ co sie stanie? Taki pakiet jeśli osiągnie router, ponieważ nasz host
+ wysłał tę ramkę do bramy domyślnej, to router sprawdzi adres docelowy
+ i wzależności czy posiada trasę do tego hosta, to wyśle go na pierwszy
+ router w tej trasie, lub jeśli sieć docelowa jest wpięta do tego samego
+ routera zostanie przekazana na interfejs obsługjący tę sieć. Router
+ dokonuje tych decyzji opierając się o zapisaną w swojej pamięci tablicę
+ routingu.
+ </p>
+ <p>
+ W routerach możemy spotkać trzy rodzaje tras w ich tablicach.
+ </p>
+ <ul>
+ <li><strong>Podłączone bezpośrednio</strong>
+ (ang. <em>Directly Connected</em>) - te trasy są dodwane domyślnie
+ bazując na aktywnych interfejsach i powiązanych z nimi adresach.</li>
+ <li><strong>Zdalne</strong> (ang. <em>Remote</em>) - trasy
+ bez połączenia bezpośrednie (niepodłączone lokalnie), router nauczył
+ się ich albo przy użyciu dynamicznych protokółów routingu lub
+ zostały mu one zapisane ręcznie przez administratora
+ (trasy statyczne)</li>
+ <li><strong>Trasa domyślna</strong> - trasa wykorzystywana w momencie,
+ gdy nie ma innej pasującej do adresu docelowego.</li>
+ </ul>
+ <p>
+ Cechami tras statycznych są: potrzeba ręcznej konfiguracji, potrzeba
+ ręcznego dostosowania do zmienającej się topologii sieci. Trasy
+ statyczne mogą być dobrym wyborem dla małych sieci. Za pomocą tras
+ statycznych mimo wykorzystywania protokołów dynamicznych ustala się
+ bramy domyślne dla routerów.
+ </p>
+ <p>
+ W przypadku routingu dynamicznego, routery same odnajdują sieci,
+ aktualizują informacje, wybierają najlepsze ścieżki czy dostosowują się
+ do topologii. Dynamiczny routing może być wykorzystywany do
+ współdzielnia statycznej trasy bramy domyślnej.
+ </p>
+ <p>
+ W systemach Cisco IOS, szczególnie na routerach możemy zobaczyć dość
+ obszerną informacje podobną do tej przedstawionej na poniższym
+ przykładzie. Nie będzie ona tak obszerna jak w tym przypadku. Nie
+ mniej warto się jednak zapoznać z oznaczeniami poszczególnych tras.
+ </p>
+<pre class="code-block">
+route-views>show ip route
+Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
+ D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
+ N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
+ E1 - OSPF external type 1, E2 - OSPF external type 2
+ i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
+ ia - IS-IS inter area, * - candidate default, U - per-user static route
+ o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
+ a - application route
+ + - replicated route, % - next hop override, p - overrides from PfR
+
+Gateway of last resort is 128.223.51.1 to network 0.0.0.0
+
+S* 0.0.0.0/0 [1/0] via 128.223.51.1
+ 1.0.0.0/8 is variably subnetted, 3781 subnets, 17 masks
+B 1.0.0.0/24 [20/0] via 12.0.1.63, 12:59:24
+B 1.0.4.0/22 [20/0] via 114.31.199.16, 12:59:24
+B 1.0.5.0/24 [20/0] via 114.31.199.16, 12:59:24
+...
+</pre>
+ <p>
+ Zatem:
+ </p>
+ <ul>
+ <li><strong>L</strong> - podłączony bezpośrednio adres IP interfejsu.</li>
+ <li><strong>C</strong> - sieć podłączona bezpośrednio.</li>
+ <li><strong>S</strong> - trasa statyczna.</li>
+ <li><strong>O</strong> - protokół OSFP.</li>
+ <li><strong>D</strong> - protokół EIGRP.</li>
+ <li><strong>R</strong> - protokół RIP.</li>
+ <li><strong>B</strong> - protokół BGP.</li>
+ </ul>
+ <p>
+ Chcąc przypasować te oznaczenia do wspomniany wcześniej rodzajów wpisów
+ w tablicy routingu routera to:
+ </p>
+ <ul>
+ <li>Podłączone bezpośrednio (ang. <em>Directly Connected</em>) -
+ <strong>C</strong> i <strong>L</strong>.</li>
+ <li>Trasy zdalne (ang. <em>Remote Routes</em>) -
+ <strong>O</strong>, <strong>D</strong>, <strong>R</strong>
+ <strong>B</strong>.</li>
+ <li>Trasy domyślne (ang. <em>Default routes</em>) -
+ <strong>S*</strong>.</li>
+ </ul>
+ <h2 id="ch8summary">Podsumowanie</h2>
+ <p>
+ Tym rozdziałem rozpoczeliśmy omawianie warstwy sieciowej.
+ Poznaliśmy jej główny protokół jakim jest protokół IP oraz nagłówki
+ pakietów zarówno dla wersji 4 jak i 6. Dowiedzieliśmy się ja
+ działa trasowanie oraz jakie są jego rodzaje oraz charakterystyki
+ metody statycznej oraz dynamicznej.
+ </p>
<h1 id="1.9.adresresolution">1.9. Rozwiązywanie adresów</h1>
<p>
Chcąc wysłać jakieś informacje przez sieć, nasz komputer musi w jakiś