Opracowanie pytań na egzamin inżynierski
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

W4-INF-ISK.md 18KB

Protokoły rozległych sieci komputerowych

Rozległe sieci komputerowe to sieci zlokalizowane na dużym obszarze geograficznym (region, kraj, kontynent, cały świat), służące do łączenia ze sobą i przesyłania danych między wieloma sieciami lokalnymi. Protokoły stosowane w sieciach rozległych obejmują pierwsze 2 lub 3 warstwy modelu ISO/OSI (fizyczną, łącza danych i sieciową).

Podstawowy podział protokołów sieci rozległych wynika ze sposobu zestawiania połączenia (komutacji). Wyróżnia się:

  • komutację kanałów – gdzie każdemu połączeniu przydzielane są na wyłączność kolejne łącza między węzłem źródłowym a węzłem docelowym (zajmowane przez cały czas trwania połączenia), przez które następnie przesyłane są dane,
  • komutację pakietów – gdzie dane dzielone są na fragmenty (pakiety), które następnie przesyłane są przez wspólne łącza między kolejnymi węzłami sieci od źródła do celu; umożliwia to lepsze wykorzystanie łączy i łatwe omijanie uszkodzonych fragmentów sieci (jedna transmisja może się odbywać wieloma trasami) kosztem nieco większego opóźnienia transmisji, niż w przypadku komutacji kanałów,
  • komutację komórek – w zasadzie odmiana komutacji pakietów, w której dane dzieli się na komórki, w porównaniu z pakietami krótsze i posiadające zawsze taką samą długość (pakiety mają określoną tylko maksymalną długość); rozwiązanie opracowane z myślą o szybszym przełączaniu danych w węzłach sieci z zastosowaniem specjalizowanych układów cyfrowych (ASIC), obecnie straciło na znaczeniu z powodu wzrostu mocy obliczeniowej routerów i mniejszej elastyczności od komutacji pakietów.

Kilka istotniejszych protokołów sieci rozległych to:

  • PPP (Point-to-Point Protocol) – bazujący na komutacji kanałów protokół warstwy łącza danych, używany do zestawienia bezpośredniego połączenia i wymiany danych między dwoma węzłami sieci, może pracować bezpośrednio na interfejsach szeregowych lub być opakowywany w ramki innego protokołu warstwy 2 (PPPoE – PPP over Ethernet, PPPoA – PPP over ATM), obecnie często stosowany do transmisji danych na linii abonenckiej między siecią szkieletową operatora a urządzeniami klienta (między innymi NETIA i Orange wykorzystują PPPoE na łączach DSL) oraz do zestawiania wirtualnego połączenia w niektórych implementacjach sieci VPN (np. L2TP+IPSec),
  • MPLS (Multi-protocol Label Switching) – protokół wykorzystujący komutację pakietów, opracowany niejako w celu rozszerzenia sieci IP o narzędzia inżynierii ruchu (chociaż teoretycznie może współpracować z dowolnym protokołem warstwy 3), wraz z protokołem IP podstawa działania dzisiejszych sieci szkieletowych; idea działania sieci MPLS opiera się na przełączaniu etykiet, które identyfikują kolejny węzeł na trasie i są zastępowane nowymi przy każdym przeskoku – na wejściu do sieci MPLS pakiety są obudowywane za pomocą etykiet przez routery brzegowe LER (Label Edge Router), a w węzłach sieci routery wewnętrzne LSR (Label Switch Router) po odebraniu pakietu indeksują za pomocą jego etykiety tablicę, w której znajduje się kolejny węzeł na trasie i nowa etykieta – umożliwia to definiowanie różnych tras między tymi samymi punktami w sieci dla różnego rodzaju ruchu, dzięki czemu można np. rozmowy głosowe przesyłać szybszą trasą niż transfer plików, równoważąc obciążenie łączy,
  • X.25 / Frame Relay – jedne z pierwszych protokołów wykorzystujących komutację pakietów – protokół X.25 obejmuje warstwę fizyczną, łącza danych i sieciową, został opracowany w czasach gdy łącza w sieciach rozległych były bardzo zawodne (zawiera więc rozbudowane mechanizmy korekcji błędów, ale wprowadza około 15 ms opóźnienia na każdy węzeł, a jego maksymalna przepustowość wynosi tylko 2 Mb/s); Frame Relay jest jego unowocześnioną wersją obejmującą tylko warstwę fizyczną i łącza danych, zaprojektowaną pod kątem szybszej transmisji danych przez stabilne łącza,
  • ATM (Asynchronous Transfer Mode) – protokół bazujący na komutacji komórek, obejmujący warstwę fizyczną, łącza danych i sieciową, opracowany z myślą o stabilnych połączeniach z niskimi opóźnieniami; do transmisji danych wykorzystuje komórki o 5-bajtowym nagłówku i 48-bajtowym polu danych, wykorzystuje koncepcję wirtualnych ścieżek – trasowanie jest dokonywane tylko raz, na początku zestawiania połączenia.

