什么是DHCP呢?百度百科上面的解释是Dynamic Host Configuration Protocol,动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
“小编”所在的工作单位用户数量较大,公网ip地址数量有限,很显然,手动分配ip地址的方案肯定是不可行的。因为dhcp不会担心有重复的ip地址,不用担心用户因为配置不对导致无法上网的问题,更重要的一点是dhcp能够从上往下有一个合理的规划,不会导致ip地址段混乱。综上所述,有必要在园区网内部署一台dhcp服务器。
部署dhcp服务器之前,需要先搞懂dhcp的工作原理,下面小编简单谈一下对于dhcp工作原理的解读。DHCP 是基于C/S(服务器客户端)模式的 ,Client使用UDP 68,server使用UDP 67,dhcp有几个基本的概念需要掌握;
1、dhcp客户端:通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP 客户端。
2、DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。
3、DHCP Relay:DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能。
dhcp的工作过程可以用下图表示:
1、当客户端接入网络的时候,即启用了dhcp-client后,客户端会发送一个dhcp discover广播报文来发现局域网内的dhcp服务器。因此,第一阶段为dhcp发现阶段,主要意思即为寻找局域网内的dhcp服务器。
2、在局域网内,某个dhcp服务器接收到第一阶段发送过来的报文后,根据自己的地址池内剩下的ip地址,依然以广播方式分配给客户端一个ip地址,分配的dhcp offer报文中还包含了一些其他的字段,如dns地址,网关,掩码等。如果这一阶段内存在多个dhcp服务器,依然会发送多个dhcp offer报文给该客户端。
3、CLient根据先收到的Offer报文来决定选用哪个服务器提供的DHCP的地址(存在多个回应的话,先来的优先),然后根据这个Offer提供的地址信息,发送Request报文请求。
(1)、客户端初始化时,发送广播的DHCP Request报文来回应服务器的DHCP offer报文
(2)、客户端重启初始后,发送广播的DHCP的DCHP Request报文来确认先前被分配的IP地址等配置信息。
(3)、当客户端已知和某个IP地址绑定后,发送单播的DHCP Request报文来延长IP地址租期
4、服务器收到request报文以后,确认地址池中的这个地址没有被分配,如果没有被分配就回复ACK报文,如果被分配了 ,就会回复DHCP-NAK报文,告诉CLient 地址已经被分配了。
5、当CLient收到服务器分配的地址后,会向这个广播域内发送一个免费ARP的请求,如果没有人响应这个请求,CLient才正式使用这个地址,如果有人回应的话,会返回一个DHCP-Decline报文,要求服务器重新获取地址。
6、当CLient的IP租期到达一半的时候,会单播发送DHCP-Request报文,请求服务器更新租期,服务器收到以后,如果可以继续使用该IP地址的话,会响应CLient DHCP-ACK,如果该IP不能继续分配,则响应CLient DHCP-NAK。此时Client会在租期的75%再次询问server 进行续约,如果该IP地址可用则回复ACK,反则回复NAK。
7、如果客户端重启后,会自动发送DHCPREQUEST广播给DHCP服务器以便请求继续租用原来使用的IP地址,如果服务器收到这个消息,确认客户端可以使用该地址,则回答一个DHCP ACK确认消息,如果此IP地址已经无法再分配,则返回一个DHCP NCK否认信息,客户端收到这个信息以后,则必须重新发送DHCP Discovery消息获取新的地址。 若没有得到响应,则尝试与网关通信,如果通信正常,这个租期还没到期的话,则可以继续使用,但是不能和网关通信的话,则会获得169.254.0.1~169.254.255.254之间的IP地址,然后每隔5min尝试更新租约。
8、当客户端已经获得了IP地址,发送DHCP INFORM报文来获取其他一些网络配置信息,比如网关、DNS服务器
9、当客户端可通过DHCP RELEASE报文主动释放服务器分配给它的地址,当服务器收到此报文后,可将这个IP地址分配给其他客户端。
免费ARP,它实现的原理是,当机子重启或者设置了IP地址的时候,这个主机会通过免费ARP来询问这个局域网中是否有相同的IP存在(这个ARP询问的就是自己本身的IP地址,看是否有人回应),如果有人回复这个ARP的请求,那么就会得到一个错误的消息“以太网地址 a:b:c:d:e:f发送来重复的IP地址”,通常情况下,是没人回应的,因为没有冲突存在,如果有人回应了这个ARP的请求,那么说明该IP地址已经被使用了,对方回应了这个ARP的响应,它会通过操作系统显示提示出来,说该IP地址存在冲突问题。在现在的DHCP服务器中,已经也引入了这个机制了,它会在分配给客户端这个IP地址之前,会先发送一个Ping,或者ARP等机制来查看该局域网中是否已经有该IP地址存在了,如果有得话,那么DHCP会分配其他IP给请求的客户端,如果没有人回应,那么则把该IP地址让客户端使用,所以很多情况下,看到设备上面,没有做地址排除的时候,而且有些IP地址已经在使用了,但是服务器能够很好的分配不冲突的地址给客户端,不造成地址冲突。
网友评论