DHCP(Danamic Host Configuration Protocol):动态主机配置协议;
这个DHCP请求过程分四段完成(正常情况下):
1)DHCP Discover
当客户端网卡启动后,默认情况下(配置在自动获取IP地址模式)会广播一个带有DHCP Discover信息的数据包(属于UDP数据包,包含自己的MAC地址,计算机名等信息),以寻找可用DHCP服务器,这个过程类似早期版本 的Bootstrap Protocol,即通过本机的68号端口发送广播数据到内网其他设备的67号端口,如果无法收到回复(DHCP Discover预设等待回复时间是1秒,会重复四次广播)客户机会使用APIPA协议,给自己分配一个私有地址(169.254.X.X)。
2)DHCP Offer
当DHCP服务器的本地67号端口收到带有DHCP Discover信息的数据包时会再通过67号端口回复一个DHCP Offer广播包,其中包含一些带分配的DHCP信息(包括待分配给客户机的IP地址,掩码,网关地址,域名,DHCP服务器地址等。
3)DHCP Request
当客户端68号端口收到带有DHCP Offer信息的数据包时(如果有多台DHCP服务器回复DHCP Offer信息数据包,默认以最先收到的为准)会广播回复一个DHCP Request请求数据包,以请求获得此IP租用相关信息(同时通知其他DHCP服务器,客户机已接受某台DHCP服务的Offer信息)。
4)DHCP ACK
当DHCP服务器67号端口收到带有DHCP Request信息数据包时就会广播回复一个带有完整DHCP信息的数据包给客户机并开始IP租用计时,当客户机收到此DHCP ACK数据包时会将相关信息跟网卡绑定(此过程客户机会先查询这个待分配的IP地址是否可用,通过ARP协议广播查看是否被其他电脑占用,如果不可用就广播回复DHCP Decline以拒绝此DHCP Offer数据包)。
以上四个阶段都是使用的广播发送数据包,因为到最后一步客户机才有自己的IP地址,全程都是通过XID(DHCP报文中的Transaction ID,事务ID)来辨别是否为同一个会话。如果DHCP服务器不在同一个子网则需要网关路由器在中间转发DHCP广播包(这个过程路由器用的都是67号端口)。
这里有更详细的分析说明:DHCP协议原理及抓包分析