通信人家园

标题: DHCP  [查看完整版帖子] [打印本页]

时间:  2016-11-2 14:10
作者: zhujiaquan     标题: DHCP

DHCPDynamic Host Configuration Protocol(动态主机分配协议)的缩写,前身是BOOTP协议。它分为两个部份﹕一个是服务器端﹐而另一个是客户端。所有的IP网络设定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP信息。
DHCP协议的主要特点有:
l 整个IP分配过程自动实现,在客户端上,除了将DHCP选项打勾外,无需做任何IP环境设定;
l 所有的IP网络设定资料都由DHCP服务器统一管理,还可以帮客户端指定netmaskDNS服务器、缺省网关等参数;
l 通过IP地址租期管理(到达期限时,可能会延长“租约”或重新分配地址),实现IP地址分时复用;
l DHCP采用广播方式交互报文,由于默认情况下路由器不会将收到的广播包从一个子网发送到另一个子网,因而当DHCP服务器与客户主机不在同一个子网时,必须使用DHCP中继(即DHCP relay);
l DHCP协议的安全性较差,服务器容易受到攻击。
一.1 DHCP的工作原理一.1.1 DHCP 的组网方式
1.2- 1  DHCP两种组网方式
DHCP协议采用客户端/服务器体系结构,客户端靠发送广播方式的发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息,服务器收到请求后进行响应。而路由器默认情况下是隔离广播域的,对此类报文不予处理,因此DHCP的组网方式分为同网段和不同网段两种方式。当DHCP服务器和客户机不在同一个子网时,充当客户主机默认网关的路由器必须将广播包发送到DHCP服务器所在的子网,这一功能称为DHCP中继。
标准的DHCP中继的功能相对来说也比较简单,只是重新封装、续传DHCP报文。
一.1.2 DHCP协议报文
DHCPUDP作为传输协议,主机发送消息到DHCP服务器的的67号端口,服务器返回消息给主机的68号端口
由于DHCP协议是初始化协议,简单的说,就是让终端获取IP地址的协议,既然终端连IP地址都没有,何以能够发出IP报文呢?服务器给客户端回送的报文该怎么封装呢?为了解决这个问题,DHCP报文的封装采取了如下措施:
1        首先链路层的封装必须是广播形式,既让在同一物理子网中的所有主机都能够收到这个报文。在以太网中,就是目的MAC为全1
2        由于终端没有IP地址,IP头中的源IP规定填为0.0.0.0
3        当终端发出DHCP请求报文,它并不知道DHCP服务器的IP地址,因此IP头中的目的IP填为子网广播IP——255.255.255.255,以保证DHCP服务器不丢弃这个报文。
上面的措施保证了DHCP服务器能够收到终端的请求报文,但仅凭链路层和IP层信息,DHCP服务器无法区分出DHCP报文,因此终端发出的DHCP请求报文的UDP层中源端口为68,目的端口为67。即DHCP服务器通过知名端口号67来判断一个报文是否是DHCP报文。
DHCP服务器发给终端的响应报文将会根据DHCP报文中的内容决定是广播还是单播,一般都是广播形式。广播封装时,链路层的封装必须是广播形式,在以太网中,就是目的MAC为全1IP头中的目的IP为广播IP——255.255.255.255。单播封装时,链路层的封装时单播形式,在以太网中,就是目的MAC为终端的网卡MAC地址。IP头中的目的IP填为有限的子网广播IP——255.255.255.255或者是即将分配给用户的IP地址(当终端能够接收这样的IP报文时)。两种封装方式中UDP 层都是相同的,源端口为67,目的端口为68。终端通过知名端口号68来判断一个报文是否是DHCP服务器的响应报文。
DHCP协议采用客户端-服务器方式进行交互,其报文格式共有8种,由报文中“DHCP message type”字段的值来确定,后面括号中的值即为相应类型的值,具 体含义如下:
1        DHCPDISCOVER 0X01),此报文时客户端开始DHCP过程的第一个报文;
2        DHCPOFFER0X02),此报文是服务器对DHCPDISCOVER报文的响应
3        DHCPREQUSET0X03),此报文是客户端开始DHCP过程中对服务器的DHCPOFFER报文的回应,或者是客户端续延IP地址租期时发出的报文
4        DHCPDECLINE0X04),当客户端发现服务器分配给他的IP地址无法使用,如IP地址冲突时,将发出此报文,通知服务器禁止使用IP地址
5        DHCPACK 0X05),服务器对客户端的DHCPREQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
6        DHCPNAK0X06),服务器对客户端的DHCPREQUEST报文的拒绝响应报文,客户端收到此报文后,一般会重新开始新的DHCP过程。
7        DHCPRELEASE0X07),客户端主动释放服务器分配给他的IP地址的报文,当服务器收到此报文后,就可以回收这个IP地址,能够分配给其他的客户端。
8        DHCPINFORM0X08),客户端已经获得了IP地址,发送此报文,只是为了从DHCP服务器处获取其他的一些网络配置信息,如DNS等,这种报文的应用报文非常少见。
一.1.2.1 DHCP SERVER工作方式
DHCP服务器需要提供给DHCP客户端分配IP地址和配置相关初始配置信息的功能,也就是通常所说的地址池管理功能,但这却不是DHCP协议本身的工作。
除了上述的地址池管理功能外,DHCP服务器的行为完全由DHCP客户端来驱使,因此其行为相对简单,只需根据收到的DHCP客户端的各种请求报文相应的响应不同的DHCP响应报文即可。
DHCP服务器收到DHCPDISCOVER报文后,就会从地址池中分配一个空闲IP,并获得DHCP客户端请求的参数,构造DHCPOFFER报文响应DHCP客户端;当DHCP服务器收到收到DHCPREQUEST报文时,就会根据报文中记录的DHCP客户端的硬件地址查找其地址分配表,如若找到,则响应DHCPACK报文,DHCP客户端成功获得IP地址和配置信息,否则,响应DHCPNAK报文,DHCP客户端会自动重新开始DHCP过程;当DHCP服务器收到DHCPRELEASE报文后,会解除这个IP地址与某个DHCP客户端的绑定,回收这个IP地址重新分配;当DHCP服务器收到DHCPDECLINE报文后,会禁用报文中“客户机IP地址”字段的IP地址,不再分配这个IP地址。
DHCP服务器是如何知道给DHCP客户端分配哪个网段的IP地址呢?
DHCP服务器收到DHCP请求报文后,将会首先查看“giaddr”字段是否为0,如果不为0,则就会根据此IP地址所在网段从相应地址池中为客户端分配IP地址,并且把响应报文直接单播给这个“中继代理IP地址”指定的IP地址,就是DHCP中继,而且UDP的目的端口号填为67,而不是68,如果为0,则DHCP服务器认为客户端与自己在同一子网中,将会根据自己的IP地址所在网段从相应地址池中为客户端分配IP地址。
一.1.2.2 DHCP RELAY工作方式
由于DHCP报文都采用广播方式,是无法穿越多个子网的,当要想DHCP报文穿越多个子网时,就要有DHCP中继的存在。DHCP中继可以是路由器,也可以是一台主机,总之,在具有DHCP中继功能的设备中,所有具有UDP目的端口号是67的局部传递的UDP信息,都被认为是要经过特殊处理的,所以,DHCP中继要监听UDP目的端口号是67的所有报文。
DHCP中继收到一个这样的报文并决定传播该报文时,它必须检查“中继代理IP地址”字段的值,如果这个字段的值为0,则DHCP中继就会将接受到请求报文得端口的IP地址填入此字段,如果该端口有多个IP地址,DHCP中继会挑选其中的一个并持续用它传播全部的DHCP报文;如果这个字段的值不是0,则这个字段的值不能被修改,也不能被填充为广播地址。在这两种情况下,报文都将被单播到新的目的地(或DHCP服务器),当然这个目的地(或者DHCP服务器)是可以配置的,以实现DHCP报文穿越多个子网的目的。
DHCP中继发现这是DHCP服务器的响应报文时,它也应当检查“中继代理IP地址”字段、“”客户机硬件地址”字段等,这些字段给DHCP中继提供了足够的信息将响应报文传送给客户机。
一.1.3 同网段的工作方式
1.2- 2  DHCP交互过程
DHCP服务器与DHCP客户端处于同网段的工作过程是这样的:
1        发现阶段,即DHCP客户端寻找DHCP服务器的阶段。DHCP客户端以广播方式(因为DHCP服务器的IP地址对于客户端来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2        提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户端,向DHCP客户端发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
3        选择阶段,即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户端发来的DHCP offer提供信息,则DHCP客户端只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
4        确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,它便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它所提供的IP地址。然后DHCP客户端便将其TCP/IP协议与网卡绑定,另外,除DHCP客户端选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
1.2- 3  DHCP交互过程
5        更新租约。DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。在使用租期过去50%时刻处, 客户端向服务器发送单播DHCPREQUEST报文续延租期,如果成功即收到DHCP服务器的DHCPACK报文,则租期相应向前延长,如果失败既没有受到DHCPACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向DHCP服务器发送广播DHCPREQUEST 报文续延租期,如果成功即收到DHCP服务器的DHCPACK报文,则租期相应向前延长;如果失败既没有收到DHCPACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端应自动放弃使用这个IP地址,并开始新的DHCP过程。





通信人家园 (https://www.txrjy.com/) Powered by C114