CZ 
06.10.2024 Hanuš VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
Do you know how a router works?

Víte, jak pracuje router?

| Petr Bouška - Samuraj |
Abychom mohli komunikovat v počítačové síti, musíme používat nějaké logické adresování, které nám určí v jaké části sítě se účastníci nacházejí. A dále metody, které nám zařídí správné směrování dat od odesílatele k příjemci. V dnešních LAN sítích, stejně jako v internetu, se jedná o Internet Protocol (IP). Pro adresování používáme IP adresy a dělení na subnety, pro přeposílání dat používáme routování.
zobrazeno: 47 415x (47 395 CZ, 20 EN) | Komentáře [7]

Tento článek jsem napsal pro časopis Connect a vyšel v čísle Connect 06/10, zde jej publikuji s laskavým svolením redakce.
Jedná se o třetí díl seriálu o počítačových sítích. Na tomto webu již existuje obsahově shodný (a rozsáhlejší) seriál Počítačové sítě - Computer networks, ale tento článek jsem napsal s určitým časovým odstupem a z trochu jiného pohledu.

Komunikace v síti pomocí IP protokolu

V minulých číslech časopisu Connect jsme se si nejprve stručně shrnuli vše, co taková počítačová síť zahrnuje. Potom jsme začali trochu podrobnější popis od spodních vrstev sítě a napsali si něco o pasivních prvcích, z kterých sítě stavíme. V dalším čísle jsme se věnovali základní technologii, kterou v nejčastějších případech pro komunikaci použijeme, tedy Ethernetu. Dnes se podíváme o vrstvu výše, tedy z pohledu OSI modelu na 3. vrstvu (L3), a budeme se věnovat protokolu IP.

Internet Protocol (běžně označovaný jako IP protokol) je součástí rodiny protokolů Internet Protocol Suite (TCP/IP) a slouží ke komunikaci v počítačové síti. IP protokol může pracovat nad různými sítěmi (myšleno nad různými technologiemi, to je díky abstrakci pomocí enkapsulace), ale v našem seriálu budeme uvažovat speciálně provoz nad Ethernetem, o kterém jsme si povídali minule.

Vlastnosti IP protokolu

IP protokol definuje adresovací metody a struktury. V součastnosti se majoritně využívá Internet Protocol Version 4 (IPv4), ale řadu let se již nasazuje novější verze Internet Protocol Version 6 (IPv6). Data z vyšších vrstev se zapouzdřují (encapsulate) do datové struktury zvané paket (případně datagram). IP je nespojovaný (connectionless) a bezestavový (stateless) protokol, což znamená, že před odesláním prvního (a ani žádného dalšího) paketu se nesestavuje spojení (cesta), kterou by pakety putovaly. Pakety putují v sítí nezávisle a každý si nese kompletní informaci o odesílateli a příjemci.

Další definující vlastností IP protokolu je, že se jedná o nespolehlivou komunikaci. Protokol nemá žádné prostředky pro zajištění spolehlivosti. Jednotlivé body na cestě se snaží paket odeslat směrem k cíli, ale není nijak zaručeno, že k příjemci opravdu dorazí nebo že nedorazí vícekrát či v jiném pořadí než byly odeslány. Pro zajištění spolehlivosti se používají protokoly vyšší vrstvy, hlavním příkladem je TCP. To, že se jedná o nespolehlivou komunikaci, má ovšem i pozitivní vlastnosti, což je malá režie a větší rychlost.

Při přenosu dat po síti musíme zajistit i určité vysílací charakteristiky, podle toho, co je síťová cesta schopna přenést. Jedním z parametrů je MTU (Maximum Transmission Unit), což je maximální velikost (v bajtech) PDU (v našem případě paketu), který je vrstva schopna přenést. Pro Ethernet je standardní hodnota MTU rovna 1500 B (mluvíme o velikosti paketu, to znamená, že standardní rámec má v tom případě velikost 1518 B). Pokud IP protokol obdrží data (z vyšší vrstvy) větší než je MTU, tak obsahuje mechanizmus zvaný fragmentace, který je rozdělí do více paketů a odesílá fragmentovaně. Tato metoda má ovšem řadu nevýhod, takže například TCP protokol obsahuje lepší metodu zvanou segmentace a předává data v menších blocích.

Klasická počítačová síť (založená na IP protokolu) je stavěna tak, že inteligence se soustředí v koncových bodech (stanicích, serverech, tiskárnách) a mezi nimi se (z pohledu L3) nachází routery. Délku cesty od odesílatele k příjemci měříme počtem hopů, tedy počtem zařízení (routerů) přes které musí L3 komunikace projít. Komunikace (na L3) probíhá end-to-end principem (paket obsahuje IP adresy odesílatele a příjemce), kdy routery pouze přeposílají data směrem k cíli (ale na L2 se komunikuje bod-bod, rámec má vždy MAC adresy pro aktuální hop). Veškerou vyšší logiku řeší koncové body.

