小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

圖文詳解 IPv6 :IPv4 都用完了,趕緊看它的了

 內(nèi)酷超人歸來(lái) 2021-10-29

圖片

初識(shí) IPv6

2019 年 11 月 25 日已分配完公網(wǎng) IPv4 地址,以后就沒有多余地址可以分配了。短期內(nèi)可以使用 NAT 技術(shù)進(jìn)行緩解。長(zhǎng)期來(lái)看,還是要用 128 位的 IPv6 地址替代 32 位的 IPv4 地址,IPv6 有 3.4×10^38 個(gè)可用地址,多得不得了,可以滿足未來(lái) IP 地址的需求。

圖片

IPv6 地址

IPv6 地址不但比 IPv4 的地址長(zhǎng)度長(zhǎng),還其它方面的不同。

1、IPv6 地址表示

32 位的 IPv4 地址,分隔成 4 個(gè) 8 位段,每 8 位段的值在 0 ~ 255 之間,每個(gè) 8 位段之間用 “ . ” 分開,這就是 “ 點(diǎn)分十進(jìn)制表示法 ” 。舉個(gè)栗子:

192.168.0.1

而 128 位的 IPv6 地址,是 IPv4 地址的 4 倍,如果用點(diǎn)分十進(jìn)制表示法,那么會(huì)有 16 個(gè)八位組,地址過于冗長(zhǎng)。為了使用方便, 使用十六進(jìn)制表示法,分隔成 8 個(gè) 16 位段,每 16 位段的值在 0000 ~ FFFF 的十六進(jìn)制數(shù)之間,每個(gè) 16 位段之間用 “ : ” 分開。舉個(gè)栗子:

2001:1111:0100:000a:0000:00bc:2500:0a0b

為了方便理解,可以查看下面的進(jìn)制轉(zhuǎn)換表

圖片

但是 IPv6 地址還是太長(zhǎng),不方便記憶,看著都頭暈,也不方便書寫,毫無(wú)規(guī)律可言。于是就有了兩條簡(jiǎn)化規(guī)則。第一條規(guī)則是:

  • 每組十六進(jìn)制數(shù)中開頭的 0 可以省略。

上面的 IPv6 地址可以寫成:2001:1111:100:a:0:bc:2500:a0b

這里需要注意,開頭的 0 才能省略,末尾的 0 是不能省略的,因?yàn)檫@樣會(huì)引起歧義,無(wú)法確定省略的 0 是在數(shù)字前還是數(shù)字后。

如果有個(gè) IPv6 地址有一串的 0 ,比如:

2001:0000:0000:0000:0000:0000:0000:0003

可以簡(jiǎn)寫成:

2001:0:0:0:0:0:0:3

這時(shí),還可以使用第二個(gè)規(guī)則進(jìn)行簡(jiǎn)化,第二條規(guī)則是:

  • 由全 0 組成的連續(xù)的 16 位段可以用一對(duì)冒號(hào) “ :: ” 表示。

上面的地址還可以簡(jiǎn)化成:

2001::3

這里需要注意,一個(gè) IPv6 地址內(nèi),只能使用一次 “ :: ” 表示。如果使用兩次及以上,也會(huì)產(chǎn)生歧義。舉個(gè)栗子:

2001:0a0c:0000:0000:0021:0000:0000:0077

正確的寫法有是:

2001:a0c::21:0:0:77

2001:a0c:0:0:21::77

如果使用了兩次 “ :: ” ,那么就是錯(cuò)誤的:

2001:a0c::21::77

有兩個(gè)全 0 字符串,就無(wú)法確定它們的長(zhǎng)度,上面錯(cuò)誤的地址會(huì)有幾種可能:

2001:0a0c:0000:0021:0000:0000:0000:0077

2001:0a0c:0000:0000:0021:0000:0000:0077

2001:0a0c:0000:0000:0000:0021:0000:0077

IPv4 的網(wǎng)段地址可以用子網(wǎng)掩碼表示,還可以用斜線法表示。IPv6 只能用斜線法表示網(wǎng)段地址,即在 IPv6 地址后面加上一個(gè)斜線 “ / ” ,后面加上一個(gè)十進(jìn)制的數(shù)字,來(lái)表示前面多少位是網(wǎng)絡(luò)位。網(wǎng)絡(luò)位是 64 位的 IPv6 地址表示如下:

