Compare commits
9 Commits
32282d3871
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 02a4e8cf5e | |||
| 7125acaf78 | |||
| 959f5973c4 | |||
| 8b4dbdcbc3 | |||
| a0a8418897 | |||
| ebb520038a | |||
| f8342db939 | |||
| 6696004072 | |||
| c6fb417c41 |
@@ -1,3 +1,19 @@
|
||||
# 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)
|
||||
|
||||
@@ -37,3 +53,36 @@ W bardziej skomplikowanym wariancie używa się wirtualizacji sprzętu – syste
|
||||
|
||||
__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.
|
||||
|
||||
+30
-6
@@ -1,3 +1,27 @@
|
||||
# Arytmetyka stało- i zmiennoprzecinkowa
|
||||
|
||||
__Liczby stałoprzecinkowe__
|
||||
W reprezentacji stałoprzecinkowej każdy bit ma zawsze taką samą wagę (zależącą od swojej pozycji) i co za tym idzie, pozycja przecinka jest ustalona z góry. Do kodowania liczb najczęściej wykorzystuje się system uzupełnieniowy do dwóch (U2), pozwalający zapisać zarówno liczby dodatnie, jak i ujemne – oraz czasem naturalny kod binarny (NB), kiedy obliczenia prowadzone są tylko na liczbach dodatnich. Zaletą arytmetyki stałoprzecinkowej są zawsze dokładne obliczenia (w granicach precyzji określanej przez wagę najmłodszej cyfry) oraz duża szybkość wykonywania działań, wadą jest stosunkowo niewielki zakres możliwych do zapisania wartości.
|
||||
|
||||
__Liczby zmiennoprzecinkowe__
|
||||
W reprezentacji zmiennoprzecinkowej liczby przechowywane są w postaci notacji wykładniczej:
|
||||
|
||||
X = S \* M \* 2 <sup>E</sup>
|
||||
|
||||
S – __znak__
|
||||
M – __mnożnik (mantysa)__
|
||||
E – __wykładnik__
|
||||
|
||||
Wagi poszczególnych bitów (i pozycja przecinka) zależą więc od wartości wykładnika i mogą się zmieniać. Taka reprezentacja pozwala zapisać liczby z bardzo dużego zakresu, które w reprezentacji stałoprzecinkowej wymagałyby stosunkowo dużej liczby bitów. Wadą arytmetyki zmiennoprzecinkowej jest wolniejsze wykonywanie operacji i mniejsza dokładność działań, wynikająca z błędów zaokrągleń.
|
||||
|
||||
Precyzja obliczeń zmiennoprzecinkowych zależy przede wszystkim od liczby bitów przeznaczonych na zapis liczby. Stosowane w informatyce formaty zapisu liczb zmiennoprzecinkowych są określone w standardzie __IEEE 754__. Definiuje on:
|
||||
- __liczby pojedynczej precyzji (float)__ – 32 bity: 1 bit znaku, 8 bitów wykładnika, 23 bity mnożnika
|
||||
- __liczby podwójnej precyzji (double)__ – 64 bity: 1 bit znaku, 11 bitów wykładnika, 52 bity mnożnika
|
||||
|
||||
Istnieją też niestandardowe formaty liczb zmiennoprzecinkowych, np. 80-bitowy format rozszerzonej precyzji, stosowany wewnętrznie w jednostkach zmiennoprzecinkowych (FPU) procesorów x86.
|
||||
|
||||
W obliczeniach zmiennoprzecinkowych może występować zjawisko __kumulacji błędów__, którego efektem są wyraźnie odbiegające od prawdziwych wyniki wielu wykonywanych kolejno działań arytmetycznych – zdarzały się nawet w historii przypadki katastrof rakiet kosmicznych, spowodowanych słabo jeszcze wtedy rozumianymi właściwościami arytmetyki zmiennoprzecinkowej. Z powodu zjawiska kumulacji błędów, arytmetyki zmiennoprzecinkowej nie powinno się używać między innymi w obliczeniach finansowych.
|
||||
|
||||
# Model TCP/IP
|
||||
Model TCP/IP to warstwowy model struktury protokołów komunikacyjnych w sieciach komputerowych, opracowany razem z odpowiadającym mu zestawem protokołów w latach 70. w agencji DARPA (Stany Zjednoczone); sam model jak i zestaw protokołów TCP/IP został zaprojektowany w otwartej architekturze i nie jest ograniczony żadnymi patentami ani prawami autorskimi.
|
||||
|
||||
@@ -16,12 +40,12 @@ Metoda śledzenia promieni (ang. _ray tracing_) służy do generowania fotoreali
|
||||
Zasada działania algorytmu śledzenia promieni jest następująca:
|
||||
1. Dla każdego piksela na ekranie z punktu, w którym znajduje się obserwator, wyprowadzany jest promień pierwotny, który przecina ten piksel.
|
||||
2. Jeżeli:
|
||||
- promień nie trafi na żaden obiekt na scenie – piksel przyjmuje kolor tła,
|
||||
- promień trafi w źródło światła – piksel przyjmuje kolor źródła,
|
||||
- promień trafi w obiekt – wyznaczany jest najbliższy punkt przecięcia z obiektem i dla niego:
|
||||
- obliczany jest kolor za pomocą jednego z modeli oświetlenia lokalnego (np. modelu Phonga),
|
||||
- ewentualne zacienienie (poprzez poprowadzenie pomocniczych promieni do źródeł światła i przeanalizowanie, czy przecinają inne obiekty)
|
||||
- kierunek odbicia promienia wtórnego, który następnie jest śledzony rekruncyjnie w taki sam sposób (jeżeli trafi w kolejny obiekt – jego oświetlenie lokalne jest mnożone przez współczynnik odbicia i dodawane do lokalnego oświetlenia poprzedniego obiektu)
|
||||
* promień nie trafi na żaden obiekt na scenie – piksel przyjmuje kolor tła,
|
||||
* promień trafi w źródło światła – piksel przyjmuje kolor źródła,
|
||||
* promień trafi w obiekt – wyznaczany jest najbliższy punkt przecięcia z obiektem i dla niego:
|
||||
* obliczany jest kolor za pomocą jednego z modeli oświetlenia lokalnego (np. modelu Phonga),
|
||||
* ewentualne zacienienie (poprzez poprowadzenie pomocniczych promieni do źródeł światła i przeanalizowanie, czy przecinają inne obiekty),
|
||||
* kierunek odbicia promienia wtórnego, który następnie jest śledzony rekruncyjnie w taki sam sposób (jeżeli trafi w kolejny obiekt – jego oświetlenie lokalne jest mnożone przez współczynnik odbicia i dodawane do lokalnego oświetlenia poprzedniego obiektu).
|
||||
3. Krok 2 jest powtarzany dopóki promień wtórny nie trafi w tło albo w źródło światła, lub dopóki nie zostanie osiągnięta określona głębokość rekurencji.
|
||||
|
||||
Podstawową wadą metody śledzenia promieni jest jej (wciąż) duża złożoność obliczeniowa, znacznie rosnąca wraz z liczbą obiektów na scenie lub źródeł światła – natomiast dzięki niezależnym obliczeniom dla każdego piksela, stosunkowo łatwo można ją zrównoleglić np. dzięki możliwościom współczesnych kart graficznych.
|
||||
|
||||
Reference in New Issue
Block a user