Naprej Nazaj Kazalo

13. Kako deluje internet?

Da bi laže 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 sploh je 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 v našem računalniku, bolj verjetno pa je, da v kakem drugem računalniku v omrežju. Ko ste računalnik pripravljali za delo z vašim ponudnikom internetnih storitev, ste skoraj gotovo morali nekam 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 posodabljajo 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. Naš računalnik lahko, opremljen s tem podatkom, 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. Če se pokvari primarni imenski strežnik, so lahko določeni rezervni ali sekundarni imenski strežniki, ki vskočijo, če je treba. Sekundarni strežniki avtomatično usklajujejo podatke v svojih tabelah s podatki v primarnem strežniku vsakih nekaj ur. Tako se spremembe v tabelah, ki jih izvedemo v 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. To, 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 po naslovu 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. Na drugi strani lahko spremembe v poddrevesih 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 po naslovu strežnika za domeno .org. Ko ga izve, tega povpraša po naslovu strežnika za domeno .linuxdoc.org, in tega, ko ga izve, po naslovu računalnika www.linuxdoc.org.

Večinoma pa tako dolga pot ni potrebna. Ko je imenski strežnik enkrat izvedel naslov, nekaj časa lokalno hrani tabelo preslikav med internetnimi imeni in naslovi IP, in naslov 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 v 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 strežnik spet opraviti celotno pot poizvedbe. To je pomembno, da imenski strežnik ne hrani napačnih podatkov za naslove, ki so se medtem morda že spremenili. Naslov je takoj izvržen iz tabele tudi takrat, 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 naslednje. Ukaz se zapre v paket - blok bitov, ki je analogen telegramu in obsega 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, kar 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 doseže specializiranega računalnika, ki mu pravimo usmerjevalnik. Usmerjevalnik hrani v pomnilniku zemljevid interneta -- ne vsega, 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 takrat 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 ima zares dobro zasnovo, saj ob nezanesljivi strojni opremi in povezavah zagotavlja zanesljivo komunikacijsko pot. Za to so zaslužni podatki, potrebni za delovanje omrežja, razpršeni po tisočih usmerjevalnikih, namesto da bi bili zbrani le v nekaj velikanskih 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.

Najnižja raven, IP (angl. Internet Protocol, internetni protokol), je odgovorna za označevanje paketov z naslovom računalnika pošiljatelja in računalnika naslovnika. Če, denimo, z vašega računalnika, ki ima naslov 192.168.1.101, uporabljate spletno mesto http://www.linuxdoc.org/, ki ima naslov 152.2.210.81, bodo paketi označeni s tema dvema naslovoma. Naslavljanje paketov z naslovi IP je zelo podobno naslavljanju pisemskih pošiljk s poštnim naslovom -- poštna služba prebere naslov in določi, po kateri poti bo dostavila pošiljko do vas. Podobno počnejo usmerjevalniki z internetnim prometom.

Zgornja raven, TCP (angl. Transmission Control Protocol, protokol za nadzor prenosa), zagotavlja zanesljivost 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 (to se rado zgodi, kadar se omrežna povezava med prenosom prekine).

Paketi TCP/IP obsegajo tudi nadzorno vsoto, s katero lahko prejemnik ugotovi, ali so paketi prispeli nepoškodovani. Nadzorna vsota se izračuna tako, da bo takrat, ko je poškodovana bodisi sama nadzorna vsota bodisi preostanek paketa, vnovični 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 v pošiljateljevem računalniku in vrati v naslovnikovem računalniku, in se mu ni treba ukvarjati z razdelitvijo sporočil na pakete in sestavljanjem le-teh, nadzornimi vsotami in vnovičnim 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, od katerih vsak streže svoja vrata -- čaka na promet na danih vratih in izvaja prispele ukaze.

Če pri zasnovi interneta velja kakšno splošno pravilo, je to, da so vsi deli čim bolj enostavni in čim bolj dostopni ljudem. HTTP, pa tudi sorodni protokoli, denimo SMTP (angl. Simple Mail Transfer Protocol, preprost protokol za prenos pošte), uporabljajo preproste besedilne ukaze, ki jih končajo 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