IPv4 地址耗盡,為什么 IPv6 沒有廣泛將其取代?
IPv6 vs. IPv4
IPv6沒有子網(wǎng)掩碼
1111:2222:3333:4444:5555:6666:7777:8888
IPv6 不使用 NAT 技術(shù)
接下來我們繼續(xù)探討IPv6的特性:
IPv6地址具備自動(dòng)配置功能
操作系統(tǒng)(特別是操作系統(tǒng)的IPv6堆棧)會(huì)生成一個(gè)64位的設(shè)備標(biāo)識(shí)符,通常是隨機(jī)生成的,比如5555:6666:7777:8888,這個(gè)標(biāo)識(shí)符構(gòu)成了你的IPv6地址INTERFACE_ID部分。
操作系統(tǒng)會(huì)在該INTERFACE_ID前加上fe80,這是僅限本地使用的IPv6網(wǎng)絡(luò)前綴。因此,你現(xiàn)在得到的 IPv6 地址是:fe80::5555:6666:7777:8888。(請(qǐng)注意這里的”a::b”語法表示的是:“在’a’和’b’之間存在所有值為零的段”。關(guān)于這點(diǎn)我們稍后再詳細(xì)介紹。) 你的設(shè)備會(huì)將一個(gè)數(shù)據(jù)包發(fā)送到本地網(wǎng)絡(luò)上指定的鄰居多播組,以確保沒有其他設(shè)備使用相同的IPv6地址,這被稱為重復(fù)地址檢測(cè)(DAD)。而分配到重復(fù)地址的幾率很小。 設(shè)備將它獲取到的本地地址發(fā)送給路由器(與IPv4不同,在IPv6中,路由器始終可以通過組播地址ff02::2被訪問到),并通過發(fā)送一個(gè)RS(路由請(qǐng)求)ICMPv6數(shù)據(jù)包來請(qǐng)求路由器的實(shí)際前綴。路由器收到請(qǐng)求后,會(huì)通過RA(路由通告)數(shù)據(jù)包回應(yīng),并用回復(fù)的實(shí)際前綴替換掉fe80,設(shè)備隨后開始使用這個(gè)新的地址作為其永久地址。這就是你現(xiàn)在的IPv6互聯(lián)網(wǎng)地址。
IPv6的“神話”
IPv6也有一些夸大的說法,我們一起梳理澄清下:
你設(shè)備只有一個(gè)IPv6地址,可用于在所有地方
為宇宙中每個(gè)原子分配一個(gè)IP地址
每個(gè)設(shè)備的通用連接
從我看來,在某些情況下,IPv6的表現(xiàn)甚至不如IPv4:
IPv6的不足之處
在IPv4環(huán)境下,我們習(xí)以為常的一些功能,當(dāng)過渡到IPv6后可能會(huì)讓你懷念,例如:
依賴 ISP 提供子網(wǎng)劃分服務(wù)
IPv6地址在URI中需要額外編碼
http://[aaaa:bbbb:cccc:dddd:eeee:ffff:1111:2222]/path/?query
注意地址兩邊的方括號(hào)。但這還不是最糟糕的部分,因?yàn)椋?/span>
IPv6地址難以記憶
IPv6地址復(fù)雜
IPv6地址在表示形式上也有類似的多樣性。以下是其一些特征:
IPv6地址中的零值前綴不會(huì)顯示,因此2600:00ab
實(shí)際上顯示為2600:ab
。
這些都是有效的IPv6地址:
:: 表示所有零,即0:0:0:0:0:0:0:0.
2600::相當(dāng)于2600:0:0:0:0:0:0:0.
::ffff:1.1.1.1 等同于IPv4地址1.1.1.1 。
最終,在地址欄中輸入的IPv6地址可能看起來像下面這個(gè)人為構(gòu)造的例子:
https://[542b:b2ae:ed5c:cb5a:e38b:2c49:123:192.168.1.1%25eth3]
我可記不住這么長的地址。
通過這次學(xué)習(xí),讓我對(duì)IPv6的相關(guān)知識(shí)有了更清晰的認(rèn)識(shí)。例如,我以前不知道IPv6地址是通過無狀態(tài)協(xié)議自動(dòng)配置的,也不知道IPv6中沒有NAT技術(shù),更不了解地址空間是如何恰好被便捷地劃分為兩半的。
IPv6并未對(duì)終端用戶提供實(shí)質(zhì)好處
技術(shù)人怎么看?
@lxgr 在學(xué)習(xí)這篇文章后,針對(duì)作者提到的一些看法,有不同的意見:
針對(duì)“IPv6沒有子網(wǎng)掩碼”的說法,他認(rèn)為絕對(duì)是有子網(wǎng)掩碼的,只不過在IPv6中它們被稱為前綴長度。/64前綴剛好適合與SLAAC(無狀態(tài)地址自動(dòng)配置)配合使用。
防火墻穿越比NAT穿越更可預(yù)測(cè)且成功率更高。像VoIP、Tailscale等服務(wù)在IPv6環(huán)境下相比跨越一層或多層NAT的成功率大大提高。
家里的所有設(shè)備都可以獲取公網(wǎng)地址,他可以通過路由器上的防火墻規(guī)則選擇性地開放入站連接。 移動(dòng)網(wǎng)絡(luò)上的路由更為直接,從而降低了延遲(IPv4常常需要通過一系列昂貴且具有狀態(tài)的CG-NAT設(shè)備,在使用的移動(dòng)網(wǎng)絡(luò)服務(wù)商部署IPv6的地區(qū),這種情況得以避免)。