Opracowanie zagadnień Egzamin Dyplomowy 2010 – isk.eka.pwr

Transkrypt

Opracowanie zagadnień Egzamin Dyplomowy 2010 – isk.eka.pwr
Opracowanie zagadnień
Egzamin Dyplomowy 2010 – isk.eka.pwr
1 Zagadnienia egzaminacyjne
2
2 Opracowanie zagadnień
2.1 Pytania kierunkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Paradygmaty programowania obiektowego . . . . . . . . . . . . . .
2.1.2 Arytmetyka stało- i zmiennoprzecinkowa . . . . . . . . . . . . . . .
2.1.3 Normalizacja schematu bazy danych . . . . . . . . . . . . . . . . .
2.1.4 Model warstwowy TCP/IP . . . . . . . . . . . . . . . . . . . . . . .
2.1.5 Ocena złożoności algorytmów . . . . . . . . . . . . . . . . . . . . .
2.1.6 Język UML w projektowanie oprogramowania . . . . . . . . . . . .
2.1.7 Generowanie realistycznych obrazów scen 3-D za pomocą metody
śledzenia promieni . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.8 Mechanizmy systemu operacyjnego wspomagające synchronizację
procesów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.9 Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA . .
2.1.10 Optyczne nośniki informacji . . . . . . . . . . . . . . . . . . . . . .
2.2 Pytania specjalnościowe . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Zasady projektowania sieci komputerowych . . . . . . . . . . . . . .
2.2.2 Protokoły rozległych sieci komputerowych . . . . . . . . . . . . . .
2.2.3 Metody tworzenie harmonogramów w projekcie informatycznym . .
2.2.4 Urządzenia sieci komputerowych . . . . . . . . . . . . . . . . . . . .
2.2.5 Charakterystyka wybranego standardu z grupy 802.11 lub 802.15x .
2.2.6 Architektura typu A/C i A/I/C w aplikacjach mobilnych i internetowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.7 Współczesne algorytmy kryptograficzne . . . . . . . . . . . . . . . .
2.2.8 Styk kanału binarnego . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.9 Zasady projektowania bezpiecznych systemów i sieci komputerowych
2.2.10 Protokoły routingu . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
4
5
6
6
6
Wrocław, 2010 r.
7
8
8
9
10
10
10
12
12
12
12
13
14
14
15
1
Zagadnienia egzaminacyjne
Pytania kierunkowe:
1. Paradygmaty programowania obiektowego.
2. Arytmetyka stało- i zmiennoprzecinkowa.
3. Normalizacja schematu bazy danych.
4. Model warstwowy TCP/IP.
5. Ocena złożoności algorytmów.
6. Język UML w projektowaniu oprogramowania.
7. Generowanie realistycznych scen 3D za pomocą metody śledzenia promieni.
8. Mechanizmy systemu operacyjnego wspomagające synchronizację procesów.
9. Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA.
10. Optyczne nośniki informacji.
Pytania specjalnościowe:
1. Zasady projektowanie sieci komputerowych.
2. Protokoły rozległych sieci komputerowych.
3. Metody tworzenia harmonogramów w projekcie informatycznym.
4. Urządzenia sieci komputerowych.
5. Charakterystyka wybranego standardu z grupy 802.11 lub 802.15x.
6. Architektura typu A/C i A/I/C w aplikacjach mobilnych i internetowych.
7. Współczesne algorytmy kryptograficzne.
8. Styk kanału binarnego.
9. Zasady projektowania bezpiecznych systemów i sieci komputerowych.
10. Protokołu routingu.
2
2
2.1
2.1.1
Opracowanie zagadnień
Pytania kierunkowe
Paradygmaty programowania obiektowego
Programowanie obiektowe zakładała, że program definiuje się za pomocą obiektów, czyli
elementów łączących dane, stan z zachowaniem i działaniami na tych danych. Obiekty
te mogą komunikować się ze sobą – w ten sposób tworzony jest kompletny, działający
program.
Zalożenia programowania obiektowego:
hermetyzacja (inaczej enkapsulacja) udostępnianie programiście tylko tych części
obiektu, które są mu faktycznie potrzebne. Nie ma on dostępu do wewnętrznych
pól i metod obiektu
polimorfizm język, kompilator, „wiedzą” na czym faktycznie pracują, nawet jeśli zadeklarowane jest to jako ogólny, abstrakcyjny typ; przykładowo – jeśli zmiennej,
która określona jest ogólnie jako figura-geometryczna przypiszemy jakiś kwadrat,
to metoda obliczająca pole figury określonej przez tę zmienną odnosić się będzie
do kwadratu, a nie ogólnie do figury. Jeśli następnie tej samej figurze przypiszemy
jakieś koło, to obliczając jej pole, wykorzystany zostanie wzór na pole koła. Brak
polimorfizmu powodowałby, że program nie miałby informacji, czy dana figura jest
w istocie kwadratem czy kołem – dla niego zawsze byłaby to, po prostu,
figura-geometryczna
dziedziczenie obiekty mogą tworzyć hierarchiczną strukturę, w której najbardziej ogólne
operacje przyporządkowywane są najbardziej ogólnym typom obiektów. Jeśli stworzymy klasę napis, w której zaprogramowana będzie metodą obliczająca jego długość, to w klasie, która będzie po nim dziedziczyć – np. klasie tytuł – nie ma
potrzeby ponownego określania, jak poznać długość tesktu
abstrakcja(?) pewne typy mogą istnieć na wysokim poziomie abstrakcji, jak wspomniana wcześniej figura-geometryczna. Nie da się określić wzoru na pole dowolnej figury geometycznej; nie można stworzyć obiektu, który byłby tylko figurą
-geometryczną. Jest to pojęcie zbyt ogólne, abstrakcyjne, tak samo jak np. zbiór,
graf, lista, jednak można stwierdzić, że klasa zbiór posiada metodę moc-zbioru,
gdyż jest to własciwość każdego, dowolnego zbioru (ale sposób jej obliczania może
zależeć już od jego cech).
3
2.1.2
Arytmetyka stało- i zmiennoprzecinkowa
Arytmetyka stałoprzecinkowa Liczba ma niezmienną, stałą, ilość miejsc po przecinku. Pozycja każdej cyfry ściśle determinuje wartość, jaką wnosi ona do liczby.
Sposoby zapisu liczby w arytmetyce stałoprzecinkowej (tu na przykładzie systemu binarnego, ale jest to też właściwe odpowiednio dla innych systemów):
NKB (naturalny kod binarny) – cyfry mają wagi wynikające jedynie z ich pozycji względem przecinka,
ZM (znak-moduł) – pierwszy bit oznacza znak liczby (0 oznacza +, 1 oznacza -), reszta
jak w NKB,
U2 (kod uzupełnień do dwóch) – pierwszy bit ma taką wagę, jaka wynikałaby z pozycji
w NKB, ale bierze się ją jako ujemną,
U1 (kod uzupełnień do jedności) – pierwszy bit oznacza znak (jak w ZM), reszta jak
w NKB, jeśli +; zanegowany NKB, jeśli -,
spolaryzowany – aby uzyskać wartość liczby zapisanej tym sposobem, od wartości potraktowanej jako NKB odejmuje się 2n − 1, gdzie n oznacza wykładnik wagi cyfry
stojącej na najbardziej znaczącej pozycji
np. jeśli liczbę zapisujemy na ośmiu bitach b7 b6 b5 b4 b3 b2 b1 b0 , to „wartość polaryzacji” (;-)) wynosić będzie B = 2n − 1 = 27 − 1 = 128 − 1 = 1.
Arytmetyka stałoprzecinkowa jest łatwa w implementacji na prostych procesorach –
wynika to z tego, że może ona zostać zrealizowana za pomocą operacji całkowitoliczbowych. Dzięki temu można używać ułamków (w ogranicznym zakresie i precyzji) na tych
procesorach i w tych układach arytmetycznych, które nie mają możliwości używania „dedykowanej” arytmetyki zmiennoprzecinkowej.
Arytmetyka zmiennoprzecinkowa Tutaj liczba nie ma ściśle określonej lokalizacji przecinka oddzielającego część całkowitą od ułamkowej. Wartość liczby określona
przez trzy elementy (zakładamy, że podstawą systemu jest 2 i stosujemy reprezentację
komputerową):
• znak S ∈ {0, 1}, gdzie 0 oznacza znak +, a 1 oznacza znak -; zawsze jest to jeden
bit,
• wykładnik E, o określonym zakresie, zapisywany jako liczba całkowite w kodzie
spolaryzowanym, ma dwie wartości specjalne:
– same zera – wtedy liczba określona jest jako zdenormalizowana,
4
– same jedynki – wtedy liczba jest określana jako NaN (Not A Number ), która
jest wynikiem niedozwolnych operacji (np. pierwiastek kwadratowy z liczby
ujemnej); nieskończoność też traktowana jest jako NaN (gdy M = 0).
• mantysę M , też o określonej liczbie bitów, fizycznie nie zapisuje się pierwszego bitu
i jest on określany na podstawie wykładnika:
– jest on równy 1, jeśli liczba jest znormalizowana,
– jest on równy 0, jeśli liczba nie jest znormalizowana
zgodnie ze wzorem:
x = S · 2E · M
Powszechnie, zgodnie ze standardem IEEE 754 stosuje się dwie∗ reprezentacje:
długość słowa (bity)
wykładnik (bity)
mantysa (bity)
32
8
23
64
11
52
80
15
64
float
double
long double
∗
Należy pamiętać, że podczas wykonywania działań zmiennoprzecinkowych może wystąpić niedomiar (wynik poniżej minimalnej wartości znormalizowanej, wtedy liczbe zapisuje się w postaci zdenormalizowanej) lub nadmiar (powyżej maksymalnej wartości –
wtedy zwraca się ±∞).
Wykonywanie działań w arytmetyce zmiennoprzecinkowej wymaga specjalnej jednostki
procesora albo programowej implementacji (co jest rozwiązaniem zdecydowanie mniej
wydajnym).
2.1.3
Normalizacja schematu bazy danych
Normalizacja bazy danych jest procesem mającym na celu eliminację powtarzających się danych.
1NF każde pole wiersza musi być atomowe, np. adres „Wrocław, Plan Grunwaldzki 23”
nie jest atomowe, bo można je rozdzielić na składowe: miasto, ulica, numer.
każdy atrybyt niekluczowy jest funkcyjnie zależny od klucza głównego
2NF każdy atrybut niekluczowy jest w pełni zależny od klucza głównego
3NF każda atrybut nienależący do klucza nie może być zależny od innej kolumny nienależącej do klucza, mówiąc prościej – nie mogą występować zależności przechodnie
pomiędzy atrybutami niekluczowymi
Normalizacja bazy danych powoduje, że przestaje ona być redundantna (nadmiarowość
informacji) i unikamy anomalii modyfikacji i usuwania.
∗
niektóre źródła podają, że trzy...
5
2.1.4
Model warstwowy TCP/IP
Oddzielenie funkcjonalności od siebie. Warstwy są od siebie niezależne. I tylko ten sam rodzaj warstwy się rozumie (np. warstwa transportowa rozumie tylko warstwę transportową
na drugim urządzeniu). Aby dane wyszły „na zewnątrz” muszą przejść przez wszystkie
warstwy niższe). Jeśli dane idą w drugą stronę (urządzenie je odbiera), to zanim dane
dotrą do warstwy docelowej, przechodzą przez niższe warstwy.
dostępu do sieci (fizyczna, łącza danych) dostep do nośnika, połączenia punkt-punkt,
sieciowa/internetu (sieciowa) trasy pomiędzy węzłami sieci,
transportowa kontrola połączenia, gwarantacja poprawności, kierowanie danych do poszczegółnych aplikacji,
aplikacji (sesji, prezentacji, aplikacji) nawiązywanie połączeń, kodowanie, kompresja, inferfejs użytkownika
2.1.5
Ocena złożoności algorytmów
Złożoność można rozpatrywać w kontekście:
czasowym – tzn. jak zlożoność algorytmu wpływa na czas jego wykonania,
pamięciowa – jak złożoność algorytmu wpływa na jego „pamięciożerność”
np. QuickSort – średnia O(n log n), pesymistyczna O(n2 ). Można jeszcze mówić o optymistycznej – w przypadku QS wynosi ona też, podobnie jak dla średniej, O(n log n), ale ma
ona mniejszy współczynnik „przed” n.
Złożoność rozpatruje się zwykle względem rozmiaru instancji problemu, jaka została
dostarczona do algorytmu. Czasami uwzględnia się parametry pracy algorytmu (np. jego
dokładność, wielkości zbiorów do jakich będą przyporządkowane elementy instancji).
Do opisu złożności algorytmów stosuje sie zazwyczaj notację tzw. „dużego O”. Najproście można powiedzieć, że:
f (n) = O (g(n))
jeśli:
lim
n→∞
2.1.6
f (n)
<∞
g(n)
Język UML w projektowanie oprogramowania
„Język” modelowania graficznego służący do projektowania, głównie, oprogramowania.
Można w nim wyrażać, co ma robić oprogromowanie, składniki, z jakich zbudowane będzie
6
oprogramowanie, zależności pomiędzy nimi, sposoby komunikacji. Jest niezależny od docelowego języka, w jakim tworzone będzie oprogramowanie. Pozwala on też na wygodne
i jednoznaczne komunikowanie się ze sobą członków zespołu programistycznego.
Diagramy:
1. przypadków użycia – jakie funkcjonalności ma zawierać program oraz zależności pomiędzy nimi (który od którego jest zależny, który jest podelementem którego). Może zawierać również informacje, gdzie na tle oprogramowiania znajduje się
jego użytkownik, z którymi modułami, elementami może się komunikać, etc.
2. klas – w przypadku programownia obiektowego: prezentuje klasy obiektów, jakie
będą wykorzystywane w programie oraz zależności (dziedziczenie, powiązania) pomiędzy nimi.
3. sekwencji – sposób komunikacji pomiędzy obiektami, z zachowaniem kolejności
(chronologii) owej komunikacji,
4. aktywności – podobne do schematu blokowego, jak realizowany jest dany proces,
bez uwzględnianie, jakie obiekty w tym uczestniczą; po prostu: co się robi i w jakich
krokach
Ciekawą rzeczą jest to, że UML pozwala na automatyzację pisania oprogramownia.
Przykładowo: na podstawie diagramu klas można wygenerować realne szablony klas w wybranym języku programowania.
2.1.7
Generowanie realistycznych obrazów scen 3-D za pomocą metody śledzenia promieni
Kroki algorytmu:
1. Przez każdy punkt ekranu przeprowadza się promień pierwotny, a potem śledzi się,
jak on biegnie, gdzie się odbija. Promienie odbite nazywa się wtórnymi. Przebieg
promienia zapamiętuje się w postaci grafu (drzewa).
Śledzenie zostaje zakończone, jeśli:
• promień nie trafia w żadnen obiekt na scenie,
• następuje ostatnie odbicie, a potem już nie ma w co trafić,
• promień trafia w obiekt rozpraszający światło,
• promieć trafia w obiekt, w którym następuje całkowite wewn. odbicie
2. Dla każdego węzła drzewa wyznacza się oświetlenie lokalne.
3. Przechodząc od liści drzewa, dodając kolejne wartości oświetlenia lokalnego,
ustala się wartość oświetlenia, jakie ma zostać nadane pikselowi wyświetlanemu
na ekranie.
7
W tej metodzie małe obiekty mogą być niepoprawnie wyświetlane. tak samo obiekty
o ostrych krawędziach. Aby temu zapobiec zastępuje się jeden promień wiązką promieni,
ale „płaci się” za to zwiększoną złożonością obliczeniową algorytmu.
2.1.8
Mechanizmy systemu operacyjnego wspomagające synchronizację procesów
Ze względu na korzystanie z tych samych zasobów i komunikację pomiędzy sobą, procesy
muszą obsługiwać mechanizmy synchronizacji – czyli działać tak, aby sobie na łby (zasoby)
nie powchodzić i móc pokojowo współpracować.
Wyróżniamy:
• semafory – jest to mechanizm powodujący, że procesy z nich korzystające, mogą
blokować wejście do określonych bloków kodu. Chronić się można w ten sposób
np. przed korzystaniem z jeszcze niezainicjowanych danych, niekorzystą zmianą newralgicznych danych, etc.
Chociaż z semaforami jest ten problem, że nie musi być wcale mechanizm systemu
operacyjnego – można sobie je samemu zrobić.
• muteksy – rodzaj blokady, którą może uzyskać tylko jeden wątek; do realizacji sekcji
krytycznych
• sekcje krytyczne – bloki kodu, które muszą być wykonane w całości przez tylko jeden
wątek, wszystkie inne wątki muszą w tym momencie czekać, aż wykonywanie sekcji
krytycznej się skończy
• zmienne warunkowe – „mądrzejsze semafory”, regulują wykonywanie procesów w zależności od innych procesów, za pomocą zmiennych warunkowych procesy mogą się
komunikować, sygnalizować wykonanie danych operacji
Należy pamiętać, by tak projektować aplikacje, systemy wieloprocesowe, aby mechanizmy synchronizacji nie powodowały blokowania się procesów.
2.1.9
Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA
Tego typu układy są zapisywalne – tzn. można programować wewnętrzną strukturę połączeń logicznych. Najlepiej stosować je dla rozwiązań dedykowanych, w których zastosowanie normalnego mikroprocesora jest zbyt kosztowne lub po prostu jest działaniem
w stylu „karabin na muchę”. Drugim zastosowaniem jest tworzenie prototypów układów
logicznych, gdzie możliwość programowania pozwala na łatwiejsze testostowanie i ułatwienie procesu projektowania. Tak samo koszty można obniżyć przez zakup np. 10 układów
8
CPLD, z których każdy będzie realizował inną funkcję, a nie kupowanie 10 osobnych, jednostkowo droższych, pojedynczych układów. Układy programowalne przydają się również
w urządzeniach, w których przewiduje się możliwości „upgrade’ów”.
SPLD Simple Programmable Logic Device Wśród tych najprostszych mamy układy,
w których są całe matryce bramek logicznych AND i OR, czasami też mamy przerzutnik. Programowanie układu polega na określaniu, które jego wejścia pójda do bramek
(przerzutników, też), a które – nie. Wyróżnić można 3 typy:
• PAL Programmable Array Logic, gdzie programować można tylko bramki AND, OR
są wbite na stałe,
• PLE Programmable Logic Element, gdzie programuje się bramki OR, a AND-y są
na stałe,
• PLA Programmable Logic Array, gdzie można programować i to, i to.
CPLD Complex Programmable Logic Device Układy, które składają się z bloków PAL,
które połączone są osobną hierarchiczną, logiką.
FPGA Field Programmable Gate Array Najbardziej złożone, w ogóle bardzo duże programowalne układy logiczne, których budowa jest o wiele bardziej skomplikowana niż
CPLD – np. ciężko tam znaleźć pojedynczą bramkę logiczną. Też zawierają hierarchiczne,
programowalne struktury bloków realizujących funkcje logiczne, zawierają one też przerzutniki, multipleksery. Charakterystyczną cechą FPGA jest to, że można znaleźć w nich
gotowe elementy – takie jak np. sumatory, układy mnożące, liczniki.
Stopień złożenie układów FPGA pozwala na wpisywanie do nich cały mikroprocesorów
(do CPLD też można, ale naprawdę proste).
Programowanie jest o wiele bardziej skomplikowane, bo należy uwzględniać raz, że stopień złożenia poszczególnych bloków, jak też wielkość układów i idące za tym znaczące
opóźnienia.
2.1.10
Optyczne nośniki informacji
• płyty CD, DVD, BluRay,
• światłowody,
• IRDA
Płyty – wiadomo ;).
Światłowody – było w tym semestrze, więc też wiadomo... ;).
IRDA (podczerwień) – też optyczny nośnik informacji. Ale nie jest praktyczny w użyciu, bo trzeba ładnie trafić źródłem w detektor.
9
2.2
2.2.1
Pytania specjalnościowe
Zasady projektowania sieci komputerowych
Sieć musi spełniać kilka następujących zasad:
• być funkcjonalna – czyli można zrobić to, co się planowało, a nie, że ze wszystkim
jest problem,
• zapewniać skalowalność – możliwość rozbudowy,
• być odpowiednią do potrzeb użytkowników,
• podczas projektowania należy posługiwać się raczej nowymi technologiami, aby nie
było problemów w przyszłości podczas rozbudowy, czy wymiany elementów sieci,
• prosta możliwość zarządzania,
• dokładna dokumentacja
Etapy i elementy projektowania sieci (nie musi to być dokładnie tak, jak poniżej – mogą
być trochę inne reguły):
1. Inwentaryzacja,
2. Poznanie i analiza potrzeb użytkownika,
3. Wynikające z analizy założenia projektowe,
4. Projekt sieci:
(a) Projekt logiczny sieci,
(b) Projekt okablowania (poziome – użytkownik punkt dystrybucyjny, pionowe –
pomiędzy punktami dystrybucyjnymi),
(c) Konfiguracja adresacji,
(d) Podłączenie do Internetu,
(e) Bezpieczeństwo i niezawodność sieci,
(f) Kosztorys
2.2.2
Protokoły rozległych sieci komputerowych
HDLC bitowo zorientowany protokół warstwy łącza danych, używany do transmisji punktpunkt, jak i jeden-do-wielu, w sieciach z komutacją pakietów. Charakterystyczne jest
to, że stacja może pracować w jednym z trzech trybów:
• stacja primary – może inicjować transmisję ze stacją secondary, kontroluje ją,
może utrzymywać wiele sesji ze stacjami podrzędnymi
10
• stacja secondary – wykonuje polecenia stacji nadrzędnej, utrzymuje tylko jedną
sesję
• stacja uniwersalna – taki mix dwóch powyżej, może utrzymywać tylko jedną
sesję
Podczas transmisji przesyłane są ramki o stałej strukturze:
+--------+--------+--------+---------------+----------------+--------+
| FLAGA
| ADRES
| KONTR. |
|
FCS
|
|
| 8 / 16 | (zmienna dł.) |
16
8
8
INFORMACJE
| FLAGA
|
|
|
8
+--------+--------+--------+---------------+----------------+--------+
X.25 Protokół połączeniowy, łączycy węzły sieci rozległych, z komutacją pakietów: DCE
Data Circuit-Terminating Equipment – wewnętrzne węzły sieci rozległej, DTE Data
Terminal Equipment – system komputerowy użytkownika. Protokół X.25 definiuje
tzw. połączenie wirtualne – czyli mamy kilka połączeń w jednym fizycznym kanale,
które postrzegane są tak, jakby naprawdę istniało kilka kabli. ;) Wśród połączeń
wirtualnych wyróżnia się:
• PVC – czyli stałe połączenie wirtualne
• SVC – tymczasowe połączenie wirtualne
Protokół ten ma bardzo rozbudowane mechanizmy kontroli błędów (np. potwierdzanie każdej ramki), stąd nadal jest używany tam, gdzie wymaga się pewności transmisji kosztem prędkości (bankomaty, bankowość ogólnie, medycyna, monitoring ważnych danych i zasobów). Aktualnie maksymalna prędkość uzyskiwana przy pomocy
tego protokołu to 2 Mb/s.
Frame Relay następca X.25, posiada prostsze mechanizmy kontroli poprawności,
przez co transmisja jest o wiele szybsza niż w X.25. Reszta ogólnie tak, jak w X.25.
Maksymalna prędkość transmisji to 45 Mb/s.
ATM protokół połączeń w sieciach rozległych, wykorzystuje komutacje komórek. Dane
przesyłane są w małych małych porcjach: nagłówek (5 bajtów) + dane (48 bajtów).
Też występują tu kanały wirtualne oraz ścieżki wirtualne (orientacja połączeniowa).
Kanał fizyczny dzielony jest na ścieżki wirtualne, a te dopiero na kanały wirtualne.
Mechanizmy kontroli i sterowania przepływem muszą być realizowane po stronach
systemów użytkowników końcowych. Maksymalna prędkość transmisji to 622 Mb/s.
ADSL po łączu POTS, ale wyższe częstotliwości wykorzystywane są do transmisji danych, charakterystyczny jest brak symetrycznego podziału pasma – przez co DOWNLOAD (do użytkownika) jest kilka razy szybszy niż UPLOAD,
11
PPP protokół warstwy łącza danych, łączy ze sobą dwa węzły sieci tak, że widzą się one,
jakby były bezpośrednio ze sobą połączone; protokół ten tworzy tunel, którym idą
już właściwe dane w innym protokole (np. dalej IP i TCP).
2.2.3
Metody tworzenie harmonogramów w projekcie informatycznym
Cały projekt dekomponuje się na pojedyncze etapy. Określa się przewidywany czas ich
wykonania, dopuszczalne marginesy, zasoby (w szczególności ludzkie), jakie będą potrzebne. Następnie określa się zależności pomiędzy tymi etapami. Mając już zgromadzone
te wszystkie dane, można narysować sobie wykres Gantta (paskowy) albo graf zależności.
Ten temat jest ogólnie, wg mnie, dość mdły i durnowaty; i przeznaczony do lania wody.
Nie życzę sobie, ani nikomu, by go wylosował.
2.2.4
Urządzenia sieci komputerowych
Ten jest tak oczywisty, że chyba nie ma sensu tu cokolwiek pisać. ;)
2.2.5
Charakterystyka wybranego standardu z grupy 802.11 lub 802.15x
802.11g Standard transmisji bezprzewodowej. Pracuje w paśmie 2,4 GHz. Podzielony
jest na 11 (USA), 13 (Europa∗ ) lub 14 (Japonia) kanałów o szerokości 22 MHz każdy.
Środek każdego kanału ustawiony jest o 5 MHz dalej względem poprzedniego. Powoduje
to, że kanały na siebie zachodzą, co powoduje inteferencje i spadadek jakości transmisji.
Kanałami, które na siebie nie zachodzą, mają numerację co 5 – np. kanał 1, 6, 11. Urządzenia wykorzystujące 802.11g są kompatybilne wstecznie z urządzeniami 802.11b, jednak
współistnienie na jednym obszarze obu tych typów sieci również wpływa na jakość połączeń (operują one w końcu w tym samym paśmie). Maksymalna, teoretyczna, prędkość
tranmisji wynosi 54 Mb/s.
2.2.6
Architektura typu A/C i A/I/C w aplikacjach mobilnych i internetowych
Architektura typu A/C Tutaj mamy do czynienia z wersją:
KLIENT <------------> AGENT <--> SERWER
Agent działa po stronie serwera i to z nim łączą się bezpośrednio klienci mobilni
(lub on z klientami). Agent odpowiada za mechanizmy synchronizacji i optymalizacji.
Ponadto główny serwer nie jest blokowany przez nieudane, błędne połączenia klientów
mobilnych. Serwer może też niezależnie obsługiwać połączenia klientów niemobilnych.
∗
we Francji używa się kanałów tylko od 10 do 13, źródło: http://www.gentoo.org/doc/pl/handbook/
handbook-x86.xml?part=4&chap=4
12
Ważną cechą jest to, że projektant aplikacji serwerowej nie musi się martwić o mechanizmy wymagane przez mobilnych – tym martwi się projektant agenta. Połączenia pomiędzy
agentem a serwerem jest stałe.
Architektura A/I/C Podobne, ale są dwaj agenci – po jednym na każdą stronę połączenia:
KLIENT <--> AGENT_CL <------------> AGENT_SRV <--> SERWER
Komunikacja przez sieć następuje tylko pomiędzy agentami. Nie ma bezpośredniej komunikacji pomiędzy klientem a serwerem. Jedynie agenci odpowiadają za stan i kontrolę
połączenia. Serwer i klient nie robią swoje i mogą mieć gdzieś, jak te dane będą przesłane
przez sieć, jaką sieć i w jaki sposób.
2.2.7
Współczesne algorytmy kryptograficzne
• symetryczne – ten sam klucz używany do szyfrowania i deszyfrowania po obu stronach komunikacji:
1. DES – dane szyfrowane są w blokach 64-bitowych kluczem 56-bitowym, algorytm dość bezbezpieczny, ale już go zbruteforce’owali,
2. 3DES – 3 x DES – zdecydowanie wzmacnia siłę algorytmu,
3. RC4 – szyfr strumieniowy, 40- albo 128-bitowe klucze, zastosowanie: WEP,
WPA, SSH,
4. AES – blokowy, klucze 128, 192, 256, obecnie najbardziej popularny (wygrywa
stosunkiem bezpieczeństwo/szybkość), jego użytek jest bezpłatny, łatwy w implementacji na różnych platformach sprzętowych, zastosowanie: WPA2,
5. BlowFish – popularny (ssh, pgp) algorytm, również bezpłatny, dobrze przebadany kryptoanalitycznie, można go efektywnie implementować, podczas pracy
mało pamięciożerny
• asymetryczne – do szyfrowania i deszyfrowania używa się dwóch różnych kluczy:
jeden z kluczy jest jawny (znany wszystkim), a drugi prywany (znany tylko jednej
osobie lub grupie osób), w zależności od zastosowań jawny może być albo klucz służący do szyfrowania albo deszyfrowania. Cechy algorytmów asymetrycznych wykorzystuje się przy cyfrowym podpisywaniu, wszędzie tam, gdzie wymaga się pewności
co do tożsamości i niezaprzeczalności nadawcy (odbiorcy).
1. RSA – do szyfrowania wykorzystuje się funkcje matematyczne (arytmetykę
modulo), kluczami są pary liczb, siła algorytmu tkwi w tym, że jedną z liczb
w parze jest iloczyn dwóch bardzo dużych liczb pierwszych, a nie istnieje,
13
przynajmniej na razie, żadna efektywna metoda, rozdziału liczb na czynniki
pierwsze. Dopiero znajomość rozkładu drugiej liczby z pary pozwoliłaby na deszyfrowanie znając klucz służący do szyfrowania,
2. LUC – podobnie jak RSA, ale wykorzystuje tzw. ciągu Lucasa, a nie arytmetykę modulo, ponadto nie jest ograniczony umowami patentowymi (jak RSA),
3. El-Gamal – wykorzystuje logarytmy dyskretne (nie ma efektywnej metody,
by je liczyć), najpopularniejszy obok RSA
Algorytmy asymetryczne są wolniejsze od symetrycznych.
2.2.8
Styk kanału binarnego
NADAJNIK <----> MODEM <----=====----> MODEM <----> ODBIORNIK
S2
S1
S1
S2
Czyli styk S2 jest odpowiedzialny za cyfrowe połaczenie pomiędzy nadajnikiem/odbiornikiem
a modemem, natomiast S1 jest połączeniem analogowym pomiędzy modem a analogowym
kanałem transmisyjnym. Wiadomo, że kanał transmisyjny podatny jest na szumu, zakłócenia przekłamania i inne takie.
Styk S2 (cyfrowy) składa się z czterech linii (z ilu przewodów składa się każda linia,
to inna bajka):
ground – uziemienie: aby w obu urządzeniach był ten sam poziom odniesienia (w woltach),
data – jak sama nazwa wskazuje: tą linią przesyłane są dane,
control – linia kontroli i sterowania połączeniem,
timing – aby zegarki były zsynchronizowane na obu urządzeniach
Popularne styki S2 (po co to komu... taaa... popularne...):
• RS-232 (25 pinów),
• RS-449 (37 pinów),
• RS-530 (25 pinów),
• V.35 (34 piny)
Z kolei styk S1 to 2 albo 4 przewody. Realizowany jako RJ-11 (4 styki), RJ-12 (6
styków), RJ-45 (8 styków).
2.2.9
Zasady projektowania bezpiecznych systemów i sieci komputerowych
Podczas projektowania bezpiecznych sieci i systemów należy pamiętać, by używać jedynie wymaganego sprzętu i oprogramowanie. Każda nadmiarowa rzecz może powodować istotne luki w bezpieczeństwie systemu. Podczas nadawania uprawnień trzeba dawać ich tylko tyle, ile jest faktycznie potrzebne. Sieć powinna być zaprojektowana
14
w ten sposób, aby maksymalnie ograniczyć możliwość podłączania niepotrzebnych
i obcych urządzeń. Istotnym elementem jest także uwzględnienie podczas projektowania mechanizmów monitorujących i sterujących siecią – oczywiście muszę one spełniać
wymienione powyżej warunki. Bezpieczny system komputerowy również musi spełniać
podobne warunki. Procesy muszą działać zawsze możliwie z najniższymi możliwymi
uprawnieniami. Udostępniane powinny być jedynie naprawdę wymagana elementy systemu (np. baza danych postawiona na serwerze WWW wcale nie musi być
bezpośrednio dostępna dla klientów z zewnątrz – wystarczy, że ma do niej dostęp usługa
HTTP). Ponadto mechanizmy ochronne muszę być możliwie proste, bez cudowania
i zaimplementowane w możliwie niskich warstwach systemu. Ważnym – chyba często
pomijanym – aspektem jest taka budowa systemu bezpieczeństwa, aby nie drażnił on
i nie zniechęcał użytkowników.
2.2.10
Protokoły routingu
Służą do wymiany informacji, pomiędzy routerami, dotyczącymi tras pomiędzy sieciami
komputerowymi.
RIP – router wysyła do sąsiednich routerów informacje dotyczące jego tablicy routingu.
Router otrzymujący taką informacje aktualizuje swoją tablicę, zapisując jednocześniej odległość (w sensie liczby skoków), jaka dzieli go od danej sieci. Wybierana są
ścieżki o najmniejszym koszcie. Używa algorytmu Forda-Bellmana. W wersji RIPv1
używa trasowania klasowego, w wersji RIPv2 – trasowania bezklasowego† . Protokół
wewnętrzny, wektora odległości.
OSPF – Shortest Path First, wybierana jest najkrótsza ścieżka do miejsca przeznaczenia. Routery wysyłają do siebie pakiety informacyjne, dzięki temu każdy z nich
ma bogatą informacje o topologii sieci. Następnie używany jest algorytm Dijkstry
do znalezienia najbardziej korzystej (najkrótszej) ścieżki. O wiele bardziej skalowalny i dokładny niż RIP. Protokół wewnętrzny, stanu łącza.
IS-IS – praktycznie to samo, co OSPF, ale: OSPF działa na (z ang. on top of IP ) warstwie trzeciej modelu ISO/OSI, natomiast IS-IS jest protokołem warstwy trzeciej.
Wynika z tego, że OSPF jest uzależniony w działaniu od protokołu IP, natomiast
IS-IS ma serdecznie gdzieś, jaki protokół warstwy sieciowej jest aktualnie używany
do normalnego ruchu w sieci,
IGRP – protokół wewnętrzny, wektora odległości. Podobnie jak RIP, ale w RIP-ie jako metryki używa się liczby skoków do miejsca przeznaczenia, natomiast tutaj metryką
†
Rozumiem to tak, że w trasowaniu bezklasowym dodatkowo przesyłane są informacje o maskach
podsieci, przez co mamy większą elastyczność działania.
15
jest szerokość pasma, jego obciążenie, opóźnienie i niezawodność. Obsługuje średnie
sieci. Protokół własnościowy CISCO. Jego następcą jest EIGRP, który używa już
trasowania bezklasowego.
BGP – protokół zewnętrzny, używany do wymiany informacji pomiędzy różnymi systemami autonomicznymi. Nie używa tradycyjnych metryk, ale zestawu atrybutów.
Aktualna wersja jest podstawą działania Internetu. Protokół działa przy użyciu
protokołu TCP, przez co cechuje go duża niezawodność. Routery BGP wymieniają
informacje z innymi routerami BGP o ich osiągalności w sieci Internet, informacje te
zawierają listę systemów, przez jakie muszą przejść dane, aby dotrzeć do adresata.
16