3001:2222:333:aa:bc::707:9900/64

對(duì)應(yīng)的網(wǎng)段地址是:

3001:2222:333:aa::/64

全是 0 的 IPv6 地址可以寫成一對(duì)冒號(hào)。當(dāng)網(wǎng)絡(luò)位是 0 位時(shí),表示默認(rèn)地址。

::/0

當(dāng)網(wǎng)絡(luò)位是 128 位時(shí),表示未指定地址( unspecified address )。設(shè)備未分配 IPv6 地址時(shí),就用未指定地址作為標(biāo)識(shí)進(jìn)行報(bào)文交互。

::/128

2、IPv6 地址類型

IPv6 地址根據(jù)使用范圍和功能,分為三種類型:

  • 單播( Unicast )

  • 任意播( Anycast )

  • 組播( Multicast )

對(duì)比 IPv4 ,IPv6 地址中沒有廣播地址,但是有一個(gè)包含全部節(jié)點(diǎn)的組播地址,跟 IPv4 中的廣播地址功能相同。

其中單播地址又細(xì)分為全球單播地址、唯一本地地址鏈路本地地址等。

2.1 全球單播地址

單播地址表示單臺(tái)設(shè)備的地址。全球單播地址是指這個(gè)單播地址是全球唯一的。也就是說,全球單播地址是可以在公網(wǎng)使用、全網(wǎng)可路由的 IPv6 地址,類似于 IPv4 的公網(wǎng) IP 地址。全球單播 IPv6 地址是由 Internet 地址授權(quán)委員會(huì)( IANA )分配給地區(qū) Internet 注冊(cè)機(jī)構(gòu)( RIR ),再由 RIR 分配給 Internet 服務(wù)提供商( ISP )。

IANA 分配 128 位的 IPv6 地址時(shí),同 IPv4 一樣,也是分配一個(gè)網(wǎng)段,即網(wǎng)絡(luò)/子網(wǎng)位,不會(huì)分配 128 位的地址。IPv6 單播地址的通用格式如下:

圖片

全球單播 IPv6 地址的前 3 位固定為 001 ;第 4 ~ 48  位的這 45 位由地址分配機(jī)構(gòu)分配;48 位之后的 16 位是網(wǎng)絡(luò)劃分子網(wǎng)位,稱為子網(wǎng) ID ;剩余的 64 位 IPv6 地址就是主機(jī)位,但是叫做接口 ID( Interface ID )。因?yàn)橐慌_(tái)主機(jī)可以有幾個(gè)接口,用 IPv6 地址表示主機(jī)的一個(gè)接口更準(zhǔn)確,而不是表示一臺(tái)主機(jī)。同時(shí),一個(gè)接口可以有多個(gè) IPv6 地址,還可以有一個(gè) IPv4 地址,接口 ID 只是這個(gè)接口的幾個(gè)標(biāo)識(shí)符之一。

通常,全球 IPv6 地址的接口 ID 是 64 位,子網(wǎng) ID 是 16 位。一個(gè) 16 位的子網(wǎng) ID 可以劃分 65536 個(gè)不同的子網(wǎng)。很少有這么多子網(wǎng)的網(wǎng)絡(luò),因此全球單播 IPv6 地址還有另外一種格式:前綴是 n 位,子網(wǎng) ID 是 64-n 位,接口 ID 也是 64 位。兩種格式也不是矛盾的。

將全球單播 IPv6 地址的前 3 位固定值轉(zhuǎn)換為 IPv6 表示法,可知全球單播地址的前綴為 2000::/3

IANA 和 RIR 把長(zhǎng)度 /32 或 /35 的 IPv6 前綴分配給本地 Internet 注冊(cè)機(jī)構(gòu)( LIR )。LIR 通常是大型的 ISP ,LIR 分配前綴長(zhǎng)度 /48 的 IPv6 地址給各個(gè)客戶。也有一些例外,會(huì)分配不同長(zhǎng)度的前綴:

  • 如果一個(gè)客戶非常龐大,那么可以分配一個(gè)長(zhǎng)度小于 /48 的前綴。

  • 如果有且僅有一個(gè)子網(wǎng)需要地址,那么可以分配一個(gè)長(zhǎng)度是 /64 的前綴。

  • 如果有且僅有一臺(tái)設(shè)備需要地址,那么可以分配一個(gè)長(zhǎng)度是 /128 的前綴。

