IP地址(二)
1. IPv6地址和介面識別符號
IPv6地址比IPv4地址長4倍,其使用特殊字首表示一個地址範圍,即其可用的網路規模,例如:
- 節點本地(只用於同一計算機中通訊)
- 鏈路本地(只用於同一網路鏈路或IPv6字首中的節點)
- 全球性(Internet範圍)。
在IPv6中,大部分節點通常在同一網路介面上使用多個地址。一個IPv6節點需要一組地址,包括組播地址。
1.1 鏈路本地IPv6地址表示
鏈路本地IPv6地址和一些全球性IPv6地址使用介面表示符(IID)作為一個單播IPv6地址的分配基礎。IID的長度通常
64位,並直接由一個網路介面相關的鏈路層MAC地址形成,該地址使用修改的EUI-64格式或者由其他程序隨機提供的地址形成。
在IEEE標準中,EUI表示擴充套件唯一識別符號。EUI-64識別符號開始於一個24位的組織唯一識別符號(OUI),接著是一個組織分配的
40位擴充套件識別符號,它由前面24位識別。OUI是由IEEE註冊權威機構來維護和分配。EUI可能是”統一管理“或”本地管理“。在Internet
環境下,這種地址通常是統一管理的。
很多IEEE標準相容的網路介面(例如乙太網)在使用短格式的地址(EUI-48)。EUI-64和EUI-48格式之間的顯著的區別就是它們的
長度,如下圖所示。
OUI的長度是24位,並佔據EUI-48、EUI-64前3個位元組。這些地址的第一個位元組的低兩位分別是u位和g位。當u位被設定時,表示地址時本地管理。
當g位被設定時,表示地址是一組或組播型別的地址。目前,我們只關心g位被未設定的情況。
一個EUI-64地址可以由EUI-48地址形成,將EUI-48的地址24位OUI值複製到EUI-64地址,並將EUI-64地址的第4和第5位元組替換為FFFE,然後複製由組織分配的
剩餘位。例如:EUI-48 00-11-22-33-44-55 ---> EUI-64 00-11-22-FF-FE-33-44-55。這個對映的第一步是當可以用基本EUI-48地址時由IPv6構造介面識別符號。修改的
EUI-64用於形成IPv6地址的IID,但是需要對u位取反。
當一個IPv6介面識別符號需要一種介面,並且該介面沒有由製造商提供EUI-48地址時,我們以後在討論。下圖是我Linux機器IPv6地址。
eno1 Link encap:Ethernet HWaddr 14:02:ec:3e:8a:c0 inet addr:192.168.39.178 Bcast:192.168.39.255 Mask:255.255.255.0 inet6 addr: fe80::1602:ecff:fe3e:8ac0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4946346128 errors:0 dropped:187 overruns:0 frame:0 TX packets:4440691032 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1158295563755 (1.1 TB) TX bytes:1413694812493 (1.4 TB) Interrupt:16
乙太網的硬體地址是14:02:ec:3e:8a:c0,它是如何對映為一個IPv6地址的呢?
首先,它被轉換為EUI-64 格式14:02:3c:ff:fe:3c:8a:c0。接著,u位被取反,形成IID值16:02:3c:ff:fe:3c:8a:c0。為了完成鏈路本地IPv6地址,我們使用保留的鏈路本地
字首fe80::/10。最終形成完整地址fe80::1602:ecff:fe3e:8ac0/64。/64是標準長度,用於從一個IPv6地址中識別子網/主機部分。
1.2 windows中的IPv6地址表示
就我個人觀察,windows系統的IPv6地址和linux系統有些不同,以後有再做研究吧。