Charakterystyka wybranej techniki wirtualizacji

(to jest oczywiście dość rozległe zagadnienie i sami możecie wybrać o czym dokładnie powiecie, tu spróbowałem zebrać trochę informacji o różnych odmianach wirtualizacji, tak żebyście mieli rozeznanie w temacie)

Wirtualizacja sprzętu
Istotą wirtualizacji sprzętu jest uruchamianie na jednym fizycznym komputerze (gospodarzu, ang. host) wielu maszyn wirtualnych (gości, ang. guest), działających jak oddzielne komputery i umożliwiających instalację różnych systemów operacyjnych.

Istnieją dwa rodzaje wirtualizacji sprzętu:

  • pełna wirtualizacja – wirtualizacja całego sprzętu wchodzącego w skład maszyny wirtualnej, dzięki czemu system operacyjny gościa pracuje tak samo, jak na fizycznej maszynie (z jego poziomu nie widać żadnej różnicy) i nie musi być modyfikowany do uruchamiania na maszynie wirtualnej,
  • parawirtualizacja – uruchamianie w wydzielonym środowisku gościa specjalnie zmodyfikowanej wersji systemu operacyjnego, tak by nie była konieczna wirtualizacja sprzętu, dzięki czemu system gościa może pracować wydajniej niż w przypadku pełnej wirtualizacji.

Oprogramowanie służące do tworzenia maszyn wirtualnych na maszynie gospodarza nazywa się hipernadzorcą (ang. hypervisor) lub menedżerem maszyn wirtualnych (ang. virtual machine monitor).

Wyróżniane są dwa rodzaje hipernadzorców:

  • hipernadzorca typu 1 – uruchamiany bezpośrednio na sprzęcie gospodarza i mający nad nim pełną kontrolę, umożliwiający uruchamianie systemu operacyjnego gościa w trybie parawirtualizacji lub pełnej wirtualizacji – przykłady: Xen, VMware ESX, Microsoft Hyper-V,
  • hipernadzorca typu 2 – uruchamiany jako program pod kontrolą systemu operacyjnego gospodarza, umożliwiający uruchamianie systemu operacyjnego gościa w trybie pełnej wirtualizacji jako jeden z procesów w systemie gospodarza – przykłady: VirtualBox, VMware Workstation, KVM.

W celu zwiększenia wydajności zwirtualizowanych systemów zostały opracowane technologie sprzętowego wspomagania wirtualizacji (w przypadku architektury x86: Intel VT-x, AMD-V). Pozwalają one hipernadzorcy obsługiwać sprzętowo część żądań systemu gościa zamiast ich przetwarzania programowego, co zmniejsza obciążenie maszyny gospodarza (i jest istotne przede wszystkim przy pełnej wirtualizacji).

