认识DHCP

认识DHCP

这个协议在刚刚考完试的计网中就已经接触到,但是一直都是按照PPT的概念来,是不是感觉很茫然,考试之后是不是会忘?在刚刚跑起的vue前端项目中,因为开发环境是本地的主机,需要在hosts中配置相应的映射,但是今天早上在启动项目时又发生错误,因为之前的错误经验,我就直接感觉就是动态分配ip的问题,使用ipconfig查看,果不其然,解决方法就是配置静态ip,第一次接静态ip概念还是大二配置hadoop集群时候,每一次主机重启之后ip改变就找不到彼此,当时也是花了很大的功夫


DHCP(Dynamic Host Configuration Protocol ,动态主机配置协议),大型的局域网环境都在使用,这里也不例外,好处就是没有这个协议的时候,每一次主机连接到物理网络之后都需要自己手动配置相应的信息,包括ip地址,掩码和网关等,如何保证ip地址的唯一性呢?当然是找管理员,当时的管理员任务量一定很大,在DHCP协议出台之后,原来管理员的任务都交给了DHCP服务器来完成,主机只要接入到物理网络之后,就可以自动的获取到ip地址,而且DHCP服务器可以保证地址的唯一性,进一步如果DHCP服务器挂了怎么办?人们通常采用的方法就是是使用集群的方法进行容灾备份,当然如果集群中每个服务器都保存一定的ip地址,可能存在ip地址冲突的问题,这里面的问题一定要协调好,为了保障可用性,DHCP服务端和DHCP客户端都要满足一定的条件:

  • DHCP服务器:

    在分配ip地址之前发送icmp包,来排查错误

  • DHCP客户端:
    针对从DHCP那里获得的IP地址发送ARP请求包,确认没有返回应答,这样可以保证不冲突

当然存在的问题就是地址分配之前发送ICMP包可能会消耗一定的性能,而且像我这样想要使用静态ip的还是要手动配置,但是毕竟是少数


DHCP的工作过程:

参考:DHCP原理及配置

1.发现阶段:即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播的方式发送DHCP discover 发现信息来寻找DHCP服务器(因为DHCP服务器的IP地址对客户机来说是未知的),即向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 offer,然后它以广播的方式回答一个DHCP request请求信息。该信息中包含它所选定的DHCP服务器请求IP地址的内容。之所以要以广播的方式回答,是为了通知所有的DHCP服务器,它将选择某台DHCP服务器所提供的IP地址。
4.确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP resquest请求后,它便向DHCP客户机发送一个包含它提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,除了DHCP客户机所选择的服务器IP外,其他的DHCP服务器都将收回曾提供的IP地址
5**.重新登陆**:以后DHCP客户机每次登陆网络时,就不需要再发送DHCP discover发现信息了。而是直接发送包含前一次所分配IP地址的DHCP resquest请求。当DHCP服务器收到这一信息后,它会尝试让客户机继续使用原来的IP并回答一个DHCP ACK确认信息,如果此IP地址无法分配个原来的DHCP客户机时(比如IP分配给其他DHCP客户机使用) ,则DHCP服务器给DHCP客户机回答一个DHCP NACK 否认消息,当原来的DHCP客户机收到此消息后,它就必须重新发送DHCP discover发现信息重新请求新的IP地址。
6.更新租约:DHCP服务器向DHCP客户机出租的IP地址一般都由一个租借期限,期满后DHCP服务器会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送其更新租约的信息。

刚才看了一些我的配置:

InkedO1jrU865SD4vLRP_LI

可以看到,公司局域网的租约过期时间很短,中间会有一个续约的过程,我猜原因可能是机器很多吧,中间一段时间没有活动就会收回,配置静态ip之后问题解决~~~