350 likes | 549 Views
Technologie Internetu wykład 1: Architektura Internetu Piotr Habela Polsko-Japońska Wyższa Szkoła Technik Komputerowych. Plan wykładu. Sieci i intersieci – motywy, rozwój, problemy Warstwa sprzętowa – zagadnienia Model warstwowy protokołów sieciowych Zestaw protokołów TCP/IP
E N D
Technologie Internetu wykład 1:Architektura Internetu Piotr Habela Polsko-Japońska Wyższa Szkoła Technik Komputerowych 1
Plan wykładu • Sieci i intersieci – motywy, rozwój, problemy • Warstwa sprzętowa – zagadnienia • Model warstwowy protokołów sieciowych • Zestaw protokołów TCP/IP • Warstwa interfejsu sieciowego (protokół IP, adresy IP, ich odwzorowania, ICMP) • Warstwa transportu • Interfejsy do protokołów komunikacyjnych • Standaryzacja protokołów internetowych 2
Zagadnienia nie omawiane • Zagadnienia fizyczne przesyłania sygnałów; • Rodzaje łączy; technika w warstwie sprzętowej; • Topologie sieci; • Szczegóły protokołów niższych warstw; 3
Wybrane ważne daty (1) • 1945 – Vannevar Bush – artykuł „As We May Think” (Atlantic Monthly) z ideami leżącymi u podstaw hipertekstu; • 1954 – Powstanie ARPA; • 1965 – Paul Baran z RAND Corporation: „On Distributed Communication Network” – koncepcja zdecentralizowanej, odpornej na awarie licznych węzłów sieci komputerowej. • 1971 – Ray Tomilson: pierwszy program poczty elektronicznej; • 1972 – Telnet; • 1 września 1969 – Pierwsze węzły sieci ARPA-NET; • 1973 – Pierwsze połączenia międzynarodowe (do Wielkiej Brytanii i Norwegii). • 1974 – Vinton Cerf i Bob Kahn: „A protocol for Packet Intercommunication”: TCP, termin “Internet”; 4
Wybrane ważne daty (2) • 1975 – zmiana statusu ARPA-NET z eksperymentalnej na użytkową; • 1982 – ARPA-NET wprowadza protokół TCP/IP • 1984 – powstaje DNS; • 1990 – ARPA-NET kończy działalność; • 1991 – Polska dołączona do Internetu; • 1992 – Tim Berners Lee: podstawy WWW • 1993 – Mosaic – pierwsza przeglądarka • 1994 – Pierwszy SPAM: f-ma prawnicza Canter i Siegel wysyła list do 6 tys. grup dyskusyjnych (loteria pozwoleń na pracę w US); • 1995 – prywatyzacja Internetu, Netscape, Java; • 1995 – WWW wyprzedza FTP; 5
Warstwa sprzętowa – problemy do rozwiązania • Podział strumienia danych na pakiety (ramki): istotne dla koordynacji i podziału czasu (wspólne medium!); • Wykrywanie kolizji; • Kontrola poprawności transmisji: bity parzystości, sumy kontrolne lub CRC (Cyclic Redundancy Check): szybki algorytm (indeksy przesuwające, bramki XOR, sprzężenie zwrotne) => wielomian komunikatu; dość skuteczny przy identyfikowaniu błędów; łatwość sprawdzenia przez odbiorcę; • Identyfikacja adresata (sygnał dociera do wszystkich maszyn…): adresy sprzętowe; • Interpretacja komunikatu: identyfikatory typów ramek; • Postać ramki: • preambuła; • stałej długości nagłówek: adres nadawcy, adres odbiorcy, typ ramki; • CRC 6
Adresy sprzętowe • Zwane MAC (Media Access Control), tj. adres dostępu do nośnika; Ethernet: 48 bitów. • Interfejs sieciowy filtruje ramki nie obciążając „cudzymi” procesora; • Sposoby określania: statyczne, konfigurowalne, dynamiczne; • Prefiksy statycznych adresów przydzielane przez IEEE (zob. http://standards.ieee.org/regauth/oui/oui.txt). • Ponadto istnieje zarezerwowany adres rozgłaszania; oraz możliwość definiowania adresów grupowych; • Dalsza identyfikacja – typ ramki. Kod może identyfikować rozwiązanie danej firmy, albo ustandaryzowany protokół wyższej warstwy. 7
Model warstwowy OSI (Open Software Interconnection) 7. Aplikacji: usługi realizowane przez aplikacje. 6. Prezentacji danych: format wymiany danych, ich ewentualne szyfrowanie. (zwykle nie występuje) 5. Sesji: nawiązywanie i zamykanie połączeń (związana z dużymi systemami wielodostępnymi – straciła na znaczeniu) 4. Transportu: podział danych, gwarancja dostarczenia, weryfikacja. 3. Sieciowa: logiczne adresy zamienia na sprzętowe, pakiety logiczne dzieli na ramki danych. 2. Łącza: interpretowanie przesyłanych bitów jako ramek. 1. Fizyczna: przesyła nieprzetworzone bity danych przez nośnik. 8
Zestaw protokołów TCP/IP • Zbudowany dla ARPAnet-u (sieci naukowej wchodzącej w skład DDN – Defence Data Network). TCP i IP = najpopularniejsze w zestawie protokołów. • Jest to zestaw warstwowy. Podział motywowany: • Złożonością zadania; • Heterogenicznością istniejących sieci składowych; • Specjalizacją poszczególnych protokołów do zastosowań. • Przykładowo: poczta umożliwia przesyłanie listów; wymaga niezawodnego połączenia od TCP, IP przekazuje datagramy, Ethernet zarządza medium. • Droga przebywana przez komunikat – całkowicie przezroczysta dla użytkownika. • Inne zestawy – np. IPX/SPX (Novell); NetBIOS, NetBEUI (IBM). 9
Zestaw protokołów TCP/IP • Zwykle wyróżnia się następujące warstwy: • Warstwa aplikacji (Telnet, FTP, e-mail…). Także SMNP (Simple Network Management Protocol). • Transportowa (TCP, UDP). TCP zapewnia wiarygodny (reliable) przepływ danych (porcjowanie, timeouts). UDP przesyła datagramy nie gwarantując ich dotarcia. • Sieciowa (IP, ICMP, IGMP). Albo warstwa internetowa. Obsługuje ruch pakietów poprzez sieć. Między innymi zachodzi tu rutowanie pakietów. Internet Protocol, Internet Control Message Protocol, Internet Group Management Protocol. • Połączeniowa (sterowniki urządzenia i karta interfejsu sieciowego; np. Ethernet, token ring, użycie ARP i RARP) Albo warstwa interfejsu sieciowego. Wszelkie szczegóły fizycznej komunikacji. [R]ARP = [Reverse] Address Resolution Protocol 10
Intersieć • Sieć wirtualna, realizująca model jednolitych usług. • Architektura musi uwzględniać heterogeniczność sieci składowych. • Sprzętowe adresy dla intersieci nie wystarczają, gdyż każda z podsieci może używać innego formatu => wprowadzono abstrakcyjne adresy protokołowe. Pozwalają odwoływać się do działającego na odległej maszynie procesu, bez znajomości jej adresu sprzętowego. 11
Protokół IP • Określono format niezależny od konkretnego sprzętu: uniwersalny, wirtualny pakiet, zwany datagramem. Rozmiar od 1 oktetu do 64K. • IP nie obsługuje takich problemów jak: • duplikowanie datagramów; • dostarczanie z opóźnieniem lub nie w kolejności; • uszkodzenie danych; • utrata datagramów. • Nagłówek zawiera numery IP nadawcy i odbiorcy. 12
Adresy IP • Identyfikuje połączenie komputera z daną siecią. • IPv4 (obecny): 32 bitowa liczba (zwykle przedstawiana jako 4 zapisane dziesiętnie segmenty). • Trzy typy adresów: • Unicast (pojedynczy host) • Broadcast (wszystkie maszyny danej sieci) • Multicast (rozgłaszanie grupowe). • Pierwsza część adresu identyfikuje sieć, zaś dalsza określa maszynę w ramach tej sieci. 13
Podział puli adresów IP • 4 klasy adresów: bity sieci bity hosta • A: do 127:0-netid(7)hostid(24) • B: 128-191: 10-netid(14)hostid(16) • C: 192-223: 110-netid(21)hostid(8) • D: 224-239: 1110-multicastgroupID(28) • E: 240-255: 1111-zarezerwowane(28) • Prefiksy identyfikujące sieć przydzielane przez IANA (Internet Assigned Numbers Authority): http://www.iana.org/ • Problem tego podejścia: • marnotrawstwo adresów; • duże tablice tras (zob. dalej). 14
Specjalne adresy IP • Adres zerowy węzła (sufiks) = adres sieci; • Cała pula 127.*.*.* = adresy pętli zwrotnej; • Same jedynki = rozgłaszanie ograniczone (lokalna sieć fizyczna; używane przy starcie komputera) • Same zera – oznaczenie lokalnego komputera, gdy właściwy adres nie jest mu jeszcze znany. • Sufiks z samych jedynek = rozgłaszanie ukierunkowane (maszyny danej sieci) • Adresy prywatne (tzw. nierutowalne) [RFC 1918]: • od 10.0.0.0 do 10.255.255.255 • od 172.16.0.0 do 172.16.255.255 • od 192.168.0.0 do 192.168.255.255 15
Nagłówek datagramu IP • Wersja = IPv4; • Długość nagłówka; • typ obsługi (trasa o minimalnym opóźnieniu czy maksymalnej przepływności); • długość całkowita; • identyfikacja (datagramu); • znaczniki, przesunięcie fragmentu (używane przy fragmentacji datagramu); • czas życia (max. 255; redukowany na każdym odcinku ); • typ, • suma kontrolna nagłówka, • IP nadawcy i odbiorcy; • opcje IP; • uzupełnienie; 16
Encapsulation (kapsułkowanie?) datagramu IP • Zapakowanie wewnątrz ramki sieciowej; zawartość nie jest interpretowana przez niższą warstwę. • Datagram IP jako zawartość takiej ramki jest identyfikowany odpowiednim typem ramki sieciowej. Oczywiście ramka sieciowa otaczająca datagram musi mieć wyspecyfikowany adres sprzętowy odbiorcy. • Każdy etap na drodze datagramu wiąże się z rozpakowaniem ramki sieciowej a następnie wysłaniem go w nowej ramce. • MTU (Maximum Transfer Unit): ogranicza wielkość danych w ramce. Jeżeli dla danej sieci rozmiar datagramu przekracza MTU, to wykonywana jest fragmentacja. Składanie datagramu odbywa się dopiero u ostatecznego odbiorcy. Odbiór datagramu: wszystko albo nic. 17
Optymalizacja wykorzystania puli adresów IP • Classless Inter Domain Routing (CIDR) [RFC 1517, 1518, 1519]: • Dowolna liczba bitów na adres sieci; • Zapis adresu dla podejścia bezklasowego np: 192.9.205.22 /18 (określa się liczbę bitów maski sieci); • Możliwe agregowanie adresów sieci i hierarchiczne określanie trasy; • IPv6: 128-bitowe adresy => ogromna pula. Ponadto: • Zmieniony, rozszerzalny format nagłówka: pole „typ następnego nagłówka”; • Wsparcie dla obsługi dźwięku i obrazu; • Trzy rodzaje adresów: jednostkowy, rozsyłania grupowego, „grono” -> służy np. realizacji replik usługi. • Sposób zapisu: notacja szesnastkowa z dwukropkami; możliwość pomijania segmentu zer: FF0C:0:0:0:0:0:0:B1 -> FF0C::B1 18
Odwzorowywanie adresów (1) • Aby dostarczyć dane, należy na podstawie adresu protokołowego ustalić adres sprzętowy. • Metody: • Tablicowe (zwykle w sieciach rozległych); • Obliczeniowe (gdy adres sprzętowy konfigurowalny); • Sieciowe: pytanie-odpowiedź (zwykle w lokalnych ze statycznymi adresami). • Adres sprzętowy można określić tylko wtedy, jeśli adresat jest w tej samej sieci fizycznej. Pakiety dla adresatów nielokalnych przejmuje ruter. • Ruter przynależy do co najmniej dwóch sieci (posiadając tyleż adresów logicznych i sprzętowych). 19
Odwzorowywanie adresów (2) • Każdy ruter przechowuje tablicę tras: • Prefiks i maska adresowa każdej sieci; • Odpowiadający każdej pozycji adres sprzętowy rutera. • Odczytany adres rutera nie zostanie umieszczony w nagłówku datagramu. • Address Resolution Protocol (ARP): • Ujednolicony protokół odwzorowywania adresów. • Zapytanie wysyłane na adres rozgłaszania danej sieci. • Odpowiedź tylko do pytającego. • Generyczny, choć zwykle odwzorowuje IP na Ethernet. • Ramki ARP identyfikowane kodem typu ramki. 20
Internet Control Message Protocol (ICMP) • Zintegrowany z protokołem IP. • Umożliwia informowanie nadawcy o powstałych błędach (mniej poważnych niż błąd sumy nagłówka). • Komunikaty o błędach mogą dotyczyć: • tłumienia nadawcy; • przekroczenie terminu; • nieosiągalności odbiorcy; • konieczności zmiany trasy; • problemów z parametrami. • Ponadto dostępne: • echo; odpowiedź z echem; • prośba o maske adresową; odpowiedź z maską adresową. • Zastosowania – m.in. ping, traceroute, wyznaczanie MTU. 21
Urządzenia aktywne • Repeater (wzmacniak), oraz hub -> warstwa fizyczna (1 w OSI).Propagują również zakłócenia… • Most: podział na dwie sieci, mogące posiadać różne media transmisyjne -> warstwa łącza (2); pracuje na adresach MAC. • Switch -> warstwa łącza danych (2). Symuluje sieć lokalną z mostami, gdzie w każdym segmencie jest tylko jeden komputer. • Ruter -> podział na więcej podsieci IP -> warstwa łącza (2) i sieciowa (3). Łączenie sieci heterogenicznych. Podobnie jak most = specjalizowany komputer: procesor, pamięć, interfejsy sieciowe. Różne media transmisyjne, mechanizmy adresowania sprzętowego i formaty ramek. • Zapora sieciowa -> ogranicza dostępu z zewnątrz. Rodzaje filtrów: • bramki aplikacji: pakiety są odpowiednio tłumaczone; wymaga skonfigurowania oprogramowania proxy dla każdej usługi sieciowej na każdej z maszyn w sieci; • filtry pakietów: blokowanie pakietów w oparciu o adres pochodzenia, adres docelowy, protokół, nr portu czy nawet zawartość. 22
TCP – Transmission Control Protocol • Warstwa transportu. Protokół niezawodnego przesyłania. • Obsługuje następujące poważne problemy transmisji: • przywracanie właściwej kolejności odebranych pakietów: wykorzystanie numeru porządkowego pakietów; • unikanie duplikatów – j.w.; • retransmisja zgubionych pakietów: nadawca wysyła ponownie, jeśli w zadanym czasie nie otrzymał potwierdzenia (acknowledgment); • unikanie powtórzeń spowodowanych nadmiernym opóźnieniem: numery pakietów dodatkowo kwalifikowane identyfikatorami sesji; • kontrola przepływu dla uniknięcia zalewu danych: metoda przesuwającego się okna. 24
TCP – właściwości (1) • Tzw. protokół połączeniowy: przed przesłaniem danych zestawiane jest połączenie. • Komunikacja punkt do punktu: oprogramowanie TCP niezbędne tylko w końcowych węzłach. • W pełni dwukierunkowa komunikacja. Możliwa w dowolnym momencie i buforowana. • Interfejs strumieniowy. Brak pojęcia rekordu => dane mogą dotrzeć w innych fragmentach. • Niezawodne połączenie: zgoda na połączenie obydwu programów. • Łagodne kończenie połączenia. Program może zażądać zakończenia, a protokół zapewni dostarczenie wysłanych danych przed jego zamknięciem. 25
TCP – właściwości (2) • Tzw. retransmisja z adaptacją. Opóźnienie komunikacji jest śledzone i na tej podstawie jest określany czas, po upływie którego stosuje się retransmisję (zbyt szybka transmisja doprowadziłaby do zalewu pakietów). • Kontrola przepływu: odbiorca dostarcza potwierdzenia odbioru oraz tzw. propozycje okna (ile może przyjąć do bufora); • Trójetapowa wymiana komunikatów przy ustawianiu i kończeniu połączeń (tzw. 3-way handshake): segmenty SYN i FIN. • Kontrola przeciążenia: w razie zgubienia pakietu jest wysyłany najpierw jeden, a następnie tempo jest zwiększane z uwzględnieniem propozycji okna. 26
Zawartość segmentu TCP • port nadawcy; • port odbiorcy; • nr porządkowy (dotyczy aktualnie wysyłanych – tj. wychodzących danych); • numer potwierdzenia (dotyczy odebranych); • długość nagłówka; • suma kontrolna (obejmuje nagłówek i dane segmentu TCP); • bity kodu; • okno (dostępny bufor dla odbieranych danych); • dane. 27
Encapsulation - ogólnie • Każda warstwa dołącza swe nagłówki przed i niekiedy również (np. Ethernet trailer) za przekazywanym pakietem danych. • Jednostka danych wysyłanych przez protokół TCP = segment; • Jednostka wysyłana przez protoków IP = datagram (tak naprawdę – packet: tj. datagram IP albo fragment datagramu IP); • Jednostka w ramach Ethernetu = frame (ramka) – o określonym typie • 8-bitowy identyfikator w nagłówku IP identyfikuje protokół datagramu: ICMP, IGMP, TCP, UDP. • Analogicznie TCP i UDP używają w nagłówku 16-bitowych numerów portów do zidentyfikowania aplikacji: numery źródłowego i docelowego portu. • Analogicznie (np. rozróżnienie pomiędzy IP, ARP, RARP), nagłówek Ethernetowy zawiera 16-bitowe pole typu ramki. • Demultiplexing: po otrzymaniu ramki kolejne warstwy „rozpakowują” dane i w oparciu o identyfikatory w znanych sobie nagłówkach przekazują odpowiedniemu protokołowi warstwy wyższej. 28
Numery portów • Liczby 16-bitowe. • Identyfikacja serwerów typowych usług: przez tzw. well-known port numbers: np. FTP = 21, Telnet = 23 (zob. też /etc/services na Unix-ie). • Przydziałem numerów od 1 do 1023 zajmuje się Internet Assigned Numbers Authority (IANA).Unix: porty zarezerwowane => tylko superuser może przydzielić taki port. • Porty klienckie zwane efemerycznymi (ephemeral ports), gdyż używane są na czas korzystania danego klienta z usługi. Zwykle alokowane pomiędzy 1024 a 5000. • Kanał komunikacyjny zestawiany przez protokół TCP jest wyznaczone przez dwa końce zwane gniazdami. Gniazdo = adres IP + numer portu. 29
Interfejsy do protokołów komunikacyjnych • Zakres funkcjonalności określany przez specyfikację danego protokołu. Konkretne API mogą być specyficzne dla danego systemu operacyjnego; • Najpopularniejsze jednak – udostępnianie jednolitego interfejsu tzw. gniazd (sockets). Powstał jako część BSD; zwany też Berkeley sockets. • Mogą być dostępne jako wywołania systemu operacyjnego, lub w postaci funkcji bibliotecznych. • Skonstruowane w stylu UNIX-owego interfejsu wejścia-wyjścia: „otwórz-czytaj-zapisz-zamknij”. Po otwarciu pliku zwracana jest liczba – deskryptor, używana następnie w kolejnych odwołaniach. Podobnie jest w przypadku komunikacji z protokołem. 30
Procedury interfejsu gniazd (1) • Utworzenie gniazda: deskryptor = socket( rodzina, //np. PF_INET =>TCP/IP typ, //rodzaj komunikacji: SOCK_STREAM // - połączeniowa strumieniowa, //SOCK_DGRAM – bezpoł. komunikatami protokół); • Zamknięcie gniazda: close(gniazdo); //closesocket w Windows Sockets • Gniazda a wątki: • każdy nowy wątek dziedziczy kopię otwartych gniazd z wątku, który go utworzył; • gniazda posiadają licznik odwołań. 31
Procedury interfejsu gniazd (2) • Określenie portu: bind(gniazdo, adres_lokalny, dł_adresu) // serwer określa, na jakim porcie//będzie oczekiwał połączenia • Oczekiwanie na komunikaty: listen(gniazdo, rozmiar_kolejki_zgłoszeń) • Protokół połączeniowy – wymaga ponadto przyjęcia nowego połączenia: nowe_gniazdo = accept(gniazdo, adres_klienta, długość_adresu_klienta); 32
Procedury interfejsu gniazd (3) • Klient łączy się z serwerem: connect(gniazdo, adres_serwera, długość_adresu_serwera); Def.: adres punktu końcowego = kombinacja adresu IP i nr-u portu. • Wysyłanie danych: send(gniazdo, dane, długość, znaczniki) // ...gdy gniazdo jest połączone sendto(gniazdo, dane, długość, znaczniki, adres_odbiorcy, długość_adresu_odbiorcy) // ... dla niepołączonego gniazda; sendmsg(gniazdo, struktura_komunikatu, znaczniki) // skrót ww. 33
Procedury interfejsu gniazd (4) • Odbieranie danych: recv(gniazdo, bufor, długość_bufora, znaczniki) // z połączonego gniazda recvfrom(gniazdo, bufor, długość, znaczniki, adres_nadawcy, długość_adresu_nadawcy) // dla niepołączonego gniazda recvmsg(gniazdo, struktura_komunikatu, znaczniki) // skrót ww. • Ponadto – tradycyjne read i write (gniazdo, bufor, długość), dostępne dla gniazd połączonych. • Inne operacje: • getpeername – adres odległego klienta; • gethostname – adres lokalny; • gethostbyname -> adres IP maszyny o podanej nazwie; • gethostbyaddr -> nazwa na podstawie podanego adresu IP; • oraz getsockopt oraz setsockopt dla obsługi wartości opcji gniazda. 34
Sieciowe programy użytkowe • Protokoły transportowe umożliwiają jednoznaczne wskazanie żądanej usługi. W TCP są to 16-bitowe numery portów. Pozwala to odbiorcy na skierowanie komunikatu do właściwego serwera (w znaczeniu programu). • Domain Name System (DNS): – rozproszona baza danych mapująca nazwy na numery IP. Większość aplikacji pozwala stosować zamiennie nazwy i numery. Rev-DNS (konwersja odwrotna: IP na nazwę). • Domeny najwyższego poziomu: geograficzne (Country Code Domains) lub organizacyjne. Zob. http://www.iana.org/cctld/cctld.htm • Adres URL: • identyfikator usługi: http:// ftp:// gopher:// telnet:// news:// • nazwa domeny: adres domenowy lub kropkowo-dziesiętny; • ścieżka dostępu na serwerze; 35
Standaryzacja protokołów internetowych • Internet Society (ISOC) – professional society. • Internet Architecture Board (IAB) – techniczny nadzór i koordynacja. Czuwa nad jakością standardów internetowych; podlega ISOC. • Internet Engineering Task Force (IETF) – krótkoterminowe przedsięwzięcia zorientowane na rozwijanie standardów; podzielona na 9 obszerów. Dodatkowo: Internet Engineering Steering Group (IESG). Podlega IAB. • Internet Research Task Force (IRTF) – długoterminowe projekty badawcze. Podlega IAB. • Oficjalne standardy publikowane jako RFC (Request For Comments). Dostępne publicznie (łącznie ok. 75 MB). Niektóre nie mają statusu oficjalnego standardu. Zob. http://www.isi.edu i http://www.rfc-editor.org 36