Sdílet prostřednictvím


Adresy IPv6 link-local a site-local

Adresy IPv6 link-local a site-local se nazývají adresy s vymezeným oborem. Rozhraní API rozhraní Windows Sockets (Winsock) podporuje člena sin6_scope_id ve struktuře sockaddr_in6 pro použití s vymezenými adresami. U místních adres IPv6 (předpona fe80::/10) je sin6_scope_id člen ve struktuře sockaddr_in6 číslo rozhraní. U místních adres IPv6 (předpona fec0::/10) je sin6_scope_id člen ve struktuře sockaddr_in6 identifikátorem lokality.

Příklad adresy IPv6 místního propojení v rozhraní č. 5 je následující:

fe80::208:74ff:feda:625c%5

Následující příkaz je k dispozici v systému Windows XP s aktualizací Service Pack 1 (SP1) a novější pro dotazování a konfiguraci protokolu IPv6 na místním počítači:

Změny konfigurace provedené pomocí příkazů Netsh.exe jsou trvalé a při restartování počítače nebo protokolu IPv6 se neztratí.

Před systémem Windows XP s aktualizací Service Pack 1 (SP1) používala konfigurace a správa protokolu IPv6 několik starších nástrojů příkazového řádku (Net.exe, Ipv6.exea Ipsec6.exe) ke konfiguraci a správě protokolu IPv6. Při použití těchto starších nástrojů nejsou změny protokolu IPv6 trvalé a při restartování počítače nebo protokolu IPv6 se ztratí. Tyto starší nástroje příkazového řádku jsou podporovány pouze v systému Windows XP.

V systému Windows XP s aktualizací SP1 zobrazí následující příkaz seznam rozhraní IPv6 v místním počítači, včetně indexu rozhraní, názvu rozhraní a různých dalších vlastností rozhraní.

rozhraní netsh ipv6 show interface

V systému Windows XP s aktualizací SP1 následující příkaz změní identifikátor lokality přidružený k indexu rozhraní.

rozhraní netsh interface ipv6 set interface <InterfaceIndex nebo Name> siteid=value

V systému Windows XP změní následující starší příkaz také identifikátor webu přidružený k místní adrese lokality na 3.

ipv6 rtu fec0::/10 3

Pokud odesíláte nebo připojujete k vymezené adrese, pak sin6_scope_id člen ve struktuře sockaddr_in6 může zůstat nezadaná (nula), která představuje nejednoznačnou adresu s vymezeným oborem. Například následující místní adresa odkazu je nejednoznačná:

fe80::10

Pokud vytváříte vazbu na vymezenou adresu, pak sin6_scope_id člen ve struktuře sockaddr_in6 musí obsahovat nenulovou hodnotu, která určuje platné číslo rozhraní pro adresu link-local nebo identifikátor lokality pro adresu místní lokality.

Nejednoznačné adresy s vymezeným oborem

Pokud odesíláte nebo připojujete k adrese s vymezeným oborem a nezadáte sin6_scope_id člen ve struktuře sockaddr_in6, pak je vymezená adresa nejednoznačná. Pokud chcete tento problém vyřešit, protokol IPv6 nejprve určuje, zda jste vázali soket na zdrojovou adresu. Pokud ano, vázaná zdrojová adresa přeloží nejednoznačnost zadáním čísla rozhraní nebo identifikátoru lokality.

Pokud odesíláte nebo připojujete k vymezené adrese a nezadáte ani sin6_scope_id člena ani vazbu na zdrojovou adresu, protokol IPv6 zkontroluje směrovací tabulku. Například následující příkaz zobrazí směrovací tabulku IPv6 v místním počítači:

rozhraní netsh

No   Manual   256  fe80::/64      13  Local Area Connection
No   Manual   256  fe80::/64      14  Wireless Network Connection

To značí, že místní adresy propojení jsou ve výchozím nastavení považovány za místní adresy na rozhraní č. 13 a #14.

Nejednoznačnost nastane, když má místní počítač více síťových adaptérů. Například příkaz netsh výše indikuje, že existují dvě síťová rozhraní (připojení k místní síti a bezdrátové připojení k síti). Pokud aplikace určuje cílovou adresu link-local (například fe80::10) bez ID oboru, není jasné, který adaptér se má použít k odeslání paketu. Při odesílání paketu může mít pouze jednosměrové vysílání (fe80::/64) nebo vícesměrové vysílání s rozsahem propojení (ff00::/8) cílová adresa IPv6.

Zjišťování sousedů

Pokud jste nezadáli sin6_scope_id člena ve struktuře sockaddr_in6, nevážete zdrojovou adresu a nezadáli jste trasu pro adresy místního propojení, protokol IPv6 se pokusí zjistit umístění cílové adresy link-local. U odesílaných paketů se zkusí jedno rozhraní. Toto první rozhraní, které se pokouší, je považováno za nejvhodnější rozhraní. Pokud se službě Neighbor Discovery nepodaří přeložit adresu místního propojení v rozhraní, paket, který se má odeslat, zahodí a systém si pamatuje, že cílová adresa link-local není přes toto rozhraní dosažitelná. U dalšího paketu, který se má odeslat za všech stejných podmínek, se pro zjišťování sousedů pokusí jiné rozhraní. Tento proces pokračuje jednotlivými rozhraními v místním počítači pro každý nový paket, dokud služba Neighbor Discovery neodpoví na cílovou adresu link-local nebo všechna možná rozhraní byla vyzkoušena a selhala. Při každém pokusu o vyřešení souseda dojde k odstranění jednoho rozhraní pro daného souseda.

Pokud se cílová adresa link-local přeloží, použije se toto rozhraní k odeslání aktuálního paketu. Toto rozhraní se také používá pro všechny následné nejednoznačné pakety, které se odesílají na stejnou cílovou adresu link-local.

Pokud zjišťování sousedů nedokáže přeložit cílovou adresu link-local ve všech rozhraních, systém se pokusí odeslat paket na upřednostňované rozhraní (první rozhraní se pokusilo). Zásobník sítě se neustále snaží přeložit cílovou adresu link-local v upřednostňovaném rozhraní. Po uplynutí časového období po selhání zjišťování souseda ve všech rozhraních se zásobník sítě znovu restartuje a pokusí se přeložit cílovou adresu link-local ve všech rozhraních. V současné době je tento časový interval při opětovném pokusu o zjišťování souseda ve všech rozhraních 60 sekund. Tento časový interval se ale může změnit ve verzích Windows a neměl by ji předpokládat aplikace.

Poznámka

Pokud aplikace propojí stejnou adresu link-local s jiným rozhraním po vyřešení místní adresy souseda, která nepřepíše rozhraní s cílovou adresou link-local vrácenou zjišťováním souseda.

 

Další informace o zjišťování sousedů pro IP verzi 6 naleznete v tématu RFC4861 publikované IETF.

předpony webů IPv6

Ipv6.exe

Netsh.exe

pomocí protokolu IPv6