Přenos dat po fyzickém médiu, serializace dat, TCP/IP model, komunikace v rámci sítě
Co jsme dnes dělali
Přenos dat po fyzickém médiu
- Pokud připojujeme zařízení k sobě, musíme se nejdříve zajímat o to, jak si zařízení povídají.
- Neřešíme zatím přenos bytů nebo textu, ale jen jedničky a nuly. Pokud umíme přenést posloupnost jedniček a nul, umíme přenést jakýkoliv datový typ.
- Digitální signál (máme dvě úrovně napětí, jedna pro logickou jedničku, druhá pro logickou nulu)
- Stačí nám jedna hladina pro jedinčku a jedna pro nulu
- Otázka je, co je jednička a co je nula; to řeší
linkový kód
- Kódování vždy posuzujeme vůči nějakému hodinovému signálu
- Snažíme se o eliminaci stejnosměrné složky
- Analogový signál
- Místo střídání úrovní napětí používáme signál o nějaké frekvenci, představme si třeba sinusoidu
- Analogová data kódujeme pomocí metod zmíněných níže. Digitální data kódujeme pomocí tzv. klíčování, tedy musíme stanovit, co je jednička a co je nula.
- Amplitudová modulace (AM): Data se kódují do amplitudy signálu
- Frekvenční modulace (FM): Data se kódují do frekvence signálu
- Kvadraturní amplitudová modulace (QAM): Za pomoci amplitudová modulace a fázového posunu se do signálu kóduje více stavů.
- Místo střídání úrovní napětí používáme signál o nějaké frekvenci, představme si třeba sinusoidu
Budeme se věnovat hlavně digitálnímu signálu:
- Na vodičích s digitálním signálem můžeme pozorovat rušení; signál se pokřiví, zeslabí
- Buď se můžeme snažit o co největší stínění pomocí pasivních prvků
- Nebo využijeme diferenciální pár vodičů, který vede stejný signál, ale obrácený. Rušení působí na oba vodiče současně a rušení se tím "vyruší".
Serializace dat
-
Složitá data (strukturovaná data, objekty, slovníky, pole, apod.) musíme být schopni přeložit do posloupnosti jedniček a nul, abychom je mohli poslat přes linku: data musíme serializovat
-
K tomu máme více možností, uvedeme dvě z nich. Budeme se zajímat o serializaci dat formátu JSON a samozřejmě chceme, aby serializovaná zpráva byla co nejkratší.
-
Stringifikace
-
Převod dat na řetězec, což je sama o sobě posloupnost jedniček a nul (většinou jen pro možnost výpisu/debuggingu)
import json student = {"jmeno": "Petr Novak", "id": 12345, "znamky": [1, 2, 1, 3]} j = json.dumps(student).encode("utf-8") print(len(j), j)60 b'{"jmeno": "Petr Novak", "id": 12345, "znamky": [1, 2, 1, 3]}'
-
-
Binární serializace
-
Převod dat na binární formát, který je velmi krátký, ale pouhým okem nečitelný. Také na první pohled nevidíme, co se v binárním formátu nachází. Potřebujeme k tomu další popis, jako například tento.
import struct student = {"jmeno": "Petr Novak", "id": 12345, "znamky": [1, 2, 1, 3]} b = struct.pack("!I4B", student["id"], *student["znamky"]) print(len(b), b)8 b'\x00\x0009\x01\x02\x01\x03'
-
-
-
Takto serializovaná data už můžeme (až na pár detailů) poslat po lince
Model TCP/IP

