DHCP协议总结
DHCP动态主机配置协议,简单点说,就是提供了自动获取ip地址的功能,基于四层的UDP协议; 以下描述此协议的整个工作流程: (1) 客户端发送discovery报文,二三层广播报文,源ip地址全0; (2)服务器收到discovery报文之后,进行ip地址分配,找到ip地址,并且进行arp探测,当发现 此ip地址空闲之后,组offer报文,发送给客户端,内部包含有ip地址,客户端mac地址,租约时间等信息; (3)客户端收到offer报文之后,会选择一个(一般是第一个)进行应答,并且发送request报文到服务器,同时也会进行 ARP探测,当发现有ip地址冲突的时候,会发送decline报文到服务器终止使用该ip地址,然后重新发送discovery; (4)服务器发送ack报文确认地址,客户端收到ack之后,开始使用该ip地址; ---以上流程报文均为广播; (5)客户端会在租约时间的1/2和3/4时间开始尝试续租该ip地址,成功则继续使用,否则到达租期后 不能继续使用,需要施放该ip地址,并且重新发discovery; (6)客户端可以发送release报文随时放弃该ip地址的使用; 我们重点说下服务器的一些实现问题: 1. 建立bit数组,在bit数组中将分配出去或者不能够分配的地址进行标记; 比较烂的实现是每次收到discovery请求之后,先随机一个地址