Ako funguje internet

(1. časť)

Premýšľali ste niekedy o tom, ako je možné, že sa po napísaní krátkeho textu do adresového riadka vo vašom prehliadači dostanete k tým najrôznejším informáciám? Alebo ako je možné, že ak pošlete mail na nejakú adresu, tak ho príjemca zvyčajne aj naozaj dostane? Ak si občas kladiete podobné otázky, potom je tento text pre vás. Dávam si v ňom za cieľ priblížiť fungovanie internetu tak, aby bolo zrozumiteľné pre každého. Mojím cieľom nie je veci presne definovať. Definujeme si ich len na takej úrovni, aby boli vysvetlenia zrozumiteľné pre netechnického čitateľa. Text preto bude obsahovať množstvo nepresností a zamlčaných právd, za čo sa ospravedlňujem každému, kto problematike rozumie. Veľmi často sa budem opierať o analógie. Použité prirovnania treba brať s istou rezervou.

Základom fungovania internetu je komunikácia medzi počítačmi. Odohráva sa na niekoľkých úrovniach. Za najnižšiu úroveň možno považovať komunikáciu medzi počítačmi v jednom paneláku. Predstavme si teda štandardný panelák s obývanými bytmi. V každom byte žije rodina a každý byt má svoje číslo. Čísla bytov sú rôzne, a tak môžeme povedať, že každý byt v paneláku možno jednoznačne identifikovať.

Keby sme v takomto paneláku chceli rozbehnúť listovú poštu, museli by sme určiť pravidlá jej fungovania. Pokúsme sa také pravidlá navrhnúť a snažme sa, aby boli čo najjednoduchšie:

Všimnite si, že podmienky sú formulované s ohľadom na ľubovoľného príjemcu, nie na aktuálneho adresáta. Možno teda povedať, že sa pravidlá nesnažíme navrhovať tak, aby boli použiteľné pre každého, kto sa do paneláka prisťahuje, ale naznačujeme, že do nášho paneláka sa môže nasťahovať len taká rodina, ktorá sa dokáže do našej pošty zapojiť bez zmeny pravidiel v komunikácii. Pripúšťame teda použitie ľubovoľného média, ale nepripúšťame možnosť, že všetci okrem šiesteho poschodia, ktoré prijíma len kazety s nahrávkami, si budú dopisovať na papierikoch a siedme poschodie nepozná atrament, a tak by prijalo radšej nejaký dierkovací systém.

Skúsme teraz toto prirovnanie prepojiť so svetom počítačov v paneláku a pre jednoduchosť predpokladajme, že v každom byte je jeden počítač.

Počítače v paneláku môžu byť prepojené rôznym spôsobom, na prenos správ teda môžu používať ľubovoľné médium. V závislosti od média je potom určený aj spôsob prenosu správ. Môže to byť "metalické" hviezdicové pripojenie, čo znamená, že z každého bytu vedie od počítača jeden kábel. Všetky tieto káble sa stretávajú v špeciálnom zariadení, ktoré sa nazýva switch. Správy na metalickom médiu komunikujú prostredníctvom elektrických impulzov. Ďalej to môže byť nejaká forma bezdrôtového pripojenia, napríklad v súčasnosti veľmi často používané wifi a základné prvky prenosu správ v tomto prípade sú nejaké typy rádiových impulzov. Spomeňme ešte optické médium. Ide o optické vlákno, ktoré je priehľadné a zariadenia, ktoré sú naň pripojené, používajú na komunikáciu svetelné záblesky.

V jednom paneláku môže fungovať aj niekoľko typov spojenia súčasne, treba si však uvedomiť, že tieto spojenia sú na sebe nezávislé, teda ide o situáciu, ako keby v paneláku fungovali dva rôzne typy pošty. V sieťovej terminológii sa vrstva, v ktorej sa definuje a implementuje typ prenosového média a spôsob komunikácie základných kameňov jazyka, nazýva fyzická vrstva (physical layer).

