ipv6獲取地址


在本篇將會搞清楚如下幾個名字所指的概念,以及他們之間的關系

1.RS: Router Solicitation RA:Router Advertisement

radvd: The Router Advertisement Daemon

2.SLAAC: Stateless Auto Address Configuration

3.DHCPv6和DHCPv6 PD

4.NS:Neighbor Solicitation NA: Neighbor Advertisement

 

除了第4組概念,其他3組都是與“ipv6當中,怎么獲取ipv6地址有關”這個問題緊密聯系的。下面通過獲取一個ipv6地址的時間軸來分別闡述並串聯這些概念。

 

1.RS

事情的起點是一台pc上電啟動完成了,他會首先,不借助任何外面的信息,自己給自己配置一個Ipv6地址,類似fe80::xx這種,這就是所謂的link local地址。

這種所謂的link local地址的使用范圍是link之間,即直接相連的node之間。

(這里突然引入了node的名字,因為一個網絡上不僅包含pc,還包含各種網絡設備,比如router,我們用node來指代所有的這些網絡設備。)

所以pc想要與更遠的外界網絡通信,就需要其他地址,site local和global address,具體分配哪個,取決於你的網絡環境。

總之,要想與非link上的其他node網絡通信,你就需要非link local的address。

怎么辦呢,這時候故事就開始了。

Pc首先發出一個RS(Router Solicitation),告訴link上的router,我想要一個地址,誰能給我啊,把這些信息編碼成網絡包的格式如下:

 

對於這種編碼格式,我們可以稍微看下,它使用的是icmpv6 type 133。

 

2.RA

Router收到pc發出的“想要獲取地址”的信息后,就會告訴它 怎么獲取。注意是怎么獲取,不是直接給它地址。

一個典型的RA包長得像下面這個樣子

 

信息的編碼格式使用的是icmpv6 type 134。這里面包含很多信息,我們主要關注兩大類信息: prefix information,其他網絡配置信息(比如dns,mtu等等)

Prefix information是我們最想要的那個用於生成ipv6地址的前綴,但是我們不一定用

其他網絡信息也是我們想要的,相比於上面這個,重要性就低一些。同樣我們也不一定用。

什么?你可能就有疑問了,都給了,為啥不用。

因為在RA包里的信息,router明確說了 你要不要用,雖然我已經給了你prefix information和其他網絡配置信息。

Managed (M flag) = A ‘1’ means the address is provided by stateful DHCPv6.

Other (O flag) = A ‘1’ means that the address is provided by Stateless DHCPv6

M為1表示地址要向dhcpv6 server請求,O為1表示其他網絡配置信息也要想dhcpv6 server請求。

上面的stateful,stateless可以忽略,我覺得這個叫法起的不好。總之,就是向dhcpv6 server要這些信息。

如果M為0那就是使用RA的prefix,下面將發生的過程就叫SLAAC

如果M為1,那就不使用,下面將發生的過程就叫DHCPv6

 

3. SLAAC: Stateless Auto Address Configuration

Pc收到RA后發現M flag為0,告訴它不需要再向DHCPv6 server申請了,所以它就可以開始自己生成了,生成的方法如下:

RA中的前綴+EUI64(mac地址)

EUI64就是一個方法,具體可以google & baidu。

 

4.DHCPv6

Pc收到RA后發現M flag為1,告訴它需要再向DHCPv6 server申請了,所以它就開始通過dhcpv6報文向dhcpv6 server發送“我要地址”的信息。

Dhcpv6 Solicit報文

 

Dhcpv6 server收到后就會回復

Advertise報文

 

 

 

至此,整個獲取ipv6地址的框架就出來了,也結束了。下面在基於這個這個框架之上,再談些其他的幾個概念。

 

Ps1:關於stateful and stateless有狀態和無狀態

為什么有了RA之后,還需要dhcpv6,這是為了可以記錄狀態,什么狀態?,各個地址分配的情況,分配給了誰。這是單單靠RA做不到的。我認為不管dhcpv4還是v6都是為有狀態而生,所以說什么”slacc + stateless dhcpv6”我不太同意,可能當初這樣叫法的原因是,它只向dhcpv6 server申請其他網絡配置信息,並不申請ip,所以就叫stateless,這樣想,也可以理解,不過很容易誤導人。

 

Ps2:dhcpv6 PD (DHCPv6 Prefix Delegation)

這個名字是指代這樣一個過程,router b的上級router a會下發前綴給router b,比如prefix 32。router b然后再把這個前綴通過RA告知下面的節點,比如prefix 64,對上級的前綴進行再划分。這樣就可以達到分層次管理的目的。

 

Ps3: radvd: The Router Advertisement Daemon

發出ra包的那個進程,它的配置文件中可以配置是否置起M flag, O flag

/etc/radvd.conf

 

 

Ps4: NS:Neighbor Solicitation NA: Neighbor Advertisement

這兩種報文是用於兩台pc之間的通信時,獲取對方的mac地址,可以完全認為是ipv4中 arp的另一種實現。

 

參考:

https://cshihong.github.io/2018/02/01/DHCPv6%E5%9F%BA%E7%A1%80/

http://www.h3c.com/cn/d_200805/605924_30003_0.htm

https://www.ictshore.com/free-ccna-course/dhcpv6-basics/

https://blog.apnic.net/2019/10/18/how-to-ipv6-neighbor-discovery/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM