我们对DHCP的常见理解是,为主机动态的分配IP地址,减少手工配置,不用担心ip冲突。
下面是我对DHCP的一些理解。
DHCP用的是UDP协议,DHCP服务器监听的端口号是67,DHCP客户端发送请求时用的是68端口。
下面是DHCP客户端请求IP的过程:
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。
最新评论