例说图解TCP/IP协议族--DHCP篇(3)DHCPv6协议

1. DHCPv6 vs DHCPv4    

    与DHCPv4协议一样,DHCPv6协议也是用来给设备分配地址的,只不过通过DHCPv6分配的是IPv6地址,而不是IPv4地址。

(1)DHCPv6报文的地址和端口

    跟DHCPv4协议一样,DHCPv6也是位于UDP协议上的应用层协议。不过它采用的端口是,客户端为547,服务器是546。

    在DHCPv4协议中客户端因在DHCP交换过程中没有IP地址,故以0.0.0.0作为初始地址;在DHCPv6中则是用本地链路地址。

    在DHCPv4协议中为了让数据包被整个VLAN内设备收到,采用255.255.255.255作目的地址;在DHCPv6中用的是组播地址。

(2)DHCPv6的报文类型

    在DHCPv4协议中,客户端初次获取IP地址的报文交换是通过DORA报文交互来完成的,而在DHCPv6中则是如下图四个报文。

    DHCPv4采用gratuitous ARP来做地址冲突检测,因为在IPv6中已经废弃了ARP协议,所以DHCPv6则是用ICMPv6来完成地址冲突检测的,如下图所示。

=========DHCPv6 ==================

    DHCPv4客户端采用Release报文来释放获取的地址,同样地DHCPv6也采用Release报文释放地址,如下图所示。

    可以发现DHCPv6 Release报文的源地址还是【link-local】地址,需要释放的地址【2001:100:101:0:a525:5c69:6a26:1d9】,目的地址是组播地址【ff02::1:2】 。

    收到Release报文的DHCPv6网关(不是DHCPv6服务器)回复Reply报文,源和目的地址是各自的【link-local】地址。收到Release报文的DHCPv6服务器,把需要释放的地址从自己的数据库中删除,但是没有回复任何消息。

(3)DHCPv6的报文头部结构

    其实DHCPv6相对于DHCPv4地址和端口、报文类型,改动思路差不多,但是报文头部结构的改动还是最大的,个人觉得主要是思路比以前更好。

    采用了DHCPv4的option思想,除了Message Type和Transaction ID以外,95%的字段都是以option存在于DHCPv6报头中。只是有些option是必须携带,有些是根据需要才附带。

    这就让DHCPv6的报文头部很简单明了,一看就懂。如下图所示。

 

2. DHCPv6 Option

    从上图可知,DHCPv6的核心还是在于option,这些option完成了DHCPv6协议的绝大部分功能。因此我们花一个章节专门来讲DHCPv6 Option。

    与DHCPv4 Option一样,DHCPv6 Option也分为三大类,standard-class由RFC定义,vendor-class由设备厂商定义,user-class由用户自己定义。

    DHCPv6 Option的数据格式也有很多种,我们一一讲解。

2.1 特殊的option

(1)option 1, 2, 3, 6

option code举例(wireshark解析后数据)Option Value
1: Client Identifier

前面2个字节为DUID类型,例如3:表示链路层地址;

紧跟着的2个字节为硬件类型,例如1:表示以太网;

最后的字节为具体的硬件地址,如果为以太网,则硬件地址长度为6个字节。

2: Server Identifier

前面的2个字节为DUID类型,例如1:表示链路层地址加时间戳;

紧跟着的2个字节为硬件类型,例如0:表示NET/ROM pseudo;

接着的2个字节为时间戳;

最后的字节为具体的链路层地址,如果为以太网,则长度为6个字节

3: IA for NA

前面4个字节为IAID的值;

紧跟着的4个字节为T1的值;

接着的4个字节为T2的值;

接着的2个字节为IA地址的类型;

接着的2个字节为IA地址的长度;

接着的16个字节为IA地址的具体值;

接着的4个字节为Preferred Lifetime;

最后的4个字节为Valid Lifetime。

6: Option Request占据n个双字节,每个双字节代表一个请求的option type
6: Option Request占据n个双字节,每个双字节代表一个请求的option type
6: Option Request占据n个双字节,每个双字节代表一个请求的option type

(2)option 56: NTP Server

    该option表示NTP服务器,可以是IPv6地址格式,也可以是FQDN形式。Value值是3种类型Suboption之一,Suboption本身也是TLV格式,三种Suboption如下表

Option举例(wireshark解析后数据) Option Value:(Suboption * n个)
56: NTP ServerSuboption 1: NTP Server Address
56: NTP Server Suboption 2: NTP Multicast Address
56: NTP Server Suboption 3: NTP Server FQDN

(3)option 16 & option 17

    这两个option是用来处理vendor-class类型的option,当客户端请求报文里的option16已经在服务器端创建时,服务器通过option17把指定厂商的Suboption给到客户端。

Option举例(wireshark解析后数据)Option Value
16: Vendor Class

前面4个字节为厂商ID编号,格式为整数,例如思科为为:9,微软为:311;

后面m个字节为厂商设备型号,格式为字符串,例如左图中Cisco IP Phone

Option举例(wireshark解析后数据)Option Value
Enterprise IDSuboption * n个
17: Vendor-specific Information厂商的ID编号,占4个字节,例如思科的ID为9厂商的子选项,格式由厂商定义。例如如左图所示,思科的Suboption格式为TLV格式。

(4) option 15 & XX

    这两个option是用来处理user-class类型的option,当客户端请求报文里的option15已经在服务器端创建时,服务器通过optionXX把指定用户的Suboption给到客户端。

========option 15 & XX====================

 

2.2 常规的option

(1)Option type + Length + Interger

option type举例举例(wireshark解析后数据)Option Value
8: Elapsed time固定4个字节,格式为长整数,代表时间

(2)Option type + Length + IPv6_address * n (n=1,2,3,...) 

option type举例举例(wireshark解析后数据)Option Value
23: DNS Servers多个IPv6地址,占据n个16字节
52: CAPWAP AC Addresses多个IPv6地址,占据n个16字节

(3)Option type + Length + FQDN * n (n=1,2,3,...) 

option type举例举例(wireshark解析后数据)Option Value
24: domain list多个域名

版权声明:本文为Wendy019900107原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。