1
Technologie Internetuwykład 1: Architektura Internetu
Piotr Habela
Polsko-Japońska Wyższa SzkołaTechnik Komputerowych
2
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
3
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;
4
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”;
5
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;
6
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
7
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.
8
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.
9
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).
10
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
11
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.
12
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.
13
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.
14
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).
15
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
16
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;
17
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.
18
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
19
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).
20
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.
21
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.
22
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ść.
24
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.
25
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.
26
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.
27
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.
28
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.
29
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.
30
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.
31
Procedury interfejsu gniazd (1)• Utworzenie gniazda:deskryptor = socket(
rodzina, //np. PF_INET => TCP/IPtyp, //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ń.
32
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);
33
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.
34
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 gniazdarecvmsg(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.
35
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;
36
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