“DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。
DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。 ”
----这是百度百科的描述
通过下图可以看出dhcp的基本流:
设备进入网络后,向dhcp服务器申请ip的基本流为序号1->3->4->5。正常情况下,经过这个过程,设备网卡就可以获得有效的IP。
1->客户端设备向接入的网络发送广播信息【结构特定】,用来发现dhcp服务器
3->网络中接收到该广播的dhcp服务器,会以广播的方式发送一个包含可用ip等信息的回应。
4->如果客户端经过检测可以接受该IP,则会发送一个包含该IP的request的广播,之后就将该IP设置为自身的ip
5->提供ip的服务器接收到该request后会做出一个unicast的ACK,从而结束该流程
在设备使用IP的过程中,会涉及到使用期限的问题,如果使用期限已经过了租期的1/2,则设备会发送一个unicast的request请求续租;dhcp服务器收到该请求后则发送一个unicast的ack来回复请求。如第一张图中的517和518两条记录
如果到租期的3/4时还没有收到服务器的ack,则设备会发送broadcast的request请求续租。
需要注意交互过程中使用的是broadcast和unicast的不同之处。
参考:
http://www.rhyshaden.com/dhcp.htm