WY D A NIE V " SIECI KUROSE. ROSS KOMPUTEROWE ZDOBĄDŹ NAJLEPSZĄ AKTUALNĄ WIEDZĘ NA TEMAT SIECI KOMPUTEROWYCH . •Jak działają aplikacje sieciowe i prot...
ZDOBĄDŹ NAJLEPSZĄ AKTUALNĄ WIEDZĘ . NA TEMAT SIECI KOMPUTEROWYCH •Jak działają aplikacje sieciowe i protokoły? • Na czym polega warstwowość architektury sieciowej? W jaki sposób zbudować doskonale funkcjonującą i bezpieczną aplikację?
Wszellde prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publil
Możesz tan1 wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Julie i naszym trzem bezcennym dzieciom - Chrisowi, Charliemu i Ninie JFK Mojej wspaniałej żonie Veronique
i naszym trzem córkom
Cecile, Claire i Katie
KWR
•
•
•
•
•
•
•
-
O autorach
ROZdi1Zla1łł· 1.·TI "
„
15
•
Przedmowa
17
Sieci komputero,ve i i11te.JJ:n et
27
1.1. Czym jest internet? 1.1.1. Opis podstawowych l
28 28 32 33 36 38 39 49 53 54
1.4.
1.5.
1.6. 1.7.
1.8.
w sieciach z przełączaniem pakietów? 1.3.3. Dostawcy ISP i sieci szkieletowe internetu Opóźnienie i utrata pakietów w sieciach z przełączaniem pakietów 1.4.1. Omówienie opóźnień w sieciach z przełączaniem pakietów 1.4.2. ·Opóźnienie kolejkowania i utrata paldetów 1.4.3. Opóźnienie międzywęzłowe 1.4.4. Przepustowość w sieciach komputerowych Warstwy protokołów i modele ich usług 1.5.1. Architektura warstwowa 1.5.2. Komunikatf, segmenty, datagramy i ramki Sieci pod atakiem Historia sieci l
61 63 65 66 70 73 75 78 79 85 87 93 93 94 96 98 99 100 101
•
5
6 Spis treści
Problemy do rozwiązania i pytania Problemy Dodatlcowe pytania Ćwiczenie realizowane za pomocą narzędzia Wireshark \tV.Y\l\fIA L1 Z. : l_1eo11.,11·d l(lein1:oc.lz
102 105 114 115
W arst,va apAikacj i
1211
2.1. Podstawy dotyczące aplikacji sieciowych 2.1.1. Architektury aplikacji sieciowych 2.1.2. Komunikacja procesów 2.1.3. Usługi transportowe dostępne aplikacjom 2.1.4. Usługi transportowe dostępne w internecie 2.1.5. Protokoły warstwy aplikacji 2.1.6. Aplikacje sieciowe uwzględnione w książce i protokół HTTP 2.2. Technologia 2.2.1. Omówienie protokołu.HTTP 2.2.2. Połączenia nietrwałe i trwałe 2.2.3. Format komunikatu HTTP 2.2.4. Interakcja między użytkownikiem i serwerem - pliki cookies 2.2.5. Buforowanie stron internetowych 2.2.6. Warunkowe żądanie GET 2.3. Transfer plików przy użyciu protokołu FTP 2.3.1. Polecenia i odpowiedzi protokołu FTP 2.4. Internetowa poczta elektroniczna 2.4.1. Protokół SMTP 2.4.2. Porównanie protokołów SMTP i HTTP 2.4.3. Formaty wiadomości pocztowych 2.4.4. Protokoły dostępu do skrzynki pocztowej 2.5. System DNS, czyli internetowa usługa katalogowa 2.5.1. Usługi oferowane przez system DNS 2.5.2. Przegląd zasad działania systemu DNS 2.5.3. Rekordy i komunikaty systemu DNS 2.6. Aplikacje z obszaru P2P 2.6.1. Dystrybucja plików w sieciach P2P 2.6.2. Sieci DHT 2.6.3. Studium przypadlcu Skype, czyli telefonia internetowa oparta na sieci P2P 2.7. Programowanie gniazd protokołu TCP 2.7.1. Programowanie gniazd protokołu TCP 2.7.2. Przykład aplikacji klient-serwer napisanej w języku Java
2.8. Programowanie gniazd protolcołu UDP 2.9. Podsumowanie Problemy do rozwiązania i pytania Problemy Dodatkowe pytania Zadania związane z p1·ogramowaniem gniazd Zadanie 1: Wielowątkowy serwer WWW Zadanie 2: Klient pocztowy Zadanie 3: Aplikacja Ping użyvvająca protokołu UDP Zadanie 4: Serwer pośredniczący WWW Ćwiczenia wykorzystujące narzędzie Wireshark Ćwiczenie 1: Protokół HTTP Ćwiczenie 2: Protolcół DNS ·w1�·w1AJ) z : B1Aa111 c()l1.e11.
3.1. Podstawowe informacje na temat usług warstwy transportowej 3.1.1. Związek występujący między warstwami transportową i sieci 3.1.2. Przegląd zastosowania warstwy transportowej w internecie 3.2. Multipleksowanie i demultipleksowanie 3.3. Bezpołączeniowy protolcół transportowy UDP 3.3.1. Struktura segmentu UDP 3.3.2. Suma kontrolna segmentu UDP 3.4. Podstawy dotyczące niezawodnego transferu danych 3.4.1. Tworzenie protokołu niezawodnego transferu danych 3.4.2. Potokowane protokoły niezawodnego transferu danych 3.4.3. Go-Back-N 3.4.4. Powtarzanie selektywne 3.5. Protokół transportowy TCP zorientowany na połączenie 3.5.1. Połączenie TCP 3.5.2. Strulctura segmentu TCP 3.5.3. Wyznaczanie czasu RTT i czas oczeldwania 3.5.4. Niezawodny transfer danych 3.5.5. Kontrola przepływu 3.5.6. Zarządzanie połączeniem TCP 3.6. Podstawy dotyczące kontroli przeciążenia 3.6.1. Przyczyny przeciążenia i jego konsekwencje 3.6.2. Metody kontroli przeciążenia •
3.6.3. Przykład kontroli przeciążenia wspieranej kontrola przeciążenia przez warstwę sieci protolzołu ABR ai·chitektury ATM 3.7. Kontrola przeciążenia w przypadku protokołu TCP 3.7.1. Sprawiedliwy przydział przepustowości .. 3.8. Podsumowanie Problemy do rozwiązania i pytania Problemy Pytania dodatkowe Zadania związane z programowaniem Zastosowa11ie niezawodnego protokołu transportowego Ćwiczenie wylcorzystujące narzędzie Wiresharl< - poznawanie protokołu TCP Ćwiczenie wylcorzystujące na1·zędzie Wireshark - poznawanie protol
•
.
.
„
.J „
•
•
•
·
•
L <. ·
,
,
330 333 343 347 350 353 366 367 367 367 368 369
(
Wa]�StlV4:1 sieci
4.1. Wprowadzenie 4.1.1. Przekazywanie i routing 4.1.2. Modele usług sieciowych 4.2. Sieci datagramowe i wirtual11ych obwodów 4.2.1. Sieci wirtualnych obwodów 4.2.2. Sieci datagramowe 4.2.3. Początlti sieci datagramowych i wirtualnych obwodów 4.3. Co znajduje się wewnątrz routera? 4.3.1. Porty wejściowe 4.3.2. Struktura przełączająca 4.3.3. Porty wyjściowe 4.3.4. Gdzie ma miejsce kolejkowanie? przekazywanie i ad1·esowanie w internecie 4.4. Protokół IP 4.4.1. Format datagramu 4.4.2. Funlccja adresowania protokołu IPv4 4.4.3. Protokół ICMP 4.4.4. Protokół IPv6 4.4.5. Krótki przegląd zagadnień związanych , z bezpieczeństwem w protokole IP 4.5. Algorytmy routingu 4.5.1. Algorytm routingu stanu łącza 4.5.2. Algo171m wektora odległości 4.5.3. Routing hiera1·chiczny
4.6. Routing w internecie 4.6.1. Wewnętrzny protokół routingu systemu autonomicznego protokół RIP 4.6.2. Wewnętrzny protol<ół routingu systemu autonomicznego protokół OSPF 4.6.3. Zewnętrzny protokół routingu systemu autonomicznego protol<ół BGP 4.7. Routing rozgłaszania i rozsyłania grupowego 4.7.1. Algorytmy routingu rozgłaszania 4.7.2. Rozsyłanie grupowe 4.8. Podsumowanie Problemy do rozwiązania i pytania Problemy Dodatl
Rozdz.iał So '
5.1. Warstwa łącza danych wprowadzenie i usługi 5.1.1. Usługi świadczone przez warstwę łącza danych 5.1.2. Gdzie zaimplementowana jest warstwa łącza danych? 5.2. Metody vvykrywania i usuwania błędów 5.2.1. Kontrola parzystości 5.2.2. Suma kontrolna 5.2.3. Kontrola nadmiarowości cyklicznej 5.3. Protokoły wielodostępu 5.3.1. Protol
515 515 518 520 522 524 525 528 530 532 540 542 543 543 545 550 552 556 560 562 563 565 566 567 570
1O
Spis treści
5.7. Protokół PPP 5.7.1. Ramka danych protokołu PPP 5.8. Wirtualizacja łącza sieć jako warstwa łącza danych 5.9. Dzień z życia żądania strony internetowej 5.10. Podsumowanie Problemy do rozwiązania i pytania Problemy Dodatkowe pytania \l\TYWIAD Z . : Si111011 S. La111 .
.
Rozdział 6. Siec.i bezprze\vodowe i mobil11e 6.1. Wprowadzenie 6.2. Cechy łączy i sieci bezprzewodowych 6.2.1. CDMA 6.3. Wi-Fi: bezprzewodowe sieci lokalne 802.11 6.3.1. Architektura sieci 802.11 6.3.2. Protokół kontroli dostępu do nośnika 802.11 6.3.3. Ramka IEEE 802.11 6.3.4. Mobilność w tej samej podsieci IP 6.3.5. Zaawansowane funkcje protokołu 802.11 Bluetooth i WiMAX 6.3.6. Poza standard 802.11 6.4. Komórkowy dostęp do internetu 6.4.1. Omówienie architektury komórkowej 6.5. Zasady zarządzania mobilnością 6.5.1. Adresowanie 6.5.2. Routing do węzła mobilnego 6.6. Mobile IP 6.7. Zarządzanie mobilnością w sieciach komórkowych 6.7.1. Routing rozmów z użytkownikiem mobilnym 6.7.2. Transfery w GSM 6.8. Wpływ bezprzewodowości i mobilności na protokoły wyższych warstw 6.9. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji · 1·) z· : c·1 1v" A,Y„'v·· r A · v -' l<.11··1.1e 1)erIz1ns .
. .
.
. .
..1
•
•
•
•
Rozdział 7. Mul·timedia 7.1. Multimedialne aplikacje sieciowe 7.1.1. Przykłady aplikacji multimedialnych 7.1.2. Problemy z multimediami w dzisiejszym internecie
7.1.3. Co należy zmienić, aby lepiej przystosować internet do potrzeb aplikacji multimedialnych? 7.1.4. Kompresja obrazu i dźwięku 7.2. Strumieniowa transmisja zapisanego obrazu i dźwięku . 7.2.1. Dostęp do obrazu i dźwięku za pośrednictwem serwera WWW 7.2.2. Wysyłanie multimediów z serwera strumieniowego do aplikacji pomocniczej 7.2.3. Real-Time Streaming Protocol (RTSP) 7.3. Optymalne wykorzystanie usługi best-effort: przykład telefonu internetowego 7.3.1. Ograniczenia usługi best-effort 7.3.2. Usuwanie fluktuacji po stronie odbiorcy 7.3.3. Eliminowanie skutków utraty pakietów 7.3.4. Rozpowszechnianie multimediów we współczesnym internecie: sieci dystrybucji treści 7.3.5. Wymiarowanie sieci best-effort w celu zapewniania jakości usług e aplikacje czasu 7.4. Protokoły używane przez inter rzeczywistego 7.4.l. RTP 7.4.2. RTP Control Protocol (RTCP) 7.4.3. SIP 7.4.4. H.323 7.5. Udostępnianie usług wielu klas 7.5.1. Przykładowe scenariusze 7.5.2. Mechanizmy szeregowania i regulacji 7.5.3. Usługi zróżnicowane (Diffserv) 7.6. Zapewnianie gwarancji jakości usług 7.6.1. Ilustrujący.p rzykład 7.6.2. Rezerwowanie zasobów, zatwierdzanie połączeń i zestawianie połączeń 7.6.3. Usługi o gwarantowanej jakości w internecie - Intserv i RSVP 7.7. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji ·vVY\tVIAD Z : l�Ie1111i11g Scl111lz1#in11e .
8.1. Czym jest bezpieczeństwo sieci?· 8.2. Zasady kryptografii 8.2.1. Kryptografia z kluczem symetrycznym 8.2.2. Szyfrowanie z kluczem publicznym 8.3. Integralność komunikatów i uwierzytelnianie punktów końcowych 8.3.1. Kryptograficzne funkcje skrótu 8.3.2. Kod MAC 8.3.3. Podpisy cyfrowe 8.3.4. Uwierzytelnianie punktów końcowych 8.4. Zabezpieczanie poczty elel
•
9.1. Co to jest zarządzanie siecią? 9.2. Infrastruktura zarządzania siecią 9.3. Internetowy model zarządzania siecią
857 862 864
Spis treści
13
9.3.1. Struktura informacji administracyjnych: SMI 9.3.2. Baza informacji administracyjnych: MIB 9.3.3. Działanie protokołu SNMP i sposób przesyłania komunikatów 9.3.4. Bezpieczeństwo i administracja 9.4. ASN.l 9.5. Podsumowanie Pytania i problemy do rozwiązania Problemy Zagadnienia do dyskusji \i\TY\!VIj.t\..D Z : Jeff Cc1se
868 871
Źródła
891
.
.
.
873 877 880 884 885 886 887 888
•
Skorowidz
923
14
Spis treści
•
•
Jim Kurose J i m Ku rose jest wykładowcą i nformatyki n a U n iwersytecie sta n u Massachu setts znaj d ującym się w Amherst. D o ktor Ku rose ki l ka razy został doce n iony za swoje d okon a n i a związa n e z e d u kacją. Otrzymał nagrodę Outstanding Teacher Award od takich uczelni jak National Technological U niversity (ośmiokrotnie) i U n iwersytet stan u Massachusetts, a także od organ izacj i Northeast Association of G raduate Schools. Uzyskał też odznaczenie IEEE Taylor Booth Education Medal i został doceniony za kierowan ie programem Comm onwealth l nformation Tec h n o l ogy l n itiative rea l i zowa nym przez U n iwe rsytet sta n· u Massachusett. J i m Ku rose odebrał J a kie wyróżnienia jak G E Fellowship, I BM Faculty Development Award i Lilly Teaching Fel lowsh i p . D o ktor Ku rose jest byłym reda ktorem n aczel nym czasopism I E E E Tra nsactions o n Com m u n ications" i „IEEE/ACM Transactions on
" Networkin g" . Przez kilka lat Jim Kurose aktywnie udzielał się w komitetach organizacyjnych konferencji IEEE lnfocom, ACM SIGCOMM, ACM I nternet Measurement Conference i ACM SIG M ETRICS, a ta kże pełnił w nich rolę współprzewod n i�zącego od powiedz i a l nego za część tec h n iczną. J i m jest członkiem organ izacji I EEE i ACM. Za kres wykonywa nych przez
•
niego badań obejmuje protokoły i architekturę sieciową, pomiary sieciowe, sieci czuj n i ków, kom u n i kację m u lt i m ed i a l n ą, a także modelowa n i e i okreś l a n i e wydaj ności. J i m uzyskał tytuł doktora i nformatyki na U n iwersytecie sta n u Col u m bia.
Keith Ross Keith Ross jest wykładowcą informatyki (współpracującym z Leon a rdem J . Sh u stekiem) na ucze l n i Polytechnic U n iversity znaj d ującej się w nowojorskiej dzieln icy Brooklyn. Od 1985 d o 1998 r. Keith był wykła d owcą n a wydzi a l e i nżynie rii systemów U n iwersytetu sta n u Pensylwa n ia . Od 1998 do 2003 r. pracował jako wykładowca na wydzia le M u ltimedia Com m u n ications D e p a rtment fra n c u s kiego i n stytutu
•
15
16
O aLttoracł1
Eu recom Institute. Keith Ross jest też głównym założycielem i pierwszym dyrektorem g e n e ra l nym fi rmy Wimba, która p rojektuje tec h n ologie V OiP (ang. Voice over IP) przeznaczone dla branży związanej z edu kacją za pośrednictwem internetu. Zainteresowania badawcze profesora Rossa dotyczą sieci P2P, pomiarów sieciowych, strumien iowego przesyła nia obrazu wideo, buforowania w sieci
WWW, sieci dystrybucji treści, bezpieczeństwa w sieci, tecl1 nologii VoIP
i modelowa n i a stochastycznego. Ross należy do organ izacji I EEE i jest zastępcą reda ktora n aczel nego mag azyn u „ I E E E/ACM Tra n sactions o n Networki ng " . Ponadto był doradcą Federalnej Komisji Ha nd lu w zal
doktora w dziedzi n i e i nżyn ierii ko m puterów, i nfo rma cj i i systemów kontro l nych .
•
Masz przed sobą l
Książka jest przeznaczona dla osób uczęszczających na wykłady wprowadzające w zagadnienia dotyczące sieci komputerowych. Może być wykorzystywana zarówno na wydziałach informatycznych, jak i inżynierii elektrycznej. Jeśli chodzi o języki programowania, w książce przyjęto, że Czytelnik dysponuje doświadczeniem z zakresu języków C, C++ lub Java (wystarczy nawet znajo mość tylko wybranych zagadnień). Choć książka jest bardziej precyzyjna i anali tyczna niż wiele innych publikacji wprowadzających w zagadnienia dotyczące sieci komputerowych, rzadl
Czy!n l{siążka się wyróżnia? Tematyka związana z sieciami komputerowymi jest wyjątlcowo złożona, a także uwzględnia wiele pojęć, protokołów i technologii, które w zawiły sposób są ze sobą powiązane. Aby poradzić sobie z tymi zagadnieniami i ich złożonością, wiele książek poświęconych sieciom komputerowym często jest organizowanych w oparciu o warstwy architektury sieciowej. Dzięki takiemu rozwiązaniu Czytel nicy mogą poradzić sobie ze złożonością sieci komputerowych. Czytelnik zdo bywa wiedzę na temat różnych pojęć i protokołów jednej z warstw architektury i jednocześnie ma wgląd w ogólny obraz pokazujący, jak są do siebie dopaso wane wszystkie warstwy. Patrząc na to z pedagogicznego punktu widzenia, na 17
18
Przed n1ovva
podstawie własnego doświadczenia możemy stwie1·dzić, że organizowanie książki w ten sposób jest naprawdę szczególnie wskazane. Niemniej jednak uznaliśmy, że tradycyjny sposób uczenia, polegający na poznawaniu warstw ,,od dołu do góry'' (począwszy od warstwy fizycznej, a sl
Dziesięć lat temu nasza książka wprowadziła nowy sposób omawiania sieci kom puterowych, ,,od góry do dołu'', w którym najpierw prezentowana jest warstwa aplikacji, a następnie kolejne znajdujące się niżej warstwy aż do warstwy fizycz nej. Informacje zwrotne, l
„
Przeci111ovva
11wagę na główne pojęcia bez zmuszania st11dentów do zapoznawania się ze zło żonym kodem. Studenci pierwszego rolzu iI1fo1A1natyki i i11żyi1ie1·ii elekt1ycznej nie powinni mieć proble1n11 z a11alizą lzod11 ź1Aódłowego utworzonego w języlz11 Java.
Ponieważ internet stał się talz wszechobecny, uznaliśmy, że w lzażdej książce na te1nat sieci trzeba poświęcić mu wiele t1wagi. Przy omawia11iu podstawowych zagad11ie11. z zalaest1 sieci lzomputerowych korzystamy z architelztury i proto kołów internetowych. Oczywiście uwzględ11iliśmy również pojęcia i protolzoły związane z innymi arcl1itektu1Aami sieciowymi. Jednalz w centrt11n uwagi bez wątpienia jest inte1·net. Potwierdza to sposób zorganizowania lzsiążld w oparciu o 5-warstwową architelcturę internetu złożoną z warstwy aplil
Dwie cechy wyróżniające lzsiążlzę, czyli metodę ,,od gó14Y do dołu'' i slzoncen t1·owanie się na i11ter11ecie, uwidoczniono w jej tytule. Jeśli w tyt1tle 1noglibyś1ny pomieścić trzecią f1·azę, zawie1Aałaby słowo zasady. Obecnie dziedzi11a związana z sieciami jest na tyle dojrzała, że można olaeślić ldlka istotnych fl1ndame11tal nych zagadnień. Przyl
19
20
Przedmo\/\1a
ważne i adekwatne. Wierzymy, że użycie internetu w celu wprowadzenia Czytel nika w tematykę oraz zwrócenie szczególnej uwagi na fundamentalne zagad nienia i metody rozwiązywania problemów pozwolą Czytelnil
JEle:me111ty pedagogiczne Od niemal 20 lat przekazujemy wiedzę z zakresu sieci komputerowych. Książka jest efektem w sumie ponad 45-letniego doświadczenia pedagogicznego. W tym czasie uczyliśmy ponad 3000 studentów, a ponadto aktywnie prowadziliśmy badania w zakresie sieci komputerowych (po raz pierwszy Jim i Keith spotkali się w 1979 r. na Uniwersytecie stanu Columbia jako studenci uczęszczający na zajęcia z sieci komputerowych prowadzone przez Mischę Schwartza). Uwa żamy, że dzięki temu możemy właściwie stwierdzić, jak sieci l
Ra111ki poświęco11e historii i teoretyczne podstawy w praktyce Branża sieci komputerowych ma bogatą i fascynującą historię. Szczególnie posta raliśmy się o przedstawienie w książce historii sieci komputerowych. W efekcie w 1·ozdziale 1. znajduje się specjalny podrozdział, natomiast w innych rozdzia łach w różnych miejscach zamieszczono około tuzina ramel< poświęconych historii. W tych fragmentach książki wspomnieliśmy o opracowaniu technologii l
•
Przedmowa
Część dodatkowych informacji na temat bezpieczeństwa sieci komputero wych znajduje się w ramkach ,,Uwaga na bezpieczeństwo'' w poszczególnych rozdziałach książki. ·wylvia!.ly Książka wyróżnia się kolejną oryginalną cechą, która powinna zainspirować i zmotywować Czytelnika. Są to wywiady ze znanymi innowatorami związa nymi z sieciami l
Powrlązania rozdziałów W pierwszym rozdziale l
Ostatnia uwaga .. . „ ... . „ „.„
Iliczy1111y 111a odzew ze st:rro1111y Czytelx1il,ów
Ponadto zachęcamy studentów i wykładowców do wysyłania do nas za pośred nictwem poczty elektronicznej wszelkich komentarzy dotyczących książl
21
22
Przedmovva
z całego świata. Namawiamy też nauczycieli do przesyłania nam nowych p1·oble mów wraz z ich rozwiązania1ni, które będą stanowiły uzupełnie11ie problemów opracowa11ych przez nas. Nadesłane problemy za1nieścimy w sekcji strony inte1· netowej przeznaczonej tylko dla instrul
Od czasu, gdy w 1996 r. zaczęliśmy pisać pierwsze wyda11ie lzsiążld, wiele osób udzieliło nam bezcennej pomocy i miało wpływ na nasze p1·zemyślenia doty czące jalz najlepszego zorganizowa11ia lzursu z zalu·esu technologii sieciowych. Sl
Hisham Al-Mubaid (U11iwersytet Ho11ston-Clear Lalze) Pratima Akkunoor (U11iwersytet sta11u Arizona) Paul Amer (Uniwersytet stanu Delaware) Shamiul Azom (Uniwe1·sytet sta11u Arizona) Licht111 Bao (Uniwersytet I
Przedmowa 23
Ernst Biersacl< (Eurecom Institute) Shahid Bolmari (University of Engineering & Technology, Lahore) Jean Balot (Sprint) Daniel Brushteyn (absolwent Uniwersytetu stanu Pensylwania) Ken Calvert (Uniwersytet stanu Kentucl
24
Przedmowa
•
Rakesh Kumar (Bloomberg) Miguel A. Labrador (University of South Florida) Simon Lam (Uniwersytet stanu Teksas) Steve Lai (Uniwersytet stanu Ohio) Tom LaPorta (Uniwe14sytet stanu Pensylwania) Tim-Be1·ners Lee (World Wide Web Consortium) Lee Leitner (Drexel University) Brian Levine (Uniwersytet stanu Massachusetts) William Liang (absolwent uczelni Uniwersytetu stanu Pensylwania) Willis Marti (Texas A&M University) Nick McKeown (Uniwersytet Stanforda) Josh McKinzie (Park University) Deep Medhi (Uniwersytet stanu Missouri, Kansas City) Bob Metcalfe (International Data Group) Sue Moon (KAIST) Erich Nahum (IBM Research) Christos Papadopoulos (Uniwersytet Południowej Kalifornii) Craig Partridge (BBN Technologies) Radia Perlman (Sun Microsystems) Jitendra Padhye (Microsoft Research) Vern Paxson (Uniwersytet Kalifornijski, San Diego) Kevin Phillips (Sprint) George Polyzos (Uniwersytet Kalifornijski, San Diego) Sriram Rajagopalan (Uniwersytet stanu Arizona) Ramachandran Ramjee (dział badawczy firmy Microsoft) Ken Reek (Rochester Institute of Technology) Martin Reisslein (Uniwersytet stanu Arizona) Jennifer Rexford (Uniwersytet Princeton) Leon Reznik (Rochester Institute of Technology) Sumit Roy (Uniwersytet stanu Washington) Avi Rubin (Johns Hopkins University) Dan Rubenstein (Uniwersytet stanu Columbia) Douglas Salane {John Jay Collage) Despina Saparilla (Lucent Bell Labs) Henning Schulzrinne (Uniwersytet stanu Columbia) Mischa Schwartz (Uniwersytet stanu Columbia) Harish Sethu (Drexel University) K. Sam Shanmugan (Uniwersytet stanu Kansas) Prashant Shenoy (Uniwersytet stanu Massachusetts) Clay Shields (Uniwersytet Georgetown) Subin Shrestra (Uniwersytet stanu Pensylwania) Mihail L. Sichitiu (Uniwersytet stanu Karolina Północna) Peter Steenkiste (Uniwersytet Carnegie Mellon)
Przed 11·10\/Va
Tatsuya Suda (Uniwersytet Kalifornijsld, Irvine) Kin Sun Tam (Uniwersytet stanu New Yorl<, Albany) Don Towsley (UniweI·sytet stant1 Massachusetts) David Turner (Uniwersytet stanu Kalifornia, San Be1·nardino) Nitin Vaidya (Uniwersytet Illinois) Michele Weigle (Uniwersytet Clemson) David Wethe1·all (Uniwersytet stanu Washington) Ira Winston (Uniwersytet stan11 Pensylwania) Di Wu (Polytechnic Institute, Nowy Jork) Raj Yavatl<:ar (Intel) Yechiam Yemini (Uniwersytet stanu Columbia) Ming Yu (Uniwersytet stanu Nowy Jorl<, Binghamton) Ellen Zegura (Georgia Institute of Technology) Honggang Zhang (Uniwersytet Suffoll<) Hui Zhang (Uniwersytet Carnegie Mellon) Lbcia Zhang (Uniwersytet Kalifornijski, Los Angeles) Shuchun Zhang (absolwent uczelni Uniwersytetu stanu Pensylwania) Xiaodong Zhang (Uniwersytet stanu Ohio) ZhiLi Zhang (Uniwe1·sytet stanu Minnesota) Phil Zimmermann (niezależny konsultant) Cliff C. Zou (Uniwersity of Cent1·al Florida) Jesteśmy wdzięczni Honggangowi Zhangowi z Uniwersytetu Suffolk za współ pracę przy poprawianiu i wzbogacaniu zestawów ćwiczeń z tego wydania. Chce my również podziękować całemu zespołowi pracownil<ów wydawnictwa Addi son-W esley, l
25
26
Przedr110\J\Ja
•
•
•
Współczes11y i11ternet to pr�wdopodobnie najwięl
•
•
27
28
ROZDZl/.\ł_ 1 .
o
SIECI KOMPUTEROWE I I NTER NET
P1·zegląd sieci lcomputerowych dolconany w tym rozdziale ina następujący t1l
•
W książce publiczny inte1·net będący specyficzną siecią lcomputerową tralctu jemy jalco podstawowy fundament, na lctórym są oparte omówienia sieci i ich p1·otolcołów. Jednalc czym jest i11ternet? Odpowiedzi można udzielić na lcillca sposobów. Jeden z nich polega na omówieni11 podstawowych sprzętowych i pro gramowych slcładników tworzących inter11et. !(olejnym sposobem jest scha ralcte1yzowanie i11ternetu w lcategoriach inf1·astrulctu1T sieciowej, lctóra zapewnia usługi aplikacjom rozproszonym. Zacznijmy od opisu podstawowych składni lców, lcorzystając z rysunlcu 1.1 ilustrującego omówie11ie.
Publiczny i11ternet jest siecią lcomputerową łączącą miliony urządzeń kompu terowych zlokalizowanych w różnych miejscach świata. Nie tak dawno te1nu tyn1i u1·ządzeniami były przede wszystkim tradycyjne stacjo11arne komputery PC, li11uksowe stacje robocze i tak zwane serwery, lctóre przechowują i prze syłają dane, talcie jak strony internetowe i wiadomości pocztowe. Jednak wraz z upływem czasu do internet11 zaczęto podłączać nowoczesne urządzenia koń cowe, takie jale telewizory, lcomputery przenośne, konsole do gie1·, telefony
1.1.
o
CZYM JEST I NTERNET?
- . ..... .. •• :w �� „
•
Krajowy lub globalny dostawca ISP Sieć mobilna
�- p· -i... --'*'-
-.--;;;....;;- .. .;•i;;. '.r ,.
-
'1:
o
� '------_.i;,;�
.1-o
r---1.--
____
._
i •
•
\
-�
Lokalny l u b regionalny dostawca ISP
.
· U$ . """ ..._.. s q
Sieć domowa
-
Sieć firmy
Legenda:
- .#� r-..; ?t? ;: '
Host (lub system końcowy)
Serwer
l
Przełącznik pakietów
-
Modem
Rysunek ·n (> 1 Niektóre składniki internetu o
Stacja bazowa
-
Telefon komórkowy
Nadajnik sieci komórkowej
29
30
ROZDZIAŁ 1 .
o
SIECI KOMPUTEROWE I INTERNET
komórl
1 . ·1 .
o
CZYM JEST INTERNET?
31
i skrzyżowań, aby dotrzeć do docelowego magazynu. W nim towa1· jest rozła dovvywany i łączony z resztą ładu11ku z tej samej dostawy. Paldety to odpowied nil< ciężarówek, łącza komunikacyjne to autostrady i drogi, przełączniki pakietów przypominają skrzyżowania, a systemy końcowe są zbliżone do budynków. Podobnie j ak ciężarówki poruszają się olzreśloną trasą w ramach sieci trans portowej, tak paldet podąża ścieżką w sieci komputerowej . Systemy lzońcowe uzyskuj ą dostęp do inte1·netu za pośrednictwem dostawcy usług internetowych ISP (ang. Internet Service Provider). Może to być lokalny dostawca lub operator telekomunikacyjny bądź telewizji lzablowej . Może to być korporacyjny lub uniwersytecki dostawca ISP bądź tal
•
32
ROZDZIAŁ 1 .
o
SIECI KOMPUTEROWE I I NTERNET
umożliwiających rozwiązanie problemów związanych z architekturą sieci i pro tokołów, z lztó1·ymi borykali się prekursorzy internetu. Dokumenty RFC mają te11dencj ę do bycia dość technicznymi i szczegółowymi. Definiuj ą protokoły, talcie j ak TCP, IP, HTTP (obsługa witryn WWW) i SMTP (ang. Simple Mail Transfer Protocol; obsługa poczty elekt1·onicznej) . Istnieje ponad 5000 doku- · mentów RFC. Inne organizacje też definiują standardy dotyczące komponentów sieciowych, a zwłaszcza łączy sieciowych. Przyl
.
„ "'� ' "
� ..
Qł· 11IL'll.!l g
1!1! �ll iY J
Dotychczas zidentyfikowano wiele slzładników tworzących internet. Jednak można go opisać także z zupełnie innej perspektywy ja/co infrastrukturę zapewniajqcq usługi dla aplilcacji. Mają one zastosowania na przykład w obszarze poczty elelctronicznej, przeglądania stron internetowych, lcomunilzatorów, tele fonii VOIP, obsługi internetowych stacji radiowych, transmisji strumieniowej danych wideo, gier sieciowych, wymiany plików w sieciach równorzędnych (ang. Peer to Peer P2P), telewizji internetowej, zdalnego logowania itd. Są to tak zwane aplikacje rozproszone, w p1·zypadku lctórych syste1ny końcowe mogą przesyłać między sobą dane. Co ważne, aplikacje internetowe działają w syste mach lzońcowych, a nie w przełącznilcach pakietów w rdzeniu sieci. Choć prze łą�znild paldetów ułatwiają wymianę danych między systemami końcowymi, nie uwzględniaj ą tego, jalde aplilcacje są nadawcą lub odbiorcą informacji. Wyjaśnijmy dokładniej, co mamy na myśli, pisząc o infrastrukturze zapew niającej usługi aplikacjom. Załóżmy, że programista ma świetny pomysł na roz proszoną aplilcację internetową, która przyniesie korzyści całej ludzkości (lub po prostu zapewni tej osobie bogactwo i sławę) . Jak można przekształcić tę ideę na rzeczywisty program internetowy? Aplilcacje działają w systemach końco wych, dlatego trzeba napisać odpowiednie oprogramowanie. Programista może to zrobić na przyldad za pomocą języlca Java, C lub Python. Ponieważ chce utwo rzyć rozproszoną aplikacj ę internetową, programy działające w różnych syste mach końcowych muszą mieć możliwość przesyłania między sobą danych. Dochodzimy w ten sposób do podstawowego zagadnienia związanego z odmien nym opisem internetu jalco platformy dla aplikacj i. W jaki sposób oprogra1nowanie działające w systemie końcowym ma nakazać inte1·netowi przesłanie danych do drugiego programu funlzcjonującego w innym systemie? Systemy końcowe podłączone do internetu udostępniają interfejs API (ang. Application Programming Interface, czyli interfejs programowania aplikacji). Określa 011, w jaki sposób program działający w jednym systemie końcowym ma żądać od internetu przelcazania danych do określonej aplikacji docelowej funkcjonującej w innym systemie. Interfej s API internetu obejmuje zestaw reguł, lctórych oprogramowanie wysyłaj ące informacje musi przestrzegać, aby internet
1 .1 .
o
CZYM JEST I NTERNET?
mógł przesłać dane do aplil
•
.
Gdy już trochę bliżej zapoznaliśmy się z internetem, pod uwagę weźmy kolejny istotny termin powiązany z sieciami komputerowymi, l
33
34 ROZDZIAŁ
·1 .
o
SIECI KOMPUTEROWE I I NTERNET
Analogia navviązująca do l(omr111ikacji mięc1zy lt1dź1ni Prawdopodobniej najprostszym sposobem pozwalającym zrozumieć protokół sieci l
lcaty i działania podejmowane w odpowiedzi na otrzymane kom unilcaty lub wystąpienie innych zdarzeń (takich jak brak odpowiedzi w określonym przedziale czasu). Oczywiście przekazywane i otrzymywane komunilcaty, a także czynności wykonywane w momencie t1·ansferowania komunilcatów lub po wystąpieniu innych zdarzeń w p1·zypadku ludzkiego protokołu odgrywają podstawową rolę. Jeśli ludzie posługują się różnymi p1·otolcołami, które nie są ze sobą zgodne (jeśli na przyl
•
1 .1 .
o
CZYM JEST I NTERNET?
35
•
•
>:;
$
o
o
(i
(i
c
C
tł
!)
(i
"
!) ó
o
Q
!)
o
o
a
(I
o
o
I)
o
o
c
o
o
Q
e
I)
li>
Q
o
o
o
a
o
(I
Q
!)
o
o
,
'
C S e c-z.
t> o
a
o
Q
()
"'
o
o
o
Q
I)
ot
o
o
c
o
•
c
()
o
.:.
(i
t>
-O
Q
o
o
(t (I Q
(i
któr aJ.es t
o !)
(i
gO
dzin a '?
o
e
�CJda n
ie n a
Q Q
w'·CJ< ania P
oląC
nt·a
e \ n oa . . oi na t..� t'\a\C\'
QO?o\S'J\�
Q (I
!)
o
�
rep
o\ąCt..e
.\ąt..'3(\\3 Q \S'J na Gc/ h
ttp; //i.v 'Ww· a
e (I o Q a � o
o (i
lt Q
o 1: a
f) a
� Q o
o
w1· C o
(I
I)
G
c
!)
o
u
.:.
C>
(I
c
o
„
o
o
t)
o
o
o
o
(i
()
(i
Q
(i
(I
ł}
o
o
o
o
o
!)
Q
c
o
o
C·
�
0
o
•
�
e
a
�
o
i;
ł) c
a I)
e
o Q
o
0 i·.0
a ...
$ Ił
•
(i
(i
Q
Q
& •
Ił
O·
V
\'/
Czas
Czas
()
•
tnlk liros e �ro ss
(I
ó o (i o o
\\'y..7
.'\) L .
o
V
Czas
RystUJ �11 e k 1 2 Porówna nie ludzkiego protokołu i protokołu sieci komputerowej o
o
o
P1"otol(oły sie4.:io,ve Protokół sieciowy przypomina ludzki protokół, z tą różnicą, że jednostki wymie niające się l
o „ lt· o (i