2.2 IPv6 地址類型

IPv6 地址開頭的二進(jìn)制標(biāo)識(shí)地址類型。比如:全球單播地址的前 3 位是 001 。

圖片

2.3 本地單播地址

除了全球單播地址,還有幾種其它類型的本地單播地址,分別應(yīng)用在不同的場(chǎng)景。

有哪些本地單播地址呢?

本地單播地址有 4 種類型,分別是唯一本地地址鏈路本地地址、未指定地址回環(huán)地址。

  • 唯一本地地址

雖然 IPv6 地址非常充足,但是 IANA 還是分配了一段可以在私有網(wǎng)絡(luò)使用的私有 IP 地址空間。這種可以自行使用而不用申請(qǐng)的單播 IPv6 地址叫做唯一本地地址。唯一本地地址只能在私有網(wǎng)絡(luò)使用,不能在全球路由,不同的私網(wǎng)可以復(fù)用這類地址。它的作用和范圍跟 IPv4 的私有 IP 地址相同。

唯一本地地址的前 7 為固定是 1111110 ,前綴為 FC00::/7 的 IPv6 地址。之前還有站點(diǎn)本地地址( Site Local Address ),前綴是 FEC0::/10 ,已被ULA取代。

圖片

唯一本地地址的第 8 位比較特殊。第 8 位為 0 時(shí),未定義,也就是說,FC00::/8 這個(gè) IPv6 地址前綴屬于保留的地址空間。目前私有網(wǎng)絡(luò)使用的 IPv6 地址是以 11111101 開頭的,即前綴為 FD00::/8 的 IPv6 地址。

圖片

  • 鏈路本地地址

IPv6 的鏈路本地地址( Link-Local Address ),是 IPv4 地址中沒有的類型,是 IPv6 新定義的地址類型。

鏈路本地地址是只在鏈路內(nèi)有效的地址。啟動(dòng) IPv6 時(shí),網(wǎng)絡(luò)接口會(huì)自動(dòng)配置這樣的一個(gè) IPv6 地址,就可以直接和同一鏈路上的其它設(shè)備通信。因?yàn)殒溌繁镜氐刂分辉阪溌繁镜赜行В赃@些數(shù)據(jù)包不會(huì)被發(fā)送到其它鏈路上。

鏈路本地地址的前 10 位固定是 1111111010 ,之后的 54 位固定為 0 ,最后 64 位是接口 ID 。也就是說,鏈路本地地址的前綴為 FE80::/10 。

圖片

如果鏈路本地地址的前 64 位都是相同的,那么接口如何使用 64 位的接口 ID 進(jìn)行標(biāo)識(shí),才能確保鏈路本地地址在鏈路中不會(huì)出現(xiàn) IP 地址沖突呢?答案是接口使用自己的物理 MAC 地址來(lái)填充接口 ID 字段。理論上接口的 MAC 地址是唯一的,因此通過 MAC 地址生成的接口 ID 和鏈路本地地址也是唯一的。

把 MAC 地址轉(zhuǎn)換成接口 ID ,使用 MAC-to-EUI64 轉(zhuǎn)換法。簡(jiǎn)單的講,就是使用接口的 48 位 MAC 地址,在 MAC 地址中間,也就是 OUI 后面,插入一個(gè)固定的十六進(jìn)制數(shù) 0xFFFE ,并把第 7 位的 U/L (全局/本地)位設(shè)置為 1 ,這樣就轉(zhuǎn)換為一個(gè) 64 位的接口 ID 。

圖片

  • 未指定地址

未指定地址是 128 位全為 0 的前綴地址,簡(jiǎn)寫成 ::/128 ,相當(dāng)于 IPv4 中的 0.0.0.0/32 。這個(gè)地址不能分配給接口使用,只有當(dāng) IPv6 設(shè)備還沒獲取到地址時(shí),才將未指定地址作為數(shù)據(jù)包的源 IPv6 地址。

  • 回環(huán)地址

回環(huán)地址是前 127 位全為 0 ,最后一位是 1 的 128 位前綴地址,簡(jiǎn)寫成 ::1/128 ,相當(dāng)于 IPv4 中的回環(huán)地址 127.0.0.1/8 。回環(huán)地址表示節(jié)點(diǎn)自己,不能分配給接口使用。只要設(shè)備的協(xié)議棧狀態(tài)正常,設(shè)備就可以收到發(fā)送給回環(huán)地址的數(shù)據(jù)包。

2.4 任意播地址

IPv6 定義了一種任性的功能,通過任意播地址( Anycast Address )實(shí)現(xiàn)。任意播地址是根據(jù)功能定義的,而不是根據(jù)報(bào)文格式,IPv6 沒有定義任意播的地址空間,與單播使用相同的地址空間。所以,無(wú)法根據(jù)地址判斷是單播地址還是任意播地址。

單播是一對(duì)一,組播是一對(duì)多,廣播是一對(duì)全體,那么任意播就是一對(duì)最近的通信方式。

圖片

一個(gè)任意播地址可以分配給多臺(tái)設(shè)備,路由器會(huì)有多條路由到達(dá)相同的目的地,選擇代價(jià)最小的路由進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。在大型網(wǎng)絡(luò)中,流量可以發(fā)送到最近的設(shè)備,數(shù)據(jù)傳輸效率更高。而且當(dāng)最近的設(shè)備故障時(shí),路由器可以把路由指向下一臺(tái)最近的路由器。

圖片

2.5 組播地址

組播地址不是標(biāo)識(shí)一臺(tái)設(shè)備,而是一組設(shè)備:一個(gè)組播組( Multicast Group )。發(fā)送組播數(shù)據(jù)包通常是單臺(tái)設(shè)備,可以是組播組成員,也可以是其它主機(jī),數(shù)據(jù)包的目的地址是組播地址。

組播組成員有可能是一臺(tái)設(shè)備,也可能是這個(gè)網(wǎng)絡(luò)上的所有設(shè)備。IPv6 沒有廣播地址,但是有一個(gè)包含所有節(jié)點(diǎn)的組播組,和廣播地址做相同的事情:所有節(jié)點(diǎn)都是這個(gè)組播組的成員。

組播地址的前 8 位全是 1 ,后面跟著 4 位標(biāo)記位,再后面就是 4 位表示地址范圍。最后的 112 位作為組 ID ( Group ID ),標(biāo)識(shí)不同的組播組。前面的 80 位是 0 ,只使用后面的 32 位。

圖片

4 位標(biāo)記位中,第 1 位是保留標(biāo)記位,未使用,使用固定值 0 。第 2 位用于匯集點(diǎn)( Rendezvous Point ),匯集點(diǎn)是組播的一個(gè)概念,叫做 R 位,通常取值為 0 。第 3 位表示組播地址是否帶了前綴,叫做 P 位。組播地址沒前綴,取值為 0 。大多數(shù)情況是 0 。最后一位是 T 位,值為 0 時(shí)表示是已定義的、永久的組播地址;值為 1 時(shí)是臨時(shí)充當(dāng)一些設(shè)備的組播組。因此,各個(gè)協(xié)議使用的組播組是以 FF0 開頭的 IPv6 地址,而自定義的組播組是以 FF1 開頭的。

組播地址和單播地址一樣,有一個(gè)有效范圍,4 為范圍位定義了組播地址的使用范圍。不同取值的范圍表如下:

圖片

常見的 IPv6 組播地址的格式是標(biāo)記位的值是 0 ,范圍位的值是 2 ,即前綴為 FF02 的組播地址。

圖片

2.6 嵌入的 IPv4 地址

在 IPv6 地址的環(huán)境中使用 IPv4 地址,需要用到轉(zhuǎn)換技術(shù),把 IPv4 地址轉(zhuǎn)換成 IPv6 地址。比如 6to4 技術(shù)就是將 IPv4 地址轉(zhuǎn)換成 16 進(jìn)制數(shù),再嵌入到 IPv6 地址的最后 32 位。

