Hello IPv6

前言

IPv4 大家都不陌生, 就是我們平常使用的32位網絡地址. 但是, 因爲可能在其發展初期, 並沒有考慮的十分全面, 故而其存在一些缺陷:

  1. 32位二進制僅支持約43億個設備, 還不到全球的人口數量. (故而現在依賴於各種局域網轉換技術, 比如 NAT. 否則地址早就不夠用了. 但是 NAT 轉換, 可以讓你訪問互聯網的設備, 但是外面的設備不能訪問你. )
  2. 不支持 Qos. 簡單說就是語音通話的數據包優先級要高於文件下載數據包的優先級. 不同的數據流採用不同的優先級來保證信息的及時到達.
  3. ARP 欺騙. 因爲需要知道mac地址到IP地址的映射, 所以這中間就給了攻擊者可乘之機.
  4. 等等...

其他方面倒都可以通過技術來解決, 但是地址不夠的問題已經愈發嚴重, 尤其是這個萬物互聯的時代. 所以, IPv6的提出主要是爲了解決地址數量的問題.

不要問我IPv1 IPv2 IPv3 IPv5都哪去了, 估計是都腹死胎中了, 還沒來得及推廣就被 pass 了.

IPv4我們已經比較熟悉了, IPv6是什麼呢? 難道只是簡單的進行地址的擴充嗎? 我也很好奇.

IPv6

IPv6協議最顯而易見的變動, 就是其地址長度增加到了128位. 可容納約 3.4*10^38, 數不過來了, 反正很多就是了. 據說給地球上每一粒沙子都分配一個地址都綽綽有餘.

表示

既然是這麼大的數字, 在用原來的地址表示方式就不合適了, IPv6的地址的書寫一般使用16進制, 每16位分爲一組並用冒號隔開, 共8段. 大概就長這樣:

F00A:1234:7759:1239:EFAC:B976:9923:2946

這麼長度數字, 爲了能夠少寫一些, 有些約定的規則.

壓縮表示

允許壓縮0

某一組前面的0可以省略不寫. 既:

  • 8 => 0008
  • 80 => 0080

若出現連續的0, 可以用一對冒號表示

F00A:0:0:0:EFAC:B976:9923:2946 可以表示成 F00A::EFAC:B976:9923:2946

也就意味着兩個冒號中間全是0. 但是, 注意, 一個地址不能出現兩對雙冒號, 否則會造成意思不清晰, 不知道應該對應的補多少組0 .

網絡地址表示

IPv4的網絡地址通過子網掩碼來標識. 有時也使用/10這種形式. IPv6使用後者表示網絡地址.

地址分類

IPv4地址不是分了 A,B,C,D,E 五類地址嘛(雖然實際使用中感覺並沒有區分 ABC). 那麼IPv6有它自己的分類麼?

單播地址

既點到點通信使用的, 用來標識通信的對象. 就相當於IPv4的公網地址. 其地址爲:

  • 1-3組: 全球路由前綴. 用來標識具體的運營商地址, 比如北京電信.
  • 4組: 組織標識. 全球路由下的細分標識符. 比如某個小區, 某個公司.
  • 5-8組: 主機標識. 主機的唯一標識, 由mac地址填充組成

單播地址規定前三位必須是001.

本地鏈路地址

用來與同一個網絡中的主機進行通信. 不會被路由的. 本地鏈路地址與單播地址是同時存在的.

多播地址

用來標識一組主機. 以FF開頭. 將一個數據包發送給多個目標地址.

任播地址

現象: 爲了提高訪問速度, 一些比較大的公司都會在全國各地設置多個機房, 在對域名進行解析的時候, DNS服務器會將域名對應的IP按照由遠及近的順序返回給你, 這樣就可以優先連接距離較近的服務器. 但是有些時候, 可能DNS服務器判斷的也沒有那麼精準.

任播地址: IPv6協議提供了一個任播地址, 就是說你在全國各地設置的服務器使用同一個IPv6地址, 然後有沿途的路由器來進行選擇, 將數據包送到較近的服務器那裏. 再下載文件, 再也不用選擇網通還是電信線路了, 丟給路由器決定吧.

這這這, 現象就是這麼個現象, 具體是如何做到的呢? 我十分好奇的去查了資料, 越查越糊塗, 沒搞懂...

本機地址

::1 其作用就相當於IPv4中的127.0.0.1.

網絡層協議

隨着網絡層的IP協議升級, 與IP協議配套的就一起升級了. 其中一些協議就是換湯不換藥, 就是添加了對IPv6的支持, 其本質和IPv4時代一毛一樣.

  • ICMP: 由ICMPv6取代. 在原基礎上做了些內容擴充
  • ARP: 由ND取代(鄰居發現協議). 原來深受其害的ARP 欺騙, 我以爲在v6版本能得到改善, 然而並沒有從根本解決. 不過現在的解決方案倒是與HTTPS有些相似.
  • DHCP: 由DHCPv6取代. 分配網絡號.
  • IGMP: 由MLD取代(多播偵聽器發現協議)

我原以爲IPv6會在現有基礎上有很大的改變, 但是發現整套的方案基本不變, 不過每個對應的協議升級都做了一些相應的改進與擴充. 而工作在網絡層的IP協議升級, 下面的物理層以及上面的傳輸層不需要做出任何改變, 這就是面向接口編程的優秀之處, 可以局部升級而不會對上下造成影響, 否則協議升級想都不要想了.

不過再一想, 以後買服務器, 有公網 IP 就不用在多掏錢了, 嘿嘿, 畢竟標配嘛.


出於對IPv6的好奇, 簡單看了一下升級後的IP協議, 並沒有特別深入的瞭解各個協議工作機制, 此致

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章