DHCP协议介绍及启动过程讲解

强颜欢笑 提交于 2020-01-29 13:45:50

DHCP协议介绍

在常见的小型网络中(例如家庭网络和学生宿舍网),网络管理员都是采用手工分配IP地址的方法,而到了中、大型网络,这种方法就不太适用了。在中、大型网络,特别是大型网络中,往往有超过100台的客户机,手动分配IP地址的方法就不太合适了,不仅效率太低而且容易出错。因此,我们必须引入一种高效的IP地址分配方法;DHCP协议为我们解决这一难题提供高效方法。

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):DHCP协议的前身是BOOTP协议,是一个局域网的网络协议,位于TCP/IP模型的应用层,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。其主要功能就是为客户端分配IP信息(IP地址、Gateway地址、DNS服务器地址)

DHCP启动流程

DHCP主要启动流程如下,主要有以下几个阶段:

  1. DHCP发现(DISCOVER)
  2. DHCP提供(OFFER)
  3. DHCP请求(REQUEST)
  4. DHCP确认(Acknowledge,ACK)
  5. DHCP释放(RELEASE)
    在这里插入图片描述

DHCP请求IP地址的过程如下:

1)主机发送DHCP DISCOVER广播包在网络上寻找DHCP服务器;
2)DHCP服务器向主机发送DHCP OFFER单播数据包,包含IP地址、MAC地址、域名信息以及地址租期;
3)主机发送DHCP REQUEST广播包,正式向服务器请求分配已提供的IP地址;
4)DHCP服务器向主机发送DHCP ACK单播包,确认主机的请求
5)租约到期,客户机发送DHCP Release报文,DHCP服务器回收被分配的IP地址

DHCP流程讲解

1. DHCP Discover阶段

发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址为255.255.255.255,端口号为67发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

在Discover阶段客户端也可以请求它使用的最后一个IP地址作为将要分配的IP,我这里最后使用的IP为192.168.0.110.
在这里插入图片描述
2. DHCP OFFER阶段

提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息(DNS地址,IP地址,子网地址,DHCP服务地址等)。、

在offer阶段的Dst地址可以是255.255.255.255或者是DISCOVER阶段附加的Requested 地址,这里为第二种。
在这里插入图片描述
3. DHCP REQUEST阶段

选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
在这里插入图片描述

4. DHCP ACK阶段

确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址.
在这里插入图片描述
5. DHCP RELEASE阶段

释放阶段,即客户机租约到期,客户机发送DHCP Release报文给DHCP服务器,DHCP服务器回收被分配的IP地址。
在这里插入图片描述
此外,在实际过程中可能还存在着两个阶段:重新登录阶段以及更新租约阶段

重新登录,以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

当客户端获取到IP信息时,在cmd命令冲执行ipconfig /renew客户机‘192.168.0.110’则会发起Request请求,如果该地址没有被其他机器使用,DHCP服务器则发起ACK信息,如下图所示:
在这里插入图片描述
更新租约, DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

DHCP协议的不足

DHCP协议在给大量客户机分配IP信息提供了便利性,但是该协议在某些场景也有其缺点:

  • DHCP服务器提供IP地址具有随机性,具有不确定性
  • DHCP服务器只能管理通过DHCP协议分配的IP地址,若用户手动分配IP,可能存在两台IP地址冲突
  • 若在一个局域网中存在两个DHCP服务器,客户机获取的IP地址可能冲突或者获取非预期IP地址。

DHCP服务器和测试命令

本台pc机器是通过路由器接入家庭网络,而该台TPLink则充当DHCP服务器,实现客户端机的IP分配。

为了分析DHCP协议启动过程需要使用ipconfig命令以及wireshark工具进行抓包分析。

wireshark抓包
在这里插入图片描述

ipconfig命令

其中ipconfig /release 为释放IPV4地址信息,ipconfig /renew为更新IPV4地址信息
在这里插入图片描述

如果不足,欢迎指正~~

参考文章:
https://zh.wikipedia.org/wiki/动态主机设置协议
http://www.elecfans.com/baike/wangluo/luyouqi/20180306643883.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!