Portál AbcLinuxu, 24. dubna 2024 14:52

Jemný úvod do adresace v protokolu IP verze 4

10. 12. 2003 | Vojtěch Pithart
Články - Jemný úvod do adresace v protokolu IP verze 4  

Přehledně zpracované seznámení se základním stavebním kamenem počítačových sítí.

Tento článek by měl odpovědět na základní otázky:

  1. Jaké jsou odlišnosti řešení rozdělení sítě na 10.0.1.X-10.0.0.X oproti 10.0.0.X-10.0.0.Y?
  2. Co je to maska, co znamená 255.255.255.192, co je to číslo za lomítkem u IP adresy (A.B.C.D/24)?
  3. Jakou masku mám nastavit na své síti?
  4. Co je to výchozí brána (default gateway)?

IP adresa

Počítače a jiná zařízení, propojená v jedné společné síti, mají každý svou vlastní adresu. Ta je pro daný počítač jedinečná, nikde v internetu se neopakuje. Každá adresa je tedy jednoznačně určuje počítač, kterému byla přidělena. Pakety putující internetem s sebou nesou mj. cílovou adresu. Internet doručuje pakety správným směrem tak dlouho, až dorazí na adresou určený počítač. Každý paket též nese adresu odesílatele, takže komunikace může být obousměrná. Adresy, o kterých je zde řeč, jsou adresy protokolu IP (Internet Protocol), zkráceně IP adresy.

Každá IP adresa je 32 bitové číslo. Adresa 10.0.2.11 je též vyjádřitelná jako 0x0a00020b (0x znamená, že jde o hexadecimální číslo), nebo dvojkově 00001010 00000000 00000010 00001011. Zápis typu a.b.c.d se používá nejčastěji, a to pro přehlednost; každé z písmen a-d vyjadřuje desítkovým číslem 8 bitů adresy. Celkem tedy 8x4=32 bitů. Jednotlivé číslice a-d mohou nabývat hodnot 0 až 255. Limit 255 vyplývá z toho, že nejvyšší osmimístné dvojkové číslo (11111111) je právě 255 desítkově. Kombinací čtyř takových čísel získáme 256x256x256x256 = 4 294 967 296 (4 miliardy) možných IP adres. V počátcích Internetu (70. léta) se to zdálo být nepředstavitelné množství, ale dnes (po roce 2000) je masové nasazování privátních IP rozsahů důkazem jejich nedostatku. Odbočme lehce od tématu: tento problém řeší novější IP verze 6, která již v mnoha místech internetu funguje zároveň s obvyklým IP verze 4. Šířka adresy v IPv6 je 128 bitů, což dělá asi 1022 adres na 1 m2 povrchu zemského.

Vraťme se k věci. IP adres na světě tedy může být 2^32, nepočítaje nepovolené hodnoty jako samé nulové bity (0.0.0.0) a samé jedničkové bity (255.255.255.255), stejně jako speciální vyhrazené adresní rozsahy pro zvláštní účely. IP adresa je tedy v podstatě libovolná kombinace třiceti dvou nul a jedniček.

Síťová maska

Maska je specifickým druhem IP adresy. Je to též kombinace nul a jedniček, ale zdaleka ne tak libovolná. Musí mít strukturu: Zleva jedničky, pak první nula a pak už jen nuly. Muze tedy obsahovat jen jediné místo, kde sousedí 1 a 0. Platné masky jsou například:

binárně                              a.b.c.d         počet
                                                  jedniček (J)
11111111 11111111 11111111 11111100  255.255.255.252  30
11111111 11111111 11111111 11111000  255.255.255.248  29
11111111 11111111 11111111 11110000  255.255.255.240  28
11111111 11111111 11111111 11100000  255.255.255.224  27
11111111 11111111 11111111 11000000  255.255.255.192  26
11111111 11111111 11111111 10000000  255.255.255.128  25
11111111 11111111 11111111 00000000  255.255.255.0    24
11111111 11111111 11100000 00000000  255.255.224.0    19
11111111 11000000 00000000 00000000  255.192.0.0      10
a podobně.

