我们对DHCP的常见理解是,为主机动态的分配IP地址,减少手工配置,不用担心ip冲突。

  下面是我对DHCP的一些理解。

  DHCP用的是UDP协议,DHCP服务器监听的端口号是67,DHCP客户端发送请求时用的是68端口。

  下面是DHCP客户端请求IP的过程:

  自己对DHCP的理解-冯金伟博客园

   1. 客户端使用0.0.0.0地址,以广播的方式发送IP请求报文

        2. DHCP服务器监听到67端口收到的请求,判断地址池中是否有可分配的ip,有则广播方式发送报文

   3. 客户端收到后,发送请求报文,希望使用该ip地址

   4.  DHCP服务器判断ip是否可被分配,这时回复的可能是成功,也可能是失败

  

   网络中也可能存在超过一台的DHCP服务器,则客户端发送广播包后,可能会收到多个响应,客户端会选择第一个地址,并发送request请求。

   除了可以动态分配ip,也可以为某些mac绑定指定的ip。

   除了ip地址,还可以分配掩码,网关,dns等。

   租约的概念,可以设置租约时长,快到租约时长时,客户端要发起续租请求, DHCP服务器确认后才能继续使用ip。

   跨网段分配ip就需要dhcp relay。广播包默认是不能跨网段的,希望DHCP服务器能为其他网段的主机动态分配ip,就要在路由器或交换机上开启dhcp relay。

   dhcp snooping

   dhcp option 取值为0到255,用于在分配ip地址的同时指定网关,dns等。

  用java开发dhcp server服务,可以使用dhcp4java。