1. 程式人生 > 其它 >IP地址(二)

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系統有些不同,以後有再做研究吧。