- Historicky byly technologie používané pro síťovou komunikaci roztříštěné, každý (myšleno univerzity, armáda, stát, apod.) používal něco jiného
- Organizace ISO vyvinula v osmdesátých letech snahu pro standardizaci, vznikl ISO/OSI referenční model (v obrázku
nalevo)
- Má sedm vrstev, úroveň abstrakce roste směrem nahoru:
- fyzická vrstva poskytuje přenos po fyzickém médiu,
- datová se stará o formátování dat (mj. serializaci a o komunikaci v rámci sítě),
- síťová o komunikaci mezi sítěmi,
- transportní o doručování dat (spojovaný vs nespojovaný přenos, error checking, apod.),
- vrstva sezení je podivná mezivrstva a nemá moc specifickou funkci, vetšinou její funkci přeberou vrstvy nad nebo pod ní,
- prezentační o kompresi a šifrování dat,
- a aplikační se používá pro high-level protokoly na webu (HTTP, apod.)
- Má sedm vrstev, úroveň abstrakce roste směrem nahoru:
- Z praktických důvodů se používá čtyřvrstvý model TCP/IP (v obrázku napravo), který lépe reprezentuje realitu
- Při komunikaci dvou uzlů se při serializaci dat pro každou vrstvu zabalí data z horní vrstvy do aktuální vrstvy, takto vzniká "cibule" dat, kde každá vrstva přidává funkcionalitu.
- Každou vrstvu zároveň nezajímá, co vrstva nad nebo pod ní dělá, jen bere data, zabalí je a posílá dále (spíše níže).
Komunikace v rámci sítě
- Jak bylo řečeno, pro komunikaci mezi uzly v rámci jedné sítě (představte si třeba vaši domácí síť, síť v učebně, ve škole, apod.) používá vrstva síťového rozhraní
- Nejznámější způsoby komunikace v rámci sítě jsou
- Ethernet: na fyzickém médiu používáme tzv. "ethernetový kabel", což je nepřesně označení; říkejme mu kroucená dvoulinka. Na vrstvě datové se používá protokol Ethernet.
- Wi-Fi: je to rodina protokolů, na fyzické vrstvě máme radiový přenos, na vrstvě datové se používají i protokoly WiFi, ale nejčastěji jde o Ethernetové rámce.
- Síť si představme jako uzly (počítače) propojené nějakým fyzickým médiem, pro jednoduchost uvažme kroucenou dvoulinku a použití protokolu Ethernet
- Uzly musí být nějakým způsobem identifikovatelné
- Určitě jsme se někdy setkali s pojmem "IP adresa". Ta se používá jako univerzální identifikátor uzlu jak v rámci sítě, tak i (a to hlavně) mezi sítěmi.
- Na lokální síti na vrstvě síťového rozhraní se však IP adresy nepoužívají (to jsou adresy z vrstvy síťové, "internet")
- Používáme MAC adresy
- Zkratka pro Media Access Control
- Jednoduše řečeno, každý Ethernetový port na počítači má svojí MAC adresu
- Jsou tam z výroby, každý port by měl mít unikátní MAC adresu
- Je neměnná (narozdíl od IP adresy, která se může měnit)
- Používají se pro komunikaci na LAN (local area network, lokální síť)
- Pokud chceme mimo ní, musíme paket poslat na router, ten se postará o ostatní
- Jak se MAC adresy zjišťují
- Slouží k tomu protokol ARP (Address Resolution Protocol)
- Pokud chce počítač zjistit MAC adresu jiného, ale zná jeho IP adresu, vyšle tzv. broadcast (zpráva všem)
- Ptá se na otázku "Ten, co má IP adresu X.X.X.X, jakou máš MAC adresu?"
- Počítač s IP adresou prvnímu odpoví
- MAC adresy se cachují a uchovávají se v tzv. ARP tabulce
- Zkuste zadat příkaz
arp -aa uvidíte tu svoji
- Zkuste zadat příkaz
- Proč vlastně potřebujeme MAC adresy, když máme IP adresy
- MAC adresy slouží k lokální komunikaci uvnitř sítě v protokolu Ethernet
- IP adresy slouží ke komunikaci mimo síť, jsou to logické identifikátory, které tvoří strukturu sítě (a sítě sítí)
Příště: Tvorba topologie sítě (switch, router), segment versus síť, komunikace mezi sítěmi