DHCP协议 --简单理解版

一.DHCP的基本概念

        1.DHCP(全称:dynamic host configuration protocol)动态主机配置协议

        2.产生的原因:给数量庞大的主机等分配ip地址时,如果使用静态手工配置,配置量大,易配置错误,后期变更ip地址时需要手动变更,维护难度大。

        3.DHCP能够记录分配的ip地址与MAC地址对应的表项关系,维护起来更加方便。

        4.DHCP服务器与DHCP客户端之间通过DHCP报文进行通信,DHCP报文通过UDP传输,使用67/68端口号。(服务器用67,客户端使用68)

二.DHCP的工作原理

1.工作原理(图片版)

2.工作原理(文字版)

         以该图为例:

                1.首先,Client向该接口的网段发出一个DHCP discover广播报文请求DHCP服务器来获取一个ip地址。

                2.DHCP Server收到客户端的DHCP discover 报文后,回复一个DHCP offer报文(该报文回复时选择广播发送还是单播发送取决于客户端能不能接受单播回包,如果能接收的话就单播发送offer报文,否则就是广播回包)。

      #  华为抓包offer报文是单播报文,H3C抓包offer报文是广播

        华为:

               

        H3C:

 

               3.Client接收到DHCP Server发送的DHCP offer报文后,还不能马上使用这个ip地址,他会向DHCP Server 发送一个DHCP request 广播报文来请求使用该ip地址。(使用广播报文的目的是为了让其他也提供ip地址的DHCP Server收到后,知道该Client已经名花有主了,将刚想分配给它的ip地址收回给其他有需要的DHCP Client使用。)

                4.DHCP Server 收到DHCP Client 的request报文后,如果同意Client使用该ip地址,则回复DHCP Ack单播报文,如果客户端请求的ip地址已经被使用了或者不能分配该ip地址给Client时,则回复DHCP NACK报文。

三.DHCP的工作过程

        

        还是以该图为例:

                1.因为一开始DHCP客户端根本不知道DHCP服务器的ip地址和MAC地址,所以客户端发送的报文里面:源MAC地址字段是自己的MAC地址,目的MAC地址字段是全F的,源ip地址字段是全0,目的IP地址字段是255.255.255.255.因为DHCP是用传输层的UDP协议传输的,所以传输层UDP里面封装:源端口字段:68,目的端口字段:67 --67 表示由DHCP客户端向DHCP服务器发送的消息,68则相反

         2.当DHCP服务器和DHCP客户端属于同一网段时,DHCP收到DHCP客户端的discover消息,DHCP服务器发送的offer报文的字段:源MAC地址字段是自己的MAC地址,由于DHCP服务器已经知道DHCP客户端的MAC地址,所以目的Mac地址字段是Client的MAC地址,源IP地址是服务器自己的IP地址,目的ip地址也是拟分配给client的IP地址,源端口字段:67,目的端口字段:68,DHCP提供消息里面包含DHCP服务器分配给DHCP客户端的IP地址

                

         3.DHCP客户端收到了DHCP服务器发送的offer报文,但是此时还不能正式使用,所以DHCP客户端发送的request报文中:源目Mac地址字段和源目IP字段跟discover里面的一样,只不过DHCP请求消息里面包含有DHCP服务器分配给客户端的IP地址,discover报文里面没有

        

        4.DHCP服务器发送的ack报文:源MAC地址字段是服务器自己的MAC地址,目的MAC地址字段是客户端的MAC地址,源ip地址字段描述的是自己的IP地址,而目的IP地址拟分配给Client的IP地址,源端口:67,目的端口:68。

        

四.DHCP中继

        DHCP中继出现的原因:当DHCP 服务器和DHCP 客户端不在同一网段时(需要有个好心人来帮忙)或者是一个DHCP 服务器想要为几个不同网段的DHCP 客户端分配地址时(兼职)

       假如是路由器充当dhcp中继代理时,该路由器收到子网中发现dhcp服务器和请求IP地址的数据包时,他会将真实dhcp服务器的IP地址作为该数据包的目的ip地址,将这些数据包以单播的形式转发给位于另外一个子网中的dhcp服务器

        

         以该图为例:

        在DHCP_reply的g0/0/0口抓包:

        

         可以看到显示的是正常的client和serverip地址。

        在DHCP_reply的g0/0/1口抓包:

        

       可以看到它是以DHCP_reply的中继ip地址作为源IP地址与DHCP Server来交互报文的

         g0/0/0口配置如下:

 interface GigabitEthernet0/0/0
 ip address 192.168.10.1 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 192.168.20.2
 

