Naprej Nazaj Kazalo

13. Kako deluje internet?

Da bi lažje razumeli, kako deluje internet, si oglejmo, kaj se dogaja pri tipični internetni operaciji - denimo takrat, ko brskalnik usmerimo na spletno stran dokumentacijskega projekta Linuxa. Angleški izvirnik spisa, ki ga berete, dobimo na naslovu:

http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html

Interno gre v resnici za datoteko HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html v imeniku s spletnimi stranmi na računalniku www.linuxdoc.org.

13.1 Imena in naslovi

Da bi prebrali spletno stran, mora brskalnik vzpostaviti povezavo s spletnim strežnikom, torej z gostiteljskim računalnikom, ki hrani omenjeno stran. Prvi korak pri tem je, da ugotovi, kje se sploh nahaja računalnik z internetnim imenom www.linuxdoc.org. Lokacija gostiteljskega računalnika je podana z njegovim naslovom IP (kaj je IP, bomo razložili pozneje).

Naslov IP ugotovi brskalnik tako, da najprej pokliče drug program, imenski strežnik. Ta lahko teče na našem računalniku, bolj verjetno pa je, da na kakem drugem računalniku v omrežju. Ko ste računalnik pripravljali za delo z vašim ponudnikom internetnih storitev, ste skoraj gotovo morali nekje vpisati tudi naslov imenskega strežnika, ki teče v omrežju vašega ponudnika internetnih storitev.

Imenski strežniki med seboj komunicirajo, ter izmenjujejo in ažurirajo vse podatke, potrebne za pretvorbo internetnih imen v naslove IP. Imenski strežnik, na katerega smo naslovili zahtevek za naslov IP računalnika www.linuxdoc.org, je morda moral zahtevek posredovati naprej trem ali štirim drugim imenskim strežnike, vendar pa se to zgodi zelo hitro, navadno prej kot v sekundi. V naslednjem razdelku si bomo ogledali podrobnosti imenskih strežnikov.

Na koncu imenski strežnik vrne brskalniku podatek, da je številka IP za računalnik www.linuxdoc.org enaka 152.19.254.81. Opremljeni s tem podatkom lahko naš računalnik neposredno izmenjuje podatke z računalnikom www.linuxdoc.org.

13.2 Sistem domenskih imen

Celotno omrežje programov in zbirk podatkov, ki sodelujejo pri pretvarjanju internetnih imen računalnikov v naslove IP se imenuje sistem domenskih imen (angl. Domain Name System, DNS). Kratica DNS je precej pogosta - dostikrat se za imenske strežnike uporablja izraz ,,strežnik DNS``. Ogledali si bomo, kako sistem deluje.

Internetna imena računalnikov sestavljajo besede, ločene s pikami. Domena je skupina računalnikov, ki si delijo skupno pripono internetnega imena. Domene so lahko del širših domen. Računalnik www.linuxdoc.org je denimo del domene .linuxdoc.org, ta pa je del domene .org.

Za vsako domeno je določen primarni imenski strežnik, ki pozna naslove IP za vse računalnike v dani domeni. Za primer okvare primarnega imenskega strežnika so lahko določeni rezervni ali sekundarni imenski strežniki, ki vskočijo, če je potrebno. Sekundarni strežniki avtomatično usklajujejo podatke v svojih tabelah s podatki na primarnem strežniku vsakih nekaj ur. Tako se spremembe v tabelah, ki jih izvedemo na primarnem strežniku, samodejno prenesejo naprej.

Zdaj pa k pomembnemu delu. Imenski strežnik za dano domeno ne pozna naslovov računalnikov v drugih domenah, niti ne v lastnih poddomenah. Kar mora poznati, so naslovi imenskih strežnikov za te domene. V našem zgledu primarni imenski strežnik za domeno .org ne pozna naslova računalnika www.linuxdoc.org, niti nobenega drugega računalnika v domeni .linuxdoc.org, pozna pa naslov imenskega strežnika za domeno .linuxdoc.org, in tega lahko vpraša za naslov kateregakoli računalnika v tej poddomeni.

Sistem domenskih imen je drevesno urejen. Povsem pri vrhu so korenski strežniki. Vsakdo pozna naslove IP korenskih strežnikov - vgrajeni so že v programje DNS. Korenski imenski strežniki poznajo naslove imenskih strežnikov za vrhnje domene, kot denimo .com, .org ali .si, ne pa naslovov vseh računalnikov v teh domenah. Imenski strežniki za vrhnje domene poznajo naslove imenskih strežnikov za domene neposredno pod njimi, in tako naprej.

