Zapisz jako PDF

Transkrypt

Zapisz jako PDF
Spis treści
1 TI: TCP/IP czyli struktura internetu
1.1 Numer IP
1.1.1 struktura numeru IP
1.2 Adresy i porty
1.3 Wyczerpywanie puli adresów
1.3.1 Dynamiczne IP
1.3.2 Adresy prywatne i NAT
1.3.3 Jak działa NAT od strony technicznej?
1.3.4 Skąd się wzięła względna anonimowość w Internecie?
2 Droga informacji w Internecie
2.1 Co się dzieje po wpisaniu w przeglądarce adresu strony do jej wyświetlenia?
TI: TCP/IP czyli struktura internetu
Co to jest sieć komputerowa? Tworzą ją komputery i rozciągnięte pomiędzy nimi łącza. Na początku
sieć zbudowana była ze zwykłych linii telefonicznych, a dziś „okablowanie” internetu stanowią linie
światłowodowe, łącza satelitarne, linie telefoniczne, fale radiowe — właściwie wszystko, co nadaje
się do przesyłania informacji. Mechanizmem, dzięki któremu z Internetu mogą korzystać dowolne
komputery na całym świecie — niezależnie od marki, systemu operacyjnego, języka i sposobu
fizycznego podłączenia do tej globalnej sieci — jest ściśle określony standard wymiany informacji:
Protokół Internetu (ang. Internet Protocol, IP).
Definiuje on podstawowe zasady przesyłania informacji w Internecie. Każdy węzeł — komputer w
sieci — ma swój własny adres, co pozwala każdemu komputerowi przesyłać informacje do
konkretnego odbiorcy. Informacja jest przesyłana w postaci pakietów, z których każdy zawiera,
trochę jak zwykly list, adres odbiorcy i nadawacy oraz pewną treść.
Protokół IP stworzony został w latach 60. XX w. na potrzeby Departamentu Obrony USA — dla sieci
ARPANET, która miała być odporna na atak jądrowy. Spełnienie tego warunku uzyskano poprzez
całkowitą decentralizację i brak stałej struktury. Dzięki temu sieci nie sparaliżuje ani zniszczenie
głównego serwera, ani kluczowego łącza (bo takich nie ma). Droga informacji ustalana jest
dynamicznie, w zależności od dostępnych i działających w danym momencie komputerów.
Protokół IP ustala tylko bardzo podstawowe zasady przesyłania pakietów — w szczególności
komputery pośredniczące w przekazaniu pakietu do ostatecznego odbiorcy mogą różne pakiety
wysyłane przez nadawcę do jednego odbiorcy wysyłać różną drogą, nie podejmują też żadnych
działań jeśli pakiet ulegnie uszkodzeniu czy zagubieniu i nie zostanie przekazany adresatowi.
Internet jest jednak używany do komunikacji dwustronnej, a przesyłana informacja często wymaga
wysłania milionów pakietów (i odebrania każdego z nich). Dlatego oprócz IP używa się dodatkowe
protokoły które określają zasady komunikacji dwustronnej i zachowania w przypadku zagubienia
pakietu.
Najbardziej znany z tych „wyższych” protokołów, to Transmission Control Protocol (TCP, czyli
„protokół kontroli transmisji” [danych]). Określa on kiedy należy przyjąć, że pakiet nie dotarł do
odbiorcy i wysłać go ponownie. Pozwala on też na wykrycie pakietów które dotarły w złej kolejności
— o co łatwo jeśli podróżują innymi drogami.
Numer IP
Skoro nie wiadomo, jaką konkretnie drogą ma płynąć informacja, to musi być przynajmniej wiadome,
dokąd ma dotrzeć. Dlatego przesyłana Internetem informacja jest dzielona na kawałki zwane
pakietami, opatrzone adresem komputera docelowego. Aby była możliwa komunikacja w obie strony,
w każdym pakiecie musi się również znajdować adres nadawcy -- dla potwierdzenia poprawności
transmisji. Oba te adresy nie mogą się powtarzać nigdzie indziej na świecie. Każdy komputer
podłączony do internetu musi mieć własny unikatowy adres, czyli opisany poniżej numer IP.
struktura numeru IP
Adres IP to po prostu liczba pomiędzy 0 a 4294967295, czyli
. Aby zapisać takie liczby
potrzeba czterech bajtów (każdy ma 8 bitów, czyli łącznie mamy 32 bity, co daje właśnie
możliwości). Ze względów historycznych utarło się te liczby przedstawiać w rozbiciu — każdy bajt
osobno. Każdy bajt zapisuje się przy podstawie dzisiętnej, a poszczególne bajty oddziela się
kropkami: np. 192.0.34.163, czyli 0xc02200a3, to adres 3223453859.
www.fuw.edu.pl: 193.0.80.28
193
0
80
28
1100 0001
0000 0000
0101 0000
0001 1100
8 bitów = 1 bajt 8 bitów = 1 bajt 8 bitów = 1 bajt 8 bitów = 1 bajt
11000001 00000000 01010000 00011100
4 × 8 bitów = 32 bity = 4 bajty
Internet jest zdecentralizowany — pomijając wymaganie odporności na kataklizmy, nie ma innego
sposobu by obsłużyć rosnącą wykładniczo liczbę użytkowników. W szczególności dotyczy to rownież
sposobu przydziału adresów. Główny problem wynika z konieczności takiego rozdziału adresów, aby
żadne dwa się nie powtarzały. Światowy centralny bank numerów IP wszystkich komputerów byłby
niezgodny z ideą decentralizacji Internetu, postanowiono więc problem rozwiązać w postaci
struktury hierarchicznej.
Globalna pula adresów jest dzielona na części, które są przekazywane pod kontrolę jednej z pięci
organizacji regionalnych — północnoamerykańskiej, europejsko-bliskowschodniej, afrykańskiej,
południowoamerykańskiej i australijskiej. Te z kolei przekazują część swojej części organizacjom
krajowym lub dużym firmom.
W ramach swojego bloku organizacja może wydzielać mniejsze bloki, które przydzieli innym
organizacjom itd. — ale zawsze możemy dojść, kto jest odpowiedzialny za dany adres. Na przykład,
blok adresów 11000001.00000000.010100__.________ (przy podstawie dwójkowej), czyli wszystkie
adresy posiadające pewien ustalony odgórnie początek i dowolną końcówkę, przydzielony jest
Wydziałowi Fizyki Uniwersytetu Warszawskiego. Ta właśnie instytucja odpowiada za jednoznaczność
adresów od 193.0.80.0 do 193.0.83.255, a jednocześnie może nimi dysponować wedle swoich reguł.
Te informacje każdy użytkownik internetu może uzyskać korzystając z serwisów WHOIS, czyli
publikowanych w internecie przez poszczególne organizacje spisów przydzielonych adresów.
Zaglądając pod http://whois.domaintools.com/193.0.80.28 dowiemy się, że adres www.fuw.edu.pl,
czyli 193.0.80.28, jest pod kontrolą Uniwersytetu Warszawskiego, który w ramach swojej
wewnętrznej organizacji część swoich adresów przekazał pod kontrolę Wydziału Fizyki.
Adresy i porty
Połączenie w sieci jest identyfikowane przez adresy dwóch komputerów oraz dwa numery portów.
Gdyby między dwoma komputerami w sieci można było zestawić na raz tylko jedno połączenie przez
internet, to do komunikacji wystarczałyby adresy IP. Niemniej, takich jednoczesnych połączeń może
być wiele, np. gdy ściągamy z serwera stronę WWW celem wyświetlenia przez przeglądarkę, to
jednocześnie ten sam klient może z tego samego serwera pobierać dwa obrazki, muzyczkę i treść
strony. Aby odbiorca pakietu był w stanie stwierdzić, do którego z tych strumieni pakiet jest
przypisany, potrzebna jest dodatkowa informacja. Dlatego połączenia wykonywane zgodnie z
protokołem IP są podzielone na tzw. strumienie, z których każdy oprócz adresu źródłowego i
docelowego, jest opisany przez dwie jeszcze liczby. Zarówno odbiorca jak i nadawca wybierają
pewną liczbę, numer portu, i taka para jest jednoznacznie przypisana do danego strumienia. Dopiero
te cztery elementy (adres IP źródłowy, port źródłowy, adres IP docelowy, port docelowy)
jednoznacznie identyfikują połączenie.
Wyczerpywanie puli adresów
Długość numeru IP (przypisywanego każdemu podłączonemu do Internetu komputerowi) ustalano
wiele lat temu, na potrzeby stosunkowo niewielkiej sieci. Mimo to zarezerwowano na niego aż 32
bity (obowiązujący do dziś standard IPv4), co daje ponad 4 miliardy możliwych adresów. W owych
czasach była to liczba zbliżona do liczby ludzi na Ziemi. Biorąc pod uwagę, że w skali globu z
Internetu korzysta wciąż raptem jedna czwarta populacji, do dziś nie powinno brakować numerów
IP. A jednak brakuje...
32 bity podzielono na bloki. Kolejne bloki przydzielane są organizacjom (krajom, firmom etc.), które
są odpowiedzialne za jednoznaczność adresów w ich ramach. Problem w tym, że oczywiście każda
odpowiedzialna za jakiś większy blok adresów organizacja musi ich mieć przynajmniej trochę na
zapas, aby móc nadawać numery nowym komputerom podłączanym do Internetu — a ich liczba
rośnie w zastraszającym tempie! No i trzeba zarezerwować duże bloki adresów dla państw, które
jeszcze z Internetu nie korzystają.
Dlatego numerów IP zaczęło brakować już w latach 90. XX w. W 1995 r. zaproponowano 128-bitowy
standard IPv6, oferujący
czyli ok. 34000000000000000000000000000000000000 adresów.
Niestety, ten standard nie jest kompatybilny z IPv4. Dlatego jego zastosowanie wymagałoby albo
jednoczesnego przeprogramowania (w przypadku wielu urządzeń wiążacego się w praktyce z
wymianą) wszystkich korzystających z Internetu urządzeń, albo doprowadziłoby do powstania nowej
sieci której komunikacja z Iternetem nie byłaby prosta i bezpośrednia.
Prace w tym kierunku trwają, ale w międzyczasie powstały "doraźne" sposoby na upychanie nowych
komputerów w przyciasnej przestrzeni adresów.
Pierwszym z nich była zmiana ilości w jakich adresy IP były przydzielane. Moment zmiany wyraźnie
widać na wykresie obok około roku 1995. Wcześniej adresy przydzielano w tak zwanych klasach —
po 256, 65636 lub 16777216 adresów. Innymi słowy, organizacja otrzymywała blok adresów w
którym ostatni bajt był całkowicie pod jej kontrolą, lub dwa, a nawet trzy bajty. Dla dużej
międzynarodowej firmy 65 tysięcy adresów to nie jest tak dużo — jeśli się uwzględni, że komputer
każdego pracownika będzie potrzebował podłączenia do sieci. Jeśli się popatrzy na listę głównych
przypisań to okazuje się, że m.in. IBM, Ford, Xerox, HP, AT&T, General Electric, Prudential
Securities Inc. czy Eli Lily „potrzebowały” po 16 milionów adresów do własnej dyspozycji. Każdy taki
blok to 1/256 globalnej puli adresów. Kiedy zdano sobie sprawę, że taka polityka doprowadzi do
wyczerpania adresów pod koniec lat dziewiędziesiątych, zaczęto adresy przyznawać w blokach
będących dowolną potęgą dwójki — po 1, 2, 4… Jednocześnie przestano przyznawać adresy „na zaś”,
na wypadek gdyby firma czy organizacja się rozrosła. Zgodnie z nową polityką, jeśli będzie taka
potrzeba to przekaże się następny blok.
Jednocześnie podjęto inne kroki.
Dynamiczne IP
Najpierw okazało się, że wielu użytkowników podłącza się do Internetu tylko od czasu do czasu —
przez łącze telefoniczne. Dlatego nie trzeba każdemu z nich rezerwować osobnego, stałego adresu IP
— zamiast tego są one przydzielane dynamicznie, z puli przyznanej dostawcy usług internetowych.
każdy numer IP jest w danym momencie globalnie unikatowy. Jednak co pewien czas zmienia się
jego użytkownik. Na przykład korzystający z Neostrady (usługi oferowanej przez Telekomunikację
Polską) użytkownik jest rozłączany raz na dobę, co zazwyczaj wiąże się ze zmianą numeru IP pod
którym jest widoczny.
Adresy prywatne i NAT
Klasa
Pula adresów prywatnych
A
10.0.0.0 – 10.255.255.255
B
172.16.0.0 – 172.31.255.255
C
192.168.0.0 – 192.168.255.255
Mimo wykorzystania adresów dynamicznych, liczba komputerów podłączanych do Internetu na stałe
wciąż rosła. Wtedy zwrócono uwagę na fakt, że większość z komputerów korzysta z Internetu
wyłącznie biernie — do przeglądania stron WWW czy łączenia się z serwerami pocztowymi. A skoro
nie ma na nich stron WWW ani innych serwisów dostępnych z zewnątrz, to może nie potrzebują one
własnego numeru IP? Niestety, jak pisaliśmy w rozdziale o budowie sieci, do przesłania każdego
pakietu musi być znany adres komputera docelowego i nadawcy. A każda strona, którą oglądamy w
przeglądarce, jest wysyłana z serwera w postaci pakietów, zaadresowanych specjalnie dla naszego
komputera. Wyglądało na to, że nawet do biernego korzystania z Internetu potrzebny był chociaż
chwilowy numer IP.
Ale i tu znalazło się obejście — nazywa się NAT (Network Address Translation). Ogólnie wygląda to
tak, że np. w firmie do Internetu jest podłączony jeden komputer (router NAT), a do niego (siecią
lokalną) pozostałe komputery firmy. Jeśli któryś z komputerów potrzebuje ustanowić połączenie z
serwerem internetowym (np. WWW) na zewnątrz, lokalny router NAT występuje w jego imieniu i
przesyła mu otrzymane pakiety. W ten sposób jeden adres internetowy (routera NAT) może obsłużyć
nawet bardzo dużo komputerów, korzystających jednocześnie z Internetu. Dzięki temu dysponując
tylko jednym adresem IP, można nadać adres IP wielu komputerom. Acz nie są to prawdziwe adresy
internetowe, tylko adresy w sieci lokalnej firmy — mówi się o nich "adresy z klasy prywatnej", w
odróżnieniu od prawdziwych IP "z klasy publicznej".
Jak działa NAT od strony technicznej?
Tak jak to zostało wcześniej opisane w części o adresach i portach, każde połączenie jest
identyfikowane przez cztery liczby — (adres IP źródłowy, port źródłowy, adres IP docelowy, port
docelowy). Wiemy już, że router NAT udaje, że połączenia od wielu komputerów w sieci lokalnej
pochodzą z jednego globalnego adresu IP. Czemu się one nie mieszają? Można je nadal odróżnić po
numerach portów! Przy przysyłaniu pakietu na zewnątrz, router zamienia adres źródłowy na adres
globalny. Jednocześnie zapamiętuje, że ten numer portu jest używany przez dany komputer w sieci
lokalnej. Przy odbieraniu pakietu z zewnątrz, router otrzymuje wszystkie pakiety z tym samym
adresem globalnym. Ale patrząc na listę używanych portów, znajduje informację dla jakiego
komputera w sieci lokalnej pakiet jest przeznaczony. Po odwrotnej podmianie adresu, pakiet jest
przesyłany do komputera docelowego.
Na czym polega różnica w praktyce? Otóż do komputera korzystającego z NAT nie można dostać się
z zewnątrz. Oznacza to m.in., że na takim komputerze nie możemy umieścić ogólnodostępnego
serwisu WWW (ani żadnego innego), bo nie ma on widocznego na zewnątrz adresu. Dla większości
użytkowników jest to wręcz zaletą, gdyż ogranicza możliwości przynajmniej niektórych włamań. A
własne strony WWW (i skrzynki pocztowe) i tak trzymamy na dedykowanych serwerach — przecież
nasze komputery czasem wyłączamy, a serwis powinien być dostępny non-stop…
Skąd się wzięła względna anonimowość w Internecie?
Opisane w poprzednim rozdziale mechanizmy wprowadziły zasadniczą zmianę w porównaniu z
początkowym okresem istnienia Internetu, kiedy każdy podłączony do niego komputer miał na stałe
przypisany numer IP. W takim układzie nie było mowy o anonimowości. Za każdy adres IP
odpowiadała jakaś organizacja, a za komputer, któremu ten IP przypisano — jego administrator.
Użytkownik nie mógł otrzymać konta bez wiedzy administratora, który wymagał przy jego zakładaniu
identyfikacji użytkownika. Ponieważ każdy przesyłany Internetem pakiet informacji zawiera adres
komputera, z którego został wysłany, połączenie go z konkretnym człowiekiem, czyli użytkownikiem
posiadającym na danym komputerze konto, było proste.
Wprowadzenie dynamicznie przydzielanych adresów IP oraz NAT, opisanych w poprzednim
rozdziale, zmieniło tę sytuację — choć nie do końca. Dotarcie do właściciela komputera,
podłączonego do Internetu, jest możliwe i teraz. Na przykład na podstawie zapisów połączeń
telefonicznych dostawcy usług internetowych można ustalić, z jakiego numeru telefonu łączono się w
danej chwili poprzez dany numer IP. Ale jest to już znacznie bardziej skomplikowane, szczególnie w
przypadku telefonów komórkowych i korzysta się z tych możliwości wyłącznie w przypadku
uzasadnionych podejrzeń związanych z naruszeniem prawa. Można powiedzieć, że z podpisu, którym
był kiedyś opatrzony w Internecie każdy pakiet informacji, pozostał dziś tylko odcisk palca.
Droga informacji w Internecie
Droga, którą płynie informacja w Internecie, nie jest ustalona "na sztywno". Nie znaczy to jednak, że
jest nam zupełnie nieznana — możemy sprawdzić, przez które komputery popłyną w danej chwili
internetowe pakiety np. z Warszawy do USA, do yahoo.com. Przedstawione listy to wynik działania
uniksowej komendy traceroute, podającej listę komputerów pośredniczących w połączeniu o
określonym celu:
1 bbone-R-wman.fuw.edu.pl (193.0.80.10) 1.187 ms
1.113 ms
1.789 ms
2 193.0.64.117 7.247 ms
9.113 ms
2.580 ms
3 z-ochoty.poznan-gw.10Gb.pol34.pl (212.191.224.33) 21.150 ms
21.021 ms
15.886 ms
4 hbg-b2-pos0-0-0.telia.net (213.248.77.213) 26.987 ms
27.188 ms
25.817 ms
5 hbg-bb2-pos0-1-0.telia.net (213.248.65.181) 25.867 ms
26.792 ms
27.805 ms
6 kbn-bb2-pos4-0-0.telia.net (213.248.65.126) 31.824 ms
30.724 ms
30.805 ms
7 nyk-bb2-pos5-0-0.telia.net (213.248.64.34) 122.110 ms
124.416 ms
122.089 ms
8 nyk-i1-pos3-0.telia.net (213.248.82.22) 119.133 ms
117.781 ms
117.735 ms
9 so-0-1-0.edge1.NewYork1.Level3.net (209.244.160.161) 122.349 ms
122.060 ms
122.281 ms
10 ge-2-1-0.bbr2.NewYork1.Level3.net (64.159.4.149) 118.000 ms
119.448
ms
119.324 ms
11 ge-0-1-0.bbr2.SanJose1.Level3.net (64.159.1.130) 193.191 ms
194.529
ms
193.598 ms
12 ge-10-1.ipcolo3.SanJose1.Level3.net (64.159.2.105) 193.125 ms
194.446
ms
193.130 ms
13 unknown.Level3.net (64.152.69.30) 193.668 ms
193.082 ms
192.951 ms
14 UNKNOWN-66-218-82-230.yahoo.com (66.218.82.230) 194.370 ms 193.399 ms
193.333 ms
15 w1.rc.scd.yahoo.com (66.218.71.112) 194.635 ms
193.658 ms
193.125
ms
Po drodze mamy aż piętnaście komputerów! Na szczęście nie powoduje to wielkich opóźnień:
pojawiające się za nazwami kolejnych komputerów liczby określają (w tysięcznych częściach
sekundy) czas oczekiwania paczek informacji na dalsze połączenie. W tym przypadku cała droga
zajmuje niewiele ponad sekundę. Ani szybkość połączenia, ani też liczba czy adresy biorących w nim
udział komputerów nie są regułą. Szczególnie szybkość połączenia może ulegać dużym zmianom.
Druga lista to droga do witryny polska.pl:
1 bbone-R-wman.fuw.edu.pl (193.0.80.10) 1.207 ms
1.182 ms
1.511 ms
2 193.0.64.117 100.051 ms
98.751 ms
83.254 ms
3 icm-r1-193-219-28-237.rtr.net.icm.edu.pl (193.219.28.237) 3.368 ms
4.142 ms
4.955 ms
4 uw-gw-at1-0-103.warman.nask.pl (194.181.0.125) 4.436 ms
4.475 ms
6.933 ms
5 pw-gw0-at2-0-0-4.core.nask.pl (195.187.254.221) 8.252 ms
7.631 ms
7.248 ms
6 kabaty-gw-at2-0-1.warman.nask.pl (195.187.254.154) 6.265 ms
4.692 ms
10.045 ms
7 helm-fa0-0.nask.waw.pl (194.92.0.166) 11.500 ms
6.034 ms
7.990 ms
8 polska.pl (193.59.201.35) 8.857 ms
11.404 ms
11.415 ms
Jak widać, nawet bliskie połączenia mogą się odbywać za pośrednictwem kilku komputerów —
wybieranych w danej chwili zależnie od zajętości łącz. Odziedziczony po sieci wojskowej spadek,
który miał zapewnić odporność na atak jądrowy, sprawdza się wspaniale w dzisiejszym Internecie.
Dzięki niemu awarie nawet bardzo ważnych serwerów lub łączy nie paraliżują całej Sieci — mogą co
najwyżej bardzo spowolnić niektóre połączenia, automatycznie zestawiane w sytuacji awaryjnej
wolniejszą drogą.
Żeby ten schemat działał, każdy komputer w Internecie musi mieć zupełnie unikalny i jednoznaczny
adres — dla komputerów najwygodniejsze są numery. Numerem komputera docelowego (i
wysyłającego) musi być opatrzony każdy wysyłany Internetem pakiet.
Co się dzieje po wpisaniu w przeglądarce adresu strony do jej wyświetlenia?
W skrócie i w ogromnym uproszczeniu:
1. przeglądarka za pośrednictwem systemu operacyjnego (obsługującego niskopoziomowe
protokoły TCP/IP) łączy się z serwerem DNS, który podaje numer IP przypisany do adresu
symbolicznego który wpisaliśmy
2. na otrzymany adres IP zostaje wysłane, sformatowane zgodnie z protokołem HTTP, zapytanie
do serwera WWW ew. działającego pod tym adresem
3. jeśli serwer WWW działa, na adres nadawcy są wysyłane pakiety, zawierające kolejne
fragmenty kodu strony w języku HTML
4. jeśli sumy kontrolne się zgadzają, z pakietów odpakowywany jest kod HTML, który
przeglądarka interpretuje i wyświetla
5. jeśli w którymś pakiecie nie zgadza się suma kontrolna, do serwera wysyłane jest żądanie
ponownego przesłania tego pakietu

Podobne dokumenty