Z uvedeného snadno nahlédneme, že maska, ač je to číslo 32bitové, nenese zdaleka tolik informace. Vlastně může být teoreticky jenom 33 různých masek od samých nul, přes "100...0", "111...1110" po samé jedničky. Proto dostačujícím údajem o masce je číslo mezi 0 a 32 udávající počet jedniček. Označme toto číslo proměnnou J pro pozdější použití. Proto se síťová maska 255.255.255.0 mnohdy uvádí též jako "/24". Lomítko je terminus technikus.

Příklady

Ted už tedy víme, co je IP adresa a co maska. Jak spolu souvisí? Maska láme IP adresu na 2 části: adresu sítě a adresu stroje v rámci oné sítě. Kde se ty 2 části lomí, je určeno právě počtem jedničkových bitů v masce. Například maska "/24", to jest 255.255.255.0, lomí IP adresu na 24 bitů adresy sítě a 8 bitů adresy v té síti.

Další příklady (znak x ukazuje místo, kde se adresa dělí):

(A)                                              x
adresa  10.1.2.3      00001010 00000001 00000010 00000011
maska   255.255.255.0 11111111 11111111 11111111 00000000
(J=24), zkrácená specifikace této sítě: 10.1.2.0/24

(B)                                                 x
adresa  10.1.2.3        00001010 00000001 00000010 00000011
maska   255.255.255.128 11111111 11111111 11111111 10000000
(J=25), zkrácená specifikace této sítě: 10.1.2.0/25

(C)                                           x
adresa  10.1.2.3      00001010 00000001 00000010 00000011
maska   255.255.240.0 11111111 11111111 11110000 00000000
(J=20), zkrácená specifikace této sítě: 10.1.0.0/20

'Adresa sítě' se vypočítá tak, že vezmeme jakoukoliv adresu stroje v této síti a jejích posledních (32-J) bitů vynulujeme. V každé síti je též stanovena adresa všesměrového vysílání 'broadcast', která je obvykle poslední (nejvyšší) adresou v síti, takže má na posledních (32-J) místech samé jedničky. Broadcastová adresa znamená, ze IP paket s takovouto cílovou adresou mají přijmout všechny počítače v dané síti. Ostatní adresy v síti jsou použitelné pro adresy jednotlivých zařízení: počítačů, ledniček a kávovarů. Ke stanovení počtu použitelných IP adres v síti postačí znát velikost síťové masky. Potom použijeme vzorec počet_adres = 2^(32-J) - 2. Dvojka se odečítá proto, že jsou právě 2 adresy se speciálním významem: Adresa sítě a adresa broadcastu.

V případě A, to je ten obvyklý, máme síť o 256 adresách. První adresa, to jest 00001010 00000001 00000010 00000000 (10.1.2.0) je adresou sítě. Poslední adresa v síti, 00001010 00000001 00000010 11111111 (10.1.2.255), je adresou broadcastu. Ostatní adresy, to jest od 00001010 00000001 00000010 00000001 (10.1.2.1) do 00001010 00000001 00000010 11111110 (10.1.2.254) jsou pro počítače (pračky, žehličky). Je-li v této síti jediný stroj, který je routerem (bránou) do ostatních sítí, dávám mu první možnou adresu, to jest 10.1.2.1 (to není nutné ani předepsané, je to jen dobrým zvykem). Jakákoliv adresa mezi 10.1.2.0 až 10.1.2.255 patří do této sítě.

V případě B máme podobnou síť, kde prvních 25 bitů adresy, to jest 00001010 00000001 00000010 0 určuje adresu sítě, zatímco pouze posledních 7 určuje adresy v této síti. V této síti může být dle dříve uvedeného vzorce 2^(32-25)-2 = 126 adres, a to...

od   00001010 00000001 00000010 00000000 (10.1.2.0 
 - adresa sítě)
přes 00001010 00000001 00000010 00000001 (10.1.2.1)
a    00001010 00000001 00000010 00000010 (10.1.2.2)
a    00001010 00000001 00000010 01111110 (10.1.2.126)
do   00001010 00000001 00000010 01111111 (10.1.2.127)
 - adresa broadcastu)

Jakákoliv adresa mezi 10.1.2.0 až 10.1.2.127 patří do této sítě.

Případ C ukazuje velmi rozsáhlou síť o 4096 (resp. 4094) adresách počínaje

od 00001010 00000001 00000000 00000000 (10.1.0.0)
do 00001010 00000001 00001111 11111111 (10.1.15.255)