五.DHCP的报文类型

1.discover报文:

        客户端首次登陆网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器

2.offer报文:

        服务器用来响应Discover报文,此报文携带了各种配置信息(ip地址,dns服务器,网关等)

3.request报文:

        3.1.  客户端初始化后,发送广播的request来回应服务器提供的offer

        3.2.  客户端重启后,发送广播的request来确认先前被分配的配置信息

        3.3.  当客户端已经和某个IP地址绑定后,发送request单播或广播报文来更新IP地址的租约

4.Ack报文:

        服务器对客户端的request报文的确认响应,只有客户端收到了ack,才真正获得了相关配置

5.Nak报文:

        服务器对客户端的request报文的拒绝响应。例如收到了request但是没有找到响应的租约记录,则发送nak。

6.decline报文:

        客户端发现服务器分配的地址发生冲突,则会发送此报文,重新向服务器申请地址

7.release报文:

        客户端通过该报文主动释放服务器分配给它的IP地址,当服务器收到该报文后,可以将该IP地址分配给其他客户端

8.inform报文:

        客户端获取到IP地址后,还需要服务器提供更详细的配置信息(DNS,网关等)则向服务器发送inform报文。

六.DHCP的欺骗攻击

        产生的原因:

很多欺骗攻击都是在利用协议自身缺乏认证机制的缺陷,因为通信机制本身无法让通信参与方相互确认身份,所以攻击者有机会将自己伪装成某个通信方,在挽留过中涉法窃取通信消息或者让通信无法正常进行。

       常见的攻击手段:

                1.冒充dhcp服务器,非法响应dhcp客户端的请求,从而使dhcp客户端获取不正常的IP地址,从而不能上网

                2.dhcp中间人:在dhcp服务器和dhcp客户端之间的设备,攻击者利用 ARP 机制,让 Client 学习到 DHCP Server IP 与 Attacker MAC 的映射关系,又让 Server 学习到 Client IP 与 Attacker Mac 的映射关系。如此一来,Client 与 Server 之间交互的 IP 报文都会经过攻击者中转;

                3.攻击者冒充成大量dhcp客户端来向dhcp服务器请求大量的IP地址资源,当真正想要租用IP地址的dhcp客户端再向dhcp服务器请求IP地址时,dhcp服务器已经没有IP地址可分配了,所以这又是一种通过泛洪实现的

        解决方案:

                1. 配置DHCP snooping :会生成一张DHCP监听表, 对两个安全机制有用(也可以手动配置静态,针对于没有配置DHCP,但是要做源防护以及DAI(ARP攻击)的情况。)

                2.DHCP snooping包含有:主机的Mac、ip地址以及VLAN和连接的接口。

七.DHCP Client的租期问题:

                1.因为该ip地址是租的,所以当该ip地址的期限还有50%时要单播发送request报文续租,server回复Ack报文则续租成功。否则在使用至87.5%时要广播发送request报文续租,server回复Ack报文则续租成功。如果还没收到Ack报文则在期限到后,重新申请,申请过程重复上面的申请步骤。

                2.如果租期没到就不想用该ip地址就发送release报文停止使用该ip地址。服务器可以将该IP地址分配给其他主机使用。

         

八.关于DHCP Client的ip地址冲突检测

        

        1.为防止IP地址重复分配导致地址冲突,DHCP服务器为客户端分配地址前,需要先对该地址进行探测。

        2.DHCP服务器的地址探测是通过ping功能实现的,通过检测是否能在指定时间内得到ping响应来判断是否存在地址冲突。DHCP服务器发送目的地址为待分配地址的ICMP回显请求报文。如果在指定时间内收到ICMP回显响应报文,则认为存在地址冲突。DHCP服务器从地址池中选择新的IP地址,并重复上述操作。如果在指定时间内未收到ICMP回显响应报文,则继续发送ICMP回显请求报文,直到发送的ICMP回显显示报文数目达到最大值。如果仍然未收到ICMP回显响应报文,则将地址分配给客户端,从而确保客户端获得的IP地址唯一。

        3.DHCP服务器通过ping操作来检测是否发生地址冲突,而DHCP客户端则通过发送免费ARP报文检测是否发生地址冲突。

                                             --来源于H3C官网介绍

        4.DHCP Client会发送三次免费ARP报文来检测网络中是否存在冲突的ip地址,如果没有回应则表示可以使用该ip地址,如果有回应则表示该ip地址已经被使用了,需要发送decline报文重新申请ip地址。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值