Hello IPv6
前言
IPv4 大家都不陌生, 就是我們平常使用的32位網絡地址. 但是, 因為可能在其發展初期, 并沒有考慮的十分全面, 故而其存在一些缺陷:
其他方面倒都可以通過技術來解決, 但是地址不夠的問題已經愈發嚴重, 尤其是這個萬物互聯的時代. 所以, 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協議, 并沒有特別深入的了解各個協議工作機制, 此致
總結
以上是生活随笔為你收集整理的Hello IPv6的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java excutorthread_J
- 下一篇: 6大设计原则之单一职责原则