DHCP

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol)是用于集中对用户IP地址和其他网络配置信息进行动态管理和配置的协议。

DHCP协议使用UDP协议工作,主要作用是集中的管理、分配IP地址、使设备动态的获得IP地址、网关地址、DNS服务器地址等信息。

由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请。DHCP客户端设备在连接到网络时,会发送一个DHCP请求广播,以寻找可用的DHCP服务器。一旦找到服务器并成功分配IP地址,设备就成为DHCP客户端。

Server 是提供IP地址的一些设备(端口号 67)

Client 是通过DHCP动态获取IP地址的设备(端口号 68)

优点:提高配置IP地址效率,减少配置工作量,减少IP地址冲突,从而实现更加高效的网络管理。


工作原理

eNSP如下场景

DHCP客户端(PC1)首次向DHCP服务端(AR1)获取IP地址的过程:

  1. DHCP客户端为获取地址,以广播的方式通过UDP 67端口发送 DHCP Discover 包来寻找DHCP服务器。

    SPORT 68 DPORT 67SIP 0.0.0.0 - 表示自己还没有地址DIP 255.255.255.255 — 受限广播地址SMAC PC1的MACDMAC FF-FF-FF-FF-FF-FF
  2. DHCP服务器收到客户端发出的DHCP discover广播后,通过UDP 68端口响应给客户端一个 DHCP offer 包,告诉DHCP客户端,可以提供DHCP服务。

    SPORT 67 PORT 68SIP 192.168.1.1 DIP 192.168.1.254 24 — 想要给客户端下发的地址SMAC g0/0/0接口的MACDMAC PC1的MAC
  3. DHCP客户端接受到DHCP offer提供信息之后,如果客户机收到网络上多台DHCP服务器的响应,一般是最先到达的那个(这里只有一个),然后以广播的方式回答一个 DHCP request 包,告诉所有DHCP服务器它将接受哪一台服务器提供的IP地址。

    Sport 68 Dport 67SIP 0.0.0.0 DIP 255.255.255.255SMAC PC1的MACDMAC FF-FF-FF-FF-FF-FF

    由于还没有得到DHCP服务器的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。但包中包含了客户端的MAC地址、被分配的IP地址、提供IP的DHCP服务器地址等。

  4. 当DHCP服务器接收到客户机的DHCP request之后,会广播返回给客户机一个 DHCP ack 包,表明已经接受客户机的选择,告诉DHCP客户端可以使用它提供的IP地址。

    SPORT 67PORT 68SIP 192.168.1.1DIP 192.168.1.254 24SMAC g0/0/0接口的MACDMAC PC1的MAC

    客户端在接收到 DHCP ack 广播后,会向网络发送三个针对此IP地址的ARP包以执行冲突检测,查询网络上有没有其它机器使用该IP地址。

wireshark抓包可以看到相关的数据包:

初始的DHCP请求是通过广播发送的,以便寻找可用的DHCP服务器。然而,一旦服务器分配了IP地址,后续的通信会以单播的方式进行。


租期

DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。

客户端会在租期过去50%的时候,直接向为其提供IP地址的DHCP服务器发送 DHCP request 包。如果客户端接收到该服务器回应的DHCP ack 包,客户端就根据ack包更新自己的配置,更新IP租用。如果没有收到该服务器的回复,则客户端继续使用现有的IP地址。如果在租期过去50%的时候没有更新,则客户端将在租期过去87.5%的时候再次向为其提供IP地址的DHCP联系。如果还不成功,到租约的100%时候,客户端必须重新申请。

再次获取IP地址的情况:

由于第一次获取地址时,已经向其他的服务端说过我选择某个地址的情况,所以这里直接单播发送。不需要再发送 DHCP discover 包,而是直接发送包含前一次所分配的IP地址的 DHCP request 数据包。当DHCP服务器收到这一信息后,它会让DHCP客户机继续使用原来的IP地址,并回答一个 DHCP ack 确认信息。如果此IP地址已无法再分配给原来的DHCP客户端使用时,则DHCP服务器给DHCP客户端回答一个DHCP nack 否认信息。当原来的DHCP客户端收到此 DHCP nack 否认信息后,它就必须重新发送 DHCP discover 包来请求新的IP地址。


DHCP配置

如上图,路由器当作DHCP服务器,对上图的 192.168.1.0/24 配置DHCP服务。

system-view 进入系统视图[Huawei]sysname dhcp修改设备名称,非必须[dhcp]interface g0/0/0[dhcp-GigabitEthernet0/0/0]ip address 192.168.1.1 24[dhcp-GigabitEthernet0/0/0]quit配置服务器的ip地址[dhcp]dhcp enable 启动DHCP服务[dhcp]ip pool pool1创建地址池塘,并且给这个地址池塘起个名称[dhcp-ip-pool-pool1]network 192.168.1.0 mask 24宣告可以下发地址的范围[dhcp-ip-pool-pool1]gateway-list 192.168.1.1下发网关的IP地址[dhcp-ip-pool-pool1]dns-list 8.8.8.8 114.114.114.114下发DNS服务器的地址[dhcp-ip-pool-pool1]quit[dhcp]interface g0/0/0[dhcp-GigabitEthernet0/0/0]dhcp select global接口激活DHCP全局配置[dhcp-ip-pool-pool1]quit[dhcp]display ip pool name pool1查看地址池塘信息

PC1选中DHCP和自动获取DNS服务器地址,ipconfig — 查看本机网卡地址相关信息

PC>ipconfigLink local IPv6 address...........: fe80::5689:98ff:fef0:18d8IPv6 address......................: :: / 128IPv6 gateway......................: ::IPv4 address......................: 192.168.1.254Subnet mask.......................: 255.255.255.0Gateway...........................: 192.168.1.1Physical address..................: 54-89-98-F0-18-D8DNS server........................: 8.8.8.8                                    114.114.114.114

总之,DHCP协议是一种非常有用的网络协议,它简化了网络设备的配置过程,提高了网络管理的效率。通过自动分配IP地址和其他网络配置信息,DHCP为网络中的设备提供了更好的互联互通体验。


若有错误,欢迎指正!o( ̄▽ ̄)ブ