ICMPv6

IPv6 也是使用 ICMP 來(lái)管理網(wǎng)絡(luò),實(shí)現(xiàn)錯(cuò)誤檢查和報(bào)告機(jī)制功能。IPv4 協(xié)議中 ICMP 使用的協(xié)議號(hào)是 1 ,而 IPv6 協(xié)議中 ICMPv6 使用的值是 58 。ICMPv6 對(duì)于頭部字段的定義也與 ICMP 相同。

圖片

ping 功能也是使用 Echo 請(qǐng)求和 Echo 應(yīng)答報(bào)文。除此之外,還有一個(gè)基于 ICMP 的新協(xié)議:鄰居發(fā)現(xiàn)協(xié)議。

NDP

IPv6 的鄰居發(fā)現(xiàn)協(xié)議( NDP )相當(dāng)于 IPv4 的 ARP 、ICMP 的路由器發(fā)現(xiàn)和 ICMP 的重定向,還可以發(fā)現(xiàn)網(wǎng)絡(luò)中使用的 IPv6 地址前綴等參數(shù),并實(shí)現(xiàn)地址自動(dòng)配置等。IPv6 協(xié)議通過 NDP 功能實(shí)現(xiàn)即插即用特性:

  • 路由器發(fā)現(xiàn)( Router Discovery ):當(dāng)一個(gè)節(jié)點(diǎn)接入到 IPv6 鏈路時(shí),它可以發(fā)現(xiàn)鏈路上的路由器,而不需要借助使用 DHCP 。

  • 前綴發(fā)現(xiàn)( Prefix Discovery ):當(dāng)一個(gè)節(jié)點(diǎn)接入到 IPv6 鏈路時(shí),它能夠發(fā)現(xiàn)鏈路的前綴。

  • 參數(shù)發(fā)現(xiàn)( Parameter Discovery ):節(jié)點(diǎn)能夠發(fā)現(xiàn)所在鏈路的參數(shù),像鏈路的 MTU 和跳數(shù)限制等。

  • 地址自動(dòng)配置( Address Autoconfiguration ):節(jié)點(diǎn)能夠自動(dòng)配置,不需要使用 DHCP 。

  • 地址解析( Address Resolution ):節(jié)點(diǎn)不需要通過 ARP 就能夠獲取鏈路上其它節(jié)點(diǎn)的 MAC 地址。

  • 下一跳確定( Next-Hop Determination ):能夠確定到達(dá)目的節(jié)點(diǎn)的下一跳鏈路層節(jié)點(diǎn),或者所在鏈路的目的節(jié)點(diǎn),或是到達(dá)目的節(jié)點(diǎn)的路由器。

  • 鄰居不可達(dá)檢測(cè)( Neighbor Unreachability Detection ):節(jié)點(diǎn)上能夠檢測(cè)到鏈路上的鄰居何時(shí)不可達(dá),鄰居有可能是主機(jī),也可能是路由器。

  • 地址沖突檢測(cè)( Duplicate Address Detection ):節(jié)點(diǎn)能夠檢測(cè)到要使用的地址是否已經(jīng)被其它節(jié)點(diǎn)占用。

  • 重定向( Redirect ):對(duì)于非連接的目的節(jié)點(diǎn),路由器能夠通知主機(jī)存在更好的下一跳路由。

NDP 報(bào)文是在數(shù)據(jù)鏈路內(nèi)接收和發(fā)送,因此封裝 NDP 的數(shù)據(jù)包是使用 IPv6 鏈路本地地址,或者是鏈路范圍內(nèi)的組播地址。在安全性上也有加強(qiáng),NDP 報(bào)文的跳數(shù)限制255 。如果收到的數(shù)據(jù)包的跳數(shù)限制值小于 255 ,那么這個(gè)數(shù)據(jù)包至少經(jīng)過了一臺(tái)路由器,因此丟棄這個(gè)數(shù)據(jù)包。這樣可以阻止 NDP 不會(huì)受到非本地鏈路的攻擊或欺騙。

1、NDP 報(bào)文