Dodatkowo, współcześnie wiele hipernadzorców typu 2 obsługuje parawirtualizację części zasobów maszyny wirtualnej (np. urządzeń wejścia/wyjścia) przy pomocy sterowników instalowanych na systemie gościa – określa się to jako wirtualizację hybrydową, jest ona wykorzystywana między innymi przez VirtualBox i KVM. Wraz ze sprzętowym wspomaganiem wirtualizacji, wirtualizacja hybrydowa pozwala osiągać hipernadzorcom typu 2 wydajność zbliżoną do parawirtualizacji (szczególnie: KVM i wirtualizacja Linuksów).

Wirtualizacja na poziomie systemu operacyjnego (konteneryzacja)
Konteneryzacja polega na uruchamianiu w obrębie jednego systemu operacyjnego różnych aplikacji w wydzielonych, izolowanych przestrzeniach użytkownika (nazywanych kontenerami). Każdy kontener posiada swój system plików (zawierający wszystkie zależności potrzebne do uruchomienia aplikacji), współdzieli natomiast z systemem gospodarza jądro systemu operacyjnego. Dzięki temu możliwe jest zapewnienie różnym programom oddzielnych środowisk roboczych bez konieczności wirtualizacji systemu operacyjnego i związanych z tym spadków wydajności. Przykłady: Docker (Linux, obecnie najpowszechniejszy mechanizm konteneryzacji), wbudowane mechanizmy Linuksa (LXC), Solarisa (zones), FreeBSD (jails).

Wirtualizacja sieci
Wyróżnia się dwa podstawowe rodzaje wirtualizacji sieci:

  • wewnętrzną – wirtualizacja interfejsów sieciowych, przełączników i innych urządzeń sieciowych w celu zapewnienia łączności maszyn wirtualnych (lub kontenerów) w zależności od potrzeby między sobą nawzajem, systemem gospodarza lub siecią zewnętrzną,
  • zewnętrzną – logiczny podział sieci lokalnych na podsieci, niezależnie od fizycznej struktury sieci (VLANy)

Wirtualizacja serwerów
Wykorzystanie różnych rodzajów wirtualizacji (np. wirtualizacji sprzętu lub konteneryzacji i wirtualizacji sieci) do uruchamiania na jednej fizycznej maszynie wielu niezależnych serwerów, mogących posiadać różnych administratorów. Umożliwia to często optymalniejsze wykorzystanie zasobów fizycznych serwerów i ułatwia utrzymanie sprzętu w porównaniu z używaniem oddzielnych fizycznych maszyn dla każdego z serwerów.

Wirtualizacja pulpitu
Wykorzystanie różnych rodzajów wirtualizacji w celu oddzielenia używanego przez użytkownika systemu operacyjnego od sprzętu, przy którym użytkownik pracuje. Najczęściej system operacyjny jest uruchomiony na serwerze, a użytkownicy łączą się z nim przez sieć (zwykle za pomocą cienkich klientów) – dzięki temu użytkownik ma dostępne zawsze to samo środowisko pracy niezależnie od stanowiska, ułatwia to też administrację systemami użytkowników.

W prostszym wariancie może być wykorzystana wirtualizacja sesji – wtedy wielu użytkowników używa jednego systemu operacyjnego uruchomionego na odpowiednio wydajnym serwerze – przykłady: LTSP (projekt społecznościowy), Sun Ray (Oracle, wycofywany).
W bardziej skomplikowanym wariancie używa się wirtualizacji sprzętu – system operacyjny każdego z użytkowników jest uruchomiony w maszynie wirtualnej na serwerze – przykłady: VMware Horizon, Citrix XenDesktop.

Wirtualne sieci prywatne (VPN)
Wykorzystanie wirtualnych szyfrowanych połączeń punkt-punkt (z własną adresacją IP, rotuingiem, itp.) zestawianych przez publiczne łącza, w celu łączenia odległych sieci lokalnych bezpiecznym kanałem bez konieczności dzierżawienia własnych łącz od operatorów (co jest kosztowne) lub w celu zdalnego dostępu do sieci wewnętrznej z dowolnego miejsca w internecie (np. do sieci firmowej z domu pracownika) – przykładowe protokoły: OpenVPN, IKEv2+IPSec, Cisco IPSec.

