Model protokołu TCP/IP. Algorytmy komputerowe. Rekurencja, złożoność obliczeniowa. Sortowanie. dr inż. Jarosław Forenc. Model ISO/OSI a model TCP/IP



Podobne dokumenty
Algorytmy komputerowe. dr inŝ. Jarosław Forenc

dr inż. Jarosław Forenc

Algorytm. a programowanie -

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Algorytmy komputerowe. dr inż. Jarosław Forenc

Protokoły sieciowe - TCP/IP

Przesyłania danych przez protokół TCP/IP

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Adresy w sieciach komputerowych

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Bazy Danych i Usługi Sieciowe

Model sieci OSI, protokoły sieciowe, adresy IP

Sieci komputerowe Wykład 3

Zarządzanie pamięcią operacyjną. Topologie sieci komputerowych Media transmisyjne Model referencyjny ISO/OSI i model protokołu TCP/IP

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Rok szkolny 2014/15 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. SIECI KOMPUTEROWE kl. 2c

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Zarządzanie pamięcią operacyjną

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Programowanie współbieżne i rozproszone

dr inż. Jarosław Forenc

Warstwy i funkcje modelu ISO/OSI

Zarządzanie pamięcią operacyjną. Topologie sieci komputerowych Media transmisyjne Model referencyjny ISO/OSI i model protokołu TCP/IP

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

dr inż. Jarosław Forenc

Zadania z sieci Rozwiązanie

Sieci komputerowe. Dr inż. Robert Banasiak. Sieci Komputerowe 2010/2011 Studia niestacjonarne

TCP/IP. Warstwa łącza danych. mgr inż. Krzysztof Szałajko

Definicje. Algorytm to:

Sieć komputerowa Adresy sprzętowe Adresy logiczne System adresacji IP (wersja IPv4)

Sieci komputerowe Warstwa transportowa

Stos TCP/IP Warstwa Internetu. Sieci komputerowe Wykład 4

Model warstwowy Warstwa fizyczna Warstwa łacza danych Warstwa sieciowa Warstwa transportowa Warstwa aplikacj. Protokoły sieciowe

Plan wykładu. Wyznaczanie tras. Podsieci liczba urządzeń w klasie C. Funkcje warstwy sieciowej

dr inż. Jarosław Forenc

Sieci Komputerowe Modele warstwowe sieci

ARP Address Resolution Protocol (RFC 826)

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

MODEL OSI A INTERNET

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

ZiMSK NAT, PAT, ACL 1

ADRESY PRYWATNE W IPv4

Pytanie 1 Z jakich protokołów korzysta usługa WWW? (Wybierz prawidłowe odpowiedzi)

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Sieci komputerowe - warstwa fizyczna

Podstawy sieci komputerowych

Sieci komputerowe - Protokoły warstwy transportowej

Charakterystyka grupy protokołów TCP/IP

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Programowanie sieciowe

Model OSI. mgr inż. Krzysztof Szałajko

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Urządzenia sieciowe. Tutorial 1 Topologie sieci. Definicja sieci i rodzaje topologii

Rodzaje, budowa i funkcje urządzeń sieciowych

PROTOKOŁY WARSTWY TRANSPORTOWEJ

dr inż. Jarosław Forenc

Akademia Techniczno-Humanistyczna w Bielsku-Białej

MASKI SIECIOWE W IPv4

Sieci komputerowe - administracja

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Sieci komputerowe. Zadania warstwy łącza danych. Ramka Ethernet. Adresacja Ethernet

Routing i protokoły routingu

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Podstawy sieci komputerowych

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

Technologie informacyjne - wykład 8 -

INFORMATYKA SORTOWANIE DANYCH.

