Přidat článek mezi oblíbenéZasílat nové komentáře e-mailem 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: 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

Jsou zobrazeny jen nové komentáře. Zobrazit všechny
Předmět Autor Datum
krasne napsany - diky mozna by ctenare zajimalo co je to to TTL ktere se objevuje v pingu - jednoduc…
kmochna 06.08.2007 09:31
kmochna
díky za doplnění. :beer: nový
touchwood 10.08.2007 08:50
touchwood
Tak neco podobne jsem potreboval v sobotu. Po odinstalaci Noda nesel internet, nefungovalo nic a nem…
Radek 06.08.2007 20:46
Radek
NOD obsahuje proxy. Nejspíše došlo při odinstalaci ke špatnému odpojení od stacku (resp. k němu nedo…
touchwood 06.08.2007 20:58
touchwood
symantec, symantec :-D
JR_Ewing 07.08.2007 07:00
JR_Ewing
Kuš. Symanter Personal Security je na tom úplně stejně, to si hraje snad i na Office :-P
Jan Fiala 07.08.2007 08:20
Jan Fiala
nemluvim o osobnim :-) rozhodne symantec enterprise products nový
JR_Ewing 09.08.2007 09:28
JR_Ewing
Dobrá práce! Mě teda zarazilo, že jakákoliv IP od 127.***.***.*** je vlastně 127.0.0.1 ::) Nejdříve… nový
L-Core 09.08.2007 13:19
L-Core
ono to je ze zcela prozaického důvodu. Abys mohl testovat více démonů poslouchajících na stejném por… nový
touchwood 09.08.2007 21:09
touchwood
mi se libi to slovicko demon ;-)sem mel tu cest (utrpeni)pul dne poslouchat sitare - nabyl jsem dojm… nový
kmochna 09.08.2007 23:17
kmochna
http://en.wikipedia.org/wiki/Daemon_(computer_softw are) UNIX je matka všech (normálních) systémů (… nový
touchwood 10.08.2007 06:51
touchwood
jo já NT services taky ze zvyku říkám démon... :-) poslední
Vladimir 10.08.2007 12:19
Vladimir
Pěkný článek, akorát nerozumím tomu, proč příklad pro loopback není na 127.0.0.1 ale na 127.254.254.… nový
yorg 10.08.2007 08:16
yorg
právě to je schválně, jako demonstrace toho, že loopback je opravdu celý rozsah adres od 127.0.0.1 a… nový
touchwood 10.08.2007 08:44
touchwood
Ano, pochopil jsem, že to je schválně. Pro mě to ale hádanka byla i když ping používám velmi často.… nový
yorg 10.08.2007 08:59
yorg

Tak neco podobne jsem potreboval v sobotu. Po odinstalaci Noda nesel internet, nefungovalo nic a nemohli jsme prijit na to proc. Nemohlo to asi najit ani sitovku a porad to hlasilo chyby a zlute trojuhelniky. Trvalo to asi pul dne pak jsem se rozhodl napsat sem, ale pak me jeste napadlo nainstalovat Nod a vsechno jelo bez problemu, nevite nekdo proc? Kdyby se mne to jeste nekdy stalo. Nic to nevypsalo ani v tom CMD ipconfig all a renew a release a ja ani nevim jak se to vsechno jmenuje. Sitovku jsem odinstaloval, nainstaloval, preinstaloval a odinstaloval ovladace atd. a nic nepomohlo, az ta opetovna instalace Nodu.

Dobrá práce!

Mě teda zarazilo, že jakákoliv IP od 127.***.***.*** je vlastně 127.0.0.1 ::)
Nejdříve jsem si myslel, že jde v článku o překlep (když se píše o loopbacku), že tam nemá být 127.254.254.254, ale 127.0.0.1 - ale vlastně všechny "stodvacetsedmičky" vrací výsledek jako 127.0.0.1.

Pěkný článek, akorát nerozumím tomu, proč příklad pro loopback není na 127.0.0.1 ale na 127.254.254.254.

Text "v reále je to celá sada adres 127.0.0.0/8)." jsem četl a rozumí mu, ale v tomto znění to je spíše hádanka než příklad. Když je to příklad, tak bych spíše očekával ping na adresu 127.0.0.1.

Ano, pochopil jsem, že to je schválně. Pro mě to ale hádanka byla i když ping používám velmi často. Chvilku jsem musel trápit mozkové závity, než jsem na její řešení přišel. :-)

Ale jako u správné hádanky je teď už její řešení uvedeno pod čarou. Tedy zde, v komentáři. ;-)

Zpět na články Přidat komentář k článku Nahoru