Protokoły routingu

Zadaniem protokołów routingu jest dynamiczna wymiana między routerami informacji o podłączonych do nich sieciach oraz wyznaczanie na podstawie zebranych w ten sposób informacji następnego węzła na trasie do odległych sieci (standardowo router może trasować tylko pakiety, których host docelowy znajduje się w podłączonych do niego sieciach) – dzięki czemu nie jest konieczna statyczna konfiguracja tras, co w dużych sieciach byłoby bardzo trudne i uciążliwe.

W protokołach routingu stosuje się pojęcie metryki, czyli wartości określającej, która z dostępnych tras jest lepsza. Może ona być wyznaczana na podstawie wielu parametrów – przepustowość łącza, liczba przeskoków, opóźnienie, itp.

Podstawowym podziałem protokołów routingu są następujące dwie grupy:

  • protokoły wektora odległości – w ich przypadku rozgłaszana sąsiadom jest kopia całej tablicy routingu (razem z metrykami i informacjami otrzymanymi od innych routerów), pojedynczy router zna tylko odległość swoich sąsiadów od sieci docelowej (różnie definiowaną), nie posiada natomiast informacji o całej trasie – następny węzeł wybierany jest na podstawie lepszej metryki, jednak ostatecznie wybrana w ten sposób trasa niekoniecznie musi się okazać najlepszą,
  • protokoły stanu łącza – w ich przypadku rozgłaszane wszystkim routerom (nie tylko sąsiadom) są informacje o podłączonych sieciach i ich metrykach, każdy router przechowuje informacje o całej sieci w formie grafu i wylicza na ich podstawie najlepszą drogę do wszystkich pozostałych routerów, najczęściej za pomocą algorytmu Dijkstry (Shortest Path First); ze względu na zasadę działania protokoły stanu łącza w porównaniu z protokołami wektora odległości wymagają od routera większej mocy obliczeniowej i większej ilości pamięci oraz mocniej obciążają łącza sieciowe (w momencie zbierania informacji o topologii sieci).

Protokoły wewnętrzne
Wewnętrzne protokoły routingu wykorzystuje się do wyznaczania tras wewnątrz systemu autonomicznego – czyli w obrębie sieci administrowanych przez jednego zarządcę. Do najbardziej znanych należą:

  • RIP (Routing Information Protocol) – protokół wektora odległości, jeden z pierwszych protokołów routingu dynamicznego, wykorzystujący jako metrykę liczbę przeskoków; w celu zabezpieczenia przed powstawaniem pętli maksymalna liczba przeskoków jest ograniczona do 15 (co jednocześnie określa maksymalną wielkość sieci obsługiwaną za jego pomocą); wersje RIPv1 i RIPv2 są przeznaczone dla sieci IPv4, wersja RIPng dla sieci IPv6,
  • OSPF (Open Shortest Path First) – najczęściej obecnie stosowany protokół stanu łącza, dostosowany do pracy w dużych sieciach, aby zapewnić skalowalność wykorzystuje hierarchiczny podział sieci na obszary – w obrębie jednego obszaru każdy router zna pełną topologię sieci, natomiast routery brzegowe obszarów wymieniają się tylko trasami (jak w protokołach wektora odległości), nadrzędny obszar zerowy zapobiega powstawaniu pętli, do komunikacji między routerami wykorzystywany jest protokół IP (OSPFv2 – IPv4, OSPFv3 – IPv6); protokół OSPF jest używany w sieci W4,
  • IGRP (Interior Gateway Routing Protocol) – protokół wektora odległości opracowany przez Cisco, w porównaniu z protokołem RIP wykorzystujący bardziej rozbudowane sposoby wyznaczania metryki i obsługujący większą maksymalną liczbę przeskoków (do 255),
  • EIGRP (Enhanced Interior Gateway Routing Protocol) – opracowany przez Cisco następca protokołu IGRP, jest protokołem hybrydowym, przesyłającym i wykorzystującym zarówno informacje o sąsiedztwie, jak i o stanie łącza.

