wifi技术篇3—dhcp详解

1 Dhcp概述

Ip地址可以动态分配,也可以静态指定

dhcp是在一个sta加入一个ap的时候,要求ap为其动态分配一个ip地址

2 如何抓包?

Win10开热点,通过wireshark抓本机网卡ip层的包

3 抓包分析

Sta:作为client                      ap:作为server

1 DHCP Discover

dhcp server   寻找server

client的ip为0.0.0.0(由于此时client并没有ip地址,所以使用本机任意地址)

目的地址为255.255.255.255,进行广播

DHCP超时时间(最多四次重试):客户端将第一个 DHCP discover 封包送出去之后,在1s之内没有得到响应的话,就会进行第二次 DHCP discover 广播,第二次的等待时间是9s,第三次是13s,第四次是16s,如果四次全失败,则说明DHCP服务器无响应,客户端显示err,宣告本次DHCP失败(根据使用者的选择,系统会继续在5分钟之后重发发送一次discover的过程)

2 DHCP Offer

dhcp client            server分配ip

当dhcp server监听到dhcp client发出的dhcp discover广播包,会去查看空闲ip地址,选择最前面的空闲ip地址和其他的TCP/IP设定(比如租约到期时间等)响应给dhcp client一个DHCP OFFER封包。

由于客户端开始的时候没有ip地址,所以在DHCP Discover封包内会带有客户端的mac地址信息,并使用一个XID编号来辨别该封包,dhcp server响应的DHCP offer封包会根据这些资料传递给要求租约的dhcp client

3 DHCP Request

dhcp client的ip为0.0.0.0(此时client还是没有给自己offer包中的ip地址[因为offer包中的地址还需要后续arp确认没有其他client使用,才可以正式接收])

目的地址为255.255.255.255(广播)

dhcp client---->dhcp server          sta申明接受哪个服务器提供的ip

dhcp client如果收到多个dhcp server的响应报,只会选择一个dhcp offer包接收(一般是最先到达的包),并且会发送一个dhcp request广播包,告诉所有dhcp server他接收了那一台服务器提供的offer包,后续dhcp client还会发送一个ARP包,查询是否有其他主机使用了这个ip,如果有,则发送dhcp declient给服务器,表示拒绝这个dhcp offer,并且重新开启dhcp discover

要注意的一点:主动权永远都在客户端手上,客户端接收服务器的包,可以在dhcp request中向服务器发出选择接收哪一部分信息,这些选择会在dhcp option field中以不同号码的形式填写(例如客户端有自己的tcp/ip,则会选择不去接收服务器包中的tcp/ip信息)

4 DHCP Ack

Dhcp服务器收到客户端的request包后,会发送一个ack的包,用来确认ip租约正式生效

至此,dhcp整个工作过程结束了

5 后续包分析

Sta发出arp封包询问其他主机刚拿到的ip是否已经被使用(在3 dhcp request中有写)

Sta询问路由器的mac地址

4 二次DHCP

sta可以选择跳过1 2步,直接用之前的ip发送DHCP Reqest

  DHCP 发放流程第一次登录之后: 一旦 DHCP 客户端成功地从服务器哪里取得 DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前之 DHCP 服务器发出 DHCP request 信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接响应 DHCP ack 来确认则可

如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其重新执行 DHCP discover

dhcp租约原理

至 IP 的租约期限是非常考究的, 以 NT 为例子:DHCP 客户端除了在开机的时候发出 DHCP request 请求之外,在租约期限一半的时候也会发出 DHCP request ,如果此时得不到 DHCP 服务器的确认的话,客户端还可以继续使用该 IP当租约期过了87.5%时,如果客户端仍然无法与当初的DHCP服务器联系上,它将与其它DHCP服务器通信。如果网络上再没有任何DHCP服务器在运行时,该客户端必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。

5 跨网络DHCP

跨网络的 DHCP 运作 从前面描述的过程中,我们不难发现:DHCP DISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。

要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。 若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值