NDP 定義了 5 種報(bào)文類型,且跳數(shù)限制字段值都是 255 。如果收到的 NDP 報(bào)文中跳數(shù)限制字段值不是 255 ,那么會(huì)丟棄這個(gè) NDP 報(bào)文。在 ICMPv6 封裝這 5 種 NDP 報(bào)文時(shí),編碼字段都是 0 ,不同報(bào)文類型通過類型值來(lái)標(biāo)識(shí):

  • 路由器請(qǐng)求( Router Solicitation ,RS ):路由器請(qǐng)求報(bào)文是由主機(jī)發(fā)出的,用來(lái)請(qǐng)求鏈路中的路由器發(fā)送一個(gè) RA 。類型字段值是 133 。

  • 路由器通告( Router Advertisement ,RA ):路由器通告報(bào)文是路由器發(fā)出的,用來(lái)通告路由器的存在和鏈路參數(shù),比如:鏈路前綴、鏈路 MTU ,以及跳數(shù)限制等。這些報(bào)文周期性的發(fā)送,也用于響應(yīng)路由器請(qǐng)求報(bào)文。類型字段值是 134 。

  • 鄰居請(qǐng)求( Neighbor Solicitation ,NS ):也是有主機(jī)發(fā)起,用來(lái)請(qǐng)求另一臺(tái)主機(jī)的 MAC 地址,也用于地址沖突檢測(cè)、鄰居不可達(dá)檢測(cè)。類型字段值是 135 。

  • 鄰居通告( Neighbor Advertisement ,NA ):用于響應(yīng)鄰居請(qǐng)求報(bào)文。如果一個(gè)節(jié)點(diǎn)改變了 MAC 地址,那么它通過發(fā)送一個(gè)未請(qǐng)求的鄰居通告報(bào)文來(lái)告知這個(gè)新地址。類型字段值是 136 。

  • 重定向( Redirect ):跟 IPv4 協(xié)議中的 ICMP 用法相同,只不過是移植到 NDP 中。類型字段值是 137 。

2、路由器發(fā)現(xiàn)

路由器在所在的鏈路上周期性發(fā)送 RA ,告知它的存在和配置的所有參數(shù)。未收到請(qǐng)求的 RA 的源地址是路由器接口的鏈路本地 IPv6 地址,目的地址是所有節(jié)點(diǎn)的組播地址( FF02::1 )。

剛接入到鏈路的主機(jī),需要等待一個(gè) RA ,用來(lái)發(fā)現(xiàn)鏈路上的路由器和鏈路參數(shù)。默認(rèn)等待 200 秒的時(shí)間太長(zhǎng)。所以,主機(jī)激活時(shí),就會(huì)發(fā)送一個(gè) RS ,這個(gè)報(bào)文的源地址可以是未指定地址( :: ),也可以是主機(jī)的鏈路本地 IPv6 地址。目的地址就是所有路由器的組播地址( FF02::2 ),請(qǐng)求鏈路本地路由器為主機(jī)提供一些信息。

只有路由器才會(huì)監(jiān)聽鏈路本地路由器組播地址,當(dāng)路由器收到 RS 時(shí),就會(huì)發(fā)送一條 RA 作為響應(yīng)。如果收到報(bào)文的源地址是鏈路本地地址,那么使用鏈路本地地址單播發(fā)送。如果源地址是未指定地址( :: ),那么會(huì)以組播方式發(fā)送給所有節(jié)點(diǎn)( FF02::1 )。

圖片

當(dāng)主機(jī)收到 RS 時(shí),會(huì)把路由器的鏈路本地地址作為默認(rèn)路由地址,添加到自己的路由表中。如果路由器列表有多條默認(rèn)路由器條目,那么主機(jī)要給出選定默認(rèn)路由器的方法。要么是整個(gè)默認(rèn)路由器列表依次輪詢,要么選擇單臺(tái)路由器作為默認(rèn)路由。

3、地址自動(dòng)配置

當(dāng)一臺(tái) IPv6 的設(shè)備第一次接入鏈路時(shí),它能夠自動(dòng)配置自己的接口地址。這個(gè)過程的第一步就是確定 64 位接口 ID 部分,使用 MAC-to-EUI64 轉(zhuǎn)換法獲取接口 ID 。

