我是靠谱客的博主 暴躁早晨,最近开发中收集的这篇文章主要介绍网络 -- DHCP学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是DHCP
  DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

DHCP实现
  DHCP实现分为四步:
  第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。
  第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。
  第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。
  第四步:DHCP Server发送ACK数据包,确认信息。

第一步(DHCP Discover)分析
  1.Client端使用IP地址0.0.0.0发送了一个广播包,可以看到此时的目的IP为255.255.255.255。Client想通过这个数据包发现可以给它提供服务的DHCP服务器。
  2.从下图可以看出,DHCP属于应用层协议,它在传输层使用UDP协议,目的端口是67。
这里写图片描述

第二步(DHCP Offer)分析
  1.当DHCP服务器收到一条DHCP Discover数据包时,用一个DHCP Offerr包给予客户端响应。
  2.DHCP服务器仍然使用广播地址作为目的地址,因为此时请求分配IP的Client并没有自己ip,而可能有多个Client在使用0.0.0.0这个IP作为源IP向DHCP服务器发出IP分配请求,DHCP也不能使用0.0.0.0这个IP作为目的IP地址,于是依然采用广播的方式,告诉正在请求的Client们,这是一台可以使用的DHCP服务器。
  3.DHCP服务器提供了一个可用的IP,在数据包的Your (client) IP Address字段可以看到DHCP服务器提供的可用IP。
  4.除此之外,如图中红色矩形框的内容所示,服务器还发送了子网掩码,路由器,DNS,域名,IP地址租用期等信息。
这里写图片描述

第三步(DHCP Request)分析
  1.当Client收到了DHCP Offer包以后(如果有多个可用的DHCP服务器,那么可能会收到多个DHCP Offer包),确认有可以和它交互的DHCP服务器存在,于是Client发送Request数据包,请求分配IP。
此时的源IP和目的IP依然是0.0.0.0和255.255.255.255。
这里写图片描述

第四步(DHCP ACK)分析
  1.服务器用DHCP ACK包对DHCP请求进行响应。
  2.在数据包中包含以下信息,表示将这些资源信息分配给Client.
   Your(client) IP address:分配给Client的可用IP。
   后面有许多项option信息,前两项是DHCP服务器发送的消息类型(ACK)和服务器的身份标识,后面几项是:
   Subnet Mask:Client端分配到的IP的子网掩码;
   Router:路由器
   Domain Name Server:DNS,域名服务器
   Domain Name:域名
   IP Address Lease Time:IP租用期。
这里写图片描述

总结

阶段源MAC目标MAC源IP目标IP
DiscoverPC机的MAC全FF0.0.0.0255.255.255.255
OfferDhcp服务器或者中继器路由的MACDhcp客户机的MACDhcp服务器或者中继路由器的IP地址准备分配的IP地址
RequestPC机的MAC全FF0.0.0.0255.255.255.255
AckDhcp服务器或者中继器路由的MACDhcp客户机的MACDhcp服务器或者中继路由器的IP地址准备分配的IP地址

DHCP报文
  Op: 报文类型,分为 两大类: Request**(1)* 和 Reply*(2)**
  HW Type: 硬件类型,一般是以太网:(0x01)
  HW Len: 硬件地址长度,单位字节。对应以太网(mac地址长度为6字节48bit):(6)
  Transaction ID:事务ID,服务器Reply时,会把Request中的Transaction拷贝到Reply报文中。 (随机数,由客户端生成)
  Secs: 距离第一次发射IP请求或Renew请求过去的秒数 。
  Flags:标志位,目前仅第一个bit有使用,置1 标明广播。 (0x8000)
  Client IP Address:当前客户端的IP地址,如果当前客户端没有IP地址,则置0 。(0.0.0.0)
  Your IP Address: 服务器向客户端提供IP地址时,会把IP地址填入本字段 。(172.16.115.85)
  (Next)Server IP Address:客户端引导时需要的另一个服务器的IP地址 。
  Gateway (Relay) IP Address: 网关(中继)IP地址,有DHCP 中继器在转发DHCP报文的时候填入 。
  Server Name: Server名字,有64bytes,一般不使用,填充为0 。
  Boot File name: boot file的路径,128bytes, 一般不使用,填充为0 。
  Option: 选项,不定长度。 DHCP报文中比较重要的字段,后面会有比较详细的介绍。
