IPv6 Link-local 和 Site-local 位址
IPv6 link-local 和 site-local 位址稱為範圍位址。 Windows Sockets (Winsock) API 支援 sockaddr_in6 結構中的 sin6_scope_id 成員,以搭配範圍位址使用。 針對 IPv6 link-local 位址 (fe80::/10 前置詞),sockaddr_in6 結構中的 sin6_scope_id 成員是介面編號。 針對 IPv6 月臺本機位址(fec0::/10 前置詞),sockaddr_in6 結構中的 sin6_scope_id 成員是網站識別碼。
介面 #5 上連結本機 IPv6 位址的範例如下:
fe80::208:74ff:feda:625c%5
下列命令可在 Windows XP 上使用 Service Pack 1 (SP1) 和更新版本,以在本機電腦上查詢和設定 IPv6:
使用 Netsh.exe 命令進行的組態變更是永久性的,而且不會在計算機或 IPv6 通訊協定重新啟動時遺失。
在 Windows XP 搭配 Service Pack 1 (SP1) 之前,IPv6 組態和管理使用數個較舊的命令行工具(Net.exe、Ipv6.exe和 Ipsec6.exe)來設定和管理 IPv6。 使用這些較舊的工具,IPv6 變更不會永久,而且會在電腦或 IPv6 通訊協定重新啟動時遺失。 只有 Windows XP 才支援這些較舊的命令行工具。
在具有SP1的 Windows XP 上,下列命令會顯示本機電腦上的 IPv6 介面清單,包括介面索引、介面名稱和其他各種介面屬性。
netsh 介面 ipv6 顯示介面
在具有SP1的 Windows XP 上,下列命令將會變更與介面索引相關聯的月臺標識符。
netsh 介面 ipv6 set interface <InterfaceIndex 或 Name> siteid=value
在 Windows XP 上,下列較舊的命令也會將與月臺本機地址相關聯的月臺標識碼變更為 3。
ipv6 rtu fec0::/10 3
如果您要傳送或連線至範圍位址,則 sockaddr_in6 結構中的 sin6_scope_id 成員可以保持未指定(零),代表模棱兩可的範圍位址。 例如,下列連結本機位址模棱兩可:
fe80::10
如果您要系結至範圍位址,則 sockaddr_in6 結構中的 sin6_scope_id 成員必須包含非零值,指定連結本機位址的有效介面編號或網站本機地址的網站標識碼。
模棱兩可的範圍位址
如果您要傳送或連線到範圍位址,但尚未指定 sockaddr_in6 結構中的 sin6_scope_id 成員,則範圍位址模棱兩可。 若要解決此問題,IPv6 通訊協定會先判斷您是否已將套接字系結至來源位址。 如果是,系結的來源位址會藉由提供介面號碼或月臺標識碼來解析模棱兩可。
如果您要傳送或連線到範圍位址,且未指定 sin6_scope_id 成員或系結來源位址,則 IPv6 通訊協定會檢查路由表。 例如,下列命令會在本機計算機上顯示 IPv6 路由表:
netsh 介面 ipv6 顯示路由
No Manual 256 fe80::/64 13 Local Area Connection
No Manual 256 fe80::/64 14 Wireless Network Connection
這表示連結本機位址預設會被視為介面 #13 和 #14 的連結。
當本機計算機有多個網路適配器時,就會發生模棱兩可的情況。 例如,上述 netsh 命令指出有兩個網路介面(局域網路連線和無線網路連線)。 當應用程式指定目的地連結本機位址 (例如fe80::10,例如), 沒有範圍識別元時,不清楚要用來傳送封包的適配卡。 只有連結本機單播 (fe80::/64) 或鏈接範圍多播 (ff00::/8) IPv6 目的地地址在傳送封包時沒有範圍標識符。
芳鄰探索
如果您尚未在 sockaddr_in6 結構中指定 sin6_scope_id 成員、未系結來源位址,也沒有指定連結本機位址的路由,則 IPv6 通訊協定會嘗試芳鄰探索來解析目的地連結本機位址。 針對傳送的指定封包,會嘗試一個介面。 嘗試的第一個介面會被視為最慣用的介面。 如果「芳鄰探索」無法解析介面上的連結本機位址,則會卸除要傳送的封包,且系統記得目的地連結本機位址無法透過該介面連線。 在下一個要以相同條件傳送的封包上,會針對芳鄰探索嘗試不同的介面。 此程式會持續在每個新封包的本機計算機上每個介面,直到芳鄰探索回應目的地連結本機位址或所有可能介面都已嘗試並失敗為止。 每次嘗試解析芳鄰失敗時,該芳鄰就會排除一個介面。
如果目的地連結本機位址解析,則會使用該介面來傳送目前的封包。 此介面也用於傳送至相同連結本機目的地位址的任何後續模棱兩可範圍的封包。
如果芳鄰探索無法解析所有介面上的目的地連結本機位址,系統接著會嘗試在最慣用的介面上傳送封包(嘗試的第一個介面)。 網路堆疊會持續嘗試解析最慣用介面上的目的地連結本機位址。 在鄰近探索在所有介面上失敗一段時間之後,網路堆疊會再次重新啟動程式,並嘗試解析所有介面上的目的地連結本機位址。 目前,當所有介面上再次嘗試芳鄰探索時,這個時間間隔是 60 秒。 不過,此時間間隔可能會在 Windows 版本上變更,應用程式不應假設此時間間隔。
注意
如果應用程式在芳鄰探索解析連結本機地址之後,將相同的連結本機位址系結至不同的介面,則不會使用芳鄰探索所傳回的連結本機位址覆寫介面。
如需IP第6版的芳鄰探索詳細資訊,請參閱IETF發佈的 RFC4861。
相關主題