Cesta ven a zpátky
Počítač s lokální adresou má při dotazu ven jeden zádrhel. Kdyby do paketu
napsal jako odesílatele 192.168.1.37, server by neměl kam odpovědět –
takových adres jsou miliony a z internetu na žádnou z nich cesta nevede.
Řeší to router převodem adres, tzv. NAT (Network Address Translation). Odchozímu paketu vymění adresu odesílatele za svoji veřejnou a do tabulky si poznamená, komu paket doopravdy patřil. Když se odpověď vrátí, podívá se do tabulky a pošle ji tomu, kdo se ptal.
Aby si nespletl dvě zařízení, která se ptají ve stejnou chvíli, používá k tomu ještě čísla portů. Port je číslo dveří, kterými data v počítači vejdou do konkrétní aplikace: každé spojení si při navázání vybere volný port odesílatele a druhá strana ho v odpovědi vrátí. Router proto v tabulce nedrží jen adresy, ale dvojice adresa a port:
| Uvnitř sítě | Navenek | Kam paket mířil |
|---|---|---|
192.168.1.37:51314 |
89.24.7.130:40001 |
195.39.44.178:443 |
192.168.1.41:63870 |
89.24.7.130:40002 |
195.39.44.178:443 |
Notebook i mobil si otevřely stránku na tomtéž serveru a navenek vyšly pod
stejnou veřejnou adresou. Liší se jen číslem portu, a to stačí: odpověď na port
40001 router pošle notebooku, odpověď na 40002 mobilu.
Vedlejší účinek téhle tabulky je docela zásadní. Router pustí dovnitř jen to, co má v tabulce svůj řádek, tedy odpovědi na dotazy, které někdo zevnitř položil. Paket, který přijde z internetu jen tak, nemá v tabulce co pohledávat a router ho zahodí. Proto se na domácí počítač nedá zvenčí jen tak připojit – a proto se na routeru musí zvlášť nastavit přesměrování portu, když chce mít někdo doma vlastní server.
Oťukání adresy pingem
Jestli je nějaká adresa vůbec naživu, se dá zjistit jedním příkazem. ping
pošle na adresu drobný paket a druhá strana ho obratem pošle zpátky. Nic víc
v tom není, ale pozná se z toho spousta věcí.
ping -n 4 8.8.8.8ping -c 4 8.8.8.8ping -c 4 8.8.8.8Číslo za přepínačem říká, kolik paketů se má poslat. Windows pošlou bez přepínače čtyři a skončí, Linux a Mac by odesílaly donekonečna, dokud je nezastavíte klávesami Ctrl+C. Odpověď vypadá zhruba takhle:
Odpověď od 8.8.8.8: bajty=32 čas=14ms TTL=118
Odpověď od 8.8.8.8: bajty=32 čas=13ms TTL=118
Odpověď od 8.8.8.8: bajty=32 čas=15ms TTL=118
Odpověď od 8.8.8.8: bajty=32 čas=13ms TTL=118
Statistika ping pro 8.8.8.8:
Pakety: Odesláno = 4, Přijato = 4, Ztraceno = 0 (ztráta 0%),Zajímavá jsou dvě čísla. Čas je doba, za kterou paket doletěl tam a zpátky – u zařízení v místní síti to bývají jednotky milisekund, u serveru na druhé straně planety klidně dvě stě. Počet ztracených paketů zase prozradí nespolehlivou linku: když se ztrácí každý třetí, spojení sice funguje, ale bude se zadrhávat.
Nejvíc se ping hodí na postupné oťukávání, když něco nejde. Nejdřív brána
(ping 192.168.1.1) – když neodpoví, je problém hned u nás v síti. Pak veřejná
adresa (ping 8.8.8.8, což je jeden z veřejných DNS překladačů) – když odpoví
brána a tohle ne, končí to za routerem. Nakonec jméno (ping seznam.cz) – když
projde adresa, ale ne jméno, síť funguje a rozbitý je překlad jmen.
Když adresa neodpoví, ještě to neznamená, že je počítač vypnutý. Spousta
serverů i domácích routerů má odpovídání na ping schválně vypnuté, aby se
nedaly tak snadno hledat. Mlčení je tedy indicie, ne důkaz.