Dr Michał Tanaś(

Sieci komputerowe. Wykład 3: Protokół IP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski. Sieci komputerowe (II UWr) Wykład 3 1 / 24

Sieci komputerowe Warstwa sieci i warstwa transportowa

Dr Michał Tanaś(

Sieci komputerowe. Zajęcia 2 Warstwa łącza, sprzęt i topologie sieci Ethernet

Architektura INTERNET

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci

Sieci komputerowe - warstwa transportowa

Dynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania

Rywalizacja w sieci cd. Protokoły komunikacyjne. Model ISO. Protokoły komunikacyjne (cd.) Struktura komunikatu. Przesyłanie między warstwami

Zarządzanie systemami informatycznymi. Protokoły warstw aplikacji i sieci TCP/IP

Sieci komputerowe i bazy danych

Sieci komputerowe. Wstęp

TCP/IP formaty ramek, datagramów, pakietów...

To systemy połączonych komputerów zdolnych do wzajemnego przesyłania informacji, do dzielenia się zasobami, udostępniania tzw.

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

1 Wprowadzenie do algorytmiki

Pytania na kolokwium z Systemów Teleinformatycznych

Transkrypt:

Rok akademicki 2012/2013, Wykład nr 9 2/79 Plan wykładu nr 9 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 9 (08.06.2013) dr inż. Jarosław Forenc Model protokołu TCP/IP warstwa dostępu do sieci warstwa Internetu warstwa transportowa warstwa aplikacji Algorytmy komputerowe definicje algorytmu sposoby opisu algorytmów Rekurencja, złożoność obliczeniowa Sortowanie proste wstawianie i proste wybieranie, bąbelkowe Quick-Sort Rok akademicki 2012/2013, Wykład nr 9 3/79 Rok akademicki 2012/2013, Wykład nr 9 4/79 Model ISO/OSI a model TCP/IP Model TCP/IP w przypadku protokołu TCP/IP tworzącego Internet stosuje się uproszczony model czterowarstwowy z poszczególnymi warstwami związanych jest wiele protokołów protokół - zbiór zasad określających format i sposób przesyłania danych 7 Warstwa aplikacji 6 Warstwa prezentacji Warstwa aplikacji 4 5 Warstwa sesji 4 Warstwa transportowa Warstwa transportowa 3 3 Warstwa sieciowa Warstwa Internetu 2 2 1 Warstwa łącza danych Warstwa fizyczna Warstwa dostępu do sieci 1 Model ISO/OSI Model TCP/IP

Rok akademicki 2012/2013, Wykład nr 9 5/79 Rok akademicki 2012/2013, Wykład nr 9 6/79 Warstwa dostępu do sieci Warstwa dostępu do sieci standard IEEE 802.3 (Ethernet) - 1985 r. metody transmisji danych (wykrywanie kolizji) ALOHA CSMA (Carrier Sense, Multiple Access) CSMA/CD (Carrier Sense, Multiple Access with Collision Detection) norma IEEE 802.3 (odmiana CSMA/CD) dane przesyłane są w postaci ramek Ethernet typy ramek Ethernet Ethernet wersja 1 - nieużywana Ethernet wersja 2 (Ethernet II) - ramka DIX (DEC, Intel, Xerox), 1978 r., obecnie najczęściej stosowana IEEE 802.x LLC (Logical Link Control) format ramki Ethernet II (DIX) Preambuła - naprzemienny ciąg bitów 1 i 0 informujący o ramce Adres docelowy / źródłowy - 6-bajtowe liczby będące adresami sprzętowymi komunikujących się interfejsów sieciowych (MAC - Media Access Control) Rok akademicki 2012/2013, Wykład nr 9 7/79 Rok akademicki 2012/2013, Wykład nr 9 8/79 Warstwa dostępu do sieci Warstwa dostępu do sieci format ramki Ethernet II (DIX) format ramki Ethernet II (DIX) Typ - numer protokołu warstwy wyższej, która odbierze dane po zakończeniu obróbki przez standard Ethernet Dane - przesyłane dane, jeśli ilość danych jest mniejsza od 46 bajtów, wprowadzane jest uzupełnienie jedynkami (bitowo) FCS (Frame Check Sequence) - 4 bajty kontrolne (CRC - Cyclic Redundancy Check) wygenerowane przez interfejs nadający i sprawdzane przez odbierający wysłanie ramki wymaga znajomości adresu MAC odbiorcy do określenia adresu MAC na podstawie numeru IP stosowany jest protokół ARP (Address Resolution Protocol) protokół ARP stosowany jest także do zapobiegania zdublowaniu adresów IP aktualną tablicę translacji ARP wyświetla polecenie: arp -a

Rok akademicki 2012/2013, Wykład nr 9 9/79 Rok akademicki 2012/2013, Wykład nr 9 10/79 Warstwa dostępu do sieci Karta sieciowa NIC (Network Interface Card) urządzenie łączące komputer z siecią kontroluje dostęp komputera do medium posiada unikalny numer MAC pracuje w drugiej warstwie modelu ISO/OSI Modem urządzenie służące do połączenia komputerów, najczęściej poprzez sieć telefoniczną modemy dzielą się na zewnętrzne i wewnętrzne Warstwa dostępu do sieci Konwerter nośników urządzenie umożliwiające łączenie różnych mediów transmisyjnych ze sobą, np. światłowodu i skrętki Regenerator (repeater) wzmacniania i naprawia zniekształcenia sygnałów w sieci zazwyczaj ma jeden port wejściowy i jeden port wyjściowy stosowany w celu zwiększenia zasięgu sieci ponad limit długości kabla pracuje w pierwszej warstwie modelu ISO/OSI Rok akademicki 2012/2013, Wykład nr 9 11/79 Rok akademicki 2012/2013, Wykład nr 9 12/79 Warstwa dostępu do sieci Koncentrator (hub) urządzenie łączące wiele urządzeń sieciowych w sieci komputerowej o topologii gwiazdy nie analizuje ramek pod kątem adresu MAC oraz IP pracuje w pierwszej warstwie modelu ISO/OSI aktywny - regeneruje otrzymany sygnał i przesyła na wszystkie porty pasywny - nie regeneruje sygnału, a tylko przesyła na wszystkie porty inteligentny - umożliwia zarządzanie ruchem w sieci Warstwa dostępu do sieci Most (bridge) urządzenie łączące dwie lub więcej sieci lub segmenty sieci dokonując filtrowania ruchu sieciowego analizując numery MAC określa, czy dane należy przesłać do innego segmentu sieci pracuje w drugiej warstwie modelu ISO/OSI zazwyczaj ma jeden port wejściowy i jeden port wyjściowy

Rok akademicki 2012/2013, Wykład nr 9 13/79 Rok akademicki 2012/2013, Wykład nr 9 14/79 Warstwa dostępu do sieci Warstwa Internetu Przełącznik (switch) urządzenie łączące segmenty sieci komputerowej pracuje w drugiej warstwie modelu ISO/OSI analizuje numery MAC i przesyła odebrane dane tylko na port, do którego podłączony jest odbiorca zmniejsza obciążenie sieci lokalnej początek Internetu: sieć ARPANET (1969, USA), łączyła 4 komputery na różnych uniwersytetach najważniejsza część Internetu to protokół IP (Internet Protocol): definiuje format i znaczenie pól datagramu IP określa schemat adresowania stosowany w Internecie zapewnia wybór trasy przesyłania datagramu (routing) zapewnia podział danych na fragmenty i łączenie ich w całość w przypadku sieci nie akceptujących rozmiaru przenoszonych danych cechy protokołu: bezpołączeniowy - nie ustanawia połączenia i nie sprawdza gotowości odbiorcy danych niepewny - nie zapewnia korekcji i wykrywania błędów transmisji Rok akademicki 2012/2013, Wykład nr 9 15/79 Rok akademicki 2012/2013, Wykład nr 9 16/79 Warstwa Internetu - datagram IP Warstwa Internetu - datagram IP Nagłówek Nagłówek Wersja (Version) - numer wersji protokołu IP (IPv4, nowsza - IPv6) IHL (Internal Header Length) - długość nagłówka w 32-bitowych słowach Typ usługi (Type of Service) - opisuje wymaganą jakość usługi (pole najczęściej ignorowane przez routery) Długość całkowita (Datagram Length) - długość pakietu IP w bajtach (Nagłówek + Dane) Identyfikator (Identification), Flagi (Flags), Przesunięcie fragmentacji (Fragment offset) - pola używane w przypadku podziału datagramu na części (fragmenty) Czas życia TTL (Time-to-Live) - maksymalny czas (w sekundach) pozostawania datagramu w Internecie, przejście datagramu przez każdy router zmniejsza wartość o 1 Protokół (Protocol) - numer protokołu warstwy wyższej, do którego zostaną przekazane dane z tego pakietu

Rok akademicki 2012/2013, Wykład nr 9 17/79 Rok akademicki 2012/2013, Wykład nr 9 18/79 Warstwa Internetu - datagram IP Warstwa Internetu - adresy IP adres IP komputera zajmuje 4 bajty (32-bitowa liczba całkowita) Nagłówek najczęściej zapisywany jest w postaci 4 liczb z zakresu od 0 do 255 każda, oddzielonych kropkami, np. Suma kontrolna (Header checksum) - suma kontrolna nagłówka Adres źródła (Source Address) - adres IP źródła danych Adres przeznaczenia (Destination Address) - adres IP odbiorcy danych Opcje (Options) - dodatkowe opcje Uzupełnienie (Padding) - uzupełnienie pola opcji do pełnego słowa (32 bitów) adres składa się z dwóch części: identyfikującej daną sieć w Internecie identyfikującej konkretny komputer w tej sieci do roku 1997 wyróżnienie części określającej sieć i komputer w sieci następowało na podstawie tzw. klas adresów IP Rok akademicki 2012/2013, Wykład nr 9 19/79 Rok akademicki 2012/2013, Wykład nr 9 20/79 Warstwa Internetu - klasy adresów IP Warstwa Internetu - maska sieci Klasa A Klasa B 0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh sieć (max. 126) komputer (max. 16 777 214) Zakres IP od: 1.0.0.0 do: 126.255.255.255 10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh Zakres IP od: 128.1.0.0 sieć (max. 16 382) komputer (max. 65 534) do: 191.255.255.255 klasy adresów IP zostały zastąpione bezklasowym routowaniem międzydomenowym CIDR (Classless Inter-Domain Routing) do określenia liczby bitów odpowiadających sieci i liczby bitów odpowiadających hostowi stosowana jest maska sieci IP: 212.33.95.114 11010100.00100001.01011111.01110010 Klasa C Klasa D 110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh sieć (max. 2 097 150) komputer (max. 254) 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx multicast - adresy transmisji grupowej, np. wideokonferencje Zakres IP od: 192.0.0.0 do: 223.255.255.255 Zakres IP od: 224.0.0.0 do: 239.255.255.255 Maska: Adres sieci: Broadcast: 255.255.255.192 212.33.95.64 212.33.95.127 11111111.11111111.11111111.11000000 11010100.00100001.01011111.01000000 11010100.00100001.01011111.01111111 Klasa E 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx zarezerwowane na potrzeby badawcze Zakres IP od: 240.0.0.0 do: 255.255.255.255 Pierwszy host: Ostatni host: 212.33.95.65 212.33.95.126 11010100.00100001.01011111.01000001 11010100.00100001.01011111.01111110

Rok akademicki 2012/2013, Wykład nr 9 21/79 Rok akademicki 2012/2013, Wykład nr 9 22/79 Warstwa Internetu - adresy IP Warstwa Internetu - routing datagramów IP adresy specjalne adresy prywatne (nierutowalne) - nie są przekazywane przez routery host A przesyła dane do hosta B stosując protokół IP (A zna adres IP B) A sprawdza czy B należy do tej samej sieci (na podstawie swojego numeru IP i maski sieci) jeśli TAK, to A rozsyła ramkę rozgłoszeniową z zapytaniem protokołu ARP o adres MAC komputera B B powiadamia A o swoim adresie MAC A zapisuje adres MAC B w swojej tablicy ARP (przy kolejnej transmisji danych pomiędzy tymi hostami, adres MAC zostanie odczytany z tej tablicy) A wysyła datagram z danymi do B Rok akademicki 2012/2013, Wykład nr 9 23/79 Rok akademicki 2012/2013, Wykład nr 9 24/79 Warstwa Internetu - routing datagramów IP Warstwa Internetu - router jeśli B NIE należy do tej samej sieci co A, to A wysyła pakiet na adres lokalnej bramki (gateway) - określanej jako router urządzenie sprzęgające sieci, funkcjonuje w warstwach: fizycznej, łącza danych i sieciowej modelu ISO/OSI A rozsyła ramkę rozgłoszeniową z zapytaniem ARP o adres MAC routera router powiadamia A o swoim adresie MAC, A zapisuje MAC w tablicy ARP A wysyła datagram z danymi przeznaczonymi dla B, zaadresowany adresem MAC routera router podejmuje decyzję o przekazaniu datagramu na interfejs podłączony do sieci B router rozsyła bramkę rozgłoszeniową z zapytaniem ARP o MAC komputera B na interfejs podłączony do sieci B odczytuje adresy z datagramów IP i odpowiednio je przekierowuje (routowanie, trasowanie, przekierowanie) pozwala na sterowanie przepustowością sieci, zapewnia pełną izolację segmentów sieci może być wykorzystany jako urządzenie tłumaczące adresy sieciowe (NAT - Network Address Translation) - umożliwia przesyłanie pakietów z sieci lokalnej o adresach z zakresu nierutowalnego do Internetu może pełnić funkcję firewalla B powiadamia router o swoim adresie MAC, router zapisuje adres MAC komputera B w swojej tablicy ARP router wysyła datagram z danymi do B

Rok akademicki 2012/2013, Wykład nr 9 25/79 Rok akademicki 2012/2013, Wykład nr 9 26/79 Warstwa transportowa - porty Warstwa transportowa - porty protokoły warstwy transportowej zapewniają dostarczenie danych do konkretnych aplikacji (procesów) w odpowiedniej kolejności i formie wybrane dobrze znane porty: identyfikacja przynależności danej transmisji do procesu odbywa się na podstawie numeru poru (liczba 16-bitowa, zakres: 0 65535) numery portów przydzielane są przez organizację IANA (Internet Assigned Numbers Authority): 0 1023 - zakres zarezerwowany dla tzw. dobrze znanych portów (well-know port number) 1024 49151 - porty zarejestrowane (registered) 49152 65535 - porty dynamiczne/prywatne (dynamic/private) port protokół 20 FTP (dane) 21 FTP (polecenia) 22 SSH 23 Telnet 25 SMTP (mail) port 53 DNS protokół 80 HTTP (www) 110 POP3 (mail) 119 NNTP (news) 143 IMAP (mail) połączenie numeru IP komputera i portu, na którym odbywa się komunikacja, nazywa się gniazdem (socket) w warstwie transportowej funkcjonują dwa podstawowe protokoły: UDP (User Datagram Protocol) TCP (Transmission Control Protocol) Rok akademicki 2012/2013, Wykład nr 9 27/79 Rok akademicki 2012/2013, Wykład nr 9 28/79 Warstwa transportowa - protokół UDP Warstwa transportowa - protokoły UDP i TCP UDP wykonuje usługę bezpołączeniowego dostarczania datagramów: nie ustanawia połączenia nie sprawdza gotowości odbiorcy do odebrania przesyłanych danych nie sprawdza poprawności dostarczenia danych jednostką przesyłanych danych jest pakiet UDP stosowany jest, gdy ilość przesyłanych danych w pakiecie jest niewielka pakiet UDP zawiera bardzo mało informacji kontrolnych, zatem opłacalne jest jego stosowanie w powiązaniu z aplikacjami samodzielnie dbającymi o kontrolę poprawności transmisji TCP (Transmission Control Protocol) jest protokołem niezawodnym i połączeniowym, działa na strumieniach bajtów Port źródłowy (Source port) - numer portu nadawcy Port przeznaczenia (Destination port) - numer portu odbiorcy TCP sprawdza czy dane zostały dostarczone poprawnie i w określonej kolejności jednostką przesyłanych danych stosowaną przez TCP jest segment Długość (Length) - całkowita długość pakietu w bajtach (nagłówek + dane) Suma kontrolna (Checksum) - tworzona na podstawie nagłówka i danych

Rok akademicki 2012/2013, Wykład nr 9 29/79 Rok akademicki 2012/2013, Wykład nr 9 30/79 Warstwa Internetu - segment TCP Warstwa Internetu - segment TCP Nagłówek Nagłówek Port źródłowy (Source port) - numer portu nadawcy Przesunięcie (Data offset) - liczba 32-bitowych słów w nagłówku TCP Port przeznaczenia (Destination port) - numer portu odbiorcy Zarezerwowane (Reserved) - zarezerwowane do przyszłych zastosowań Numer kolejny (Sequence number) - identyfikator określający miejsce segmentu przed fragmentacją Numer potwierdzenia (Acknowledgment number) - identyfikator będący potwierdzeniem otrzymania danych przez odbiorcę Flagi (Flags) - flagi dotyczące bieżącego segmentu Okno (Window) - określa liczbę bajtów, które aktualnie odbiorca może przyjąć (0 - wstrzymanie transmisji) Rok akademicki 2012/2013, Wykład nr 9 31/79 Rok akademicki 2012/2013, Wykład nr 9 32/79 Warstwa Internetu - segment TCP Warstwa aplikacji Nagłówek zawiera szereg procesów (usług, protokołów) wykorzystywanych przez uruchamiane przez użytkownika aplikacje do przesyłania danych większość usług działa w architekturze klient-serwer (na odległym komputerze musi być uruchomiony serwer danej usługi) Suma kontrolna (Checksum) - suma kontrolna nagłówka i danych Wskaźnik pilności (Urgent pointer) - jeśli odpowiednia flaga jest włączona (URG), to informuje o pilności pakietu Opcje (Options) - dodatkowe opcje Uzupełnienie (Padding) - uzupełnienie pola opcji do pełnego słowa (32 bitów) DNS (Domain Name System) świadczy usługi zamieniania (rozwiązywania) nazwy komputera na jego adres IP wykorzystuje port o numerze 53

Rok akademicki 2012/2013, Wykład nr 9 33/79 Rok akademicki 2012/2013, Wykład nr 9 34/79 Warstwa aplikacji DNS (Domain Name System) przestrzeń nazw w Internecie oparta jest na modelu odwróconego drzewa Warstwa aplikacji SMTP (Simple Mail Transfer Protocol) umożliwia wysyłanie (ale nie odbieranie) i transport poczty elektronicznej e-mail poprzez różnorodne środowiska systemowe podczas przesyłania e-maila każdy serwer SMTP dodaje swój nagłówek wykorzystuje port o numerze 25 zarządzaniem przestrzenią nazw domenowych zajmuje się w świecie ICANN, zaś w Polsce - NASK POP (Post Office Protocol) umożliwia odbieranie poczty ze zdalnego serwera na komputer lokalny ma wiele ograniczeń: każda wiadomość jest pobierana z załącznikami, nie pozwala przeglądać oczekujących w kolejce wiadomości ostatnia wersja to POP3 wykorzystuje port o numerze 110 Rok akademicki 2012/2013, Wykład nr 9 35/79 Rok akademicki 2012/2013, Wykład nr 9 36/79 Warstwa aplikacji Algorytm - definicje IMAP (Internet Message Access Protocol) następca POP3 pozwala na umieszczenie wiadomości na serwerze w wielu folderach umożliwia zarządzanie wiadomościami (usuwanie, przenoszenie pomiędzy folderami) oraz ściąganie tylko nagłówków wiadomości wykorzystuje port o numerze 143 FTP (File Transfer Protocol) umożliwia wysyłanie i odbiór plików z odległego systemu oraz wykonywanie operacji na tych plikach umożliwia dostęp anonimowy - login: anonymous, password: e-mail dwa tryby pracy: aktywny (active) i pasywny (passive) wykorzystuje dwa porty: 21 (polecenia), 20 (dane) Definicja 1 Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania Definicja 2 Metoda rozwiązania zadania Definicja 3 Ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych zwraca żądane dane wyjściowe zwane wynikiem działania algorytmu

Rok akademicki 2012/2013, Wykład nr 9 37/79 Rok akademicki 2012/2013, Wykład nr 9 38/79 Sposoby opisu algorytmów Opis słowny algorytmu 1. Opis słowny w języku naturalnym lub w postaci listy kroków (opis w punktach) 2. Schemat blokowy 3. Pseudokod (nieformalna odmiana języka programowania) 4. Wybrany język programowania Podanie kolejnych czynności, które należy wykonać, aby otrzymać oczekiwany efekt końcowy Przypomina przepis kulinarny z książki kucharskiej lub instrukcję obsługi urządzenia, np. Algorytm: Tortilla ( Podróże kulinarne R. Makłowicza) Dane wejściowe: 0,5 kg ziemniaków, 100 g kiełbasy Chorizo, 8 jajek Dane wyjściowe: gotowa Tortilla Opis algorytmu: Ziemniaki obrać i pokroić w plasterki. Kiełbasę pokroić w plasterki. Ziemniaki wrzucić na gorącą oliwę na patelni i przyrumienić z obu stron. Kiełbasę wrzucić na gorącą oliwę na patelni i przyrumienić z obu stron. Ubić jajka i dodać do połączonych ziemniaków i kiełbasy. Dodać sól i pieprz. Usmażyć z obu stron wielki omlet nadziewany chipsami ziemniaczanymi z kiełbaską. Rok akademicki 2012/2013, Wykład nr 9 39/79 Rok akademicki 2012/2013, Wykład nr 9 40/79 Lista kroków Schemat blokowy Uporządkowany opis wszystkich czynności, jakie należy wykonać podczas realizacji algorytmu Zawiera plan algorytmu przedstawiony w postaci graficznej struktury elementów zwanych blokami Krok jest to pojedyncza czynność realizowana w algorytmie Kroki w algorytmie są numerowane, operacje wykonywane są zgodnie z rosnącą numeracją kroków Jedynym odstępstwem od powyższej reguły są operacje skoku, w których jawnie określa się numer kolejnego kroku Przykład (instrukcja otwierania wózka-specerówki): Każdy blok zawiera informację o operacji, która ma być w nim wykonana Pomiędzy blokami umieszczone są linie przepływu (strzałki) określające kolejność wykonywania bloków algorytmu Podstawowe symbole stosowane na schematach blokowych: Krok 1: Krok 2: Krok 3: Zwolnij element blokujący wózek Rozkładaj wózek w kierunku kółek Naciskając nogą dolny element blokujący aż do zatrzaśnięcia, rozłóż wózek do pozycji przewozowej linia przepływu (połączenie) występuje w postaci linii zakończonej strzałką określa kierunek przemieszczania się po schemacie

Rok akademicki 2012/2013, Wykład nr 9 41/79 Rok akademicki 2012/2013, Wykład nr 9 42/79 Schemat blokowy Schemat blokowy Podstawowe symbole stosowane na schematach blokowych: Podstawowe symbole stosowane na schematach blokowych: STOP blok startowy, początek algorytmu wskazuje miejsce rozpoczęcia algorytmu może występować tylko jeden raz blok końcowy, koniec algorytmu wskazuje miejsce zakończenia algorytmu musi występować przynajmniej jeden raz blok wykonawczy, blok funkcyjny zawiera polecenie (elementarną instrukcję) instrukcją może być podstawienie, operacja arytmetyczna, wprowadzenie danych lub wyprowadzenie wyników blok warunkowy (decyzyjny, porównujący) sprawdza umieszczony w nim warunek i dokonuje wyboru tylko jednej drogi wyjściowej połączenia wychodzące z bloku: - T lub TAK - gdy warunek jest prawdziwy - N lub NIE - gdy warunek nie jest prawdziwy Czasami wprowadzanie i wyprowadzanie danych oznacza się dodatkowym blokiem wejścia-wyjścia blok wejścia-wyjścia poprzez ten blok wprowadzane są dane i wyprowadzane wyniki Rok akademicki 2012/2013, Wykład nr 9 43/79 Rok akademicki 2012/2013, Wykład nr 9 44/79 Pseudokod i język programowania Pseudokod: Pseudokod (pseudojęzyk) - uproszczona wersja języka programowania Często zawiera zwroty pochodzące z języków programowania Zapis w pseudokodzie może być łatwo przetłumaczony na wybrany język programowania Opis w języku programowania: Zapis programu w konkretnym języku programowania Stosowane języki: Pascal, C, Matlab (kiedyś - Fortran, Basic) Algorytm Euklidesa - lista kroków Algorytm Euklidesa - największy wspólny dzielnik dwóch liczb Dane wejściowe: niezerowe liczby naturalne a i b Dane wyjściowe: NWD(a,b) Kolejne kroki: 1. Czytaj liczby a i b 2. Dopóki a i b są większe od zera, powtarzaj krok 3, a następnie przejdź do kroku 4 3. Jeśli a jest większe od b, to weź za a resztę z dzielenia a przez b, w przeciwnym razie weź za b resztę z dzielenia b przez a 4. Przyjmij jako największy wspólny dzielnik tę z liczb a i b, która pozostała większa od zera 5. Drukuj NWD(a,b)

Rok akademicki 2012/2013, Wykład nr 9 45/79 Rok akademicki 2012/2013, Wykład nr 9 46/79 Algorytm Euklidesa - przykład Algorytm Euklidesa - schemat blokowy NWD(1675,3752) =? a b Dzielenie większej liczby przez mniejszą Zamiana 1675 3752 b/a = 3752/1675 = 2 reszta 402 b = 402 1675 402 a/b = 1675/402 = 4 reszta 67 a = 67 67 402 b/a = 402/67 = 6 reszta 0 b = 0 67 0 KONIEC NWD(1675,3752) = 67 Rok akademicki 2012/2013, Wykład nr 9 47/79 Rok akademicki 2012/2013, Wykład nr 9 48/79 Algorytm Euklidesa - pseudokod Algorytm Euklidesa - język programowania (C) NWD(a,b) while a>0 i b>0 do if a>b then a a mod b else b b mod a if a>0 then return a else return b int NWD(int a, int b) while (a>0 && b>0) if (a>b) a = a % b; else b = b % a; if (a>0) return a; else return b;

Rok akademicki 2012/2013, Wykład nr 9 49/79 Rok akademicki 2012/2013, Wykład nr 9 50/79 Wartość bezwzględna liczby - schemat blokowy Równanie kwadratowe - schemat blokowy x dla x 0 x = x dla x < 0 START START 2 ax + bx + c = 0 = b 2 4ac START Wczytaj(a,b,c) delta=b 2-4ac tak Drukuj(x) STOP Wczytaj(x) x 0 nie Drukuj(-x) STOP tak Drukuj(x) Wczytaj(x) nie x 0 Drukuj(-x) STOP > 0 : b x1 =, 2a = 0 : b x1 = x2 = 2a b + x2 = 2a tak b x1 = 2a b + x2 = 2a Drukuj(x1,x2) STOP delta > 0 nie tak b x1 = x2 = 2a Drukuj(x1,x2) STOP delta = 0 nie Drukuj(Brak rozwiązania) STOP Rok akademicki 2012/2013, Wykład nr 9 51/79 Rok akademicki 2012/2013, Wykład nr 9 52/79 Silnia - schemat blokowy Rekurencja n! = 1 2 3... n 0! = 1 1! = 1 2! = 1 2 3! = 1 2 3... START Wczytaj(n) silnia = 1 n > 0 tak silnia=n silnia n = n -1 nie Drukuj(silnia) STOP Rekurencja lub rekursja - jest to odwoływanie się funkcji lub definicji do samej siebie Rozwiązanie danego problemu wyraża się za pomocą rozwiązań tego samego problemu, ale dla danych o mniejszych rozmiarach W matematyce mechanizm rekurencji stosowany jest do definiowania lub opisywania algorytmów Silnia: 1 n! = n( n 1)! dla dla n = 0 n 1 int silnia(int n) return n==0? 1 : n*silnia(n-1);

Rok akademicki 2012/2013, Wykład nr 9 53/79 Rok akademicki 2012/2013, Wykład nr 9 54/79 Rekurencja - ciąg Fibonacciego Rekurencja - algorytm Euklidesa 0 dla n = 0 Fn = 1 dla n = 1 F n 1 + F n 2 dla n > 1 int F(int n) if (n==0) return 0; else if (n==1) return 1; else return F(n-1) + F(n-2); a NWD( a, b) = NWD( b, a mod b) int NWD(int a, int b) if (b==0) return a; else return NWD(b,a % b); dla dla b = 0 b 1 Rok akademicki 2012/2013, Wykład nr 9 55/79 Rok akademicki 2012/2013, Wykład nr 9 56/79 Złożoność obliczeniowa Złożoność obliczeniowa W celu rozwiązania danego problemu obliczeniowego szukamy algorytmu najbardziej efektywnego czyli: najszybszego o możliwie małym zapotrzebowaniu na pamięć Do oceny efektywności programu służy złożoność obliczeniowa (koszt algorytmu) Złożoność obliczeniowa algorytmu: jest ilością zasobów potrzebnych do jego działania (czas, pamięć) jest funkcją rozmiaru danych, na których pracuje algorytm Złożoność czasowa Jej miarą jest liczba podstawowych operacji (dominujących) Podstawowe operacje - porównanie, podstawienie, operacja arytmetyczna Złożoność pamięciowa Jest miarą wykorzystania pamięci (liczba komórek pamięci) Złożoność pesymistyczna Odpowiada danym najbardziej niesprzyjającym dla algorytmu Złożoność średnia Złożoność uśredniona po wszystkich możliwych zestawach danych, występująca dla typowych danych wejściowych

Rok akademicki 2012/2013, Wykład nr 9 57/79 Rok akademicki 2012/2013, Wykład nr 9 58/79 Notacja O ( duże O ) Notacja O ( duże O ) Wyraża złożoność matematyczną algorytmu Porównanie najczęściej występujących złożoności: Po literze O występuje wyrażenie w nawiasach zawierające literę n, która oznacza liczbę elementów, na której działa algorytm Do wyznaczenia złożoności bierze się pod uwagę liczbę wykonywanych w algorytmie podstawowych operacji Przykład: O(n) - złożoność algorytmu jest prostą funkcją liczby elementów (jeśli sortowanie 10.000 elementów zajmuje 5 s, to sortowanie 20.000 elementów zajmie 10 s) O(n 2 )- czas konieczny do wykonania algorytmu rośnie wraz z kwadratem liczby elementów (przy podwojeniu liczby elementów ich obsługa będzie trwała cztery razy dłużej) Elementy O(log n) O(n) O(n logn) O(n 2 ) O(2 n ) 10 3 10 33 100 1024 100 7 100 664 10 000 1,27 10 30 1 000 10 1 000 9 966 1 000 000 1,07 10 301 10 000 13 10 000 132 877 100000000 1,99 10 3010 O(log n) O(n) - złożoność logarytmiczna - złożoność liniowa O(n log n) - złożoność liniowo-logarytmiczna (quasi-liniowa) O(n 2 ) - złożoność kwadratowa O(2 n ) - złożoność wykładnicza Rok akademicki 2012/2013, Wykład nr 9 59/79 Rok akademicki 2012/2013, Wykład nr 9 60/79 Sortowanie Sortowanie Sortowanie polega na uporządkowaniu zbioru danych względem pewnych cech charakterystycznych każdego elementu tego zbioru (wartości każdego elementu) W przypadku liczb, sortowanie polega na znalezieniu kolejności liczb zgodnej z relacją lub W przypadku słów sortowanie polega na ustawieniu ich w porządku alfabetycznym (leksykograficznym) Przykład: Tablica nieposortowana: Przykład: Tablica nieposortowana: Tablice posortowane: Tablica posortowana zgodnie z relacją (od najmniejszej do największej liczby): Tablica posortowana zgodnie z relacją (od największej do najmniejszej liczby):

Rok akademicki 2012/2013, Wykład nr 9 61/79 Rok akademicki 2012/2013, Wykład nr 9 62/79 Sortowanie W praktyce sortowanie sprowadza się do porządkowanie danych na podstawie porównania - porównywany element to klucz Przykład: Tablica nieposortowana (imię, nazwisko, wiek): Tablica posortowana (klucz - nazwisko): Tablica posortowana (klucz - wiek): Sortowanie Po co stosować sortowanie? Posortowane elementy można szybciej zlokalizować Posortowane elementy można przedstawić w czytelniejszy sposób Klasyfikacje algorytmów sortowania Złożoność obliczeniowa algorytmu - zależność liczby wykonywanych operacji od liczebności sortowanego zbioru n Złożoność pamięciowa - wielkość zasobów zajmowanych przez algorytm (sortowanie w miejscu - wielkość zbioru danych podczas sortowania nie zmienia się lub jest tylko nieco większa) Sortowanie wewnętrzne (odbywa się w pamięci komputera) i zewnętrzne (nie jest możliwe jednoczesne umieszczenie wszystkich elementów zbioru sortowanego w pamięci komputera) Rok akademicki 2012/2013, Wykład nr 9 63/79 Rok akademicki 2012/2013, Wykład nr 9 64/79 Klasyfikacje algorytmów sortowania Proste wstawianie (insertion sort) Algorytm jest stabilny, jeśli podczas sortowania zachowuje kolejność występowania elementów o tym samym kluczu Przykład: Tablica nieposortowana (imię, nazwisko, wiek): Tablica posortowana algorytmem stabilnym (klucz - wiek): Tablica posortowana algorytmem niestabilnym (klucz - wiek): Przykład: Funkcja w języku C: void InsertionSort(int tab[]) int i,j,tmp; for (i=1; i<n; i++) j=i; tmp=tab[i]; while (tab[j-1]>tmp && j>0) tab[j]=tab[j-1]; j--; tab[j]=tmp;

Rok akademicki 2012/2013, Wykład nr 9 65/79 Rok akademicki 2012/2013, Wykład nr 9 66/79 Proste wstawianie (insertion sort) Złożoność algorytmu: O(n 2 ) + wydajny dla danych wstępnie posortowanych + wydajny dla zbiorów o niewielkiej liczebności + małe zasoby zajmowane podczas pracy (sortowanie w miejscu) + stabilny + prosty w implementacji mała efektywność dla normalnej i dużej ilości danych. Proste wybieranie (selection sort) Przykład: Funkcja w języku C: void SelectionSort(int tab[]) int i,j,k,tmp; for (i=0;i<n-1;i++) k=i; for (j=i+1; j<n; j++) if (tab[k]>=tab[j]) k = j; tmp = tab[i]; tab[i] = tab[k]; tab[k] = tmp; Rok akademicki 2012/2013, Wykład nr 9 67/79 Rok akademicki 2012/2013, Wykład nr 9 68/79 Proste wybieranie (selection sort) Bąbelkowe (bubble sort) Złożoność algorytmu: O(n 2 ) + szybki w sortowaniu niewielkich tablic + małe zasoby zajmowane podczas pracy (sortowanie w miejscu) + prosty w implementacji liczba porównań elementów jest niezależna od początkowego rozmieszczenia elementów w tablicy w algorytmie może zdarzyć się, że wykonywana jest zamiana tego samego elementu ze sobą. Sortowanie bąbelkowe (ang. bubble sort), nazywane jest także: sortowaniem pęcherzykowym sortowaniem przez prostą zamianę (ang. straight exchange) Metoda ta polega na porównywaniu dwóch kolejnych elementów i zamianie ich kolejności jeśli jest to konieczne Nazwa metody wzięła się stąd, że kolejne porównania powodują wypychanie kolejnego największego elementu na koniec ( wypłynięcie największego bąbelka )

Rok akademicki 2012/2013, Wykład nr 9 69/79 Rok akademicki 2012/2013, Wykład nr 9 70/79 Bąbelkowe (bubble sort) Bąbelkowe (bubble sort) Funkcja w języku C: void BubbleSort(int tab[]) int i,j,tmp,koniec; do koniec=0; for (i=0;i<n-1;i++) if (tab[i]>tab[i+1]) tmp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=tmp; koniec=1; while (koniec); Rok akademicki 2012/2013, Wykład nr 9 71/79 Rok akademicki 2012/2013, Wykład nr 9 72/79 Bąbelkowe (bubble sort) Złożoność algorytmu: O(n 2 ) + prosta realizacja + wysoka efektywność użycia pamięci (sortowanie w miejscu) + stabilny mała efektywność. Sortowanie szybkie (Quick-Sort) - faza dzielenia Tablica jest dzielona na dwie części wokół pewnego elementu x (nazywanego elementem centralnym) Jako element centralny x najczęściej wybierany jest element środkowy (choć może to być także element losowy) Przeglądamy tablicę od lewej strony, aż znajdziemy element a i x, a następnie przeglądamy tablicę od prawej strony, aż znajdziemy element a j x Zamieniamy elementy a i i a j miejscami i kontynuujemy proces przeglądania i zamiany, aż nastąpi spotkanie w środku tablicy W ten sposób otrzymujemy tablicę podzieloną na lewą część z wartościami mniejszymi lub równymi x i na prawą część z wartościami większymi lub równymi x

Rok akademicki 2012/2013, Wykład nr 9 73/79 Rok akademicki 2012/2013, Wykład nr 9 74/79 Sortowanie szybkie (Quick-Sort) - faza sortowania Zawiera dwa rekurencyjne wywołania tej samej funkcji sortowania: dla lewej i dla prawej części posortowanej tablicy Rekurencja zatrzymuje się, gdy wielkość tablicy wynosi 1 Przykład: Sortowanie szybkie (Quick-Sort) - QS(tab,0,5) Element środkowy: (0+5)/2 = 2, x = tab[2] = 5 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami Sortujemy 6-elementową tablicę tab: Poszukiwania kończymy, gdy indeksy i, j mijają się Wywołanie funkcji QS() ma postać: QS(tab,0,5); Wywołujemy rekurencyjnie funkcję QS() dla elementów z zakresów [l,j] i [i,r]: QS(tab,0,3); QS(tab,4,5); Rok akademicki 2012/2013, Wykład nr 9 75/79 Rok akademicki 2012/2013, Wykład nr 9 76/79 Sortowanie szybkie (Quick-Sort) - QS(tab,0,3) Element środkowy: (0+3)/2 = 1, x = tab[1] = 2 Sortowanie szybkie (Quick-Sort) - QS(tab,2,3) Element środkowy: (2+3)/2 = 2, x = tab[2] = 3 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami 0 1 2 3 1 2 4 3 i j zamiana Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami Poszukiwania kończymy, gdy indeksy i, j mijają się Poszukiwania kończymy, gdy indeksy i, j mijają się Wywołanie QS() tylko dla elementów z zakresu [2,3], gdyż po lewej stronie rozmiar tablicy do posortowania wynosi 1: Rozmiar obu tablic do posortowania wynosi 1 więc nie ma nowych wywołań funkcji QS() QS(tab,2,3);

Rok akademicki 2012/2013, Wykład nr 9 77/79 Rok akademicki 2012/2013, Wykład nr 9 78/79 Sortowanie szybkie (Quick-Sort) - QS(tab,4,5) Element środkowy: (4+5)/2 = 4, x = tab[4] = 6 Od lewej szukamy tab[i] x, a od prawej szukamy tab[j] x, zamieniamy elementy miejscami Poszukiwania kończymy, gdy indeksy i, j mijają się Rozmiar obu tablic do posortowania wynosi 1 więc nie ma nowych wywołań funkcji QS() Sortowanie szybkie (Quick-Sort) Funkcja w języku C: void QuickSort(int tab[], int l, int r) int i,j,x,y; i=l; j=r; x=tab[(l+r)/2]; do while (tab[i]<x) i++; while (x<tab[j]) j--; if (i<=j) y=tab[i]; tab[i]=tab[j]; tab[j]=y; i++; j--; while (i<=j); if (l<j) QuickSort(tab,l,j); if (i<r) QuickSort(tab,i,r); Rok akademicki 2012/2013, Wykład nr 9 79/79 Koniec wykładu nr 9 Dziękuję za uwagę!