Linux中國

IPv6:IPv4犯的錯,為什麼要我來彌補

IPv4IPv6 的區別

IPv4 做錯了什麼?

自從1981年發布了 RFC 791 標準以來我們就一直在使用 IPv4。在那個時候,電腦又大又貴還不多見,而 IPv4 號稱能提供40億條 IP 地址,在當時看來,這個數字好大好大。不幸的是,這麼多的 IP 地址並沒有被充分利用起來,地址與地址之間存在間隙。舉個例子,一家公司可能有254(2 8-2)條地址,但只使用其中的25條,剩下的229條被空占著,以備將來之需。於是這些空閑著的地址不能服務於真正需要它們的用戶,原因就是網路路由規則的限制。最終的結果是在1981年看起來那個好大好大的數字,在2014年看起來變得好小好小。

互聯網工程任務組(IETF)在90年代初指出了這個問題,並提供了兩套解決方案:無類型域間選路(CIDR)以及私有IP地址。在 CIDR 出現之前,你只能選擇三種網路地址長度:24 位 (共16,777,214個可用地址), 20位 (共1,048,574個可用地址)以及16位 (共65,534個可用地址)。CIDR 出現之後,你可以將一個網路再劃分成多個子網。

舉個例子,如果你需要5個 IP 地址,你的 ISP 會為你提供一個子網,裡面的主機地址長度為3位,也就是說你最多能得到6個地址(LCTT:拋開子網的網路號,3位主機地址長度可以表示0~7共8個地址,但第0個和第7個有特殊用途,不能被用戶使用,所以你最多能得到6個地址)。這種方法讓 ISP 能盡最大效率分配 IP 地址。「私有地址」這套解決方案的效果是,你可以自己創建一個網路,裡面的主機可以訪問外網的主機,但外網的主機很難訪問到你創建的那個網路上的主機,因為你的網路是私有的、別人不可見的。你可以創建一個非常大的網路,因為你可以使用16,777,214個主機地址,並且你可以將這個網路分割成更小的子網,方便自己管理。

也許你現在正在使用私有地址。看看你自己的 IP 地址,如果這個地址在這些範圍內:10.0.0.0 – 10.255.255.255172.16.0.0 – 172.31.255.255192.168.0.0 – 192.168.255.255,就說明你在使用私有地址。這兩套方案有效地將「IP 地址用盡」這個災難延遲了好長時間,但這畢竟只是權宜之計,現在我們正面臨最終的審判。

IPv4 還有另外一個問題,那就是這個協議的消息頭長度可變。如果數據的路由通過軟體來實現,這個問題還好說。但現在路由器功能都是由硬體提供的,處理變長消息頭對硬體來說是一件困難的事情。一個大的路由器需要處理來自世界各地的大量數據包,這個時候路由器的負載是非常大的。所以很明顯,我們需要固定消息頭的長度。

在分配 IP 地址的同時,還有一個問題,網際網路是美國人發明的(LCTT:這個萬惡的資本主義國家佔用了大量 IP 地址)。其他國家只得到了 IP 地址的碎片。我們需要重新定製一個架構,讓連續的 IP 地址能在地理位置上集中分布,這樣一來路由表可以做的更小(LCTT:想想吧,網速肯定更快)。

還有一個問題,這個問題你聽起來可能還不大相信,就是 IPv4 配置起來比較困難,而且還不好改變。你可能不會碰到這個問題,因為你的路由器為你做了這些事情,不用你去操心。但是你的 ISP 對此一直是很頭疼的。

下一代網際網路需要考慮上述的所有問題。

IPv6 和它的優點

IETF 在1995年12月公布了下一代 IP 地址標準,名字叫 IPv6,為什麼不是 IPv5?→_→ 因為某個錯誤原因,「版本5」這個編號被其他項目用去了。IPv6 的優點如下:

  • 128位地址長度(共有3.402823669×10³⁸個地址)
  • 其架構下的地址在邏輯上聚合
  • 消息頭長度固定
  • 支持自動配置和修改你的網路。

我們一項一項地分析這些特點:

地址

人們談到 IPv6 時,第一件注意到的事情就是它的地址好多好多。為什麼要這麼多?因為設計者考慮到地址不能被充分利用起來,我們必須提供足夠多的地址,讓用戶去揮霍,從而達到一些特殊目的。所以如果你想架設自己的 IPv6 網路,你的 ISP 可以給你分配擁有64位主機地址長度的網路(可以分配1.844674407×10¹⁹台主機),你想怎麼玩就怎麼玩。

聚合

有這麼多的地址,這些地址可以被稀稀拉拉地分配給主機,從而更高效地路由數據包。算一筆帳啊,你的 ISP 拿到一個80位地址長度的網路空間,其中16位是 ISP 的子網地址,剩下64位分給你作為主機地址。這樣一來,你的 ISP 可以分配65,534個子網。

然而,這些地址分配不是一成不變地,如果 ISP 想擁有更多的小子網,完全可以做到(當然,土豪 ISP 可能會要求再來一個80位網路空間)。最高的48位地址是相互獨立地,也就是說 ISP 與 ISP 之間雖然可能分到相同地80位網路空間,但是這兩個空間是相互隔離的,好處就是一個網路空間裡面的地址會聚合在一起。

固定的消息頭長度

IPv4 消息頭長度可變,但 IPv6 消息頭長度被固定為40位元組。IPv4 會由於額外的參數導致消息頭變長,IPv6 中,如果有額外參數,這些信息會被放到一個緊挨著消息頭的地方,不會被路由器處理,當消息到達目的地時,這些額外參數會被軟體提取出來。

IPv6 消息頭有一個部分叫「flow」,是一個20位偽隨機數,用於簡化路由器對數據包的路由過程。如果一個數據包存在「flow」,路由器就可以根據這個值作為索引查找路由表,不必慢吞吞地遍歷整張路由表來查詢路由路徑。這個優點使 IPv6 更容易被路由。

自動配置

IPv6 中,當主機開機時,會檢查本地網路,看看有沒有其他主機使用了自己的 IP 地址。如果地址沒有被使用,就接著查詢本地的 IPv6 路由器,找到後就向它請求一個 IPv6 地址。然後這台主機就可以連上互聯網了 —— 它有自己的 IP 地址,和自己的默認路由器。

如果這台默認路由器宕機,主機就會接著找其他路由器,作為備用路由器。這個功能在 IPv4 協議里實現起來非常困難。同樣地,假如路由器想改變自己的地址,自己改掉就好了。主機會自動搜索路由器,並自動更新路由器地址。路由器會同時保存新老地址,直到所有主機都把自己地路由器地址更新成新地址。

IPv6 自動配置還不是一個完整地解決方案。想要有效地使用互聯網,一台主機還需要另外的東西:域名伺服器、時間同步伺服器、或者還需要一台文件伺服器。於是 dhcp6 出現了,提供與 dhcp 一樣的服務,唯一的區別是 dhcp6 的機器可以在可路由的狀態下啟動,一個 dhcp 進程可以為大量網路提供服務。

唯一的大問題

如果 IPv6 真的比 IPv4 好那麼多,為什麼它還沒有被廣泛使用起來(Google 在2014年5月份估計 IPv6 的市場佔有率為4%)?一個最基本的原因是「先有雞還是先有蛋」。服務商想讓自己的伺服器為儘可能多的客戶提供服務,這就意味著他們必須部署一個 IPv4 地址。

當然,他們可以同時使用 IPv4 和 IPv6 兩套地址,但很少有客戶會用到 IPv6,並且你還需要對你的軟體做一些小修改來適應 IPv6。另外比較頭疼的一點是,很多家庭的路由器壓根不支持 IPv6。還有就是 ISP 也不願意支持 IPv6,我問過我的 ISP 這個問題,得到的回答是:只有客戶明確指出要部署這個時,他們才會用 IPv6。然後我問了現在有多少人有這個需求,答案是:包括我在內,共有1個。

與這種現實狀況呈明顯對比的是,所有主流操作系統:Windows、OS X、Linux 都默認支持 IPv6 好多年了。這些操作系統甚至提供軟體讓 IPv6 的數據包披上 IPv4 的皮來騙過那些會丟棄 IPv6 數據包的主機,從而達到傳輸數據的目的。

總結

IPv4 已經為我們服務了好長時間。但是它的缺陷會在不遠的將來遭遇不可克服的困難。IPv6 通過改變地址分配規則、簡化數據包路由過程、簡化首次加入網路時的配置過程等策略,可以完美解決這個問題。

問題是,大眾在接受和使用 IPv6 的過程中進展緩慢,因為改變代價太大了。好消息是所有操作系統都支持 IPv6,所以當你有一天想做出改變,你的電腦只需要改變一點點東西,就能轉到全新的架構體系中去。

via: http://www.tecmint.com/ipv4-and-ipv6-comparison/

作者:Jeff Silverman 譯者:bazz2 校對:Mr小眼兒

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國