dělení na menší sítě

Vraťme se k případu B. Uvedli jsme síť s adresami 10.1.2.0 az 10.1.2.127. Sousední adresa, 10.1.2.128, již patří do jiné sítě! Když se na ni koukneme v binárním tvaru, uvidíme, že se liší v síťové části adresy (v prvních J=25 bitech):

00001010 00000001 00000010 10000000 (10.1.2.128)

Oproti případu A jsme zvětšením masky o 1 bit, tj z 255.255.255.0 na 255.255.255.128, vytvořili dvě sítě o 128 (resp. 126) adresách:

10.1.2.0/25   (10.1.2.0-10.1.2.127)
10.1.2.128/25 (10.1.2.128-10.1.2.255)

Došlo tedy k rozpůlení 256 adresové sítě na dvě 128 adresové. Zvětšením masky o další bit bychom každou z těchto sítí opět rozpůlili na dvě, takže už budeme mít 4 sítě po 64 (resp 62) adresách:

10.1.2.0/26    (10.1.2.0-10.1.2.63)
10.1.2.64/26  (10.1.2.64-10.1.2.127)
10.1.2.128/26 (10.1.2.128-10.1.2.191)
10.1.2.192/26 (10.1.2.192-10.1.2.255)

A tak dále. Masku můžeme zvětšovat až na J=30 (255.255.255.252), kdy vznikne síť s pouze 4 adresami, z toho 2 jsou použitelné. Příklad takovéto pidisítě z praxe: 80.250.2.80/30 (tj. maska je 255.255.255.252)...

80.250.2.80 je adresa sítě
80.250.2.81 je adresa jednoho počítače (WiFi router poskytovatele internetu)
80.250.2.82 je adresa druheho počítače (našeho Sinuxového serveru)
80.250.2.83 je adresa broadcastu na této síťce

a 80.250.2.84 by už spadlo do zcela jiné sítě, která může být fyzicky i velmi vzdálená.

Věřím, ze bystrý čtenář nyní sám dokáže generovat podobné příklady.

Směrování IP paketů

Jak to souvisí s routováním? Jsem IP vrstva operačního systému, moje IP adresa je 10.1.2.17 a maska 255.255.255.224 (J=27). Vím tedy, že adresy od 10.1.2.0 do 10.1.2.31 jsou v mojí vlastní síti. V routovací tabulce je nastaveno, že moje výchozí brána má adresu 10.1.2.11. Přenosovým médiem je obyčejný ethernet. Aplikace mi předala paket, který mám poslat na cílovou adresu DEST. Co teď?

a) DEST=10.1.2.15. Adresa je v mojí vlastní síti. Pomocí protokolu ARP tedy zjistím MAC adresu cíloveho stroje, např. 00:10:20:30:40:50 a s touto adresou vytroubím rámec do kabelu. Vlastně jediné co umím, je poslat paket na jednu z 32 adres v mé síti.

b) DEST=10.1.2.36. Adresa leží MIMO moji síť, takže vlastně nevím, kam ji poslat. Nastěstí to ví chytrý router. Ja zase vím jeho adresu: 10.1.2.11 a ta v mé síti je. Převedeme tedy problém na jiný problém, ktery již umíme řešit (problém a). Paket vytroubíme do kabelu stejně jako prve, ale s MAC adresou routeru. Takže paket s jakousi 'cizí' adresou 10.1.2.36 dorazí na router. Ten si s ním musí poradit.

c) DEST=62.37.8.99. Naprosto stejný postup jako v b).

Nyní doufám, že je zřejmé, že síť o 256 adresách (0-255) je možné rozdělit na poloviny (0-127, 128-255), čtvrtiny (0-63, 64-127, 128-191, 192-255) a podobně, ale rozhodně ne na jiné části, jako (0-50, 50-255). Zde je důležité, že maska rozhoduje o tom, která adresa patří do které sítě.

Související články

Velký průvodce protokoly TCP/IP a systémem DNS
Velký průvodce protokoly TCP/IP: Bezpečnost
Domácí síť

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

Diskuse k tomuto článku

