DHCP
DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。将主机的IP地址设置为动态分配时,DHCP服务器就会根据DHCP将IP地址分配给客户端,使客户端可以通过这个IP地址进行上网的操作。
背景
DHCP协议的前身是BOOTP协议,BOOTP被创建出来的目的也是为了分配IP地址但是只能实现有限的主机配置,后来被DHCP所取代。因为DHCP的功能更加的强大,也更加的复杂。
工作流程
- 客户端的操作系统生成一个DHCP discover报文,被放置在一个具有广播IP的目的地址和源IP为0.0.0.0的IP数据报中,发送到以太网,试图找到可以分配IP地址的DHCP服务器端。
- 运行在路由器上的DHCP服务器端接收到了此次请求,回复给客户端一个DHCP OFFER报文,其中包括了配置信息,要求客户端进行配置。
- 客户端接收到DHCPOFFER后,需要接收配置信息。表示接受的话,发送给服务器端一个DHCP request请求报文。
- DHCP服务器接收到request报文后,将IP地址分配给客户端。
DHCP的地址问题
DHCP服务器可配置为提供三种地址分配:自动分配、动态分配和手动分配。三者之间的差异是地址分配是否基于客户机的身份,以及该地址是否可撤销或者变更。最常用的方法是动态分配。
在动态分配时,DHCP客户机请求分配一个IP地址,服务器从可用的地址池中选择一个作为响应。分配给客户机的地址只在一段特定时间内有效,这段时间被称为租用期。客户机可以使用这个地址知道租用期到期,通常情况下,在租用期过半的时候会尝试续订租约。
设置租用期的原因
租用期是DHCP服务器一个重要的配置参数。租用期的范围下从几分钟上可达永久。但需要对地址池的大小和地址稳定性等因素加以权衡。较长的租用期通常会很快的耗尽可用的地址池,但可以提供稳定的地址和减小网络开销。较短的租用期可以给客户提供可用性更高的地址池,但是随之而来的是稳定性的降低。
报文格式
- OP:报文的操作类型,分为请求(1)和应答(2)两种
- Htype:客户端的MAC地址类型,其实就是指明网络类型。
- Hlen:MAC地址长度,以太网的MAC地址长度通常为6个字节,值为6
- Hops:报文经过DHCP中继的数目,默认为0,每经过一个中继,增加1。
- Xid:事务ID,是由客户机选择的一个随机数,服务器需要将它复制到响应中。用于将应答和请求匹配,在一次请求中所有的Xid都是同一个值。
- Secs:秒数,以秒为单位。从客户端获取IP地址或者续约过程到现在所使用的时间。
- Flags:标志位,用来标志服务器的应答报文是采用单播还是广播的形式,0:单播、1:广播;
- Ciaddr:客户端的IP地址,由于这个协议就是用来申请IP地址的,所以只有服务器的ACK报文中显示,在其他的报文中均为0;
- Yiaddr:服务器分配给客户端的IP地址,仅在服务器发送的OFFER和ACK报文中显示,其他报文中均为0
- Siaddr:下一个为客户端进行操作的服务器的地址
- Giaddr:客户端发起请求后经过的第一个中继的IP地址,如果没有中继则显示为0
- Chaddr:客户端的MAC地址。
- Sname:为客户端分配IP地址的服务器名称;
- File:服务器为客户端指定的配置文件以及路径,只在OFFER中显示,其他报文显示为0;
- Options:可选项字段,长度可变。格式为 代码+长度+数据