设为首页 收藏本站
查看: 4273|回复: 0

[经验分享] DHCP的8类报文抓包以及option详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-23 09:53:26 | 显示全部楼层 |阅读模式
   DHCP(Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议)它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。
DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。
DHCP为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。
DHCP最重要的功能就是动态分配。除了IP地址,DHCP分组还为客户端提供其他的配置信息,比如子网掩码、域名、网关、DNS、租期等。这使得客户端无需用户动手就能自动配置连接网络。

  • DHCP的工作流程
wKiom1bwDYmhNdo4AACJfjOzxOM611.jpg
  • DHCP8类报文

报文类型
含义
DHCP DISCOVER
客户端用来寻找DHCP服务器。
DHCP OFFER
DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。
DHCP REQUEST
客户端请求配置确认,或者续借租期。
DHCP ACK
服务器对REQUEST报文的确认响应。
DHCP NAK
服务器对REQUEST报文的拒绝响应。(广播)
DHCP RELEASE
客户端要释放地址时用来通知服务器。(单播)
DHCP DECLINE
PC收到DHCP服务器的地址后,发送分配地址免费ARP,如果有回应,会发送DHCP DECLINE报文
DHCP INFORM
PC单独请求域名、DNS这些参数的时候
具体流程:
①发现阶段:即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)、基于UDP的源端口号68,目的端口号67来发送DHCP DISCOVERr发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

②预提供阶段:(可以单播可以广播,取决于DHCP报文中的flag位)即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,在本地形成一个绑定。向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP OFFER提供信息。【服务器在分配这个地址之间会ping一下这个分配的ip地址,如果没有Response就才会预分配这个地址】

③选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP REQUEST请求信息,该信息中包含向它所选定的DHCP服务器(option 54中有所选DHCP服务器的ip地址)。报文之所以要以广播方式回答,一是为了通知所选DHCP服务器,二是请其他服务器收回分配的地址。

④确认阶段:(可以单播可以广播,取决于DHCP报文中的flag位)即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,检测之前在预分配阶段所绑定的信息,如若MAC地址一致,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,如果此时request报文的MAC地址与之前的绑定不符合,服务器不会回复DHCP ACK报文,那么服务器会回复一个DHCP NAK 报文,通知你这个地址你用不了。

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


  • 更新租约:DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。当DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送单播DHCP REQUEST更新其IP租约的信息,当DHCP客户机启动时和IP租约期限过87.5%时,DHCP客户机都会自动向DHCP服务器发送广播DHCP REQUEST更新其IP租约的信息。收到DHCP ACK就续期,收到DHCP NAK就直接发送DHCP RELESE报文释放IP地址,然后开始重新一轮的DHCP

DHCP报文格式
wKioL1bwEHXhGEo6AACWyVYixOA704.jpg

  • OP:若是client送给server的封包,设为1,反向为2;
  • Htype:硬件类别,ethernet为1;
  • Hlen:硬件长度,ethernet为6;
  • Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;
  • Transaction     ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;
  • Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;
  • Flags:从0-15bits,最左一bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;
  • Ciaddr:用户IP地址;
  • Yiaddr:客户IP地址;
  • Siaddr:用于bootstrap过程中的IP地址;
  • Giaddr:转发代理(网关)IP地址;
  • Chaddr:client的硬件地址;
  • Sname:可选server的名称,以0x00结尾;
  • File:启动文件名;
  • Options:,厂商标识,可选的参数字段
常用的option:1 netmask
                                  3  router
                                  6  DNS
                                  12 host name
                                  51 ip address lease time
                                  53 message type (dhcp报文8种类型)
                                  54 server identification
                                  55 parameter request list (需要服务器给你提供哪些东西:ip地址,域名,网关)
                                  61 client identification

                                  255 end

DHCP中继:在网关接口上: ip helper-address X.X.X.X,将广播的DHCP报文变成单播报文,进行跨越网段的DHCP
至于报文的各种抓包(包括中继),我放在附件里面了,需要的可以下载下,用Wireshark打开看看


DHCP中继.rar (18.6 KB, 下载次数: 2) DHCP.rar (8.17 KB, 下载次数: 2)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-194601-1-1.html 上篇帖子: 获得Android Linux系统增删文件的权限 下篇帖子: Ubuntu Linux系统下apt-get命令详解 转贴 option
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表