====== Objevování sousedů ====== Objevování sousedů (neighbor discovery) je univerzální mechanismus, který slouží k řešení celé řady problémů ve vztahu počítače a jeho okolí. Nahrazuje [[http://cs.wikipedia.org/wiki/Address_Resolution_Protocol|ARP]], které v IPv4 slouží k vyhledání linkové adresy pro IP adresu sousedního počítače, a přidává k němu funkce související se směrováním či automatickou konfigurací. Seznam jeho funkcí je poměrně obsáhlý: * zjišťování linkových adres sousedních uzlů (ze stejné podsítě) a jejich aktualizace * hledání směrovačů * přesměrování * zjišťování síťových parametrů pro automatickou konfiguraci * ověřování dosažitelnosti sousedů * detekce duplicitních adres K tomu všemu mu stačí pouhých pět zpráv, které přenáší prostřednictvím [[icmpv6]]: * //Ohlášení směrovače (router advertisement)// - v něm směrovač oznamuje síťové parametry (především prefix zdejších adres); slouží především pro [[automaticka_konfigurace|automatickou konfiguraci]] * //Výzva směrovači (router solicitation)// - pokud nepřichází ohlášení směrovače, může o ně uzel touto zprávou požádat * //Ohlášení souseda (neighbor advertisement)// - posílá soused, aby o sobě poskytl požadované informace * //Výzva sousedovi (neighbor solicitation)// - žádá souseda o jeho ohlášení; používá se ke zjišťování linkových adres a detekci dosažitelnosti * //Přesměrování (redirect)// - doporučuje adresátovi, aby datagramy k určitému cíli posílal přes jiného souseda; umožňuje opravovat nedokonalosti ve směrovací tabulce ====== Zjišťování linkových adres ====== Tato funkce objevování sousedů slouží k získání linkové (MAC) adresy sousedního počítače, kterému chce odesilatel poslat datagram. Vychází ze znalosti IPv6 adresy cíle, z níž sestaví **adresu vyzývaného uzlu (solicited node address)**. Jedná se o skupinovou adresu s dosahem omezeným na linku, která začíná pevně daným prefixem **ff02:0:0:0:0:1:ff00::/104 ** Za něj vždy připojí posledních 24 bitů IPv6 adresy, pro niž hledá linkovou. Jestliže se například hledá linková adresa pro **2001:db8:1:1:22a:fff:fe32:5ed1 ** bude adresa vyzývaného uzlu **ff02::1:ff32:5ed1 ** Na tuto adresu tazatel pošle //výzvu sousedovi//. Každý IPv6 uzel musí přijímat skupinově adresované datagramy směřující na adresu vyzývaného uzlu pro všechny adresy, které mu byly na příslušném rozhraní přiděleny. Pokud mu dorazí výzva, reaguje na ni //ohlášením souseda//, z nějž se tazatel dozví jeho linkovou adresu a následně mu může odeslat datagram. ====== Detekce dosažitelnosti souseda ====== Tato služba sleduje, zda sousední počítač "žije". Může ji využívat například mobilní uzel k rozpoznání přesunu - jestliže zjistí, že jeho implicitní směrovač není nadále dosažitelný, pravděpodobně přešel do jiné bezdrátové buňky a měl by si proto vyhledat aktuální síťové parametry. U sousedů, s nimiž IPv6 uzel komunikuje, si ukládá informaci o míře jejich dosažitelnosti. V závislosti na průběhu komunikace prochází několika stavy: nekompletní (na začátku, dokud nepřišla žádná odezva), dosažitelný (ideální stav), prošlý (vypršela platnost, ale nepotřebuje s ním komunikovat), odložený (vypršela platnost, odeslán paket, zatím be zodezvy) a testovaný (testuje se, zda je dosud dosažitelný). Obecně se detekce dosažitelnosti snaží své akce minimalizovat a k ověření, že počítač komunikuje, využívá i informace poskytované vyššími vrstvami síťové architektury. ====== Bezpečné objevování sousedů ====== Objevování sousedů řeší dost důležité otázky a otevírá bohužel nová bezpečnostní rizika. O jejich řešení usiluje **Secure Neighbor Discovery (SEND)**. Opírá se o dva mechanismy, řešící různé okruhy problémů: kryptograficky generované adresy a certifikační cesty. **[[identifikator_rozhrani#Kryptograficke_identifikatory|Kryptograficky generovaná adresa (Cryptographically Generated Address, CGA)]]** vychází z veřejného klíče svého vlastníka. Zprávy objevování sousedů pak lze digitálně podepsat a doprovodit informací o veřejném klíči. Příjemce si pak může celkem spolehlivě a snadno ověřit, že adresa a veřejný klíč patří k sobě a že veřejným klíčem lze ověřit podpis, tedy že s nejvyšší pravděpodobností skutečně zprávu poslal ten, kdo se tváří jako její odesilatel. Tím je vyřešen problém předstíraných sousedů. Druhé bezpečnostní riziko představují falešné směrovače - aby kdokoli nemohl posílat //ohlášení směrovače// a podstrčit tak automatické konfiguraci údaje podle svých záměrů. Tomu se snaží bránit **certifikační cesta (certification path)**. Jedná se o řetěz navazujících certifikátů, jimiž směrovač prokazuje, že určitá důvěryhodná autorita jej schválila jako směrovač, případně že mu povolila ohlašovat určité konkrétní údaje. ====== Odkazy ====== * RFC 4861 - specifikace objevování sousedů * RFC 3971 - zabezpečení objevování sousedů (SEND) * RFC 3972 - kryptograficky generované adresy (CGA)