當(dāng)然,接口 ID 只是 IPv6 地址的一半,還需要一個(gè) 64 位的前綴。前面提到過,鏈路本地前綴是 0xFF80::/10 。用它作為 64 位前綴( 0xFF80::/64 ),再加上轉(zhuǎn)換后的接口 ID ,就是一個(gè)完整的 IPv6 地址,可以和同一鏈路上設(shè)備進(jìn)行通信。

如果一臺(tái)主機(jī)只需要和所在鏈路上的設(shè)備通信,那么它自動(dòng)配置的鏈路本地地址就已經(jīng)滿足了。但是如果主機(jī)需要和鏈路之外的設(shè)備通信,那么它就需要一個(gè)更大范圍的地址,通常是一個(gè)全球 IPv6 地址。有兩種途徑獲取這類地址:有狀態(tài)或無(wú)狀態(tài)的地址自動(dòng)配置。

使用 DHCPv6 服務(wù)器來(lái)分配 IPv6 地址,稱為有狀態(tài)地址自動(dòng)配置。主機(jī)要么根據(jù)預(yù)先的配置查找 DHCPv6 服務(wù)器,要么收到字段 M 置位的路由器通告報(bào)文來(lái)獲取 DHCPv6 服務(wù)器。

更有趣的是無(wú)狀態(tài)地址自動(dòng)配置( Stateless Address Autoconfiguration ,SLAAC ),不依賴服務(wù)器、不需要手動(dòng)配置。這個(gè)過程非常簡(jiǎn)單,當(dāng)一臺(tái) IPv6 設(shè)備接入網(wǎng)絡(luò)時(shí),會(huì)發(fā)送 RS 來(lái)查詢網(wǎng)絡(luò)中是否存在路由器。RA 有一個(gè)字段可以告訴 IPv6 設(shè)備使用哪種方式配置自己的 IPv6 地址,這個(gè)字段稱為 M 位。如果 M 位置位,值為 1 時(shí),表示設(shè)備通過 DHCPv6 協(xié)議動(dòng)態(tài)配置 IPv6 地址;如果 M 位不置位,值為 0 時(shí),則表示設(shè)備通過 SLAAC 來(lái)配置 IPv6 地址。

IPv6 設(shè)備從收到的 RA 中獲取一個(gè)或多個(gè)鏈路前綴,再加上之前確定的接口 ID ,就得到了一個(gè)全球唯一的 IPv6 地址。

IPv6 設(shè)備執(zhí)行 SLAAC 的過程,不需要人工干預(yù),也沒有 DHCP 服務(wù)器參與,設(shè)備自行完成配置。也就是說,這種機(jī)制為 IPv6 網(wǎng)絡(luò)提供了即插即用功能。

4、鄰居地址解析

IPv4 通過 ARP 獲取 MAC 地址,然而 ARP 協(xié)議無(wú)法照搬到 IPv6 環(huán)境中,IPv6 沒有定義廣播地址。為了解決查詢目的設(shè)備的 MAC 地址問題, IPv6 通過 NDP 獲取 MAC 地址。IPv6 設(shè)備使用 NS 和 NA 來(lái)實(shí)現(xiàn) MAC 地址的查詢和響應(yīng)。IPv6 使用目的節(jié)點(diǎn)組播地址作為 NS 的目的地址。

目的節(jié)點(diǎn)的組播地址的前 104 位固定是 FF02::1:FF ,后 24 位使用目的單播 IPv6 地址接口 ID 的后 24 位。當(dāng)接口獲取一個(gè)單播或任意播 IPv6 地址時(shí),就會(huì)同時(shí)監(jiān)聽發(fā)送給這個(gè)單播地址對(duì)于的目的節(jié)點(diǎn)組播地址。

如果目的節(jié)點(diǎn)是鏈路之外的節(jié)點(diǎn),那么可以通過路由器通告報(bào)文,獲取默認(rèn)路由器的 MAC 地址。如果目的節(jié)點(diǎn)在鏈路內(nèi),那么節(jié)點(diǎn)會(huì)先查找鄰居緩存看一下是否已經(jīng)學(xué)到這個(gè)地址。IPv6 的鄰居緩存和 IPv4 的 ARP 緩存相似,記錄 IP 地址和 MAC 地址的對(duì)應(yīng)關(guān)系。