Protokoły zewnętrzne
Protokoły zewnętrzne służą do wyznaczania tras między systemami autonomicznymi. Najistotniejszym jest BGP (Border Gateway Protocol), protokół wektora ścieżki stanowiący obecnie podstawę routingu w internecie. Potokół BGP używa numerów systemów autonomicznych, przydzielanych przez odpowiednie organizacje podobnie jak adresy IP. Dane między routerami są wymieniane za pomocą protokołu TCP, do wyboru tras nie są stosowane metryki, tylko atrybuty poszczególnych systemów autonomicznych i algorytm wyboru (który może być implementowany różnie przez różnych producentów routerów). Protokół BGP standardowo jest używany w sieciach posiadających styki z co najmniej 2 dostawcami internetowymi, pozwala na pełną redundancję połączenia z internetem.

Zasady projektowania bezpiecznych systemów i sieci komputerowych

(zagadnienie jest bardzo rozległe, samo bezpieczeństwo można zapewnić na różnych poziomach, tutaj wymienię kilka najistotniejszych według mnie kwestii)

  • możliwie prosta architektura (tzw. reguła KISS) – tak aby zmniejszyć liczbę punktów, w których w ogóle może jakaś podatność wystąpić (i których zabezpieczenie trzeba wziąć pod uwagę),
  • fizyczne bezpieczeństwo infrastruktury – ochrona przed wstępem niepowołanych osób do pomieszczeń z serwerami i urządzeniami sieciowymi, zamykanie szaf teletechnicznych (tzw. szaf rack) na klucz,
  • osobna sieć administracyjna – wydzielenie dostępu do konfiguracji urządzeń sieciowych (lub również serwerów) do osobnej sieci, dodatkowo chronionej przed nieautoryzowanym dostępem,
  • zabezpieczenie przed podłączeniem do sieci przypadkowych urządzeń – w zależności od potrzeb: w sieciach przewodowych – wyłączanie nieużywanych portów na przełącznikach sieciowych, automatyczne blokowanie nieznanych adresów MAC; w sieciach bezprzewodowych – stosowanie bezpiecznych obliczeniowo algorytmów szyfrowania, ze wspólnym kluczem (WPA2-PSK) lub z indywidualnymi danymi autoryzacyjnymi dla każdego użytkownika weryfikowanymi przez serwer RADIUS (WPA2 Enterprise, np. jak w eduroam),
  • filtrowanie ruchu sieciowego – stosowanie zapór sieciowych (firewalli) i odpowiednich reguł, blokowanie nieużywanych portów TCP/UDP, wydzielanie serwerów do stref zdemilitaryzowanych (DMZ),
  • szyfrowanie połączeń – zabezpieczenie transferu wrażliwych danych – np. haseł użytkowników – przez stosowanie odpowiednich protokołów (HTTPS, SSH, różne implementacje sieci VPN, itp.),
  • rozsądna polityka haseł – stosowanie takich haseł, które w zależności od specyfiki miejsca pracy zostaną uznane za bezpieczne (ważne! – nie zawsze długie hasło = bezpieczne hasło, np. gdy stosowanie zbyt skomplikowanych haseł kończy się ich napisaniem na karteczce na stanowisku użytkownika),
  • przechowywanie haseł w bazach w bezpiecznym formacie – najczęściej hash hasła, z wykorzystaniem algorytmu uznawanego za bezpieczny (tzn. dla którego nie udowodniono kolizji),
  • bezpieczeństwo zdalnego dostępu do serwerów – np. stosowanie klucza publicznego i prywatnego zamiast hasła w celu autoryzacji użytkownika przy połączeniu SSH.