Sistem domenskih imen je bil zasnovan z zamislijo, da minimiziramo količino podatkov o obliki drevesa, ki ga mora poznati vsak računalnik v omrežju. Po drugi strani lahko spremembe v pod-drevesih izvedemo enostavno s spremembami v tabelah primarnega strežnika za to poddomeno.

Ko izdamo zahtevek za naslov računalnika z imenom www.linuxdoc.org, se zgodi naslednje. Lokalni imenski strežnik, kateremu smo izdali zahtevek, povpraša korenski strežnik za naslov strežnika za domeno .org. Ko ga izve, tega povpraša za naslov strežnika za domeno .linuxdoc.org, in tega, ko ga izve, povpraša za naslov računalnik www.linuxdoc.org.

Večinoma pa tako dolga pot ni potrebna. Ko je enkrat izvedel naslov, imenski strežnik nekaj časa lokalno hrani tabelo preslikav med internetnimi imeni in naslovi IP, in ga ob naslednjih poizvedbah postreže kar iz lokalne tabele. Zato, ko obiščemo novo spletišče, navadno samo na začetku dobimo sporočilo ,,Looking up host``, pri naslednjih dostopih do strani na istem strežniku pa gre hitreje. Imenski strežnik zbranih tabel ne hrani za vse večne čase, ampak imajo podatki omejen rok trajanja. Ko ta preteče, mora ponovno opraviti celotno pot poizvedbe. To je pomembno, da imenski strežnik ne hrani napačnih podatkov za naslove, ki so se medtem morda spremenili. Naslov je takoj vržen iz tabele tudi v primeru, ko je računalnik na tem naslovu nedosegljiv.

13.3 Paketi in usmerjevalniki

Brskalnik bi rad na koncu spletnemu strežniku posredoval ukaz, s katerim bi prebral spletno stran:

GET /HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html HTTP/1.0

Zgodi se naslenje. Ukaz se zapre v paket - blok bitov, ki je analogen telegramu, in ki vsebuje tri pomembne podatke: naslov pošiljatelja (torej naslov IP našega računalnika), naslov prejemnika (v danem zgledu 152.19.254.81) in pa številko storitve oziroma številko vrat. Slednja je v našem zgledu enaka 80, ki je dogovorjena vrednost za vse spletne poizvedbe.

Računalnik pošlje paket po omrežju (krajevnem omrežju ali telefonskem vodu do ponudnika internetnih storitev), dokler ne pride do specializiranega računalnika, ki mu pravimo usmerjevalnik. Usmerjevalnik hrani v pomnilniku zemljevid interneta - ne celotnega, ampak del, ki opisuje omrežno okolico - in pozna poti do usmerjevalnikov za druge omrežne okolice v internetu.

Paket bo verjetno na svoji poti do cilja potoval prek več usmerjevalnikov. Ti so premeteni - hranijo tudi podatke o tem, po kako dolgem času drugi usmerjevalniki potrdijo sprejem paketa, in pakete usmerjajo po tistih linijah, ki so hitrejše. Opazijo tudi, kadar kakšen usmerjevalnik ali kabel odpove, in v takih primerih poiščejo alternativne poti.

Urbano izročilo pravi, da je bil internet zasnovan tako, da bi preživel jedrsko vojno. To sicer ni res, vendar pa je zasnova interneta izjemno dobra v tem, da ob nezanesljivi strojni opremi in povezavah zagotavlja zanesljivo komunikacijsko pot. To je zato, ker so podatki, potrebni za delovanje omrežja, razpršeni po tisočih usmerjevalnikih, namesto da bi bili skoncentrirani le v nekaj ogromnih in ranljivih centralah (tako kot denimo telefonsko omrežje). Zato napake ostanejo lokalizirane, omrežje pa se prilagodi tako, da poišče obvoze.

Ko paket prispe do naslovnega računalnika, ta uporabi podatek o številki vrat, in posreduje paket spletnemu strežniku. Ta ve, komu poslati odgovor, saj je na paketu označen tudi naslov pošiljatelja. Ko spletni strežnik kot odgovor vrne zahtevani spis, se tudi ta razdeli na pakete. Velikost paketov je odvisna od prenosnega sredstva v omrežju in vrste storitve.

13.4 TCP in IP

Da bi razumeli, kako delujejo prenosi več paketov, moramo vedeti, da internet dejansko uporablja za prenos dva protokola, enega vrh drugega.

