2. diel - Siete - Ethernet a rozbočovače
Ethernet a siete medzi viacerými počítačmi
Minulý diel bol venovaný predovšetkým prenosu jednotiek a núl po kábli a sieťovým kartám. Dnes to bude o posielanie dát medzi dvoma (a viac) počítačmi. Zodpovieme si, ako sa zostavuje taký dátový rámec, aby cieľový PC vedel nasledujúce: či je pre neho, odkiaľ je, aký typ dát nesie, a či nebol po ceste poškodený.
Posielanie dát
Či už posielame cez sieť čokoľvek (textový dokument, obrázok, alebo napríklad to, čo napíšeme do Skypu), nemôžeme to jednoducho začať odosielať ako súvislý prúd bitov. Prečo? Takýto dátový prúd nie je ľahké preniesť z jedného miesta na druhé bez poškodenia (napr. V dôsledku elektromagnetického žiarenia sa signál preruší, alebo sa zamenia niektoré bity). U malých súborov to nie je nič tragického, ale ak by ste takto poslali potrebné film, tak na cieľovom PC ho veľmi pravdepodobne nedáte dokopy.
Jednoducho povedané, väčšina súborov sa v praxi "rozkouskuje" na menšie diely, každý z nich sa zabalí do samostatného balíčka, a pošle nezávisle na ostatných. O tom, ako presne to funguje, si povieme v najbližších dieloch.
Ethernet
Ethernet je jedným z internetových protokolov, ktorý definuje spôsob, ako posielať dáta na lokálnej sieti (tzn. Medzi počítačmi doma, alebo vo firme). Pre adresovanie (komu, od koho) používa už spomínané MAC adresy (adresy konkrétnych zariadení).
Podľa tohto protokolu sa teda dáta posielajú v Ethernetových rámcoch (Ethernet frame):
Rámec preto, že sú v ňom "zarámované" všetky ďalšie informácie. Okrem rámca ešte budete počuť o paketu a datagramu, ale to až neskôr. Poďme si teraz rozobrať rámec po častiach:
Preambuly
Pokiaľ nikto nič neposiela, na sieti je "ticho" - napätie na kábli je nulové. Preambula (okrem iného) slúži na to, aby informovala cieľový počítač, že sa začína posielať Ethernetový rámec. Vyzerá takto:
10101010 10101010 10101010 10101010 10101010 10101010 10101010 101010 11
Preambula je teda 64 bitov dlhá, a prvých 62 bitov sú striedajúce sa jednotky a nuly. Posledné dva bity (dve jednotky) sú signálom pre cieľovú NIC, že hneď za nimi nasleduje Ethernetový rámec.
Občas sa preambulou myslí len prvých sedem bytov, a posledná byte (ten s dvoma jednotkami na konci) sa označuje ako SFD (Štart of Frame obmedzovač - oddeľovač začiatku rámca).
Cieľová a zdrojová MAC
Toto je snáď jasné - cieľová MAC označuje sieťovú kartu PC, ktorému je rámec určený, zdrojová značí odosielateľa. Polia sú rovnako dlhé ako MAC adresa - teda 48 bitov.
Typ / dĺžka
Ďalších 16 bitov je použité buď pre typ paketu v poli "Data", a alebo (ak je hodnota v tomoto poli nižšie ako 1500) pre špecifikáciu dĺžky poľa "Data". Oba spôsoby sú dnes využívané.
Dáta
Pole dát má dĺžku od 46 bytov do 1500 bytov. Podrobne bude demontovať v priebehu seriálu.
Kontrolný súčet
Alebo tiež FCS (Frame Check Sequence). Vďaka nemu môžeme odhaliť poškodenie rámca. Algoritmus pre výpočet FCS je schopný pre každý ethernetový rámec vygenerovať unikátne 32 bitové číslo, aj keby sa rámca líšili napríklad len o jediný bit.
Prebieha to tak, že na odosielajúci NIC sa zostaví rámec, spočíta sa kontrolný súčet, a pripojí sa na koniec rámca. Akonáhle paket dorazí na cieľovú NIC, tá znovu spočíta kontrolný súčet a porovná svoj FCS s tým, ktorý dorazil. Ak sú si FCS rovné, rámec je prijatý. Ak nie, rámec je zahodený (tzn. PC si o neho musí znovu povedať, inak by nemohol súbor korektne poskladať)
Posielanie viac rámcov za sebou
Aby NIC mohla ľahko odlíšiť jednotlivé rámce, vloží sa medzi ne medzery. U Ethernetu je to medzera, ktorá by zodpovedala 96 bitom. (Napr. U 100 Mb / s Ethernetu sa 1 bit odošle za sto-milióntinu sekundy, čo je 10 nanosekúnd. Medzera je teda 960 ns dlhá)
Sieť medzi viacerými počítačmi
Zatiaľ sme pre jednoduchosť hovorili iba o prípadoch s dvoma PC (dve NIC), ktoré sú priamo prepojené, a môžu komunikovať iba medzi sebou. Táto situácia je však veľmi neobvyklá. V typickej domácej alebo firemnej sieti je niekoľko počítačov (prípadne tlačiareň), ktoré sú medzi sebou navzájom prepojené, každý z nich môže komunikovať so všetkými ostatnými. Všetky bývajú ešte pripojené k routeru, ktorý zaistí pripojenie k Internetu.
Samozrejme nemôžeme prepojiť každý PC s každým, pretože sieťové karty majú len jeden port, a aj keby to šlo, predstavte si, že máte 20 zariadenia - to robí dohromady 190 káblov! Riešením sú zariadenie zvané rozbočovača (hub) alebo prepínač (switch):
Vnútri takéhoto zariadenia je každý jeho port (takže každé zariadenie) prepojený so všetkými ostatnými.
Rozbočovač - húb
Dnes sa už nepoužíva. Jeho správanie je veľmi primitívne - čokoľvek doň príde, to rozošle na všetky ostatné porty. To znamená, že každá NIC, ktorá je pripojená do Hubu, prijme tento signál a každá sa pozrie do hlavičky Ethernetového rámca na cieľovú MAC. Ak je rámec pre ňu, prijme ho. Ak nie, zahodí ho. Nevýhody sú teda jasné (jedinou výhodou hubu je nižšia cena):
- Zbytočne sa zaťažujú sieťové karty (keď máte sieť s 5 PC a tlačiarňou, tak akonáhle jeden z nich chce tlačiť, tak príkazy na tlač dostane ostatné 4 PC a tlačiareň, ale len tlačiareň ich prijme, zvyšok je musí zahodiť)
- Často dochádza ku kolíziám - 2 zariadenia nemôžu posielať signál zároveň po rovnakom kábli (na kábli vznikne prepätie a signál prestane dávať zmysel). Príklad: PC 1 chce tlačiť, ale v tej chvíli sa PC 2 snaží pripojiť k routeru a dostať sa na internet - na PC 1 teda dôjdu signály z PC 2, ktoré musia zahadzovať, a nemôže v tejto chvíli vysielať. Ak PC 1 a PC 2 vyšlú signály v úplne rovnaký moment, tak sa signály "zrazí".
Prepínač - switch
Inteligentné nástupcu Hubu. Switch a húb od seba na prvý pohľad nespoznáte, líšia sa tým, že switch namiesto bezhlavého rozosielanie rámcov na všetky porty dokáže rámec odoslať presne na ten port, kde sa nachádza cieľový PC. Switch ma v pamäti uloženú tabuľku, kam si zapisuje, ktorá NIC je pripojená na ktorý port. Pomocou nej tiež rámca preposiela. Táto tabuľka sa volá MAC Address Table:
Ako si switch zapisuje MAC adresy do tabuľky?
Keď si zaobstaráte switch, jeho MAC Address Table bude prázdna. Ako tam teda tie záznamy dostane?
Keď do switche pripojíte zariadení, nič sa nedeje do doby, než začne niektorý počítač vysielať. Vysvetlím na príklade: Do switche zapojíme dva PC a router (ten zaistí pripojenie k Internetu). PC 1 sa teraz chce pripojiť na server facebook.com (čo znamená, že požiadavka pôjde do routeru). Vyšle teda rámec so žiadosťou. Rámec príde na switch (ktorá má momentálne prázdnu MAC Address Table), a v tej chvíli sa switch pozrie na zdrojovú MAC adresu v rámci, a na port, ktorým do nej rámec prišiel. Má teda port a MAC, ktoré môže zapísať do tabuľky. Switch sa práve naučila, že na porte 1 sa nachádza PC 1.
Ale čo má urobiť so samotným rámcom? Pretože v jej MAC Address Table nemá MAC adresu a port routera, musí sa zachovať ako húb, a odoslať rámec na všetky ostatné porty. Router rámec prijme, a odošle požiadavku na facebook.com.
O niekoľko milisekúnd neskôr príde na router odpoveď od servera facebook.com s webovou stránkou. Router vie, že o túto stránku si požiadal PC 1. Pošle ďalej teda rámec s webovou stránkou na switch. A proces učenia sa opakuje - switch sa pozrie do zdrojovej MAC v rámci, a naučia sa, že router je na porte 3. A pretože už vie, že PC 1 je pripojený na porte 1, nemusí rámec posielať všetkým, ale prepošle ho iba na port 1.
Tu je ilustrácie takejto komunikácie (MAC adresy sú pre jednoduchosť skrátené):
Budúci diel sa budem venovať IP adresám (doteraz som pre jednoduchosť tajil, že pre komunikáciu potrebuje zariadenie ako MAC adresy, tak IP adresy), a ARP.