Okrem typu média nás pri komunikácii zaujíma aj jazyk, v ktorom sa bude komunikovať a základný formát správ. Vo svete počítačov sú základnou fonetickou výbavou dva "znaky" a to jednotka a nula. Okrem fonetickej výbavy je dôležitá aj jednoznačná identifikácia všetkých zariadení, ktoré sú v paneláku prepojené a samozrejme aj jazyk s pravidlami, ktoré sú jednoduché. Jeden z takýchto systémov pravidiel, ktorý definuje spôsob adresácie jednotlivých zariadení a komunikačný jazyk, sa nazýva ethernet. Každé zariadenie pripojené do siete typu ethernet má identifikátor (v príklade s bytmi v paneláku to bolo číslo bytu), ktorý sa nazýva MAC adresa. V sieti typu ethernet sa posielajú rámce, pričom každý rámec obsahuje adresu, na ktorú má byť doručený "text" správy, ale aj adresu odosielateľa. V sieťovej terminológii sa vrstva, v ktorej sa definuje a implementuje komunikačný jazyk a spôsob adresácie, nazýva linková vrstva (link layer).

Skúsme si to zhrnúť: Fyzická vrstva hovorí, aké médium použijeme na prenos správ (v panelákovej pošte papier, v počítačovej sieti napríklad kábel) a akým spôsobom budeme reprezentovať jednotlivé znaky komunikácie. V paneláku budeme písať písmená našej abecedy a do kábla budeme posielať elektrické impulzy. Napríklad na reprezentovanie jednotky a nuly to budú dva typy impulzov. Linková vrstva hovorí, ako budeme pomenovávať účastníkov komunikácie a určuje nám, ako písať správy tak, aby boli doručené správnemu príjemcovi.

Predstavme si, že počítač A chce poslať správu počítaču B, ktorý je pripojený na metalickej sieti. Teda z počítača A vedie kábel kamsi do switchu a do toho istého switchu vedie aj kábel z počítača B. Počítač A urobí tieto kroky:

Zatiaľ sme teda vybudovali "poštu" medzi počítačmi v spoločnej lokálnej sieti. Pošta nám umožňuje posielanie správ zakódovaných v jednotkách a nulách. Správy sú limitované na počet bytov, ak teda chceme poslať dlhý list, musíme ho "rozsekať" na viacero rámcov. Zamlčali sme niekoľko problémov, ako napríklad: Čo sa stane, ak sa správa po ceste nejako pokazí, napríklad sa vďaka elektrickému rušeniu zmení v adrese príjemcu jeden bit z jednotky na nulu? Alebo čo ak dôjde k poškodeniu textu správy? Dozvie sa príjemca, že je správa poškodená? Všetky takéto problémy sa v praxi musia riešiť. My sa však nimi nebudeme zaoberať, pretože pre pochopenie fungovania internetu nie sú podstatné.

Nabudúce komunikačne prepojíme susedné paneláky, sídliská, mestá a štáty.

Praktické cvičenia

Ipconfig

Ide o utilitu, ktorá slúži na obzeranie nastavenia siete. Ak chceme vidieť jej výstup, je vhodné spúšťať ju na príkazovom riadku. Jej výstupy bývajú niekedy dlhšie ako jedna obrazovka, z čoho vyplýva, že nám ich začiatok "utečie". Preto ju budeme využívať v kombinácii s príkazom more, ktorý slúži na stránkovanie príliš dlhých výstupov. Ak chceme výstup akého koľvek príliš "ukecaného" príkazu poslať na spracovanie príkazu more, prepojíme oba príkazy znakom |, teda napríklad

ipconfig |more

Znamená, že výstup z programu ipconfig bude presmerovaný do utility more, ktorá (v prípade že je výstup príliš dlhý) sa po jednej "stránke" zastaví a bude čakať na stlačenie medzerníka. Stlačením medzerníka možno prerolovať na nasledujúcu stránku a stlačením q zobrazovanie predčasne ukončiť.

Na to, aby sme si mohli pozrieť, aké mac adresy majú sieťové rozhrania v našom počítači, budeme musieť príkazu ipconfig zadať parameter. Parametre sa vo windows príkazom na príkazovom riadku väčšinou zadávajú cez lomítko. Napríklad

ipconfig /all |more

nám poskytne detailné informácie o každom rozhraní. Všimnime si riadky s fyzickými adresami.

Ako funguje internet

(2. časť)

