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