L3 komunikace 3 hopy

TCP/IP model

Minule jsem si stručně popsali OSI model, dnes se lehce podíváme na Internet model (často označovaný jako TCP/IP model). Ten má oproti sedmi vrstvám OSI modelu vrstvy pouze čtyři. V praxi se používá různé pojmenování vrstev (a někdy se hovoří i o jiném počtu), v tabulce jsou uvedeny názvy, které používá RFC standard. Obecně je Internet model dost podobný OSI modelu. Můžeme říci, že vrstvy fyzická a data link OSI modelu jsou spojené do jedné linkové vrstvy TCP/IP modelu. Síťová vrstva odpovídá vrstvě internet, stejně jako transportní je shodná. Vyšší tři vrstvy OSI modelu jsou v TCP/IP modelu obsaženy v jedné vrstvě aplikační.

vrstva jméno příklad
L4 Application SSL, HTTP, DNS
L3 Transport TCP, UDP
L2 Internet IP, ICMP, OSPF
L1 Link Ethernet, ARP

I když jsme si nyní popsali Internet model a dříve jsme zmiňovali, že je pro praxi reálnější, tak dále v textu budeme odkazovat vrstvy podle OSI modelu, protože to je v literatuře běžnější způsob.

IP paket

PDU (Protocol Data Unit) na L3 označujeme jako paket (packet). Můžeme také používat termín datagram, což je paket nespolehlivé služby. Když tedy použijeme na vyšší vrstvě protokol UDP, tak můžeme obecně používat termín datagram (i když se stále jedná o paket). Pokud je na vyšší vrstvě TCP, tak bychom měli používat pouze termín paket.

Paket je formátovaná jednotka dat, která obsahuje kontrolní informace (hlavičku) a uživatelská data (payload, zapouzdřená data vyšších vrstev, až k aplikačním datům). Před odesláním po síti se předá nižší vrstvě, u nás Ethernetu, ten provede opět zapouzdření a vytvoří rámec (frame), který se následně po bitech vysílá na přenosové médium.

IPv4 hlavička obsahuje vždy zdrojovou a cílovou IP adresu, označení verze IP (IPv4 nebo IPv6), délku hlavičky, Type of Service (prioritu), velikost paketu, identifikaci (pro fragmentaci), zda jsou data fragmentovaná, offset fragmentu v originálním paketu, TTL (time to live), což je počet hopů přes které paket projde než se zahodí (aby nám v případě smyčky nekoloval věčně), určení protokolu vyšší vrstvy a kontrolní součet pro hlavičku. Takováto standardní hlavička má velikost 20B, ale může ještě obsahovat další volitelné vlastnosti.

IPv4 hlavička  paketu

Tak jako v Ethernetu existuje fyzická adresa zařízení, která se označuje jako MAC adresa, tak v IP protokolu máme logickou adresu zařízení, které říkáme IP adresa. Tato adresa jednoznačně identifikuje síťové rozhranní v počítačové síti a musí být unikátní. V IPv4 se používají 32 bitové adresy, které se zapisují dekadicky pomocí čtyř oktetů (8 bitů z adresy, tedy maximálně hodnota 255), příkladem je adresa 10.5.127.2. Adresování v IP sítích je rozsáhlejší a komplexní oblast, které se budeme věnovat v příštím díle.

IPv4 vs. IPv6

V této sérii článků mluvíme o základech počítačových sítí, takže se věnujeme IPv4 (což je první, v praxi používaná, verze protokolu), která se stále používá majoritně. Ale pro úplnost si uvedeme pár informací o IPv6. Hlavní důvod vzniku nové verze IP protokolu je, že v IPv4 existuje cca 4 miliardy adres. Což se může zdát jako velké číslo, ale tento počet adres by již byl vyčerpán, pokud by se nezačali používat různé metody jako NAT, CIDR a lepší způsoby přidělování adres. Přesto hrozí vyčerpání adres IPv4 v krátké době (odhaduje se něco přes rok).

