D5bab43a52a73893aaa1cb85de8234f0 某天,在家上網時發現,利用中華電信PPPoE所取得的固定IP位址,竟然是1.xxx.xxx.xxx的Class A位址,著實嚇了一跳,Class A的位址不是早就配發完畢?而且還拿到1號這麼前面的位址。冷靜過後仔細想一想,應該是IPv4的位址已逼近枯竭極限,才會有一些IP被拿來重複使用,否則一般人應該是拿不太到Class A等級IP才對。

快速目錄:

IPv4 不夠是主因

IPv4使用32位元代表著,換算下來約42億多個位址,再減去一些特殊保留位址,無法分配給主機使用,實際上遠少於理論數字。再加上早期網路剛起步時,沒有人預期到現今上網裝置會如此普遍、氾濫,常常IP位址一發放就是一個/8範圍配給一家公司或大學,導致現今IPv4位址嚴重不足。

IPv4以32位元的數值代表網路位址,/8的意思就是前8個位元不變的意思。 例如說某公司分配到111.0.0.0/8的位址空間,代表這家公司有111.0.0.0-111.255.255.255的位址空間(包含不可以當作主機位置的空間), 也可以當作計算子網路遮罩方法,例如一個IP:192.168.0.1/24,它的子網路遮罩就是255.255.255.0,若是192.168.0.1/32,子網路遮罩就是255.255.255.255。

在2011年2月3日,全球掌管IP位址配發的最高機構ICANN(Internet Corporation for Assigned Names and Numbers)將最後5個/8區段位址分配給全球5個區域網際網路註冊組織之後,ICANN手上就沒有IPv4的位址可供分配,IPv4的位址枯竭正式進入倒數計時。

IP位址如何配發

IP位址原先由IANA(Internet Assigned Numbers Authority)負責,於1998年至1999年間將業務移交給ICANN,IANA成為ICANN的一個部門。

ICANN現階段掌管全球IP位址配發的部分,先將IP配發給全球5個區域性管理組織:ARIN(北美和部分加勒比海地區)、RIPE NCC(歐洲、中東、中亞)、APNIC(亞太)、LACNIC(拉丁美洲和部分加勒比海地區)、AfriNIC(非洲),再由這些區域性組織往下分配到各個國家,像是台灣為TWNIC負責IP申請及配發事務。

IP的Class等級

IPv4將位址切分成Class A~E 5種等級,Class D為群播位址,Class E僅為實驗使用。IPv4為32位元長的一組數字,一般會分成4組,每組8位元並換算成十進位的數字表示,如Google的DNS伺服器8.8.8.8。Class等級由開頭的幾個位元決定,Class A的開頭為0、Class B的開頭為10、Class C的開頭為110。所以筆者拿到前面開頭為1.xxx.xxx.xxx的位址,開頭的8位元為00000001,劃分在Class A中。

Class 位址範圍
A 0.0.0.0~127.255.255.255
B 128.0.0.0~191.255.255.255
C 192.0.0.0~223.255.255.255

APNIC 首先枯竭

負責管理亞太地區IP配發的APNIC,在2011年4月,只剩下最後一個/8位址區段,之後如果想要再申請IP,只能得到最後/8區段其中的/22區段。目前APNIC在2012年7月2號時,剩下93%的/8位址區段。不過全球其他4個區域性管理組織的狀況也不好,預計也將在這1、2年之內進入最後一個/8區段。

這個情形其實相當不樂觀,尤其這幾年手持式連網裝置爆炸性成長,IP位址的消耗更為快速,極有可能在預定的時間之前就把位址使用完畢,雖然可以利用NAT的方式減少實際對外網路IP的需求,但並非長久之計。

還好在90年代初就有人注意到這個問題,並在1998年正式推出下一代的IPv6規範。

關鍵字:NAT

NAT(Network Address Translation)網路位址轉譯,為解決IPv4位址不足的一種方案。簡單來說,有一台具有NAT功能的網路裝置,可以將私有IP和公共IP做轉換。對外傳輸時將封包表頭來源位址的私有IP,也就是大家常見的192.168.xxx.xxx這個位址,替換成公共IP位址傳送出去,並把這個對應關係儲存成一張表格。之後網際網路傳來的封包,表頭目的地位址就可以參考這張表格,看看之前是哪個私有IP所傳出去的封包,將目的地位址改成私有IP,再傳送到正確的位置。多台上網裝置只需使用1個公共IP,即可與其他網際網路上的裝置通訊。

32bits 擴展成 128bits

IPv4的缺點,就是可用位址太少,使用32位元作為網路位址,就算不計那些保留位址,最多也只有42億多個位址可供使用(2^32)。以今日人手好幾支手機,還有桌機加筆電加平板來說,完全是不夠用的。IPv6最大的變革,就是把32位元位址直接擴展到128位元,一舉提升2^96倍容量。甚至有人開玩笑地說,這麼龐大的位址容量,我們就可以拋棄對NAT的依賴,甚至是地球上的每一顆沙子都能配發一個IP。

IPv6 格式與轉換

如同IPv4我們會將32位元拆成4組8位元,再換算成十進位的數字,如常見的私有IP位址:192.168.0.1,IPv6也有一套特殊的寫法。IPv6將128位元拆成8組16位元,每組再換算成16進位的數字,於是過去IPv4不曾出現的a、b、c、d、e,也將會出現在IPv6位址之中。

IPv6的位址寫法:

由上方的例子可以直接觀察到IPv6的位址出現了a、b、c、d、e,分開各組的符號從IPv4的「.」變成「:」。同時也如IPv4一樣,若是各組開頭的數字為0時,0可以不用寫出來,如下面這個例子:

