IPv4 快用完,IPv6 來了!網路位址超多,重點觀念解析、試用給你看

ADVERTISEMENT

IPv6封包格式

IPv6當然也會在封包格式上做修改,否則怎麼容納更長的位址資訊?IPv4在封包的表頭會佔去20Bytes以上,因為有可選的欄位,所以表頭長度並不定。IPv6則是固定佔去40Bytes。

首先我們先來談談IPv4表頭中存在,到了IPv6卻消失或改進的欄位。IPv4和IPv6相比之下,多了這幾個欄位:標頭長度、辨識碼、旗標、區段位移、網路協定、檢查碼。

標頭長度

因為IPv4的表頭之後會有個選擇性欄位,標頭長度不固定,以此來判斷IPv4標頭究竟有多長。最短的表頭是20 bytes,最長為60bytes。

壅塞通告

在IPv4裡為可選格式,唯有當通訊兩端和網路底層皆支援時才能發生作用,可以在不遺失封包的前提下,提醒對方網路發生雍塞。辨識碼:是一連串的流水號數字,用以判斷是否在傳輸過程中遺漏了封包,例如只接收到編號1999和編號2001這2個封包,就可以得知遺失了編號2000的封包,此時接收端電腦會要求傳送端重傳一次,或者是傳送端電腦發現沒有收到編號2000的ACK封包,便會自行重傳。

旗標

提供封包分割的控制訊息,例如這個封包攜帶的資料太長,被分割的時候,旗標就為1,代表之後還有資料。如果說旗標為0,代表這個封包是這份資料的最後一個。

分段位移

由於大資料被分割為許多小封包,這個欄位標明了封包所攜帶的資料,是原始資料的哪一部份,就可以依據這個訊息將封包重組為原始資料。

網路協定

標明傳輸層所使用的協定,如TCP或UDP等等。

表頭檢查碼

用以檢查表頭內容是否錯誤,由於IPv4有1個TTL(time to live)限制封包最大經過網路節點數,由於每經過1個網路節點,這個值會減1,所以檢查碼必須重新計算,消耗網路節點效能。

接著就是IPv4存在,IPv6也有的欄位,或者是在IPv6中獲得改進的欄位:

版本

佔據封包最前方4bits,IPv4為4,IPv6當然就是6啦。

差異服務碼

IPv4中用以標明封包內所夾帶的資料類型,例如表明封包內的資料為VoIP,此時若經過支援QoS的路由器,會優先傳遞此類封包。在IPv6中則是轉化為流量等級和流量標記2為2個部分。

總長度

IPv4中用以標示包含表頭,封包整體的長度。在IPv6中改為負載長度,不包含表頭。

TTL

time to live(生存時間),這個欄位宣告封包總共可以經過幾個網路節點,每經過1個網路節點,這個值就會減1。當值為0的時候,封包就會被節點丟棄,避免封包在網路上傳輸過久,影響整體網路效能。到了IPv6,名稱更改為節點限制,但作用是一樣的。最後就是IPv6新增的欄位:

下一個表頭

明確指出表頭後方所跟著的擴充表頭資訊,有可能是一般的TCP,也可能是其他的加密方式。由於擴充表頭具有長度可變的性質,可以彈性紀錄所需資訊。

IPv4 快用完,IPv6 來了!網路位址超多,重點觀念解析、試用給你看

IPv4 快用完,IPv6 來了!網路位址超多,重點觀念解析、試用給你看

IPv4和IPv6的表頭差異,讀者觀看圖形應該比較容易理解。IPv6雖然因為IP位址變長了,佔去較多位元,但表頭內的欄位較IPv4為少,表頭長度也保持固定,不像IPv4需判斷資料起始位元在哪裡。最重要的是IPv6去除了表頭檢查碼,降低網路節點的負擔。

取消NAT機制

由於IPv6的位址之多,多到地球上的每粒砂都可以擁有位址,因此過往用以解決IPv4位址不夠的方法「NAT」,在IPv6中不再使用。

這麼做的好處是顯而易見的,請試想,在IPv4使用NAT的情況下,有一個從外部想要進來至內部網路的封包,如果路由器上的NAT路由表內沒有這封包的轉換資料,路由器就不知道要把封包丟到哪一台電腦上(其實這有某些方法可以解決,如DMZ或是先在路由器上建立路由規則,但這不是本篇文章討論重點)。

如果某一個公司,只想讓網路封包在公司內部流竄就好,不要進入到公共網路裡,避免商務機密外洩,在IPv4中只需將內部電腦的IP設為10/8、172.16/12、192.168/16這幾個網段即可;一旦換到了IPv6,可以利用2種方式達成:Unique-Local和Link-Local達成。

較為特別的是IPv6允許網路介面同時擁有公共IP、Unique-Local IP和Link-Local IP。當電腦想要傳送封包給隔壁,同一網域下的電腦,封包的目的地就可以填入上述3種IP的其中1種,即可傳送到想去的地方。

Link-Local

Link-Local的IP為1111111010開頭,接著是連續54個0,換成IPv6的寫法就是fe80::/10開頭,之後64個bit即為網路卡介面位址。這個位址的封包可以在同一個網域下傳遞,如同IPv4的192.168.1.1/24和192.168.1.2/24之間相互傳遞。這一類的封包並不會被傳遞到網際網路上,路由器會把他們攔截起來。

Unique-local

Unique-Local前身為Site-Local,只不過Site這個字眼定義較為不清楚,容易令人混淆,之後在2004年的RFC 3879文件中,建議把這部分的定義除去;隨後在2005年的RFC 4193文件中,重新定義了1組用以替代Site-Local功能的Unique-Local。

這個部分的前7位為1111110開頭,也就是fc00::/7,旗下還分為2個部分:fc00::/8和fd00::/8。fc00::/8目前尚未定義,fd00::/8的位址開頭為11111101,之後跟著40bits的亂數,再跟著16bits的子網路,最終的64bits則為網路介面卡的位址。

Unique-Local與Link-Local雖都是用以內部網路的位址區段,但卻有些許不同,Link-Local的封包只會在子網路下傳送,不會越過子網路的範圍。Unique-Local的封包可以越過單一子網路的範圍,跑到另一個子網路去,但封包並不會跑到網際網路上。

(後面還有:IPv4到IPv6的過渡方法的介紹喔!)

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 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 倍容量才對
魯蛇實驗室
5.  魯蛇實驗室 (發表於 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)
太讚了

超級專業文章阿

最近正在學網路通訊概論

這超實用的阿~~~

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