IPv6 používá adresy dlouhé 128 bitů (což dává ohromné množství adres), které se zapisují jako 8 skupin po čtyřech hexadecimálních číslicích oddělených dvojtečkou. Sice existuje řada pravidel, jak se dá adresa zapsat kratším způsobem, ale přesto se jedná o natolik dlouhé komplikované číslo, že pro použití lidmi je potřeba DNS. V IPv6 je integrální součástí bezpečnost pomocí IPsec, zaměřuje se na podporu mobility, obsahuje metodu bezestavové autokonfigurace IP adresy. V IPv6 neexistuje vysílání broadcast, ale pouze unicast, multicast a novinka anycast (skupina příjemců, ale data se doručí pouze jednomu nejbližšímu).

Směrování v IP síti

Komunikaci v IP síti na L3 označujeme jako směrování (routing, dále budeme používat počeštěný a v praxi častý termín routování) a provádí jej každé zařízení, které se této komunikace účastní. Koncové body většinou používají pouze jednodušší formu routování, ale i ony musí rozhodnout, jak data odeslat. Hlavní jsou prvky na cestě, které rozhodují jak dále směrovat paket. Těmito zařízeními jsou převážně routery. V lokálních sítích se často pro routování využívá L3 switch (označovaný také jako MultiLayer Switch), který pro přepínání paketů využívá speciální HW (takže dosahuje velkého výkonu). Funkce routeru má také firewall a pro routování můžeme použít i běžný počítač osazený více síťovými adaptéry.

Vlastní routování znamená rozhodnutí kam a kudy odeslat paket, když známe cílovou adresu podle údajů z jeho hlavičky. Kudy znamená přes jaký lokální interface a kam na jakou další adresu (hop) ve stejném subnetu. Pro rozhodování se využívá routovací tabulka, ta obsahuje seznam cest (route) a souvisejících informací. Routovací tabulka se sestavuje různým způsobem. Automaticky se generují záznamy z přímo připojených rozhranní. Například v počítači máme dvě síťové karty, které mají nastavenu IP adresu a masku do dvou sítí. Z těchto údajů se vytvoří dva záznamy, že daná síť se nachází za tímto síťovým rozhranním. Pro jednoduché sítě se používá statické routování, kdy se záznamy do routovací tabulky zadávají ručně. Dynamicky nebo také ručně se vytváří záznamy pro defaultní routování (související termín gateway), tento údaj se použije ve chvíli, kdy neznáme žádnou cestu do cílové sítě.

Ve složitějších sítích a když chceme, aby se automaticky reagovalo na změny topologie sítě, se používají routovací protokoly. Ty zjišťují nejlepší cesty v síti, upravují routovací tabulku a informují okolní routery. V tomto případě mluvíme o dynamickém routování. Příkladem routovacích protokolů je RIP (Routing Information Protocol), EIGRP (Enhanced Interior Gateway Routing Protocol), OSPF (Open Shortest Path First) či internetový BGP (Border Gateway Protocol).

Abychom měli terminologii kompletní, tak ještě zmíníme termín routovaný protokol, tedy protokol, který se používá ke komunikaci v routované síti, u nás jde o IP protokol.

Jak funguje router

Router je zařízení, které pracuje na L3 a pro svou činnost využívá první 3 vrstvy OSI modelu. Slouží k propojení subnetů a oddělení broadcastových domén. Hraniční router se často označuje jako brána (gateway), slouží k propojení LAN sítě s WAN (internetem). Na něj se směruje veškerá neznámá komunikace. Pokud nám brána slouží pro připojení k internetu, tak by neměla propouštět privátní adresy (cílová adresa musí být veřejná).

Router není transparentní zařízení a u každého příchozího rámce odstraní L2 hlavičku a při odesílání vytvoří novou (z údajů aktuálního hopu) včetně kontrolního součtu rámce (vlastní paket zůstává nezměněn). To jsou operace (spolu s vyhledáváním v routovací tabulce a přeposíláním paketů), které stojí určitou režii a v klasických routerech ji provádí procesor.

Komunikace přes router

Když router přijme paket (ve skutečnosti přijme rámec, ale L2 údaje odstraní), tak se podívá na cílovou IP adresu v hlavičce. Hledá v paměti v routovací tabulce, zda má nějakou cestu pro cílovou adresu. Pokud cestu nezná, paket zahodí. Pokud záznam našel (je jedno jakým způsobem v tabulce vzniknul), tak zjistí přes jaký interface data odeslat a případně na jakou adresu. Při odesílání ví, jestli cílová adresa patří do některého z přímo připojených subnetů nebo odesílá na další router (hop) na cestě. Než odešle data, tak připraví rámec, kde uvede svoji MAC adresu jako zdrojovou a jako cílovou buď přímo MAC adresu příjemce nebo dalšího routeru. Pro nalezení MAC adresy používá ARP protokol. Pokud adresu nezjistí, tak paket zahodí.

