IPv6:IPv4 犯的錯,為什麼要我來彌補
雷鋒網按:本文轉載自Linux中國
在過去的十年間,IPv6 本來應該得到很大的發展,但事實上這種好事並沒有降臨。由此導致了一個結果,那就是大部分人都不瞭解 IPv6 的一些知識:它是什麼,怎麼使用,以及,為什麼它會存在?
IPv4 和 IPv6 的區別
IPv4 做錯了什麼?
自從1981年發佈了 RFC 791 標準以來我們就一直在使用 IPv4。在那個時候,電腦又大又貴還不多見,而 IPv4 號稱能提供40億條 IP 地址,在當時看來,這個數字好大好大。不幸的是,這麼多的 IP 地址並沒有被充分利用起來,地址與地址之間存在間隙。舉個例子,一家公司可能有254(28-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.255、172.16.0.0 – 172.31.255.255或192.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,所以當你有一天想做出改變,你的電腦只需要改變一點點東西,就能轉到全新的架構體系中去。
資料來源:雷鋒網
作者/編輯:精選轉載
在過去的十年間,IPv6 本來應該得到很大的發展,但事實上這種好事並沒有降臨。由此導致了一個結果,那就是大部分人都不瞭解 IPv6 的一些知識:它是什麼,怎麼使用,以及,為什麼它會存在?
IPv4 和 IPv6 的區別
IPv4 做錯了什麼?
自從1981年發佈了 RFC 791 標準以來我們就一直在使用 IPv4。在那個時候,電腦又大又貴還不多見,而 IPv4 號稱能提供40億條 IP 地址,在當時看來,這個數字好大好大。不幸的是,這麼多的 IP 地址並沒有被充分利用起來,地址與地址之間存在間隙。舉個例子,一家公司可能有254(28-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.255、172.16.0.0 – 172.31.255.255或192.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,所以當你有一天想做出改變,你的電腦只需要改變一點點東西,就能轉到全新的架構體系中去。
資料來源:雷鋒網
作者/編輯:精選轉載