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:
- Odosielanú informáciu zaznamenajme na také médium, aké dokážeme následne odovzdať ktorejkoľvek rodine žijúcej v našom pomyselnom paneláku.
- Médium označme číslom bytu tak, aby bolo vždy jasné, ktorému bytu presne patrí.
- Správu zaznamenajme na médium tak, aby bola čitateľná pre ľubovoľného príjemcu v paneláku.
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:
- Vygeneruje rámec, do ktorého vloží MAC adresu cieľového počítača aj svoju vlastnú a "text" správy. MAC adresu cieľa musí poznať, rovnako ako musí poznať účastník panelákovej pošty číslo bytu príjemcu pošty.
- Tento rámec odovzdá prostredníctvom fyzickej vrstvy cez kábel switchu.
- Rámec (postupnosť jednotiek a núl) teda bude prevedený na sériu elektrických impulzov vygenerovaných do kábla prepájajúceho počítač so switchom.
- Switch postupnosť impulzov na fyzickej vrstve prijme a prevedie na jednotky a nuly.
- Na linkovej vrstve overí, či postupnosť spĺňa pravidlá, ktoré definujú rámec a z rámca vytiahne adresy príjemcu a odosielateľa.
- Switch sa pozrie do svojej "pamäte", na konci ktorého kábla je počítač s cieľovou MAC adresou. Ak túto informáciu nemá v pamäti, pošle rámec do všetkých káblov okrem toho, z ktorého prišiel a do pamäte si uloží informáciu o tom, na ktorom kábli "sedí" počítač, ktorý správu poslal, teda, zapamätá si jeho MAC adresu. Tu si všimnite, že switch sa priebežne "učí", na ktorom kábli je ktorý počítač, aby mohol rámce posielať len tomu, komu patria, a tým znižovať zaťaženie siete, ale aj eliminovať možnosť odpočúvania cudzej komunikácie.
- Ak počítač prijme nejaký rámec, porovná MAC adresu príjemcu, ktorá je v ňom zaznamenaná, so svojou. Ak mu rámec nepatrí, zahodí ho, v opačnom prípade ho spracuje.
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:
- Pozrie sa, či sa prvá súradnica adresy príjemcu zhoduje s prvou súradnicou jeho adresy, teda zistí, či je príjemca v rovnakom paneláku ako on. Ak áno, potom pošle správu štandardným spôsobom popísaným v predchádzajúcej časti.
- Ak sú prvé súradnice rôzne, je jasné, že správa patrí príjemcovi v inom paneláku. Odosielateľ teda osloví vrátnika paneláka, v ktorom býva a požiada ho o doručenie správy do paneláka, v ktorom býva príjemca.
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:
- Porovná prvú súradnicu svojej adresy s prvou súradnicou adresy bytu, ktorému bola správa určená.
- Ak sú súradnice rovnaké, znamená to, že práve spracúva správu, ktorú mu doručil vrátnik z iného paneláka a príjemcovi vo svojom paneláku ju doručí štandardným spôsobom, ktorý už poznáme.
- Ak sú súradnice rôzne, tak kontaktuje vrátnika paneláka s číslom v prvej súradnici a odovzdá mu správu. Ten ju potom doručí štandardným spôsobom.
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:
- Odosielateľ sa presvedčí, či je prostredná súradnica príjemcu iná ako prostredná súradnica jeho adresy, teda či býva príjemca v inom paneláku (všimnime si, že ulice ho nezaujímajú). Ak býva príjemca v inom paneláku, odovzdá odosielateľ správu "vrátnikovi" svojho paneláka a požiada ho o doručenie.
- Vrátnik sa presvedčí, že správa ide do iného paneláka a porovná prvú súradnicu svojej adresy a adresy príjemcu. Ak býva príjemca na rovnakej ulici ako "vrátnik", tak kontaktuje kolegu z cieľového paneláka a odovzdá mu správu. Ak sú ulice rôzne, kontaktuje náš vrátnik vrátnika ulice, na ktorej býva. Vrátnik ulice doručí správu vrátnikovi inej ulice, na ktorej je panelák, v ktorom býva príjemca. Vrátnik novej ulice doručí správu vrátnikovi paneláka, v ktorom býva príjemca a tam je už správa doručená do cieľa.
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.
- Svoju IP adresu: ide o adresu, ktorá ho jednoznačne identifikuje. Pozostáva zo štyroch čísel v rozsahu 0 až 255 oddelených bodkou. Napríklad 1.2.3.4. Túto adresu môžeme považovať za analogickú k adrese kontinent,štát,mesto,štvrť,ulica,panelák,byt z našej analógie.
- Adresu a masku siete, do ktorej patrí: Tieto dva parametre umožňujú počítaču jednoducho určiť, či cieľová IP adresa, na ktorú chce poslať správu, patrí do rovnakej podsiete ako on, teda či býva príjemca jeho správy v rovnakom paneláku ako on a môže mu správu priamo doručiť, alebo je potrebné komunikovať s "vrátnikom".
- IP adresu vrátnika: Ide o adresu, na ktorú sa počítač obracia, ak zistí, že príjemca správy, ktorú chce poslať, sa nachádza v inej sieti ako on - býva v inom paneláku. Vrátnika voláme v internetovej komunikácii predvolená brána (default gateway), alebo všeobecnejšie smerovač (router).
- Broadcast adresu podsiete: ide o adresu, ktorá sa používa v prípade, že chce jeden počítač poslať správu všetkým počítačom, ktoré sa nachádzajú v rovnakej sieti ako on, teda chceme poslať správu, ktorá bude automaticky doručená všetkým obyvateľom nášho paneláka.
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:
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:
- IP adresa: 1.2.3.2
- Predvolená brána: 1.2.3.1
- Maska podsiete: 255.255.255.0
- Adresa podsiete: 1.2.3.0
- A nakoniec broadcast adresa: 1.2.3.255
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:
- 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)
- 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.
- 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.
- 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:
- 1: ak je v maske aj pôvodnej ip na pozícii 1,
- 0: v ostatných prípadoch
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:
- Testovanú IP a Masku preveďme do dvojkovej sústavy (všimnite si že prvé 3 byty masky sa dajú previesť veľmi ľahko)
- Urobme na nich bitové and
- To čo dostaneme (tretí riadok v excely) preveďme späť do Desiatkovej sústavy a porovnajme s IP adresou siete
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ť
- do našej fyzickej siete je pripojený počítač, ktorý má nasledujúce parametre:
- ip adresa: 10.20.28.1
- Maska Podsiete: 255.255.252.0
- Aká bude broadcast adresa ak má byť posledná z rozsahu ip adries pokrývaných maskou podsiete?
- Koľko ip adries máme k dispozícii v našej sieti definovanej vyššie?
- Dohodnite sa, kto si pridelíte akú adresu tak, aby ste mali každý vlastnú a nezabudnite, že nejaké (koľko a aké sú to?) sú už obsadené
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:
- http (HyperText transfer Protocol), port 80, prenos internetových stránok
- SMTP (Simple Mail Transfer Protocol), port 25, posielanie elektronickej pošty
- POP3 (post office protocol verzia 3), port 110, príjem elektronickej pošty
- IMAP (Internet Mail Access Protocol), port 143, práca s elektronickou poštou na vzdialenom serveri
- FTP (File Transfer Protocol), port 21, zastaraný protokol používaný na prenos súborov.
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.