DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)
DHCP作用:为终端分配IP地址,并且对IP地址进行集中化管理的协议。
DHCP使用UDP协议,有两个熟知端口:DHCP服务器为67,DHCP客户为68。
DHCP分配IP地址的方式有:自动分配、动态分配和手工配置。前两种都是由DHCP服务器给客户端分配,自动分配的是永久性的IP地址,动态分配的IP地址过一段时间过期或能被客户端主动释放。手工配置由用户手动为客户端指定IP地址。
DHCP的报文格式
op:1byte,是报文的操作类型,分为请求报文和响应报文,1为请求报文;2为响应报文。具体的报文类型在option字段中标识。
htype:1byte,表示client硬件地址的类型,1表示以太网类型。
hlen:1byte,硬件地址的长度,以太网的硬件地址长度为6bytes。
hops:1byte,表示当前dhcp报文经过的DHCP中继的数目,每经过一个DHCP中继这个字段就加1.
xid:4bytes,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。
secs:2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。
flags:2bytes,是标志字段,16比特中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0.
ciaddr:4bytes,是客户端的IP地址,可以是client自己的IP地址,也可以是server分配给client的IP地址。
yiaddr(Your IP Address):4bytes,是server分配给client的IP地址。
siaddr:4bytes,是client端获取IP地址等信息的server端的地址。
giaddr:4bytes,是client发出请求报文后经过的第一个中继的IP地址。
chaddr:16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。
sname:64bytes,服务器主机名,是client端获取IP地址等信息的服务器名称。
file:128bytes,是client的启动配置文件名,是服务器为client指定的启动配置文件名及路径信息,由服务器填写。
options:是可选变长的选项字段,这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息。
DHCP的option
Option 1:用于指定客户端所在子网的子网掩码。
Option 3:用于指定默认网关的IP地址。
Option 6:用于指定DNS服务器的IP地址。
Option 12:用于指定客户端设备的主机名。
Option 15:用于指定本地域名。
Option 51:IP地址租约时间
Option 53:DHCP信息类型
Option 54:服务器标识
Option 58:更新时间值(用于指定客户端请求续约租约的时间间隔。)
Option 59:重新链接时间值(用于指定客户端请求重新绑定租约的时间间隔。)
Option 60:用于指定客户端设备的类型或厂商信息。
DHCP报文的种类及其作用
- DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。
- DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。
- DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。
- DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
- DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
- DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。
- DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。
- DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。
DHCP的工作流程
第一步:搜索阶段(DHCP DISCOVER)
当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。
第二步:提供阶段(DHCP OFFER)
在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。因为此时客户端还没有IP,所以返回信息也是以广播的方式返回的。
第三步:选择阶段(DHCP REQUEST)
DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。
第四步:确认阶段(DHCP ACK)
当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,确认租约,并指定租约时长。告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。
DHCP续租
IP地址租期----当PC申请下来IP地址后,会存在租期时间。能够合理使用该IP地址的时间
租期时间---24小时
当租期时间到达12小时,客户端就需要向服务器发起续租申请。
当第一次续租得到回复后,则客户端将租期时间刷新为24小时;若没有回复,则等待租期时间仅剩下3小 时。
此时发送第二次续租申请,此时使用discover报文广播发送申请。