10.12.2003 08:31 Mr. Jumper
Rozbalit Rozbalit vše moc pekne....
Odpovědět | Sbalit | Link | Blokovat | Admin
... ale bohuzel pomalu ale jiste neaktualni. Neuvazujete o serialu IPv6?
10.12.2003 09:32 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše moc pekne....
ja bych to s tim IPv6 nevidel tak zhave, navic si myslim, ze IPv4 je pro zakladni vysvetlovani mnohem lepsi (treba dneska zminovany system IP adres)
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
10.12.2003 09:36 nemo
Rozbalit Rozbalit vše pekny clanek
Odpovědět | Sbalit | Link | Blokovat | Admin
Jen postradam informace o tom, jake adresni prostory se daji k cemu pouzit, snad trochu vic rozpitvat specialni adresy (loopback) a volne pokracovani IPv6 by bylo rovnez prijemne. V kazdem pripade dekuji.
10.12.2003 10:01 Vojtěch Pithart | skóre: 8 | Hradec Kralove
Rozbalit Rozbalit vše reakce
Odpovědět | Sbalit | Link | Blokovat | Admin
>... ale bohuzel pomalu ale jiste neaktualni. Neuvazujete o serialu IPv6?

IPv6 je dnez naprosto ziva vec, ktera jiz opustila vyzkumne laboratore a slouzi lidem ku uzitku. To, ze se o IPv6 prilis nebavim ma za ucel jednoduchost. Tento clanek je pro uplen novacky. Pro novacky: princim IPv6 je v zasade stejny, jen misto 32 bitu ma adresa delku 128 bitu.

> postradam informace o tom, jake adresni prostory

Ano, to je pravda, nejsi prvni kdo na to upozornil. Opet jsem to nezaradil proto, ze povidani o tridach adres a napr. privatnich rozsasich je spise o jakemsi managementu IP protokolu (jak co pouzivat), ale mne slo ciste o technicke fungovani veci.

Podobny clanek o IPv6 napisu nejdrive tehdy, az si budu natolik jisty v kramflecich, jako je to s IPv4.
10.12.2003 15:48 Honza
Rozbalit Rozbalit vše reakce
"jakemsi managementu IP protokolu" Jenze ten je take dulezity. Uz kdysi davno jsem u jednoho cloveka (total brutal BFU na veky veku) resil problem s nefunkcni siti tak, ze jsem ji preadresoval z 1.2.3.4 na 192.168.0.0/24. Cili technicke hledisko je dobre, ale bez managementu to nejde. Takze osobne bych aspon upozornil na verejne a neverejne a link na IANA...
3.6.2004 21:47 JoHnY
Rozbalit Rozbalit vše Re: reakce
nevim co se vam nelibi na IP typu 10.11.12.XXX a podobne :-D doma pouzivam prave tyhle IP a to prave kvuli jejich uchylnosti, proste se vam nestane ze se srazite s IP na druhy strane VNPky ;-)
10.12.2003 17:07 hanz
Rozbalit Rozbalit vše peknej clanek
Odpovědět | Sbalit | Link | Blokovat | Admin
...mozna by v nejakem dalsim pokracovani nebylo marne se zminit o nastroji 'ip' a nastavovani routovani.
10.12.2003 22:22 Radek
Rozbalit Rozbalit vše Perfektni pomucka pro zacatecniky
Odpovědět | Sbalit | Link | Blokovat | Admin
http://jodies.de/ipcalc Je tam i offline verze v Perlu.
13.12.2003 15:02 Miralong | Plzeň
Rozbalit Rozbalit vše pomucka nejen pro zacatecniky
Odpovědět | Sbalit | Link | Blokovat | Admin
http://www.wildpackets.com/products/ipsubnetcalculator
14.12.2003 15:21 Michal Kubeček
Rozbalit Rozbalit vše nepřesnost
Odpovědět | Sbalit | Link | Blokovat | Admin
IP adresa není přiřazena počítači, je přiřazena síťovému rozhraní. Máte-li v počítači více síťových karet, každá má svou IP adresu (ve skutečnosti můžete mít i více adres na jednom rozhraní).
egg avatar 3.2.2004 11:30 egg | skóre: 20 | Praha
Rozbalit Rozbalit vše nepřesnost
Případně více rozhraní se stejnou adresou. ;-) Aneb jak ze dvou 100 megabit síťovek udělat 200 megabit.
27.8.2005 00:42 keyloger
Rozbalit Rozbalit vše Re: nepřesnost

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.