之前在公眾號寫的文章補檔
據稱,11 月 26 日,負責英國、歐洲、中東和部分中亞地區互聯網資源分配的歐洲網絡協調中心宣布,全球所有 43 億個 IPv4 地址已全部分配完畢。意味著再也沒有新接入的互聯網設備在也無法分配到新的 IP 地址。在目前的形勢下,利益相關的同學們第一反應會想到什麼呢?是提高 IP 地址利用率的無類域間路由還是為 IPv4 續命立下汗馬功勞的 NAT 技術?
不得不說,靠 IPv4 協議也就圖個樂呵,想要徹底解決地址分配問題還得看我 IPv6 協議
今天由於篇幅有限,主要專注於 IPv6 的地址解析
IPv6 的優勢#
- 地址空間大,理論上存在 2^128 個地址,幾乎不用擔心地址短缺問題
- 減少路由表大小,路由器處理報文性能提高
- 安全性得到提高
- 服務質量好,服務類型擴展靈活豐富
- 支持可移動主機和網絡
- 兼容性強,可完全向下兼容 IPv4
- ...
IPv6 地址#
IPv6 地址的 128 位地址被分成 8 段,每 16 位一段,分別被轉成 4 位十六進制數這種表示方法稱之為 “冒號十六進制表示法”。
地址格式:
X:X:X:X:X:X:X
壓縮表示
-
地址中包含的連續兩個或多個均為 0 的組,可以用雙冒號 “::” 來代替。
如
FC00:0:130F:0:0:9C0:876A:130B
可寫作FC00:0:130F::9C0:876A:130B
注意:
-
::
代表的 0 位數必須最大化;錯誤示例:
FC00:0:130F:0:0:9C0:876A:130B
不能寫作FC00:0:130F::0:9C0:876A:130B
-
不能只代表一個全 0 段;
錯誤示例:
FC00:1:130F:0:1:9C0:876A:130B
不能寫作FC00:1:130F::1:9C0:876A:130B
-
如果多個連續全 0 段長度相同,必須的代表最前面的那個
錯誤示例:
FC00:0:130F:0:0:9C0:0:0
不能寫作FC00:0:130F:0:0:9C0::
-
-
前導 0 可以省略
如
FC00:0000:130F:0000:0000:09C0:876A:130B
可以寫作FC00:0:130F:0:0:9C0:876A:130B
地址結構
一個 IPv6 地址可以分為如下兩部分:
- 網絡前綴:n 比特,相當於 IPv4 地址中的網絡 ID
- 接口標識:128-n 比特,相當於 IPv4 地址中的主機 ID
表示形式如FF00::/8
代表地址/前綴長度
接口標識可通過三種方法生成:手工配置、系統通過軟件自動生成或 IEEE EUI-64 規範生成。其中,EUI-64 規範自動生成最為常用
地址分類
-
單播地址
一對一
常見的單播地址
-
未指定地址
::/128
該地址可以表示某個接口或者節點還沒有 IP 地址,可以作為某些報文的源 IP 地址
-
環回地址
::1/128
就是本地地址
-
全球單播地址:帶有全球單播前綴,目前已經分配的全球路由前綴的前 3bit 均為
001
帶有全球單播前綴的 IPv6 地址,其作用類似於 IPv4 中的公網地址
-
鏈路本地地址 :使用了特定的本地鏈路前綴
FE80::/10
鏈路本地地址是 IPv6 中的應用範圍受限制的地址類型,只能在連接到同一本地鏈路的節點之間使用
-
唯一本地地址:前綴固定為・
FC00::/7
也是一種應用範圍受限的地址,它僅能在一個站點內使用,類似於 IPv4 中的私網地址
-
-
組播地址
IPv6 的組播與 IPv4 相同,用來標識一組接口,一般這些接口屬於不同的節點.
IPv6 組播地址的前綴是
FF00::/8
- 標誌用來標識組播地址身份
- scop 用來限制組播數據流在網絡中發送的範圍
- group ID 標識組播組
-
任播地址
任播地址標識一組網絡接口(通常屬於不同的節點)。目標地址是任播地址的數據包將發送給其中路由意義上最近的一個網絡接口。主要用來在給多個主機或者節點提供相同服務時提供冗余功能和負載分擔功能。
注:IPv6 任播地址僅可以被分配給路由設備,不能應用於主機。任播地址不能作為 IPv6 報文的源地址
整理了一下一個 IPv6 主機上一個接口可以具備的常見 IPv6 地址