ARP protokol

Při komunikaci v sítích, o kterých si zde povídáme, používáme aktivně IP adresy (případně DNS jména, která se na IP adresu převedou). Přesto již z minulého dílu víme, že pro doručení rámce v Ethernetu musí naše stanice znát i zdrojovou a cílovou (pro aktuální hop) MAC adresu. Svoje údaje samozřejmě stanice zná, ale pro cíl zná pouze IP adresu. Tehdy vstupuje na scénu již letitý protokol Address Resolution Protocol (ARP) definovaný v RFC 826. To platí pokud používáme IPv4, o které zde mluvíme primárně. IPv6 využívá Neighbor Discovery Protocol (NDP).

Princip ARP protokolu je jednoduchý. Jen na začátku musíme zmínit, že funguje pouze v rámci stejného subnetu. To je ovšem v pořádku, protože MAC adresy potřebujeme pouze pro zařízení ve stejném subnetu. Stanice, která potřebuje zjistit nějakou MAC adresu sestaví ARP žádost (request), která obsahuje hledanou IP adresu, a odešle ji jako broadcast. Všechny stanice v subnetu tento rámec obdrží a ten, kdo má danou IP se sestaví ARP odpověď (response), kde uvede všechny potřebné údaje, a unicastem ji odešle tazateli. Aby se zmenšil počet broadcastů, tak ještě zařízení používají ARP cache, tedy dočasnou paměť, kde si po určitou dobu uchovávají zjištěné hodnoty.

Související články:

Základy počítačových sítí

Tento seriál jsem napsal pro časopis Connect. Většinu informací obsahuje shodně jako můj starší seriál Počítačové sítě - Computer networks, ale je napsán trochu jiným způsobem. Nejprve jsou stručně shrnuty technologie počítačových sítí a pak se trochu podrobněji probírají od nejnižších vrstev nahoru.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře
  1. [1] matsn

    paráda, jako vždycky:-)

    Pondělí, 28.06.2010 21:45 | odpovědět
  2. [2] lazna

    je nejak standardizovana doba, po ktere ARP cache expiruje, nebo je to na libovuli vyrobce HW/SW?

    Pondělí, 19.07.2010 11:16 | odpovědět
  3. [3] Samuraj

    odpověď na [2]lazna: Myslím si, že tato doba standardizovaná není. Všechny spravovatelné switche a routery dovolují tuto dobu upravovat. U Cisco zařízení bývá defaultní hodnota 4 hodiny.

    Pondělí, 19.07.2010 11:35 | odpovědět
  4. [4] lazna

    odpověď na [3]Samuraj: ad "Všechny spravovatelné switche a routery Všechny spravovatelné switche a routery" Bud delate jenom s Ciscem a nebo zijete v idealnim svete ;-) Popravde receno me se jeste pod ruku nedostal kousek, ktery by to umoznoval, ale je fakt ze delam temer vyhradne se SOHO.

    Úterý, 17.08.2010 21:37 | odpovědět
  5. [5] sumo

    V textu pod obrázkem komunikace routeru je napsáno "Pokud cestu nezná, paket zahodí". Jak se tedy provede komunikace na IP adresu někde na konci Internetu, se kterou jsem doposud nekomunikoval?

    Neděle, 30.10.2016 10:59 | odpovědět
  6. [6] Milan

    Existuje routovani na L3, tohle neni switch ktery vyzaduje zaznam do CAM. Proste to posle kam ma nastavenou routu nebo na svoji defaultni na 0.0.0.0/0. ( pokud ji ma ). Pokud ji nema tak se tim nemuze zabyvat. Co se s tim deje dal ho v principu nezajima.

    Jinak u takhkle stare diskuze bych odpovedi spis neocekaval, jesm tu take nahodou..

    Středa, 02.11.2016 10:38 | odpovědět
  7. [7] Petra

    odpověď na [5]sumo: Když jste doma připojený k internetu, tak na Vašem routeru máte jeden port zapojený do WAN a další port(porty) do Vaší LAN sítě.

    "Jak se tedy provede komunikace na IP adresu někde na konci Internetu, se kterou jsem doposud nekomunikoval?"

    Ve Vašem routeru je nastavená defaultní routa do sítě WAN. Takže router odešle packet přes WANové rozhraní do internetu. A tam packet putuje přes další routery až k cíli. Vždy se router podívá do svojí routovací tabulky, kde najde cestu. Občas routu chybnou konfigurací nebo poruchou u ISP router nenajde, tak je paket zahozen (nebo koluje ve smyčce do vypršení TTL).

    Středa, 24.02.2021 18:16 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách