Ontola > Ostatní > diskuze
| Nahlásit

Co je hostitelská část IP adresy a lokální adresa (127.0.0.0)

Dobrý den, chtěl bych se zeptat, co je to hostitelská část IP adresy a Lokální adresa (127.0.0.0)? Hledal jsem si tyhle dva pojmy, ale nepochopil jsem, co to znamená.
Témata: internet

9 reakcí

(Upr. 27.01. 21:50) | Nahlásit
Přeji pěkné odpoledne, Anonyme Kobyvyji,

v následujícím textu se omezím pouze na IPv4 adresy, tedy na 32bitové adresy, které se zapisují jako skupina čtyř čísel v rozmezí 0-255 oddělených tečkami.
Nejprve je třeba pochopit, co to vlastně je IPv4 adresa. Stejně jako můžeme třeba v České republice jednoznačně identifikovat dům pomocí úplné adresy (město, ulice, číslo popisné, PSČ - hádám, že to je jednoznačné), potřebujeme aparát pro adresaci síťového rozhraní počítače. K tomu nám slouží takzvaná IPv4 adresa, která je 32bitovým číslem, které typicky rozdělujeme na čtyři části oddělené tečkami. Každá z těchto částí tedy nabývá hodnoty 0-255. Můžeme tedy zapsat adresy 0.0.0.0 - 255.255.255.255. Některé z těchto adres ale mají speciální význam a nemohou adresovat konkrétní síťové rozhraní.
Existuje speciální síť 127.0.0.0/8 (význam /8 vysvětlen dále, viz maska sítě), která může být použita jako takzvaný loopback, tedy logická smyčka. Tato síť obsahuje všechny adresy mezi 127.0.0.0 a 127.255.255.255, přičemž ale adresa 127.0.0.0 je adresou celé sítě, pod které spadají adresy 127.0.0.0 až 127.255.255.255 a adresa 127.255.255.255 má význam takzvaného všesměrového vysílání (broadcastu), což vysvětlím později.
Důležité je, že adresy ze sítě 127.0.0.0/8 se nepoužívají pro adresaci síťových rozhraní počítačů navenek. Tato síť tedy není globálně adresovatelná - žádné síťové rozhraní nemůže mít adresu z této sítě viditelnou pro ostatní.
Pokud pošleme zprávu (např ICMP paket pomocí programu ping) na adresu ze sítě 127.0.0.0/8, vrátí se tato zpráva logickou smyčkou zpět mně jakožto odesílateli. Schválně zkuste na linuxu použít příkaz
traceroute 127.0.0.1
nebo třeba
traceroute 127.23.91.200
a uvidíte, že paket byl odeslán vámi zpět vám.
Jedná se o softwarovou záležitost, kterou zajišťuje operační systém. Odpovědí tedy je, že adresa 127.0.0.0/8 je adresa sítě obsahující všechny adresy loopbacku - adresy, které tvoří logickou smyčku zpět k vám.

Následující odstavec obsahuje informace o privátních sítích, které byly původním obsahem příspěvku, protože jsem si zaměnil sítě 127.0.0.0/8 a 10.0.0.0/8. Na dotaz neodpovídá, ale nechám jej tu v upravené podobě tak, aby obsahoval pravdivé informace.

Síť 10.0.0.0/8 je globálně neadresovatelná, tedy žádná podsíť, která se v internetu vyskytuje, nemůže mít tuto adresu navenek viditelnou pro ostatní sítě mimo ni. Tím docílíte toho, že různým síťovým rozhraním po celém světě můžete přisodit tutéž adresu z podsítě 10.0.0.0/8, a přitom nedojde k žádné kolizi, neboť tato adresa má platnost pouze uvnitř lokální sítě.
Dejme tomu, že váš domácí router (výchozí brána do internetu) bude mít adresu 8.8.8.8, pod kterou bude unikátně adresovatelný všemi, kdo používají internet na celém světě.
Nicméně z pohledu vašeho počítače má tento router adresu například 10.0.0.1, která je součástí sítě 10.0.0.0/8 (nemůže mít adresu 10.0.0.0, ta je rezervována pro síť jako takovou a ani nemůže mít adresu 10.255.255.255, neboť ta je rezervována pro všesměrné vysílání, nicméně stále má k dispozici 2^24-2 různých použitelných adres). (Jednotlivá síťová rozhraní uvnitř sítě můžete poté rozlišovat třeba pomocí čísla portu, tomuto mechanismu se říká NATování, ale to už bychom zabíhali do detailů.)
Abych to tedy shrnul, ve výsledku můžete docílit toho, že budou po světě třeba tisíce zařízení, která si budou myslet, že adresa jejich síťového rozhraní je 10.0.0.2 a přitom nezpůsobíte kolizi adres, protože daná adresa je platná pouze v rámci dané podsítě 10.0.0.0/8. Toho je docíleno tím, že podsíť 10.0.0.0/8 je pro podobné účely rezervovaná. Dalším příkladem takové podsítě je třeba 192.168.0.0/16, která nabízí 2^16-2 použitelných adres.

Nyní se podívejme na hostitelskou část IP adresy. Jak jsem řekl, IP adresa se dělí na adresu sítě a adresu hostitele. Například první číselná skupina adresy 127.0.0.2 značí síťovou část ip adresy a zbytek hostitelskou - rozlišuje konkrétní síťové rozhraní v dané podsíti. Jak ale poznáme, kde je hranice mezi první a druhou částí adresy?
Dříve se používal třídní systém adresování, tedy pokud adresa začínala skupinou 0-127, bylo zřejmé, že adresa sítě bude pouze první skupina. Pokud začínala skupinou 128-191, byly adresou sítě první dvě skupiny, pokud adresa začínala skupinou 192-223, byly adresou sítě první tři skupiny, pro úvodní hodnoty 224-239 šlo o takzvaný IPv4 multicast (to nebudu dále rozvádět, v tuto chvíli to znát nepotřebujete) a pro úvodní hodnoty 240-255 byly adresy rezervovány.
Dnes se ale používá takzvaná maska sítě, tedy plnohodnotná informace o adrese je doplněna o takzvanou masku, která říká, kolik prvních bitů adresy je vyhrazeno pro adresu sítě. Například adresa 127.0.0.2/8 říká, že prvních 8 bitů je vyhrazeno síťové části. Tato metoda vám dává větší svobodu pro návrh podsítě, nejste omezen třemi třídami, které pevně určují maximální počet síťových rozhraní v dané podsíti.
Těmito dvěma způsoby (třídní adresování, nově maskování) se tedy dá zjistit síťová část IPv4 adresy. Hostitelská část adresy je zbytek. Přitom musíte mít na paměti, že nejnižší hodnotu hostitelské části v dané podsíti nelze využít (je rezervovaná pro síť) a nejvyšší hodnotu hostitelské části v dané podsíti rovněž nelze využít, protože je použita pro všesměrné vysílání (tedy pokud stroj v síti 10.0.0.0/8 pošle paket na adresu 10.255.255.255/8, jsou příjemci paketu úplně všechna síťová rozhraní v dané síti, tedy pošlete zprávu mnoha strojům současně). Hostitelská část adresy musí být v dané podsíti pro každé síťové rozhraní unikátní, nebo vám nebude síť korektně fungovat, tedy v síti 10.0.0.0/8 nesmíte mít dvě síťová rozhraní nakonfigurovaná třeba na adresu 10.0.0.2. Pokud používáte dynamickou konfiguraci, pravděpodobně k tomu nikdy nedojde, protože váš DHCP server dobře ví, které adresy může přidělit, nicméně pokud IPv4 adresu svého síťového rozhraní změníte manuálně, může dojít ke kolizi a vznikne problém.

Je to takto srozumitelné? Určitě se ozvěte, pokud ne.
| Nahlásit
Tak tohle je hodně dobrá odpověď. Rád jsem si to přečet, i když jsem se neptal. Jen bych možná na začátku u toho 127.0.0.0/8 do závorky napsal, že význam toho "/8" je vysvětlený dále. A nemělo to být spíš jako wikiodpověď, že se to tam dá trochu formátovat. Ale pak by tam do toho mohl zasahovat každý, což možná nechcete.
| Nahlásit
Přeji pěkné odpoledne, Anonyme Dutasegu,

děkuji moc za zpětnou vazbu a za tip na doplnění. Vepsal jsem tedy do závorky to, co doporučujete. Rovněž jsem rád, že se vám můj příspěvek líbil. Přeji vám pěkný zbytek večera.
| Nahlásit
Možná by stálo za to tu masku podsítě trochu víc rozebrat. Pokud máme IP adresu třeba
192.168.0.1
má z pohledu počítače binární tvar (tečky jsou tam jen dělítko pro orientaci lidí, asi jako mezery v telefonních číslech, pro počítač tam nejsou):

11000000.10101000.00000000.00000001

a ono lomítko /16 znamená, že označení sítě je z toho prvních 16 bitů, tedy 192.168.x.x
Ve Windows se taková maska zadává ve tvaru 255.255.0.0, což je z pohledu počítače

11111111.11111111.00000000.00000000

kde jedničky nám představují pozice, kde je číslo sítě.

Doma, kde máme pár počítačů si ale klidně můžeme dát třeba masku 255.255.255.128, neboli
11111111.11111111.11111111.10000000, která pojme až 126 počítačů. Takovou síť bychom pak označili 192.168.0.0/25 (neboli prvních 25 bitů je "jméno" sítě zbylých 7 bitů pak "číslo" počítače nebo jiného zařízení uvnitř sítě)

Pokud jsem něco nenapsal dobře, snad to někdo uvede na správnou míru
(Upr. 27.01. 21:58) | Nahlásit
Dobrý den, teď mi došlo, že jsem hlupák, úplně jsem do sebe zamotal dvě věci. Pokud někdo četl můj předchozí příspěvek, pak prosím věnujte pozornost této opravě (v tuto chvíli je již původní příspěvek opravený a informace v něm korektní):

Ty bláboly, co jsem psal o adrese 127.0.0.0/8, ve skutečnosti platí pro síť 10.0.0.0/8. To je rezervovaná privátní síť s 2^24-2 adresami a pro ni skutečně platí to, co jsem uváděl v příspěvku výše.
Naopak síť 127.0.0.0/8 je takzvaný loopback, který má jiné využití, NEPOUŽÍVÁ se jako privání domácí síť.
Co to znamená loopback vysvětlím ihned, jen bych se chtěl nejprve ospravedlnit. Osobně doma používám výhradně privátní síť 192.168.0.0/16 a ne 10.0.0.0/24, takže nejsem na toto čísla úplně zvyklý a loopback využívám pro diagnostické účely málokdy. Z toho důvodu se mi povedlo zaměnit sítě 10.0.0.0/8 a 127.0.0.0/8, ale principiálně je jinak vše korektní, chyba je skutečně jen v záměně sítí.

Takže co je to loopback? Loopback je jakási logická smyčka, která přesměrovává datový tok vycházející z vysílače na původní vysílač. Adresami 127.0.0.1 - 127.255.255.254 můžeme adresovat vlastní stroj pro diagnostické účely, takže pokud pošleme například pomocí linuxového programu ping ICMP pakety na adresu 127.0.0.1, směřujeme je zpět na síťové rozhraní, odkud jsme je zaslali. Jedná se čistě o softwarovou záležitost, kterou zajišťuje operační systém.

Omlouvám se původnímu tazateli za mystifikaci. Šlo sice na pohled jen o prohození dvou čísel, ale význam je dramaticky jiný. Původní příspěvek upravím.
| Nahlásit
Přeji pěkný večer, Anonyme Vuhekagu,

děkuji za doplnění. Pročetl jsem váš příspěvek a opravdu je to přesně tak, jak říkáte, nicméně já jsem nechtěl původně zabrušovat do binárních čísel, protože jsem si nebyl jistý, zda to tazatel probíral a zda by to tedy i pobral. Každopádně jste to vysvětlil srozumitelně. Přeji pěkný zbytek večera.
| Nahlásit
Asi by to šlo jednoduše říct tak, že IP adresa (IPv4) je balíček 32bitů. První část představuje číslo sítě (podsítě) a zbytek číslo nějakého síťového rozhraní (třeba konkrétní síťové karty v PC) v této síti. Kde končí číslo sítě a začíná číslo počítače uvnitř sítě určuje právě maska sítě, ať už je zapsaná kterýmkoliv způsobem.
| Nahlásit
Ano, děkuji za doplnění, takhle je to srozumitelné.

Pro tazatele jen doplním, že jsem upravil první odpověď, aby skutečně hovořila o loopbacku a ne o privátní síti. Ještě jednou se omlouvám za tuto nešťastnou záměnu a přeji pěkný zbytek večera.
| Nahlásit
Ještě by se dalo doplnit, jak fungují výše zmíněné síťové porty. Všichni asi víme, že TCP/IP protokol používá pakety, tedy krátké balíčky dat, které mají v hlavičce zdrojovou a cílovou IP adresu. Kromě toho je tam ale ještě číslo zdrojového a cílového portu. K čemu je to dobré?

Představte si situaci, vaše PC naslouchá bzukotu na síti, a ve chvíli, kdy zaslechne paket (který má cíl jeho IP), tak si ho síťová karta stáhne k sobě a předá ho operačnímu systému. Ale jak ten s ním má naložit, kterému programu ho předá? Na to je právě v paketu další číslo, číslo "portu". SW port není nic hmatatelného v počítači, to si jen třeba Outlook při spuštění řekne operačnímu systému, pokud má paket port 25, je to pro mě, tak mi ho předej. Říkáme tomu, že si tento port "otevřel". Pokud přijde paket s číslem portu, který není "otevřený", paket se zahodí. Těch portů je celkem asi 65tis. možných, existuje jakási celosvětová registrace, kde si hlavní služby své porty "zamluvily". Možná by se dalo zjednodušeně říct, že port je taková adresa pro cestování uvnitř počítače.

Porty se ale někdy dají použít i jinak, a to je to, o čem mluvil Wydygiz. Dejme tomu, že jste připojeni k venkovnímu internetu a za routerem máte domácí síť (LAN). Vy byste chtěli na některém počítači provozovat třeba datové úložiště s přístupem FTP z venku. Jenže, pokud se na vaši venkovní (veřejnou internetovou) adresu někdo obrátí, váš router neví, na koho by měl ve vnitřní síti takový paket adresovat. V našem případě mu můžeme říct, pokud přijde z venku paket, který chce komunikovat po FTP (porty 20, 21), přesměruj je na tento konkrétní počítač v LAN (třeba 192.168.1.22). Poslední úsek cesty už tedy paket necestuje podle IP, ale podle portu.

Tuším, že se tomu říká port forwarding (přesměrování portu), třeba mě ale někdo doplní nebo opraví.
 Anonym
Odpovídat lze i bez registrace. Dodržujte pravidla Ontoly
Vložit: Obrázek