V predchádzajúcej časti sme popísali fyzickú a linkovú komunikačnú vrstvu, ktoré spolu umožňujú komunikáciu počítačov na lokálnej sieti. V závere sme si dokázali predstaviť, ako funguje výmena "rámcov" medzi počítačmi, ktoré sú pripojené na jedno médium, ako sa tieto počítače identifikujú. V tejto časti sa pokúsime komunikáciu rozšíriť tak, aby sme boli schopní porozumieť princípom komunikácie medzi počítačmi, ktoré sú na rôznych sieťach. Aj teraz začneme analógiou z bežného života.

Pokúsme sa navrhnúť, ako by mala fungovať komunikácia medzi obyvateľmi bytov, keby sme chceli umožniť majiteľom bytov komunikovať aj s bytmi mimo jedného paneláka. Keď nám postačovala komunikácia v rámci jedného paneláka, tak sme jednotlivých účastníkov komunikácie identifikovali pomocou čísel bytov (vo sfére počítačov pomocou MAC adries). Teraz túto identifikáciu rozšírime. Napríklad tak, že "adresa" príjemcu informácie, ktorú posielame, bude pozostávať z dvoch čísel oddelených čiarkou. Prvé číslo popisuje číslo paneláka a druhé je to, ktoré už poznáme, teda číslo bytu v konkrétnom paneláku. Tak ako v minulej časti, aj teraz musíme predpokladať, že každý panelák má unikátne číslo, teda žiadne dva paneláky nemajú rovnaké číslo. Unikátnosť čísel jednotlivých bytov je nutná len v jednom paneláku. Teda, keby mali dva rôzne byty adresu 37,12 (panelák 37, byt 12), tak by sme nedokázali určiť, ktorému z dvoch bytov identifikovaných rovnakou adresou chceme správu doručiť. Adresy 37,12 a 38, 12 sú už v poriadku, pretože rovnaké sú len čísla identifikujúce jednotlivé byty. Podľa čísla paneláka však jednoznačne vieme určiť, komu správa patrí.

Systém adresovania máme hotový, skúsme teraz navrhnúť pravidlá komunikácie. Predstavme si, že byt A chce poslať správu bytu B. Byt A bude postupovať takto:

Vrátnik býva na prízemí a prenáša správy odosielané z paneláka, v ktorom býva, do ostatných panelákov. Má teda vedomosť o tom, ako doručiť správy, ktoré patria iným panelákom, presnejšie vrátnikom týchto panelákov. Ak dostane nejakú správu na odoslanie, postupuje takto:

Popísaný systém môžeme rozšíriť na ulice. Do adresy pridáme tretiu súradnicu a získame napríklad adresu v tvare stromová,12,21, ktorá hovorí, že príjemca je na ulici Stromová v paneláku 12 a má číslo bytu 21. Posielanie správ medzi ulicami potom funguje podobne ako posielanie medzi panelákmi:

Hierarchiu môžeme rozširovať aj ďalej, na mestské štvrte, mestá, štáty. Dôležité je si uvedomiť, že každá "oblasť" (panelák, ulica, štvrť, mesto, štát, kontinent...) má "vrátnika", ktorý vie, ako doručiť správu vrátnikom všetkých susedných oblastí. Vrátnik paneláka vie, ako doručiť správu vrátnikom všetkých panelákov na jeho ulici, Vrátnik ulice zase vie, ako doručiť správu všetkým vrátnikom ostatných ulíc v jeho štvrti, a tak ďalej.

Skúsme teraz popísanú analógiu prepojiť na svet počítačov a vybudovať "sieťovú" IP vrstvu internetu. Adresy z nepočítačového sveta tu nahradíme IP adresami. Najprv si popíšme, čo všetko musí poznať každý koncový počítač pripojený do internetu (počítač, za ktorým sedí konkrétny používateľ), ktorý chce úspešne komunikovať s inými počítačmi v internete.

Niektoré z uvedených parametrov sa dajú vypočítať z ostatných, a tak sa zvyčajne neuvádzajú. Kľúčové sú parametre IP adresa, IP adresa predvolenej brány a maska podsiete. IP a broadcast adresu siete dokážeme vypočítať z IP adresy počítača a masky podsiete.

