本來認為不會這麼快用到ipv6的功能,但在windows 7的homegroup及ipv6使用心得,以及建立方法這篇文章中,發現可以透過ipv6解決windows 7 的電腦之間,ipv4不同網段的資料共用問題,然後有網友問到可否同樣在windows xp與windows 7中,利用ipv6來解決ipv4不同網段的檔案分享問題。在windows 7很簡單,啟用ipv6就可以分享檔案了,完全不必多做設定,但在windows xp與windows 7之間,經過我努力的查找資料,相關的資料實在很貧乏,很可惜沒有找到建立共用檔案的方法,目前只好暫時先放棄。
不過雖然失敗,卻也吸收了不少ipv6的相關知識,在此記錄下來,ipv4的ip快耗盡了,以後總是會用到ipv6,先整理一些ipv6的基本知識。
- IPv6比IPv4提供更多位址、在便利性、安全性及傳輸效能均有長足進步。ipv6提供的位址數量2的128次方是個天文數字,有人說即使到了世界末日也尚未用完。
- 具有自動設定(Auto-Configuration)機制
無需人為設定下即可由電腦自動向路由器取得位址,可視為IP版的隨插即用(Plug-and-Play)
在 IPv4 的時代,使用者倘若未正確地設定電腦的 IP 位址、子網路遮罩和預設閘道,TCP / IP 協定便無法正常工作。
IPv6 則增加了自動設定機制來改善這個問題,能在毋須人為設定的情形下,自動賦予 IPv6 位址及相關設定值。
IPv6 的『自動設定』機制有Stateful和Stateless兩種,前者要配合 DHCP 伺服器;後者則毋須用到 DHCP 伺服器,也毋須任何手動設定。 - 保密性更佳
整合目前廣為使用的加密協定-IPSec (IP Security),不但資料內容加密並執行身份驗證。可以確保接收或傳送的封包未經竄改,亦非他人冒名傳送。 - 提升路由(Routing)效率
IPv4封包的表頭長度不固定;IPv6則固定為40 Bytes、8個欄位。路由器在處理IPv6的封包時速率較快,至少省略判斷檔頭長度的動作 - IPv6 編址
從IPv4到IPv6最顯著的變化就是地址的長度。ipv4只有32bit,而ipv6有128bit,而這128bit,在很多場合,由兩個邏輯部分組成:一個64位的網路前綴和一個64位的主機地址,主機地址通常根據物理地址自動生成,叫做EUI-64。 - ipv6位址表示法
因為ipv6長達128位元,不適合用2進位表示,如果用十進位表示,會和IPv4混淆。因此採用十六進位表示法。
ipv6通常寫做8組每組四個十六進制的形式,以冒號(:)隔開。
IPv6位址為128位元長度,但通常寫做8組每組四個十六進制的形式。
例如: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344 是一個合法的IPv6位址。
如果位數都是零,可以被省略。
例如:
2001:0db8:85a3 :0000: 1319:8a2e:0370:7344等同於2001:0db8:85a3 :: 1319:8a2e:0370:7344
2001:0DB8 :0000:0000:0000:0000 :1428:57ab等同於2001:0DB8 :: 1428:57ab
以上這種零值省略的方式,只能出現一次。因此2001 :: 25de :: cade,因為出現兩個「::」,所以是非法的。(因為這樣會使得搞不清楚每個壓縮中有幾個全零的分組)
ipv6前導的零也可以省略,因此:2001: 0DB8 :02de::0e13等於2001: DB8 :2de::e13
IPv4 位址要用為IPv6格式表示,可以保留十進位格式。舉例來說,如果IPv4的一個位址為192.168.1.,它可以被轉化為 :192.168.1.1。 - ipv6位址的類型
IPv6有Unicast、Multicast 和 Anycast 三種類型。
IPv6不再使用IPv4的廣播(Broadcast)方式來通信,而是使用Multicast或者Anycast替代廣播。 - Unicast
人們所熟知的傳輸方式。IPv6 的 Unicast 如同 IPv4 的 Unicast 傳送模式,用在單一節點對單一節點的資料傳送。
Unicast有下列型態:
Global:
Global的IPv6 位址,就如同 IPv4 的公開位址(Public Address),在全世界具有唯一性,其它節點不會有相同的位址。
Link- Local:
位址僅用在單一個連結上 (同一個子網路中),不可被繞送到其他連結或網際網路上。 它的功用如同 IPv4 的 APIPA 位址(169.254.X.X),僅在一個特定的網路區段使用,這類位址的封包不能通過路由器。
Site-Local:
位址可以跨連結,在網點間繞送,但不可被繞送到網際網路。Link- Local及Site-Local位址的概念就像是IPv4中的私有位址,對主機間及路由器間自動建立暫時性的通信非常有用。 - Multicast
IPv6 的 Multicast 用於單一位址對多個位址的資料傳送。Multicast 會標識一組接收位址,指定為 Multicast 的封包會傳送到Multicast 指定接收組的所有位址。 - Anycast
Anycast 是 IPv6 特有的資料傳送方式,它像是IPv4的Unicast(單點傳播)與Broadcast(多點廣播)的綜合。IPv4 支援單點傳播和多點廣播,單點廣播在來源和目的地間直接進行通訊;多點廣播存在於單一來源和多個目的地進行通訊。
而Anycast則在以上兩者之間,它像多點廣播(Broadcast)一樣,會有一組接收節點的位址列表,但指定為 Anycast 的封包,只會傳送給距離最近或傳送成本最低(根據路由表來判斷)的其中一個接收位址,當該接收位址收到封包並進行回應,且加入後續的傳輸。該接收列表的其他節點,會知道某個節點位址已經回應了,它們就不再加入後續的傳輸作業。
以目前的應用為例,Anycast 位址只能分配給路由器,不能分配給電腦使用,而且不能作為發送端的位址。 - IPv6的首碼
在 IPv6 位址的 128 bits 之中,前幾個 bits 為首碼。另一種常見的 IPv6 位址表示法是「IPv6 位址 / 首碼長度」。至於首碼長度到底是多少 bit 呢?這必須視位址是屬於Unicast、Multicast 或 Anycast而定。 - Unicast的首碼及位址格式
-
- Global的前 3 bits 為首碼,內容固定是「001」。最後的 64 bits 為 Interface ID。Interface ID 的功用如同 IPv4 的 Host ID 。
- Site-Local的前 10 bits 為首碼,內容固定為「1111111011」, 間隔 38 bits 的 0 之後, 接著 16 bits 的「子網路位址」( Subnet ID ),最後才是 64 bits 的介面位址。
因為這種位址的前 10 bits 之後的 6 bit固定補0,所以整個16bit是「1111111011000000」,以十六進位來表示,就是FEC0,因此有人就說 Site-Local IPv6 位址的首碼為FEC0。這種說法是額外多加入六個bit的0!因為實際首碼只有 10 bits。但就結果來看並沒有錯,且加入6bit以後,用FEC0來表示首碼,要比用1111111011清楚許多。 - Link-Local也是用前 10 bits 為首碼,內容固定為「1111111010」,接著是連續 54 bits 的 0,最後的 64 bits 也是介面位址。如同在 Site-Local 一樣,Link-Local IPv6 的首碼暫且可以用 FE80來表示。
以上Subnet ID,Host ID必須參考IPv4的說明,這裡有一篇文章可參考-IP的結構。
- Global的前 3 bits 為首碼,內容固定是「001」。最後的 64 bits 為 Interface ID。Interface ID 的功用如同 IPv4 的 Host ID 。
- Multicast的首碼及位址格式
Multicast前 8 bits 為首碼,內容為「11111111」,最後 112 bits 為「群組位址」。 - Anycast的首碼及位址格式
Anycast的首碼長度不是固定長度,首碼之外均為 0。