Na spodnji ravni, IP (angl. Internet Protocol, internetni protokol), je rešeno, kako posamezni paket prenesti od pošiljateljevega naslova do naslovnikovega - zato so ti naslovi znani tudi kot naslovi IP. Vendar pa IP ni zanesljiv protokol - če se paket na poti slučajno izgubi, tega ne pošiljatelj, ne naslovnik morda nikoli ne bosta izvedela. V omrežni terminologiji pravimo takim protokolom brezpovezavni protokoli: pošiljatelj enostavno pošlje paket naslovniku in ne pričakuje potrditve prejema.

IP je hiter in cenen. Včasih je hitra in cenena, pa čeprav nezanesljiva komunikacija čisto v redu. Če po omrežju igramo igro Doom ali Quake, je vsaka krogla predstavljena s paketom IP. Če se sem ter tja kakšna izgubi, ni prevelike škode.

Zanesljivost zagotavlja, zgornja raven, TCP (angl. Transmission Control Protocol, protokol za nadzor prenosa). Ko se računalnika dogovorita za povezavo TCP (kar opravita s paketi IP), prejemnik ve, da mora v dogovorjenem času pošiljatelju poslati potrdilo o prejetem paketu. Če pošiljatelj potrdila ne prejme, ta paket pošlje še enkrat. Nadalje, pošiljatelj pakete TCP oštevilči, tako da jih lahko prejemnik sestavi v pravilnem vrstnem redu, čeprav so morda prispeli pomešani (kar se rado zgodi, kadar se omrežna povezava med prenosom prekine).

Paketi TCP/IP vsebujejo tudi nadzorno vsoto, s katero lahko prejemnik ugotovi, ali so paketi prispeli nepoškodovani. Nadzorna vsota se izračuna tako, da če je poškodovana bodisi sama nadzorna vsota, bodisi preostanek paketa, bo ponoven izračun le-te zelo verjetno izkazal napako. S stališča nekoga, ki uporablja imenske strežnike in TCP/IP, so internetne povezave videti kot zanesljiva oblika povezave med vrati na pošiljateljevem računalniku in vrati na naslovnikovem računalniku, in se mu ni treba ukvarjati z razdelitvijo sporočil na pakete in sestavljanjem le-teh, nadzornimi vsotami in ponovnim pošiljanjem okvarjenih paketov. Za vse to poskrbijo že ravni pod njim.

13.5 Uporabniški protokol HTTP

Vrnimo se k našemu zgledu. Brskalniki in spletni strežniki se sporazumevajo v uporabniškem protokolu, ki teče nad TCP/IP. Slednjega uporablja za enostavno pošiljanje podatkovnih nizov tja in nazaj. Protokol se imenuje HTTP (angl. Hyper-Text Transfer Protocol, protokol za prenos nadbesedila), in pri zgledu GET malo prej smo že videli, kako je videti ukaz.

Ko ukaz GET prispe do vrat številka 80 računalnika www.linuxdoc.org, bo posredovan spletnemu strežniškemu programu, ki streže vratom 80. Večina internetnih storitev je izvedenih s strežniškimi programi, katerih vsak streže svoja vrata - čaka na promet na danih vratih in izvaja prispele ukaze.

Če je pri zasnovi interneta kakšno splošno pravilo, je to, da so vsi deli čim bolj enostavni in čim bolj dostopni ljudem. HTTP, kot tudi sorodni protokoli, denimo SMTP (angl. Simple Mail Transfer Protocol, preprost protokol za prenos pošte), uporablja preproste besedilne ukaze, ki jih zaključi z znakom za novo vrstico.

To je sicer nekoliko neučinkovito - v nekaterih okoliščinah bi bila uporaba gosto kodiranega binarnega protokola hitrejša. Vendar pa so izkušnje pokazale, da prednosti ukazov, ki jih človek enostavno razume, odtehtajo malenkosten prihranek pri učinkovitosti, ki bi ga pridobili z binarnimi protokoli.

Zatorej je tudi odgovor, ki ga strežnik vrne po protokolu TCP/IP, besedilo. Začetek odgovora bo nekaj podobnega kot to (nekaj vrstic zaglavja je izpuščenih):

HTTP/1.1 200 OK
Date: Sat, 10 Oct 1998 18:43:35 GMT
Server: Apache/1.2.6 Red Hat
Last-Modified: Thu, 27 Aug 1998 17:55:15 GMT
Content-Length: 2982
Content-Type: text/html

Glavi sledi prazna vrstica, tej pa besedilo spletne strani. Ko je celotno besedilo poslano, se zveza prekine, brskalnik pa izriše stran. Podatki v glavi mu pri tem pomagajo - vrstica Content-Type pove, da gre za nadbesedilni spis v obliki HTML.


Naprej Nazaj Kazalo