网络地址的配置是网络层管理的重要步骤。最直观的配置方式是静态配置IP地址,但是这增加了运维管理成本,并且没有灵活性。因此,大部分场合下,IP地址都是通过动态配置的。
DHCP
在IPv4下,IP地址的动态配置依赖于DHCP协议。DHCP全称是Dynamic Host Configuration Protocol,由RFC2131定义。DHCP由BOOTP协议(RFC951)发展而来,并且完全兼容BOOTP。
DHCP是一个client-server模式的协议,Server管理着IP地址池。一般情况下,主机作为Client,通过下图的方式与DHCP Server交互,并请求IP地址。IP地址包含在DHCP offer和ACK中。
![5254b5751dbd7ed2a843e4b6c2a45ee7.png](https://img-blog.csdnimg.cn/img_convert/5254b5751dbd7ed2a843e4b6c2a45ee7.png)
DHCP对应的中文是动态主机配置协议。所以除了IP地址以外,同时也能配置子网掩码长度,主机名,路由,默认网关,DNS等。所以在IPv4中,DHCP协议就可以完成大部分的主机动态配置。DHCP协议已经使用了几十年,这里不做过多的介绍。
DHCPv6
对应于DHCP,IPv6协议中也有DHCPv6(RFC8415/RFC3315)。但是就像IPv6完全不兼容IPv4一样,DHCPv6除了工作模式与DHCP类似以外,与DHCP也不兼容,它的协议内容也进行了重新定义。
因为IPv6中没有广播的概念,所以不像DHCP基于广播地址255.255.255.255来发现DHCP Server,DHCPv6中,有两个保留的组播地址,用来发现网络中的DHCP Server:
- All_DHCP_Relay_Agents_and_Servers (ff02::1:2)
- DHCPv6 client使用这个地址将DHCP请求发送给所有的DHCPv6 relay(中继)agent和DHCPv6 server,这样可以发现网络中的DHCPv6 Server
- All_DHCP_Servers (ff05::1:3)
- DHCPv6 relay agent通过这个地址将DHCP请求转发给所有的DHCPv6 server