Jak diagnostikujeme a řešíme problémy se síťovými připojeními - díl I., TCP/IP stack
Tato trilogie článků si klade za cíl osvětlit začátečníkům nejčastější problémy se síťovým připojením a způsoby jak diagnostikovat a následně opravit nalezený problém. Dnes začneme základem - TCP/IP stackem
Jak to vlastně všechno začíná
Představte si, že vám přestal fungovat váš internet, nebo že vás, jakožto IT odborníka, pozvali k sousedům, že jim "nejde ten internet". Je to situace nemilá, protože v takových případech nejsou dostupné internetovské zdroje informací, abyste byli schopni navštívit vyhledávač nebo poradna.net a vyžádat si radu zkušenějších. Tato minisérie se vás pokusí nasměrovat k diagnostice a řešením, která v jednodušších sítích vedou téměř ve 100% k úspěchu, a to velmi přímočarou a bezbolestnou cestou. V prvním díle nečekejte příliš mnoho obrázků, ty přijdou až v dalších dvou dílech.
Jdeme na to - Základní diagnostika TCP/IP
Dnešní první díl se bude věnovat prvotní diagnostice a řešení základních problémů konektivity protokolu TCP/IP, v dalších pak probereme zbylé dva pilíře tzv. "svaté trojice", tj. routing a DNS.
Nejprve trochu suché teorie
TCP/IP je sada protokolů, postavená nad IP protokolem. Je to bez diskuze nejpoužívanější síťový protokol dneška. Díky své univerzálnosti, robustnosti a zároveň jednoduchosti návrhu si proklestil cestu k de facto obecnému komunikačnímu standardu. TCP/IP dnes nevyužívají jen počítače, ale i zařízení, do nichž byste to nikdy neřekli (ano, to jsou ty světoznámé "inteligentní" ledničky )
Z hlediska hardwaru a nad ním položeného operačního systému je pak TCP/IP implementováno samotným síťovým zařízením (představte si např. ethernetový adaptér, ale může to být i sériová či paralelní linka, optický port či wifi karta) a tzv. stackem, což je kód, který je zodpovědný za veškerou komunikaci pomocí TCP/IP. Najdeme zde tedy vše od ovladačů daného zařízení, až po kód zajišťující implementaci vlastních TCP protokolů (tj. TCP, UDP, ICMP apod.) a komunikační rozhraní pro sofware třetích stran (sokety - viz dále). Nad tímto stackem už dlí aplikace které s ním komunikují pomocí soketů. Jednoduše vzato je soket síťové API (předem dané "meziaplikační" komunikační rozhraní).
Loopback
Každý TCP/IP stack pak zahrnuje jeden specifický adaptér, který se jmenuje loopback (zpětná smyčka). Tento "vynález" je jedno z nejgeniálnějších zařízení celého TCP/IP, protože dává vývojářům i uživatelům jednu zásadní výhodu - používat TCP/IP (tj. používat síťové aplikace, např. databázový server a klient) i v případě, že nemáte v systému jediné hardwarové komunikační zařízení.
Samotný loopback poznáte snadno - má adresu 127.0.0.1 (v reále je to celá sada adres 127.0.0.0/8). Pokud jej opingáte, máte jistotu, že váš TCP/IP stack je v pořádku.
C:\>ping 127.254.254.254
Příkaz PING na 127.254.254.254 s délkou 32 bajtů:
Odpověď od 127.0.0.1: bajty=32 čas < 1ms TTL=128
Odpověď od 127.0.0.1: bajty=32 čas < 1ms TTL=128
Odpověď od 127.0.0.1: bajty=32 čas < 1ms TTL=128
Odpověď od 127.0.0.1: bajty=32 čas < 1ms TTL=128
Jak vidíte, funguje.
Co je to ping?
Ping je "lidské" označení dvou typů ICMP paketů - ICMP echo request a ICMP echo reply. Hostitel A odesílá hostiteli B ICMP (servisní typ paketu bez datových informací) paket s požadavkem (request) o odpověď, hostitel B tento požadavk zpracuje a pošle odpověď (reply), přičemž hostitel A je schopen jako bonus změřit čas jak dlouho trvala zprávě cesta tam a zase zpět.
Fyzické připojení
Tato kapitolka je velmi krátká. Uvažujeme-li ethernetové připojení, zkontrolujte, zda blikají/svítí LED indikující fyzické připojení kabelu. Používáte-li wifi, přesvědčete se, že adaptér je v systému aktivní. Případně napravte závadu. U kabelů typicky zastrčte konektor, očistěte kontakty, připadně překrimpujte nebo nechte překrimpovat (tj. znovu nacvaknout) konektory.
Lokální subnet
Každá TCP/IP síť se skládá ze subnetu (česky podsíť), což je skupina hostitelů (hostitel je zařízení se síťovým rozhraním) připojeným fyzicky ke stejné fyzické síti a s TCP/IP stackem který má na daném rozhraní IP adresu ve stejné IP síti. Stejná síť je pak definována IP adresním prostorem, který je definován maskou. Určování masky se odehrává podle požadavku na počet zařízení v daném subnetu. Zde najdete velmi jednoduchou kalkulačku: http://www.cotse.com/networkcalculator.html . Myslím, že zdrojů informací o subnetech je na internetu dostatek. Ve standardních podmínkách domácích a podnikových sítí se adresy přidělují pomocí tzv. DHCP serveru, který dynamicky přidělí všem hostitelům jejich unikátní IP adresy. Druhá alternativa je ruční přidělení IP adresy uživatelem, třetí pak tzv. Bonjour.
Co je to Bonjour?
Bonjour (dříve též Rendezvous, na jiných platformách též Zeroconf či Avahi aj. - autor s ním poprvé přišel do styku jako s Rendezvous a nějak se neoprostil od těchto francouzských názvů) je protokol, který nastavuje IP adresy automaticky a autonomně podle vlastních pravidel a odposlechu sítě na hodnoty z rozsahu 169.254.0.0/16. Používá se dnes prakticky na všech platformách, dokonce se začíná používat i u embedded a networked zařízení (tiskárny, faxy, kamery apod.)
Můžete-li tedy pingnout jiné zařízení v síti, funguje vám fyzické připojení a i TCP připojení je v pořádku. Jaké zařízení byste měli pingat? Doporučuji vždy testovat oproti routeru (směrovači; viz kapitola o routingu), typicky jím je v malých domácích sítích "krabička" do které vedou všechny síťové dráty a jejíž IP adresa je buď výchozí (a ta je napsána v manuálu) anebo jste si ji nastavili sami (a pak ji znáte).
Předpokládejme, že máte síť s routerem, který vám přiděluje IP adresy z rozsahu 192.168.1.0/24 a jehož IP adresa je 192.168.1.1. Pokud pomocí příkazu ipconfig dostanete hlášení, že na adaptéru připojeném do této sítě je jiná adresa než z uvedeného rozsahu, nejspíše ji máte nastavenu napevno (a samozřejmě to nebude fungovat). Pokud vidíte adresu z rozsahu Bonjour, váš PC neobdržel adresu z DHCP serveru, a to buď díky tomu, že je vadné fyzické připojení (kabel, síťová karta) NEBO kvůli tomu, že aktuálně v dané fyzické síti neběží DHCP server. Řešením je nastavit IP adresy ručně (horší řešení), nebo zprovoznit DHCP server (toto je preferované řešení).
výpis ipconfig
C:\>ipconfig
Konfigurace protokolu IP systému Windows
Adaptér sítě Ethernet Bezdrátové připojení k síti:
Přípona DNS podle připojení . . . :
Adresa IP . . . . . . . . . . . . : 192.168.1.100
Maska podsítě . . . . . . . . . . : 255.255.255.0
Výchozí brána . . . . . . . . . . : 192.168.1.1
Adaptér sítě Ethernet Připojení k místní síti:
Stav média . . . . . . . . . . . : odpojeno
výpis ping
C:\>ping 192.168.1.1
Příkaz PING na 192.168.1.1 s délkou 32 bajtů:
Odpověď od 192.168.1.1: bajty=32 čas=3ms TTL=127
Odpověď od 192.168.1.1: bajty=32 čas=1ms TTL=127
Odpověď od 192.168.1.1: bajty=32 čas=1ms TTL=127
Odpověď od 192.168.1.1: bajty=32 čas=1ms TTL=127
Pokud je něco špatně, ping vypisuje následující hlášení:
C:\>ping 192.168.1.1
Příkaz PING na 192.168.1.1 s délkou 32 bajtů:
Vypršel časový limit žádosti.
Vypršel časový limit žádosti.
V takovém případě je potřeba začít zjišťovat, zda opravdu zařízení "naproti" funguje, případně jej otestovat či zkusit pingnout jiné zařízení v síti (pokud možno). Jak vidíte, stále ještě nejsme u Internet Exploreru . Dokud nefunguje LAN, nemá smysl zabývat se internetem.
Hurá směr internet
Pokud již ping v LAN funguje, můžete zkusit pingnout IP adresu v internetu. Pro testování bych všem doporučil IP adresu seznam.cz, což je 212.80.76.3, a to z toho důvodu, že nemá blokované ICMP echo requesty a vrací korektně ICMP echo replies, takže se spolehlivě dozvíte, zda hostitel odpovídá, a tedy že spojení opravdu funguje.
C:\>ping 212.80.76.3
Příkaz PING na 212.80.76.3 s délkou 32 bajtů:
Odpověď od 212.80.76.3: bajty=32 čas=20ms TTL=55
Odpověď od 212.80.76.3: bajty=32 čas=20ms TTL=55
Odpověď od 212.80.76.3: bajty=32 čas=24ms TTL=55
Odpověď od 212.80.76.3: bajty=32 čas=19ms TTL=55
Pokud pingání nefunguje, je třeba začít řešit problém routingu či konektivity. Routing bude popsán v II. díle, konektivitu si bohužel budete muset ověřit sami nebo ve spolupráci s vaším ISP.
Pokud zafungovalo pingnutí na IP adresu, je zřejmé, že routing funguje a konektivita směr internet je funkční. Můžeme tedy přistoupit k testu DNS, což znamená pingnout jmennou adresu. Použijeme opět seznam.cz:
C:\>ping www.seznam.cz
Příkaz PING na www.seznam.cz [212.80.76.3] s délkou 32 bajtů:
Odpověď od 212.80.76.3: bajty=32 čas=20ms TTL=55
Odpověď od 212.80.76.3: bajty=32 čas=20ms TTL=55
Odpověď od 212.80.76.3: bajty=32 čas=20ms TTL=55
Odpověď od 212.80.76.3: bajty=32 čas=19ms TTL=55
Pokud ping funguje, gratuluji, máte funkční TCP/IP stack připojený k internetu. Můžeze zkusit použít prohlížeč webu či jinou síťovou aplikaci.
Pokud ne, je problém s DNS resolvingem, tj. převodem jmenného názvu (např. www.seznam.cz) na IP adresu. Jak řešit tento problém si popíšeme ve III.díle tohoto seriálu.
Pokud ping na jmenný název funguje, a přesto nejste schopni připojit se pomocí webového prohlížeče (typicky Internet Explorer), zkontrolujte jeho nastavení (obzvláště způsob připojování k internetu) stejně jako samotný operační systém na přítomnost malware (spyware, viry, trojany). Toto je bohužel už zcela mimo zaměření článku (snad někdy příště )
Resumé
Nefunguje-li vám síťové připojení, postupujte následnovně:
1. opingejte loopback
2. opingejte výchozí bránu (směrovač, též router)
3. opingejte IP adresu v internetu
4. opingejte jmenný název v internetu
Tam, kde se zastavíte, bude nejspíše chyba.
odkazy na další články:
Jak diagnostikujeme a řešíme problémy se síťovými připojeními - díl II., routing