如果地址不在鄰居緩存中,節(jié)點(diǎn)會(huì)發(fā)送一個(gè) NS 。目的節(jié)點(diǎn)收到報(bào)文后,就知道源節(jié)點(diǎn)的 MAC 地址,并回復(fù)鄰居通告報(bào)文。

如果目的節(jié)點(diǎn)存在并且收到了 NS ,那么它會(huì)回復(fù)一個(gè) NA 。這個(gè) NA 的目的地址就是源節(jié)點(diǎn)的源地址。收到響應(yīng)的 NA 后,源節(jié)點(diǎn)就把目的節(jié)點(diǎn)的 MAC 地址添加到鄰居緩存的條目中。

NDP 的 NA 還有另一種用法,當(dāng) IPv6 節(jié)點(diǎn)的 MAC 地址發(fā)生變化時(shí),也可以在未收到 NS 的情況下,直接向本地鏈路發(fā)生一條 NA ,向本地鏈路上其它設(shè)備通告新的 IPv6 地址和 MAC 地址的對(duì)應(yīng)關(guān)系。因?yàn)槟康氖峭ǜ娼o鏈路中所有設(shè)備,而不是某一臺(tái)設(shè)備,所有 NA 的目的地址就是鏈路本地所有節(jié)點(diǎn)組播地址( FF02::1 )。

5、地址沖突檢測(cè)

雖然通過 MAC 地址轉(zhuǎn)換成接口 ID ,大多數(shù)情況下可以保證是設(shè)備地址是唯一的,但是也可能存在重復(fù) MAC 地址的情況,因此不管設(shè)備是如何獲取地址的,都需要在使用之前進(jìn)行地址沖突檢測(cè)。

獲取一個(gè)地址的節(jié)點(diǎn)會(huì)把新地址作為臨時(shí)狀態(tài)的地址。在地址沖突檢測(cè)完成前,地址不能被使用。節(jié)點(diǎn)會(huì)發(fā)送目的地址是新地址的 NS 來(lái)驗(yàn)證。NS 的源地址是未指定地址,目的地址是目的節(jié)點(diǎn)的組播地址。

如果節(jié)點(diǎn)收到一個(gè) NS ,并且目的地址是這個(gè)節(jié)點(diǎn)已經(jīng)使用的地址,就會(huì)發(fā)送一個(gè)目的地址為已使用地址的 NA 。源節(jié)點(diǎn)收到 NA 后,就會(huì)知道這個(gè)地址是沖突的,并且不能使用。

6、私有地址

無(wú)狀態(tài)地址自動(dòng)配置會(huì)有一個(gè)安全隱患:即使一臺(tái)設(shè)備從一個(gè)子網(wǎng)轉(zhuǎn)移到另一個(gè)子網(wǎng),它的接口 ID 始終保持不變。那么就可以通過接口 ID 來(lái)識(shí)別用戶,推斷出用戶的所在位置,追蹤用戶的活動(dòng)和位置記錄,暴露個(gè)人隱私信息。

這個(gè)問題可以通過 IPv6 私有地址來(lái)解決。私有地址是隨機(jī)生成的接口 ID 。接口 ID 通常一天變化一次,也會(huì)在獲取一個(gè)新的 IPv6 地址時(shí)改變。

但是服務(wù)器的地址不需要經(jīng)常變化。跟服務(wù)器通信的節(jié)點(diǎn),以及 DNS 服務(wù)器必須通過靜態(tài)地址了解服務(wù)器的位置。因此,標(biāo)準(zhǔn)的無(wú)狀態(tài)配置的 IPv6 地址保留“公共”地址,任何一個(gè)向服務(wù)器發(fā)送數(shù)據(jù)時(shí),使用這個(gè)地址作為目的地址。但是服務(wù)器發(fā)送數(shù)據(jù)時(shí),使用的卻是私有地址。這就像公司的分機(jī)短號(hào)一樣,你能看見是誰(shuí)在打你電話,但是別人看不到你的號(hào)碼。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多