1.简介
DHCP(Dynamic Host Configuration Protocol:动态主机设置协议)是一个局域网的网络协议,前身是BOOTP协议,使用UDP协议工作。
DHCP分为两个部分:一个是服务器端,另一个是客户端。常用的有2个端口:67端口(DHCP server,发送) 和 68端口(DHCP client,接收);
主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。
2.功能
1.保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2.DHCP应当可以给用户分配永久固定的IP地址。
3.DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
4.DHCP服务器应当向现有的BOOTP客户端提供服务。
3.工作流程
1.DHCP Client发现阶段
DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送 DHCP discover发现信息来寻找DHCP服务器,
源地址为0.0.0.0 目的地址为255.255.255.255。网络上每一台安装了TCP/IP协议的主机 都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2.DHCP Server提供阶段
DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,
向DHCP客户机发送一个包含出租的 IP地址和其他设置的DHCP offer信息。
3.DHCP Client选择阶段
DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,
则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,
该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
4.DHCP Server确认阶段
DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,
它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。
然后DHCP客户机便将其TCP/IP协议与网卡绑定。另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回之前为其提供的IP地址。
5.DHCP Client重新登录阶段
当DHCP客户机重新登录后,发送一个以前的DHCP服务器分配的IP地址信息的DHCP Request报文,当DHCP服务器收到该请求后,会尝试让DHCP客户端继续使用该IP地址。
并回答一个ACK报文。如果该IP地址无法再次分配给该DHCP客户机后,DHCP回复一个NAK报文,当DHCP客户机收到该NAK报文后,会重新发送DHCP Discovery报文来重新获取IP地址。
6.DHCP Client续约阶段
DHCP获取到的IP地址都有一个租约,租约过期后,DHCP服务器将回收该IP地址,所以如果DHCP客户机如果想继续使用该IP地址,则必须更新器租约。
更新的方式就是,当当前租约期限过了一半后,DHCP客户机都会发送DHCP Renew报文来续约租期。
DHCP获得ip地址的4步骤: Discover ---> Offer ---> Request ---> Ack(nak)
DHCP刷新租期的步骤: Request ---> Ack(nak)
DHCP释放ip的步骤: Release
注意:客户端传输广播包给整个物理网络段内的所有主机,如局域网内有DHCP服务器时,才会响应客户端的IP参数要求,
所以DHCP服务器与客户端应该在同一个物理网段内。
4.优缺点
优点:
1.网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主机;
2.DHCP不会同时租借相同的IP地址给两台主机;
3.DHCP管理员可以约束特定的计算机使用特定的IP地址;
4.可以为每个DHCP作用域设置很多选项;
5.客户机在不同子网间移动时不需要重新设置IP地址。
缺点:
1.DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;
2.当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;
3.DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发。
5. IP分配方式
DHC服务器提供三种IP分配方式:
1.自动分配方式(Automatic Allocation):DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
2.动态分配方式(Dynamic Allocation):DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
3.手工分配方式(Manual Allocation):客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
6.DHCP报文
(1).报文类型
DHCP一共有8种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform
(2).报文格式
DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。
1.OP
报文的操作类型;分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。
请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。应答报文:DHCP Offer、DHCP ACK和DHCP NAK。
2.Htype
DHCP客户端的MAC地址类型;MAC地址类型其实是指明网络类型,Htype值为1时表示为最常见的以太网MAC地址类型。
3.Hlen
DHCP客户端的MAC地址长度;以太网MAC地址长度为6个字节,即以太网时Hlen值为6。
4.Hops
DHCP报文经过的DHCP中继的数目,默认为0;DHCP请求报文每经过一个DHCP中继,该字段就会增加1。
没有经过DHCP中继时值为0。(若数据包需经过router传送,每站加1,若在同一网内,为0)
5.Xid
客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。
6.Secs
DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。(DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)
7.Flags
标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)
8.Ciaddr
DHCP客户端的IP地址;仅在DHCP服务器发送的ACK报文中显示,在其他报文中均显示0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
9.Yiaddr
DHCP服务器分配给客户端的IP地址;仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。
10.Siaddr
下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址;仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0(用于bootstrap过程中的IP地址)
11.Giaddr
DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。如果没有经过DHCP中继,则显示为0。(转发代理(网关)IP地址)
12.Chaddr
DHCP客户端的MAC地址;在每个报文中都会显示对应DHCP客户端的MAC地址。
13.Sname
为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式);在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。
14.File
DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息;仅在DHCP Offer报文中显示,其他报文中显示为空。
15.Options:可选项字段,长度可变,格式为"代码+长度+数据"。列出部分可选的选项:
参考博客: https://blog.csdn.net/u011857683/article/details/83019895