IPv4快枯竭了,于是提出了IPv6方案,使用了6字節網絡地址。
1. 這樣看來,每臺主機都可以固定唯一地址,或者干脆用mac地址作為IP好了,這樣不但實現了固定IP,也免去了分派IP的機構;
2. 既然地址都6個字節,搞個變長地址也不是問題啊,例如可以1~32字節,這樣就可以直接使用主機名作為網絡地址了。這樣也免去了那個讓人操心的DNS了。
這樣,不就省去兩張表了嗎?可是,IPv6為什么沒有這么做?
首先糾正一個問題中的一個錯誤,IPv6地址是128二進制位,或者16字節,而不是6個字節。題主可能對IPv6了解的較少,所以產生了很多誤解。
主機獲得IPv6地址的方法,相比IPv4更加多樣化,可以Stateless Auto-Configuration, 也可以Stateful DHCPv6, 也可以手工配置。 問題來了,IPv6地址是如何生成的?
無論采用以上三種方法的哪一種,這都是一個無法回避的問題,128位長長的二進制位是如何出爐的? 通常在IPv6網絡的一個網段里,都會至少有一個大神的存在,這個大神名字叫“Router”。其它連接在大神管轄下的主機,也有一個好聽的名字“Host”。
大神會周期性地自己的公眾號里發布一個消息“Router Advertisement”,用于宣示自己的存在,主要的用途有:
Prefix
用于Host跨網段通信的網關出口
指導Host如何配置IPv6地址
DNS Server 等參數
。。。
Host自從誕生那一刻起,就被強制訂閱大神的公眾號,終生訂閱且無法退訂。所以Host都可以收到大神每10秒推送的RA消息。
Host非常聽話,大神的話就是圣旨,于是就嚴格按照大神的吩咐行事。大神的消息里攜帶以下信息:
Prefix= 2001:1::/64
配置方式, SLAAC(Stateless Address Auto-Configuration)
DNS Server = 2001:8:8:8::8
既然大神已經發話了,配置IPv6地址需要自力更生。主機心領神會,IPv6一共128位,前綴64位(Prefix)大神已經分配好了,那么剩下的64位,稱其為后綴(Suffix),就可以自主生成了。
大神管轄下的主機們,使用一個共同的前綴“2001:1::/64”,如果后綴有沖突,那么生成的IPv6就會沖突(不唯一)。怎么樣才可以保證后綴唯一呢?
MAC地址
MAC地址一共48位,且全球唯一,如果使用MAC地址來衍生出后綴,沖突的可能性就非常非常小。
如何衍生出64位的后綴?
一個例子
主機的MAC = 00 01 02 03 04 05 ,將這6個字節,從中間切開,分別為“00 01 02”, “03 04 05”,在它們中間嵌入“FF FE”,一共8個字節,64位,“00 01 02 FF FE 03 04 05”。
完了嗎?
沒完,如果這個IPv6 地址是一個全球IPv6地址,還需要設置“G/L”狀態位為“1”。
G/L位在哪里?
從左到右數,0,1,2,3,4,5,6,第6位即為G/L位,將其置為“1”。那么“00 01 02 FF FE 03 04 05”將變成“02 01 02 FF FE 03 0405”。這個黃色加亮的后綴字符串,有一個響亮的名字“EUI-64”。
主機的IPv6= Prefix 字符串連接 Suffix= 2001:1:: 0201:02FF:FE03:0405/64
主機有了IP地址、默認網關、DNS服務器,就可以上網沖浪了。
IPv6地址泄露個人隱私
當用戶上網沖浪時,服務器可以立馬推導出客戶端的主機MAC = 00 01 02 03 04 05, 無論主機加入哪個大神管轄的IPv6, 后綴是永恒不變的,這就跟蹤用戶提供了便利。如果你很Care自己的個人隱私,你肯定不接受這樣的IP地址生成方式,對嗎?
這些憂慮,其實互聯網專家們已經幫助我們考慮好了,可以使隨機化Hash地址、臨時(Temporary)地址、CGA安全地址等等。
注:本文轉載自車小胖談網絡微信公眾號;文內內觀點僅供參考。如侵權,請聯系我刪除。