Wersja do druku
Transkrypt
Wersja do druku
Podstawy Informatyki Wykład 5 Rekurencja i sieci Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Przykład: Małe dziecko otrzymuje polecenie posprzątania rozrzuconych klocków do pudełka. „ zebrać wszystkie klocki naraz” ???? - skomplikowane zadanie „wziąć jeden klocek, przełożyć go do pudełka, a następnie zrobić to samo z pozostałymi klockami” ??? - prosta czynność Matematycznie: „Duży” problem został rozłożony na problem elementarny, który umiemy rozwiązać. Problem elementarny jest mniej skomplikowany niż problem początkowy. Zakończenie algorytmu jest jasno określone („w momencie gdy na podłodze nie ma rozrzuconych klocków”) Def: Program rekurencyjny jest to program, który wywołuje sam siebie Problem: Dysponujemy tablicą n liczb całkowitych A(n) o elementach: a(1),a(2), a(3), ...., a(n) Zadanie: sprawdzić, czy w tablicy A występuje liczba x Rozwiązanie: wziąć pierwszy niezbadany element tablicy n elementowej, jeśli aktualnie analizowany element tablicy jest równy x to: wypisz „sukces” i zakończ działanie w przeciwnym wypadku: zbadaj pozostałą część tablicy n-1 elementów Mamy obliczyć: an Wiemy że: an =a x an-1 (an-1 jest łatwiej obliczyć niż an) Jeśli jest nadal trudno, to zawsze można wstawić: an-1 =a x an-2, gdzie: an-2 =a x an-3 itd. wystarczy wiedzieć tylko, że: a0 =1 aby obliczyć dowolną potęgę a W programach rekurencyjnych: zakończenie programu jest jasno określone (znaleziony element, przekroczony zakres tablicy), duży problem zostaje „rozłożony” na problemy elementarne, które umiemy rozwiązać Podstawowe błędy: złe określenie warunku zakończenia programu, niewłaściwa (nieefektywna) dekompozycja problemu. Algorytmy sortowania danych Sortowanie przez selekcję Opis: trzeba wyznaczyć najmniejszy element w ciągu; go miejscami z pierwszym elementem zamienić ciągu, wyznaczyć najmniejszy element w a[2..n] i zamienić go z drugim elementem w ciągu, itd. Sortowanie przez wstawianie (układanie kart do brydża) metoda polega na wstawianiu następnej karty we właściwe miejsce uporządkowanych uprzednio kart 9 8 3 5 7 8 9 8 5 5 3 3 9 8 7 5 5 5 9 8 7 7 7 7 9 Sortowanie bąbelkowe 0 40 2 39 6 18 ¬ 4 ¬ 4 20 20 20 ¬ 4 18 20 ¬ 4 6 18 20 ¬ 4 39 6 18 20 ¬ 2 4 39 6 18 20 dla i := 1 do n-1 wykonuj początek min := i; dla j := i+1 do n wykonuj jeśli a[ j ] < a[ min ] to min := j; a[ min ] <-> a[ j ] {zamiana miejscami a[ min ] z a[ j ]} koniec Sortowanie przez wstawianie - algorytm Opis: 9 8 3 3 3 Sortowanie przez selekcję - algorytm 2 40 4 39 6 18 20 1 2 40 4 39 6 18 20 Tablica jest przeszukiwana od dołu. Element zacieniony jest tym, który w pojedynczym przebiegu uleciał do góry jako „najlżejszy”. Analizowane są zawsze 2 sąsiadujące ze sobą elementy. Jeśli nie są uporządkowane (u góry jest element „cięższy”) to następuje ich zamiana. dla i=2,...,liczba elementów tablicy wykonuj { j :=i podczas gdy j > 1 i x[ j-1 ] > x[ j ] wykonuj { pom := x[ j ] x[ j ] := x[ j-1] x[ j-1] := pom j := j-1 } } Wynik sortowania bąbelkowego 0 40 2 39 6 18 4 20 1 2 40 4 39 6 18 20 2 2 4 40 6 39 18 20 3 2 4 6 40 18 39 20 4 2 4 6 18 40 20 30 5 2 4 6 18 20 40 39 6 2 4 6 18 20 39 40 Algorytm sortowania bąbelkowego TAB : Tablica [1..n] elementów typu rzeczywistego i,j : całkowite pom: rzeczywiste Początek {programu} Dla i:=1 do n-1 wykonuj dla j:=n do i+1 z krokiem -1wykonuj Jeśli TAB[j]<TAB[j-1] to początek pom:=TAB[j-1]; TAB[j-1]:=TAB[j]; TAB[j]:=pom koniec Koniec {programu} . • Dość często zdarzają się „puste przebiegi” (nie jest dokonywana żadna wymiana, bowiem elementy są już posortowane. • Algorytm jest bardzo wrażliwy na konfigurację początkową danych. Wersja 1: 4 2 6 18 20 39 40 Wersja 2: 4 6 18 20 39 40 2 (wersja 1 wymaga jednej zamiany, a wersja 2 wymaga aż sześciu przebiegów) Wieża Hanoi A A B C • Chcemy przenieść krążki z A na B, wykorzystując kołek C. • Przenosimy po 1 krążku. • Większy krążek nigdy nie może być umieszczony na mniejszym krążku.. B C A -> B; A -> C; B -> C; A -> B; C -> A; C -> B; A -> B;. Wieża Hanoi - algorytm A B C Legenda Tybetu: po przeniesieniu 64 krążków nastąpi koniec świata. • Liczba pojedynczych przeniesień: minimum 2N - 1 (23 - 1 = 8-1 = 7 dla 3 krążków). Dla 64 to jest 264-1 tj 18446744073709551615 • Jeżeli przeniesienie 1 krążka wymaga 2 sekund, to na przeniesienie 64 krążków potrzeba 1 biliona lat (4,5 miliarda lat temu powstała ziemia). Przy szybkości przenoszenia 1 miliona krążków na sekundę, całkowity czas przeniesienia 64 krążków wynosi minimum pół miliona lat.. Podprogram przenieś N z X na Y używając Z; jeżeli N=1, to wypisz „X -> Y”; w przeciwnym razie (tj. jeżeli N>1) wykonaj, co następuje: wywołaj przenieś N-1 z X na Z używając Y; wypisz „X->Y”; wywołaj przenieś N-1 z Z na Y używając X; wróć. Jak wykonują się programy rekurencyjne? Zadanie: Obliczyć n! 0! = 1 N! = N*(n-1)! Sieci komputerowe Dla n>=1 Jak to wygląda w praktyce dla n = 3 (3! = ?) n = 0? nie 3*2! n = 0? nie 2*1! n = 0? nie 1*0! n = 0? tak 1 - pionowe strzałki oznaczają „zagłębianie się programu” z poziomu ‘n’ na ‘n-1’, itd. , aż do przypadku elementarnego 0!, - pozioma strzałka oznacza obliczanie wyników cząstkowych, - ukośna strzałka prezentuje przekazywanie wyniku cząstkowego z poziomu niższego na wyższy).. Podział sieci Topologie sieci lokalna (LAN) - najmniej rozległa postać sieci komputerowej, zazwyczaj ogranicza się do jednego budynku (biura) lub kilku pobliskich budynków (np. bloków na osiedlu). metropolitarna (MAN) - duża sieć komputerowa, której zasięg obejmuje aglomerację lub miasto. Tego typu sieci używają najczęściej połączeń światłowodowych do komunikacji pomiędzy wchodzącymi w jej skład rozrzuconymi sieciami LAN. rozległa (WAN) - sieć komputerowa znajdująca się na obszarze wykraczającym poza jedno miasto (bądź kompleks miejski). Magistrala Stacja robocza gwiazdy pierścienia siatki Magistrala Serwer terminator magistrala Stacja robocza magistrali Stacja robocza Zalety: małe użycie kabla brak dodatkowych urządzeń (koncentratory, switche) niska cena sieci łatwość instalacji awaria pojedynczego komputera nie powoduje unieruchomienia całej sieci Wady: trudna lokalizacja usterek tylko jedna możliwa transmisja w danym momencie potencjalnie duża ilość kolizji awaria głównego kabla powoduje unieruchomienie całej domeny kolizji Pierścień Pierścień Serwer Stacja robocza Stacja robocza Stacja robocza Stacja robocza Zalety: małe zużycie przewodów możliwość zastosowania łącz optoelektronicznych, które wymagają bezpośredniego nadawania i odbierania transmitowanych sygnałów możliwe wysokie osiągi, ponieważ każdy przewód łączy dwa konkretne komputery Wady: Awaria jednego węzła lub łącza może być powodem awarii całej sieci. Utrudniona diagnoza uszkodzeń. Dołączenie nowego węzła wymaga wyłączenia całej sieci. Dane poruszają się w jednym kierunku. Czas propagacji jest zależny od liczby węzłów. Stacja robocza Gwiazda Gwiazda Serwer Stacja robocza Koncentrator Stacja robocza Stacja robocza Zalety: Sieć może działać nawet, gdy jeden lub kilka komputerów ulegnie awarii. Sieć jest elastyczna i skalowalna. Łatwość monitoringu, konserwacji, wykrywania i lokalizacji kolizji Wady: Stosunkowo wysoki koszt spowodowany jest dużą ilością kabla potrzebnego do podłączenia każdego z węzłów W wypadku awarii elementu centralnego jakim jest koncentrator (np. hub, switch) sieć nie działa Stacja robocza Stacja robocza Hub Jest urządzeniem posiadającym wiele portów do przyłączania stacji roboczych przede wszystkim w topologii gwiazdy. Można je traktować jak wieloportowe wzmacniaki, z tym że nowoczesne koncentratory posiadają obwody regenerujące przesyłane ramki Ethernetowe. Zaletą takiego rozwiązania jest, to że przerwanie komunikacji pomiędzy hubem a jedną ze stacji roboczych nie powoduje zatrzymania ruchu w całej sieci (każda stacja ma oddzielne połączenie z koncentratorem), należy jednak pamiętać, że awaria koncentratora unieruchomi komunikacje ze wszystkimi podłączonymi do niego urządzeniami. Huby wymagają zasilania i wzmacniają sygnały ze stacji roboczych, co pozwala na wydłużenie połączenia. Przełącznik (switch) Przełącznik jest urządzeniem które pracuje w warstwie łącza danych (warstwa 2 modelu OSI). Przełącznik „uczy się” adresów potrzebnych do sterowania dostępem do nośnika i przechowuje je w tablicy wyszukiwania. Chwilowo pomiędzy nadawcą ramki a jej odbiorcą tworzone są ścieżki przełączane czyli komutowane. Potem ramki przesyłane są dalej wzdłuż tych tymczasowych ścieżek. Typowe sieci lokalne oparte o topologię przełączaną zbudowane są tak, że posiadają wiele połączeń urządzeń z portami koncentratora. Każdy port oraz urządzenie które do niego jest przyłączone ma przydzieloną odpowiednią szerokość pasma. Most (bridge) Most to urządzenie warstwy 2. Zadaniem mostów jest filtrowanie ruchu w sieci LAN - zachowaniu ruchu lokalnego - umożliwiając zarazem łączność z innymi częściami (segmentami) sieci LAN wobec ruchu, który jest tam kierowany. Każde urządzenie sieciowe ma unikatowy adres MAC na karcie NIC (Network Interface Card). Most śledzi, które adresy MAC znajdują się po odpowiedniej stronie mostu i podejmuje decyzje w oparciu o listę adresu MAC. Mosty filtrują ruch sieciowy operując się tylko na adresach MAC. Dlatego też mogą bardzo szybko przesłać ruch reprezentujący dowolny protokół warstwy sieci. Ponieważ mosty interesują tylko adresy MAC, nie zajmują się protokołami sieci. Zajmują się tylko przekazywaniem ramek w oparciu o dowolne adresy MAC. Router Działanie warstwie trzeciej pozwala routerowi podejmować decyzje w oparciu o adresy sieciowe zamiast adresów MAC warstwie drugiej. Routery mogą łączyć różne technologie warstwie drugiej, na przykład Ethernet, Token Ring i FDDI. Zadaniem routera jest sprawdzenie przechodzących pakietów (danych warstwie trzeciej), wyznaczenie najlepszej ścieżki w sieci i przesłanie ich do właściwego portu wyjścia. Routery to najważniejsze urządzenie regulujące ruch w dużych sieciach. Pozwalają na komunikację między praktycznie każdym komputerem a dowolnym innym komputerem w dowolnym miejscu na świecie. Model warstwowy sieci Warstwy sieci Różne protokoły muszą ze sobą współdziałać – w szczególności TCP/IP z innymi protokołami – jest to możliwe dzięki warstwowej budowie sieci. Opracowany przez OSI (Open System Interconnection) w 1984 r model warstwowy sieci – opisuje sposób przepływu informacji pomiędzy komputerami połączonymi w sieć Warstwy sieci fizyczna – kable i urządzenia aktywne stosowane do połączenia komputerów; odpowiada za przesyłanie i odbiór poszczególnych bitów, określa wymagania stawiane sprzętowi (np. charakterystyki wydajności kabli, kart) łącza danych – ustala nawiązanie połączenia i jego zakończenie, zapewnia kontrolę adresów oraz poprawności transmisji (każdy pakiet pakowany jest w ramkę (frame), którą tworzy: nagłówek, pakiet oraz sekwencja kontrolna; na poziomie tej warstwy sprawdzane jest, czy wszystkie pakiety dotarły do adresata 7 aplikacji 6 prezentacji 5 sesyjna 4 transportu 3 sieciowa 2 łącza danych 1 fizyczna Warstwy sieci sieciowa – odpowiada za trasę przesyłki, ustala gdzie jest „wolna droga”; ustala protokoły w tym IP oraz IPX, które zawierają informacje o adresie źródłowym i docelowym transportu – nadzoruje przesyłanie danych, np. kolejność pakietów, ich kodowanie i rozkodowanie, w razie konieczności wysyła żądanie ponownego przesłania brakującego pakietu sesji – odpowiada za koordynację komunikacji m. komputerami – kto wysyła i kiedy (dot. relacji klientklient oraz klient-serwer (sesji) Warstwy sieci Warstwy sieci prezentacji – odpowiada za sposób kodowania danych (szyfrowanie i deszyfrowanie), ich kompresję i dekompresję oraz korektę reprezentacji binarnej aplikacji – pełni rolę pośrednika między systemem operacyjnym i jego aplikacjami a siecią (np. polecenie FTP powoduje uruchomienie programuklienta FTP W połączeniu sieciowym dane przychodzące płyną zawsze od najwyższej warstwy do najniższej, przez sieć do innego komputera, a tam od najniższej warstwy do najwyższej 7 7 1 1 Sieć komputerowa Model warstwowy DoD Protokoły sieciowe Warstwa aplikacji - zapewnia interfejs pomiędzy aplikacjami użytkowymi, a usługami sieciowymi. Warstwa transportowa - obsługuje strumień danych między dwoma zdalnymi maszynami Warstwa Internet - przesyła pakiety z danymi od maszyny źródłowej do maszyny docelowej Warstwa fizyczna - odpowiada za przyjmowanie ciągów danych z warstwy Internet, łączenie danych i przesyłanie ich zawartości oraz samą transmisję strumienia bitów. Protokoły Protokoły poziomu sieciowego • • • • Address Resolution Protocol (ARP) Internet Control Message Protocol (ICMP) Internet Protocol (IP) Transmission Control Protocol (TCP) Protokoły aplikacyjne • • • • • • • Simple Mail Transfer Protocol (SMTP) Domain Name System (DNS) Hypertext Transfer Protocol (HTTP) Telnet Gopher File Transfer Protocol (FTP) Network News Transport Protocol (NNTP) TCP/IP – Transmission Control Protocol / Internet Protocol - oprócz Internetu występuje także w sieciach opartych na systemie Windows NT i Linux IPX – Internetworking Packet Exchange – odpowiednik TCP/IP dla systemu Novell Netware NetBIOS – do użytku w małych grupach roboczych i LAN. Nie jest trasowalny. Dotyczy komputerów IBM. Rozszerzenie NetBIOS to NetBEUI (NetBIOS Extended User Interface) ARP Protokół komunikacyjny przekształcania adresów IP na fizyczne, 48-bitowe adresy MAC (przypisane fizycznie m.in. do kart sieciowych) w komputerowych sieciach lokalnych typu Ethernet. ARP jest protokołem pracującym na drugiej warstwie modelu ISO/OSI, czyli warstwie łącza danych, ponieważ pracuje ona na ramkach i może je analizować tzn. np. sprawdzać ich poprawność. ICMP IP Internetowy protokół komunikatów kontrolnych. ICMP jest ściśle związany z protokołem IP, dostarczając nieobecnej w nim funkcji informowania o błędach. Protokół pozwala wysyłać pakiety kontrolne służące do ustalenia bieżącego stanu hosta, w tym: Brak możliwości dostarczenia pakietu do miejsca przeznaczenia; Określenia opóźnienia pakietów przesyłanych przez sieć Zmiana wcześniej wyznaczonej trasy przez jeden z routerów pośredniczących Brak wolnej pamięci buforowej dla zapamiętania pakietu i związane z tym chwilowe wstrzymania nadawania Przekroczenie czasu życia (TTL) pakietu Pakiet IP Protokół komunikacyjny warstwy sieciowej modelu OSI (warstwy internet w modelu TCP/IP). Używany powszechnie w Internecie i sieciach lokalnych. Dane w sieciach IP są wysyłane w formie bloków określanych mianem pakietów. Protokół IP jest protokołem zawodnym - nie gwarantuje, że pakiety dotrą do adresata, nie zostaną pofragmentowane, czy też zdublowane, a ponadto mogą dotrzeć do odbiorcy w innej kolejności niż zostały nadane. Niezawodność transmisji danych jest zapewniana przez protokoły warstw wyższych (np. TCP), znajdujących się w hierarchii powyżej warstwy sieciowej. TCP Strumieniowy protokół komunikacji między dwoma komputerami. W modelu OSI TCP odpowiada warstwie Transportowej. nagłówek Dane ogólne Adres IP nadawcy Adres IP odbiorcy Dane SMTP Tekstowy protokół, w którym określa się co najmniej jednego odbiorcę wiadomości (maila) (w większości przypadków weryfikowane jest jego istnienie), a następnie przekazuje treść wiadomości. Początkowo protokół ten nie radził sobie dobrze z plikami binarnymi, ponieważ stworzony był w oparciu o czysty tekst ASCII. W celu kodowania plików binarnych do przesyłu przez SMTP stworzono standardy takie jak MIME. W dzisiejszych czasach większość serwerów SMTP obsługuje rozszerzenie 8BITMIME pozwalające przesyłać pliki binarne równie łatwo jak tekst. Jednym z ograniczeń pierwotnego SMTP jest brak mechanizmu weryfikacji nadawcy, co ułatwia rozpowszechnianie niepożądanych treści poprzez pocztę elektroniczną (wirusy, spam). Żeby temu zaradzić stworzono rozszerzenie SMTPAUTH, które jednak jest tylko częściowym rozwiązaniem problemu - ogranicza wykorzystanie serwera wymagającego autoryzacji do zwielokratniania poczty. Nadal nie istnieje metoda, dzięki której odbiorca autoryzowałby nadawcę nadawca może "udawać" serwer i wysłać dowolny komunikat do dowolnego odbiorcy. W przeciwieństwie do UDP, TCP zapewnia wiarygodne połączenie dla wyższych warstw komunikacyjnych przy pomocy sum kontrolnych i numerów sekwencyjnych pakietów, w celu weryfikacji wysyłki i odbioru. Brakujące pakiety są obsługiwane przez żądania retransmisji. Host odbierający pakiety TCP porządkuje je według numerów sekwencyjnych tak, by przekazać wyższym warstwom modelu OSI pełen, złożony segment. HTTP HyperText Transfer Protocol jest protokołem typu klient-serwer warstwy aplikacyjnej (działającym w oparciu o protokół TCP) służącym do pobierania i dostarczania dokumentów hipertekstowych (najczęściej w postaci HTML) a także zbiorów binarnych takich jak programy albo dokumenty Telnet Telnet jest usługą (programem) pozwalającą na zdalne połączenie się komputera (terminala) z oddalonym od niego komputerem (serwerem) przy użyciu sieci, wykorzystując do tego celu protokół TCP-IP oraz standardowo przypisany port 23. Umożliwia on zatem ustanowienie użytkownikowi zdalnej sesji na serwerze tak jak gdyby siedział tuż przed nim. FTP Protokół transmisji plików. Jest protokołem typu klient-serwer, który umożliwia przesyłanie plików z i na serwer poprzez sieć TCP/IP. Do komunikacji wykorzystywane są dwa połączenia TCP. Jedno z nich jest połączeniem kontrolnym za pomocą którego przesyłane są np. polecenia do serwera, drugie natomiast służy do transmisji danych m.in. plików. FTP działa w dwóch trybach: aktywnym i pasywnym, w zależności od tego, w jakim jest trybie, używa innych portów do komunikacji. Protokół obsługuje tylko terminalne alfanumeryczne, co oznacza, że nie obsługuje myszy ani innych urządzeń wskazujących. Nie obsługuje także graficznych interfejsów użytkownika. Wszystkie polecenia muszą być wprowadzane w trybie znakowym w wierszu poleceń. Polecenia wydawane za pomocą naszego komputera przysłane są poprzez sieć serwera, na którym zainstalowane jest oprogramowanie serwera telnetu. W odpowiedzi serwer odsyła nam komunikaty, które następnie wyświetlane są na naszym ekranie. Jeżeli FTP pracuje w trybie aktywnym, korzysta z portów: 21 dla poleceń (połączenie to jest zestawiane przez klienta) oraz 20 do przesyłu danych. Połączenie nawiązywane jest wówczas przez serwer. Jeżeli FTP pracuje w trybie pasywnym wykorzystuje port 21 do poleceń i port o numerze > 1024 do transmisji danych, gdzie obydwa połączenia zestawiane są przez klienta. Bardzo często usługa telnet implementowana jest do urządzeń aktywnych sieci (switche, routery) w celu ułatwienia konfiguracji tychże urządzeń. DNS Jest to system serwerów oraz protokół komunikacyjny zapewniający zamianę adresów znanych użytkownikom Internetu na adresy zrozumiałe dla urządzeń tworzących sieć komputerową. Dzięki wykorzystaniu DNS nazwa mnemoniczna, np. pl.wikipedia.org, może zostać zamieniona na odpowiadający jej adres IP, czyli 145.97.39.135. DNS to złożony system komputerowy oraz prawny. Zapewnia z jednej strony rejestrację nazw domen internetowych i ich powiązanie z numerami IP. Z drugiej strony realizuje bieżącą obsługę komputerów odnajdujących adresy IP odpowiadające poszczególnym nazwom. Adresy sieciowe Działanie TCP/IP jest ściśle związane z pojęciem adresu sieciowego (stałego lub generowanego na czas połączenia) • Każdy komputer, który posiada swoje IP nosi nazwę host • adresy IP (numeryczne) – liczba 32 bitowa zapisywana jako 4 części po 8 bitów oddzielonych kropkami • adresy domenowe (symboliczne)- adresy te przypisywane są przede wszystkim serwerom, udostępniającym w Internecie jakieś usługi – zapisywane są w postaci ciągu nazw oddzielonych kropkami i czytane są „od końca” np. 149.156.111.10 Klasy sieciowe Domeny internetowe Klasa A Zakres Od 0.0.0.0 do 127.255.255.255 Sieci klasy A jest mniej niż 128, ale każda może się składać z milionów komputerów (255*255*255). Klasa B Zakres Od 128.0.0.0 do 191.255.255.255 Są tysiące sieci klasy B (191-128)*255, z których każda może zawierać tysiące adresów (255*255). Klasa C Zakres Od 192.0.0.0 do 223.255.255.255 Są miliony sieci klasy C (223-192)*255*255, ale każda może liczyć mniej niż 254 komputery. Klasa D Zakres Od 224.0.0.0 do 239.255.255.255 Zarezerwowane; tzw. adresy grupowe niepowiązane z żadną siecią. Klasa E Zakres Od 240.0.0.0 do 247.255.255.255 Do celów eksperymentalnych. domeny krajowe – 2 litery np. uk, de, fr, at, au, pl Domeny regionalne: krakow, waw, kielce Domeny funkcjonalne: com, edu, gov, mil, org, net Od niedawna istnieją nowe domeny: aero, biz, coop (dla spółdzielni i inst. Non-profit), info (adresy witryn o charakt. Informac.), museum, name (prywatne), pro (wolne zawody) Domeny internetowe Przykłady: sendzimir.metal.agh.edu.pl www.mf.gov.pl www.men.waw.pl zwirek.bis.krakow.pl www.google.pl