DHCP协议前身为bootp,相比前身引入了 租约 lease 的功能,c-s的服务架构体现在:
server端:UDP/67 bootps
client端:UDP/68 bootpc
DHCP协议使用 四种消息 为客户端提供IP地址。
- DHCP discovery
- DHCP offer
- DHCP request
- DHCP ack
在client端首次申请IP地址时,四种消息 全是广播包,目的IP地址:255.255.255.255,目的MAC地址为FF:FF:FF:FF:FF:FF;
当租期到期,client端提交续租申请request消息、server端回应允许续租ack消息为单播包。
以下实验为验证上述红色字体的结论。
拓扑图:R1-f0/0 --- f0/0-R2
R2配置为DHCP server,配置如下:
ip dhcp pool host host 172.16.0.2 255.255.0.0 client-identifier 0063.6973.636f.2d63.3030.302e.3130.6338.2e30.3030.302d.4661.302f.30 lease 0 0 1 interface FastEthernet0/0 ip address 172.16.0.1 255.255.0.0
租约有效期为1分钟,一分钟后client需要重新发起续约请求。
R1作为client端向 R2 server发起IP地址请求,wireshark截图:
65 153.961800000 0.0.0.0 255.255.255.255 DHCP 618 DHCP Discover - Transaction ID 0x233b 66 153.993000000 172.16.0.1 255.255.255.255 DHCP 342 DHCP Offer - Transaction ID 0x233b 67 154.024200000 0.0.0.0 255.255.255.255 DHCP 618 DHCP Request - Transaction ID 0x233b 68 154.055400000 172.16.0.1 255.255.255.255 DHCP 342 DHCP ACK - Transaction ID 0x233b 87 209.604600000 172.16.0.2 255.255.255.255 DHCP 618 DHCP Request - Transaction ID 0x233b 88 209.667000000 172.16.0.1 172.16.0.2 DHCP 342 DHCP ACK - Transaction ID 0x233b 97 240.284400000 172.16.0.2 172.16.0.1 DHCP 618 DHCP Request - Transaction ID 0x233b 98 240.351200000 172.16.0.1 172.16.0.2 DHCP 342 DHCP ACK - Transaction ID 0x233b
由截图可得到以下结论:
1、client端最初请求时,四种消息全是广播,即目的IP地址255.255.255.255,目的mac为FF:FF:FF:FF:FF:FF,
2、当1分钟续约到期后,client端重新发起续约请求,request消息仍为广播
3、当续约再到期,client端又发起续约的消息才为单播,目的IP地址为DHCP的IP地址,目的mac为DHCP服务器R2-fa0/0端口的mac
参考文档:http://www.cisco.com/c/en/us/td/docs/ios/12_2/ip/configuration/guide/fipr_c/1cfdhcp.html
PS:
关于DHCP消息的广播、单播类型,不同的培训老师、不同的书答案是不一样的。cisco官网是对它的解释如上图,但642-813学习指南上讲的是:discovery、offer为广播,request、ack为单播,非常混淆人。以实际wireshark抓包的结果为最终答案。