以上2組IPv6的位置是相等的,在第2、3、8組個省略了1個0,在第4、5、6、7組則是各省略了3個0。IPv6在第4、5、6、7組連續為0的狀況下,還可以有個更簡略的寫法,如以下所示:

這2個指的都是同一個位址,在連續為0的情況下,可以直接由「::」2個冒號代替掉。但在同一個位址中,如有2段以上連續為0的情況,則「::」只能使用一次,如下面這個例子:

以上5個例子中,前4個例子皆正確,第1個為完整不縮寫的位址,第2個則是將第2、3組的連續0縮寫,第3個則是將第5、6組的連續0縮寫。最後一個例子不正確,是因為縮寫了2次,而這部分會造成解讀上的混淆,因為這種寫法可以等於下列的任何一種位址:

如果在同一位址有2個以上的「::」縮寫,便會造成解讀混淆的狀況,所以應避免這種情形發生。

如果是IPv4要對應到IPv6的位址,則相當簡單。IPv6中有保留映射到IPv4的位址空間,只需在IPv4的位址前加上::ffff:即可,如下面的例子:

IPv6映射到IPv4的位址,在最後的32位元可以採用IPv4的寫法,也可以轉換成IPv6的寫法。

IPv6位址分類

IPv4的封包傳遞類型分為4種,分別是unicast單播、anycast任播、multicast群播、broadcast廣播。其中broadcast廣播因為安全性問題,在IPv6中不再使用,其他3種則繼續沿用,以下為這3種封包傳遞方式的解說。

unicast單播

unicast是一般我們上網使用最多的封包傳遞方式,封包只丟向單一網路介面。用普通話來說,就是2個人的你丟我撿遊戲。

anycast任播

這種傳播方式會將封包,傳送給一群經指定的網路介面,但同時只會有1個網路介面收到這個封包。通常這1個接收到的網路介面,距離發送端較近(傳輸速度較快),或者是最快到達(中途經過的路由較不壅塞)。Anycast可用來分散伺服器的負載,因為客戶端會自動跟目前狀況最佳的伺服器作互動。同時這種方式也可以抵禦部分的阻斷式服務攻擊,因為被癱瘓的只有離攻擊者較近的伺服器,而非攻擊者指定的伺服器。

multicast群播

也譯作多播,主機只需要傳送同1個封包,就可以讓被選定的某一群網路介面卡收到,由於封包只在最後關頭於路由器中複製,並分別傳送到目的地上,所以在前端傳輸路徑中可以節省網路頻寬。中華電信MOD應用的即是這種原理,不然大家一起上線觀看高畫質頻道,是會把網路搞掛的。

(後面還有:關於IPv6的介紹喔!)

使用 Facebook 留言

Shinwill
3.  Shinwill (發表於 2012年10月16日 14:13)
我從我們公司的後台看
也發現了很多 IP 是 1.xxx.xxx.xxx 的訪客來過的蹤跡
<( ̄︶ ̄)>
Shinwill
2人給推

4.  Shinwill (發表於 2012年10月16日 14:19)
另外文章中有一句:「一舉提升296倍容量」
好像不太對喔
應該是提升 2^96 倍容量
大概是 79228162514264337593543950336 倍容量才對
tandee
5.  tandee (發表於 2012年10月16日 14:30)
※ 引述《Shinwill》的留言:
> 另外文章中有一句:「一舉提升296倍容量」
> 好像不太對喔
> 應該是提升 2^96 倍容量
> 大概是 79228162514264337593543950336 倍容量才對
應該是符號沒顯示出來的問題
B4318c80bb7c5e1ea6a57fc35a49bd12?size=48&default=wavatar
6.  vmlinux (發表於 2012年10月16日 14:35)
所謂謠傳是說,用有跟Google介接的Server吧,文中使用203.74.21.89or88還是中華的路由,所以應該不會有太大差別
sean yeh
7.  sean yeh (發表於 2012年10月16日 14:48)
NAT-PT目前已被IETF否決,近期較受關注的標準為NAT64和DNS64,它們簡化了NAT-PT機制,只留下IPv6轉IPv4的功能,讓純IPv6用戶能連線到IPv4網站。
R.F.
8.  R.F. (發表於 2012年10月16日 15:29)
※ 引述《Shinwill》的留言:
> 另外文章中有一句:「一舉提升296倍容量」
> 好像不太對喔
> 應該是提升 2^96 倍容量
> 大概是 79228162514264337593543950336 倍容量才對

修改完成,感謝讀者指正(≧▽≦)

※ 引述《sean yeh》的留言:
> NAT-PT目前已被IETF否決,近期較受關注的標準為NAT64和DNS64,它們簡化了NAT-PT機制,只留下IPv6轉IPv4的功能,讓純IPv6用戶能連線到IPv4網站。

小編也學到一課呢~未來不知道還會不會有其他的轉換機制提出囧rz
5b07a7a48af3d6c21a472fed761e68a0?size=48&default=wavatar
10.  英國人 (發表於 2012年10月16日 16:44)
※ 引述《regmax》的留言:
> 為什麼我今天早上試還是220開頭...〒ˍ〒

浮動 IP 是隨機配發的
沒有規定你一定會拿到什麼開頭的,看運氣而已
PCABC
11.  PCABC (發表於 2012年10月16日 19:46)
太讚了

超級專業文章阿

最近正在學網路通訊概論

這超實用的阿~~~

發表回應

謹慎發言,尊重彼此。按此展開留言規則