Trochu iné parametre potrebuje na komunikáciu router. Ide o počítač, ktorý je vybavený viacerými sieťovými kartami a každou je pripojený do inej podsiete. Jeho úloha je veľmi podobná úlohe switchu na linkovej vrstve, ktorý sme si spomenuli v minulej časti. Na rozdiel od switchu, ktorý sprostredkováva komunikáciu medzi počítačmi na lokálnej sieti, router prepája lokálne siete a umožňuje komunikáciu medzi nimi. Ku každej sieťovej karte má definované tieto parametre:

  • IP adresa: je adresa, pod ktorou router vystupuje na lokálnej sieti, do ktorej sa s konkrétnou sieťovou kartou pripája.
  • Adresa a maska podsiete: sú parametre, ktoré routru umožňujú jednoducho zistiť, či správa s konkrétnou adresou patrí niektorému z počítačov v podsieti, do ktorej je pripojený konkrétnou sieťovou kartou.
  • Predstavme si dve lokálne počítačové siete. V prvej je napríklad 10 počítačov. Tie sú prepojené switchom. Každý z nich má pridelenú IP adresu z rozsahu 1.2.3.1 až 1.2.3.10. Počítač s IP adresou 1.2.3.1 je "router", má teda dve sieťové karty. Jednou (tou s adresou 1.2.3.1) je pripojený do spomenutého switchu a druhou sa pripája do inej siete. Robí teda akýsi most medzi dvoma sieťami.

    Jeden z počítačov tejto siete má teda nasledujúce parametre:

    Druhá sieť nech obsahuje iných 10 počítačov, ktoré majú adresy z rozsahu 10.11.12.1 až 10.11.12.10. Router v tejto podsieti nech má adresu 10.11.12.1. Všetkých 10 počítačov je aj v tomto prípade prepojených switchom. Router v tejto sieti je ten istý počítač, ktorý robí router v prvej popísanej sieti. Má teda dve sieťové karty, aby mohol figurovať v oboch sieťach.

    Na záver tejto časti si skúsme popísať, ako bude vyzerať prenos jedného IP datagramu (to, čo sa volalo na linkovej vrstve rámec, budeme ďalej volať IP datagram). Počítač z prvej podsiete - napríklad ten s adresou 1.2.3.5 - chce poslať správu počítaču s adresou 10.11.12.10. Postupovať bude takto:

    1. S použitím Adresy a masky podsiete zistí, či je cieľový počítač v rovnakej podsieti ako on. (pozri praktické cvičenia nižšie)
    2. V prvom bode sa ukáže, že počítač je v inej podsieti ako sa nachádza odosielateľ, takže kontaktujeme router, ktorého adresu poznáme a požiadame ho o doručenie správy.
    3. Router prevezme správu a opäť pomocou masiek a IP adries podsietí pripojených k jeho sieťovým kartám zistí, do ktorej siete datagram patrí. Zistí, že ide o sieť, na ktorej komunikuje s IP adresou 10.11.12.1, a tak správu doručí do tejto siete. Keďže je v tejto sieti routrom, nekontaktuje už žiaden medzičlánok, ale priamo príjemcu, ktorého adresu musí poznať. V prípade, že adresu nepozná, použije broadcast adresu tejto siete, aby sa opýtal, počítač s akou MAC adresou má IP adresu 10.11.12.10. Na položenie tejto otázky použije špeciálny protokol ARP, o ktorom sa podrobnejšie zmienime v nasledujúcej časti seriálu.
    4. Nakoniec datagram doručí príjemcovi.

    Uvedený príklad je veľmi jednoduchý. Veríme však, že si čitateľ dokáže predstaviť, ako by mohla komunikácia vyzerať, keby sme vybudovali sieťovú hierarchiu podobnú hierarchii bytov, panelákov, ulíc, štvrtí, miest, štátov a kontinentov.

    Spôsob komunikácie popísaný v tomto texte prináša veľmi zjednodušený pohľad na systém komunikácie na internete. Zamlčali sme množstvo problémov, ktoré treba riešiť pri prenose správ medzi podsieťami. Čitateľ si pravdepodobne uvedomuje, že internetové routre, ktoré prepájajú štáty alebo kontinenty, musia prenášať obrovské množstvá datagramov. Realitou je aj fakt, že hierarchia internetu nie je taká jasná a prehľadná ako tu načrtnutá hierarchia panelákov, miest a štátov. Medzi mnohými veľmi vyťaženými routrami teda musí existovať viacero prepojení (niektoré mestá maju viac ako jedného "vrátnika") a zároveň musí existovať niečo, čo dohliada na to, aby boli všetky cesty vyťažované rovnomerne. Tento dohľad majú na sstarosti veľmi komplikované routovacie protokoly. Dohľad je plne automatizovaný a v súčasnosti je taký komplikovaný, že mu človek - laik nie je schopný porozumieť. Havária koreňových routrou (routrov, ktoré prepájajú pomyselné štáty a kontinenty) je nočnou morou všetkých administrátorov, ktorí majú tieto routre na starosti.

    Teraz si teda vieme predstaviť, ako môže fungovať prenos datagramu medzi dvoma ľubovoľnými počítačmi internetu. Nabudúce vybudujeme nad sieťovou vrstvou vrstvu transportnú, aby sme umožnili vytváranie trvalejších spojení, ktoré sa na internete hojne využívajú.

    Praktické cvičenia

    Návrat k ipconfig

    Vráťme sa k utilite ipconfig a preskúmajme ďalšie parametre, ktorým by sme už v súčasnosti mali rozumieť.

    Trochu matematiky

    Čo je to dvojková sústava?

    Ako prevedieme číslo do dvojkovej sústavy?

    147:

    1: 147-128=19

    0:19-64

    0:19-32

    1:19-16=3

    0:3-8

    0:3-4

    1:3-2=1

    1:1-1=0

    10010011

    naopak?

    10010011= sčítavame z prava

    1*1+2*1+4*0+8*0+16*1+32*0+64*0+128*1=147

    Môžeme používať aj speq mathematics

    ak chceme konvert z dvojkovej tak 0bčíslo, naopak použijeme funkciu bin(číslo)

    bitové and

    používa sa, ak zisťujeme, či konkrétna IP patrí do siete popisovanej maskou. IP aj masku prevedieme do dvojkovej sústavy a napíšeme pod seba. Do tretieho riadku zapisujeme pod konkrétne cifry:

    Vyskúšajme si to napríklad v excely.

    Zistime, či ip adresy 158.195.24.17 a 158.195.24.35

    patria do siete s adresou 158.195.24.0 a maskou 255.255.255.224

    Návod:

    poznámka: maska podsiete sa niekedy zapisuje aj ako počet jednotkových bitov. Napríklad 255.255.255.0 je to isté ako 24 a pzákladné parametre siete môžme zapísať aj v tvare 192.168.1.0/24

    Naša sieť

    Jednoduché routovanie

    Uvedomme si teraz, keď už vieme, ako funguje bitové and, kedy kontaktujeme vrátnika (predvolenú bránu) našej siete a kedy používame arp alebo arp cache na doručenie paketu v našej sieti.

    ARP (Address Resolution Protocol): je protokol ktorým sa účastníci siete pýtajú na MAC adresu prislúchajúcu k IP adrese ktorú poznajú. ARP cache je akási databáza, ktorú si lokálne spravuje každý počítač, ktorá obsahuje mapovania IP::MAC.

    Najprv si overíme, či cieľová adresa patrí do našej siete. Ak nie, tak kontaktujeme predvolenú bránu. Ak áno, tak zistíme MAC adresu počítača ktorému patrí cieľová IP a komunikujeme s ním prostredníctvom nižších vrstiev.

    Predvolená brána (router) býva pripojená do viacerých sietí a v prípade, že doručuje nejaké dáta, overuje najprv do ktorej sieťovej karty ich treba poslať. Robí to podobne ako náš lokálny počítač.

    Tabuľka v ktorej majú počítače zapísané informácie o tom, aká sieť je pripojená na ktorej sieťovej karte sa nazýva routovacia tabuľka. Zatiaľ čo tá naša klientská je úplne jednoduchá, routery majú routovacie tabuľky pomerne rozsiahle.

    Ak chcete nazrieť do vašej routovacej tabuľky, tak si do "more" pošlite výstup z príkazu route s parametrom print.

    ping a traceroute

    Ping je diagnostický nástroj, na testovanie dostupnosti počítača. Ak sa nevráti odpoveď, tak to neznamená, že počítač nieje dostupný, môže to znamenať, že ping požiadavky potichu zahadzuje

    skúsme ping www.google.com

    tracert: je nástroj, ktorým môžete zistiť, cez aké počítače putuje vaša požiadavka, kým sa dostane ku konkrétnemu počítaču. Vyskúšame si

    tracert www.google.com

    Ako funguje internet

    (3. časť - dokončenie)

    V predchádzajúcich dvoch častiach tohto seriálu sme načrtli princíp fungovania komunikácie medzi ľubovoľnými dvoma počítačmi na internete. Zaviedli sme pojem IP adresa (adresa, ktorá jednoznačne identifikuje počítač) a IP datagram ("listová zásielka", ktorú dokážeme prostredníctvom IP vrstvy a samozrejme aj nižších vrstiev preniesť od odosielateľa k adresátovi). IP vrstva nám však negarantuje doručenie datagramu, čo znamená, že v rámci sieťovej vrstvy neexistuje mechanizmus, ktorý by nám umožňoval posielať "doporučené" zásielky. Z toho vyplýva napríklad aj fakt, že v rámci tejto vrstvy nemáme ani istotu, že ak počítač A odošle 5 datagramov adresovaných k počítaču B, tak týchto 5 datagramov dorazí k počítaču B v takom poradí, v akom boli odoslané z počítača A. Pripomeňme si aj fakt, že jeden datagram nemôže byť príliš veľký, z čoho vyplýva, že ak chceme poslať väčšie množstvo dát, musíme ich rozdeliť do viacerých balíčkov.

    Ďalšia vrstva internetu, ktorú si priblížime, sa nazýva transportná vrstva a okrem iného umožňuje vďaka protokolu TCP (Transmission Control Protocol) aj doporučené zásielky a garanciu zachovania poradia odoslaných balíčkov (paketov). Na tejto vrstve sa zavádza jeden nový koncept. Nazývame ho port a na to, aby sme si vedeli lepšie predstaviť, na čo slúži, sa vráťme opäť k analógii, v ktorej sme navrhovali komunikáciu medzi bytmi v jednom paneláku. Podstatným faktom v tejto analógii bolo to, že v každom byte býval jeden človek. Pri posielaní listov sme teda neriešili problém, ako určiť konkrétneho adresáta v prípade, že v jednom byte býva viacero obyvateľov. Prirodzeným rozšírením adresy bytov v paneláku by bolo to, že by sme "prikázali", aby súčasťou adresy prijímateľa bolo aj meno prijímateľa, alebo presnejšie, niečo, čo jednoznačne identifikuje každého adresáta v byte. Napríklad by sme mohli zaviesť pravidlo, že k číslu bytu by sme ešte "prilepili" ďalšie číslo, ktoré by identifikovalo konkrétneho obyvateľa. Mohlo by to byť napríklad číslo medzi 1 a 100. Uvedomte si, že naše pravidlo nič nehovorí o tom, ako si rozdelia identifikačné čísla obyvatelia konkrétneho bytu.

    Transportná vrstva internetu pomenováva tento koncept Port a prostredníctvom neho umožňuje počítačom poskytovanie služieb. Port môže byť ľubovoľné číslo z rozsahu 0 až 65535 a je povinnou hodnotou v hlavičke každého "paketu" generovaného niektorým s protokolom transportnej vrstvy.

    Táto vrstva nám dáva k dispozícii dva kľúčové protokoly:

    Prvý sa vola UDP (User Datagram Protocol) a umožňuje posielanie balíčkov medzi ľubovoľnými dvoma počítačmi na internete. Okrem adries odosielateľa a prijímateľa obsahuje každý balíček aj port, z ktorého bola správa odoslaná a port, na ktorý má byť doručená. Tento jednoduchý protokol je analogický k posielaniu štandardných listov alebo balíkov a využíva sa pri takých službách, ktoré nevyžadujú trvalé spojenie s cieľovým počítačom a neprekáža im ani občasná strata paketu. Ako príklad môžeme uviesť aplikácie, ktoré vyžadujú beh v reálnom čase a občasná strata paketu alebo fakt, že z času na čas pakety dorazia v zlom poradí, je pre ne lepšou alternatívou ako čakanie na "zatúlané" pakety. Jednou z najpoužívanejších aplikácií tohto typu je Skype. Hoci to môže na prvý pohľad pôsobiť prekvapivo, strata malého množstva paketov je v prípade telefonovania cez internet zanedbateľná. Je to dané tým, že jeden balíček obsahuje dáta, ktoré pri hlasovej komunikácii reprezentujú približne jednu šestnástinu sekundy toho, čo do skypu pri telefonovaní poviete. Inak povedané, na prenesenie jednej sekundy hovoru sa použije 16 udp datagramov.

    Druhý protokol, ktorý vytvára transportná vrstva, sa nazýva TCP (Transmission control protocol). Tento protokol prináša do internetového prostredia možnosť vytvárať medzi ľubovoľnými dvoma počítačmi na úrovni portov trvalé spojenia, v ktorých je garantované, že každý odoslaný paket bude doručený do cieľa a že odoslané pakety dorazia do cieľa v takom poradí, v akom boli odoslané. Tento typ komunikácie je užitočný pre aplikácie, ktoré prenášajú veľké množstvá dát a pred behom v reálnom čase dávajú prednosť garancii, že každé odoslané dáta dôjdu do cieľa. Ako príklad si môžeme uviesť prezeranie internetových stránok alebo odosielanie mailov.

    Po predstavení tejto vrstvy máme teda k dispozícii dva nové komunikačné protokoly, ktoré umožňujú život viacerých škriatkov v jednom počítači (pri komunikácii medzi sebou nekomunikujú len počítače, ale konkrétne programy v týchto počítačoch, pretože každý program môže počúvať a vysielať na svojom vlastnom porte) a takisto nám dávajú možnosť posielať si obyčajné listové zásielky, ale aj nadväzovať spojenia, ktoré nám umožňujú prenášať väčšie množstvo dát s nejakými zárukami. Toto všetko využívajú protokoly definované na aplikačnej vrstve internetového protokolu. Tie už neprinášajú žiadne nové koncepty. Všetky využívajú komunikačnú hierarchiu, ktorú sme vystavali na fyzickej, linkovej, sieťovej a transportnej vrstve.

    Ako už názov tejto vrstvy napovedá, radíme sem všetky protokoly, ktoré konečne riešia požiadavky používateľov. Tieto protokoly definujú len komunikačné jazyky, ktoré používajú klienti (internetový prehliadač, mailový klient, program na prácu s ftp, teda programy vo vašom počítači) na to, aby sa mohli dohodnúť so servermi, ktoré poskytujú služby. Ako už bolo spomenuté, každý server (obslužný program, ktorý poskytuje nejakú konkrétnu službu) má pridelený nejaký port, na ktorom počúva. Tieto porty sú štandardizované, vďaka čomu každý klient vie, na ktorý port sa má obrátiť, ak chce používateľovi umožniť prístup k nejakej službe.

    Vo svete internetu sa pojem server využíva v dvoch rôznych významoch. Označujeme ním počítače, ktoré poskytujú jednu alebo viacero služieb, ale aj obslužné programy, ktoré poskytujú konkrétnu službu.

    Spomedzi protokolov na tejto vrstve venujme trochu viac pozornosti protokolu DNS (Domain Name Service), pretože práve vďaka nemu nám stačí pamätať si internetové adresy tak ako ich poznáme. Jeho hlavnou úlohou je prekladanie slovných internetových adries, ktoré si ľahko zapamätáme (napríklad www.skn.sk) na IP adresy, ktorým zase lepšie rozumejú počítače. Systém DNS je distribuovaný systém, čo znamená, že pri vyhľadávaní IP adresy pre konkrétnu doménu kooperuje veľká skupina DNS serverov, z ktorých každý má informácie o niektorých doménach. DNS servery sú organizované v hierarchii podobnej tej, ktorú sme si opísali pri popise internetu, respektíve pri popise analógie byty, paneláky, ulice, štvrte, mestá, štáty. Teda: Každému počítaču je pri prihlásení sa do siete oznámená adresa DNS servera, na ktorú sa obracia, ak potrebuje nájsť IP adresu stroja, s ktorým chce komunikovať. Jemu posiela všetky požiadavky. Ak tento DNS server na jeho požiadavku odpovedať nevie, tak mu pošle adresu svojho nadradeného DNS servera a náš počítač ďalej komunikuje s ním. Predstavme si napríklad, že do internetového prehliadača napíšeme adresu http://www.kremen.to.je.nejtvrdsi.kamen.cz. Náš internetový prehliadač bude postupovať takto:

    - Najprv kontaktuje DNS server, ktorého IP adresu dostal pri pripojení sa do siete a opýta sa ho na prepis adresy www.kremen.to.je.nejtvrdsi.kamen.cz.

    - DNS server pravdepodobne nebude mať informáciu, ktorú si náš prehliadač pýta, a tak mu povie: "Neviem, ale opýtaj sa môjho šéfa, ten vie viac. Jeho IP adresa je..."

    - Náš prehliadač bude teda komunikovať so šéfom a ten mu môže opäť povedať, že nevie. Takýmto spôsobom sa nakoniec prepracujeme k DNS serveru, ktorý bude vedieť, ktorý DNS server má informácie o doméne cz, ten zas bude vedieť, kto spravuje doménu kamen.cz, ten zase doménu nejtvrdsi.kamen.cz a tak ďalej, až kým sa nedopracujeme ku konečnej IP adrese počítača s adresou, ktorú sme zadali.

    - V ďalšom kroku náš prehliadač nadviaže TCP spojenie s počítačom na IP adrese, ktorú získal v predchádzajúcich krokoch a prostredníctvom protokolu HTTP (HyperText Transfer Protocol) si vypýta konkrétnu stránku od webservera.

    - Systém DNS poskytuje okrem prekladu slovných adries na IP adresy aj množstvo ďalších služieb, ako napríklad správu MX záznamov využívaných aplikáciami, ktoré sprostredkovávajú elektronickú poštu.

    Internetová komunikácia je v súčasnosti, keď v nej figuruju milióny sietí a stovky miliónov počítačov, veľmi komplikovaná. Komplexne porozumieť všetkému, čo s ňou súvisí, nie je jednoduché ani pre odborníkov. Napriek tomu dúfam, že vám tento krátky seriál, prehustený zjednodušeniami, letmými dotykmi a zamlčovaním právd, ktoré by vysvetľovanie všetkého ešte skomplikovali, poskytol aspoň základnú predstavu o tom, ako tento fascinujúci virtuálny svet funguje.

    Na záver uvádzam ešte niekoľko najvýznamnejších protokolov aplikačnej vrstvy spolu so stručnými charakteristikami:

    praktické cvičenia

    V tejto časti pbudeme používať program netcat, ktorý nieje súčasťou windows. Nájdete ho napríklad tu:

    http://joncraton.org/blog/46/netcat-for-windows

    Ide o program, ktorý slúži na testovanie sieťových služieb. Prostredníctvom neho sa môžme pripojiť na ľubovoľný stroj a port jedným z protokolov udp alebo tcp a napríklad testovať konkrétnu službu.

    Primitívny chat

    Začneme niečím úplne jednoduchým. Vyrobíme si jednoduchý chat pre dvoch. Rozdeľte sa do dvojíc a dohodnite sa, ktorý z vás bude server.

    server spustí: nc -l -p 3333

    klient spustí: nc serverova_ip_adresa 3333

    Obom sa zobrazí okno v ktorom bliká kurzor a server a klient si môžu dopisovať. Na prvom počítači funguje netcat ako jednoduchý server, ktorý počúva (-l ako listen) na porte (-p) 3333 a druhý počítač sa prostredníctvom netcatu pripája na službu bežiacu na serveri.

    vzdialený príkazový riadok

    Netcatom môžeme na konkrétny sieťový port pripojiť aj príkazový riadok windows a na zvolený port sa potom pripojiť z iného počítača

    netcat -l -p 3333 -e cmd.exe

    a pripájame sa rovnako ako v predchádzajúcom "chat" príklade.

    posielanie mailu

    Nazáver si vyskúšame poslať mail tak, ako to robí mailový klient. Použijeme pri tom protokol SMTP. Pošleme mail marekovi mackovi na adresu macko@unss.sk

    najprv sa pripojíme na server ktorý obsluhuje maily pre úniu. ich smtp server počúva aj na porte 24:

    1. nc mail.unss.sk 24

    Pozrieme si výstup a postupne zadáme:

    2. mail from:

    3. rcpt to:

    4. data

    5. subject: pozdrav

    6. nejaky text

    7. este nejaky text

    8. .

    9. quit

    všimnite si samostatnú bodku na riadku 8, tou ukončujeme telo mailu. Quit na riadku 9 ukončuje spojenie.