这里写图片描述

DHCP Option

Option名称描述
0Pad填充位
1Subnet Mask子网 掩码
3Router Address路由器地址
6DNSDNS server
15DN域名
50Requested IP Address请求的IP地址
51Address Lease Time地址租约时间
53DHCP Message TypeDHCP 消息类型,如Discover、Request、Offer、ACK等
54Server Identifier服务器标识
55Parameter Request List参数请求列表
56DHCP Error MessageDHCP 错误消息
58Lease Renewal Time租约续期时间
59Lease Rebinding Time租约重新设定的时间
61Client Identifier客户标识
119Domain Search List域名查找列表
255End结束

DHCP细节
DHCP基于UDP/IP传输。DHCP服务器使用端口号67,DHCP 客户端使用端口号68。

DHCP协议操作流程
(主机新加入网络时,获取IP的流程 )
  1. 新的client加入网络时,会使用0.0.0.0作为源地址,发送DHCP Discover广播报文,查询网络上有哪些DHCP server,以及这些DHCP server 能Offer哪些IP地址。
  2.所有的DHCP服务器接收到DHCP Discover报文后,都会回应Offer报文,提供IP地址(可能包含DNS等其他信息)给client。DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
  3. client 根据收到的Offer报文,选择一个DHCP Server,并选择它提供的IP地址(一般的原则是DHCP Client处理最先收到的DHCP Offer报文)。然后广播DHCP Request报文,想DHCP Server请求该IP地址,同时向本地网络(尤其是其他DHCP Server)公告自己已经选择了某个DHCP Server的某个IP地址。
  4. DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。(如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息)DHCP Server 回应ACK报文,将IP地址分配给Client端 (特殊情况:DHCP Server在发送Offer报文和接收到Request的短暂时间内把IP分配给了其他主机)
  5. DHCP Client 收到ACK报文后,会针对获得的IP地址发送ARP Request,进行IP地址冲突检测。 (如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。)
  6. 如果Client仍然无法使用该IP地址,则发送DHCP RELEASE报文,放弃该地址。(DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。)
(主机已经有IP地址,只想更新租约)
  1. 此时可以跳过DHCP Discover报文和DHCP Offer报文
  2. Client发送携带当前IP地址的Request报文
  3. 如果Server同意Client续约,则发送DHCP ACK报文。如果拒绝续约,则发送DHCPNAK报文。

DHCP starvation attack,DHCP饥饿攻击
  其实各种各样的攻击技术总是会让人觉得兴奋。抛却道德不谈,必须承认的是,制造这些攻击的人都是高智商。
  有许多中攻击DHCP的技术,这里介绍其中一种,有点类似于SYN 洪范攻击。
  DHCP starvation attack,中文即DHCP饥饿攻击,可以顾名思义一下,饥饿攻击,就是大量地进食,把可以吃的食物全部吃完,然后让其他人没得吃,最后给其他人提供一些毒药,把人家毒死,姑且可以这样浅显地认为。
  下面来说这种攻击是如何实现的。一些不法分子,伪造合法的MAC地址,不断地向DHCP服务器发出DHCP Request包,最后耗尽服务器的可用IP,于是原有的这台DHCP服务器便不能够给客户端分配IP了,此时不法分子再伪造一台DHCP服务器,给客户端分配IP,将客户端的默认网关和DNS都设置成自己的机器,于是便可以对客户端进行中间人攻击。

最后

以上就是暴躁早晨为你收集整理的网络 -- DHCP学习的全部内容,希望文章能够帮你解决网络 -- DHCP学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部