• DHCP协议分析(Wireshark)


    一、说明

    一是很多时候IP都是设置成通过dhcp动态获取的,但一直不太清楚dhcp的具体交互过程;二是加上前几天有同事问知不知道DHCP具体交互过程;三是这两天正好在分析协议。所以就顺道来看一下。

    如果对wireshark不太熟悉,可参考"wireshark捕获/显示过滤器表达式书写规律说明 "。

    二、DHCP协议

    2.1 通俗版解释

    【客户端小C(RELEASE):S1老哥,你给我的x.x.x.x这个IP我不用了哦。】

      客户端小C(DISCOVERY):谁给我个IP啊?

      服务器S1(OFFER):y.y.y.y,拿去用吧。

    【服务器S2(OFFER):z.z.z.z,拿去用吧。】

      客户端小C(REQUEST):y.y.y.y,那我就用这个了哦。

      服务器S1(ACKNOWLEDGE):用吧,不过x小时后我就自就回收了,如果你要继续用在剩y小时的时候你要跟我说一声。

      客户端小C(INFORM):ok,那我就用了。你我只要注意你刚才说的就行了对吧。

      服务器S1(ACKNOWLEDGE):对滴。

    2.2 技术性解释

    dhcp使用udp进行通信,一般来说客户端通过68端口发出,服务端在67端口监听。

    整个dhcp获取ip的过程包括以下六步:DISCOVERY、OFFER、REQUEST、ACKNOWLEDGE、INFORM、再次ACKNOWLEDGE。具体实现时可能没有后两步。

    在数据包格式上各请求和响应都大同小异,主要是Option字段多些少些的区别。

    2.3 获取dhcp数据包

    以windows操作为例。

    第一步,打开控制面板--网络和 Internet--网络和共享中心-xx连接x--属性--Internet 协议版本4(TCP/IP 4)--属性,把自己网卡设置成自动获得IP地址。

    第二步,打开wireshark对网卡进行抓包。

    第三步,使用以下命令释放已获取到的IP地址,然后重新申请IP地址。

    # 释放当前已获取IP地址。执行此命令主机会向之前分配IP的DHCP服务器发送RELEASE请求
    ipconfig /release
    # 获取IP地址。执行此命令会完成dhcp申请过程
    ipconfig /renew

    第四步,在wireshark过滤器中输入bootp即可过滤出dhcp过程。如下图所示可见整个过程与上两小节描述的一致

    不同操作系统对dhcp客户端的实现可能有些差别,比如下边是海思一块板子的dhcp过程。请求会发三遍,然后没有INFORM。

    参考:

    https://wenku.baidu.com/view/8fdeb5ddcf84b9d529ea7a59.html

    https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

  • 相关阅读:
    dubbo springcloud区别
    rpc
    centos7 安装docker
    vibox安装
    知识点
    spring cloud
    微服务设计原则
    工具类
    xss--知识点
    java基础--注解
  • 原文地址:https://www.cnblogs.com/lsdb/p/10718735.html
Copyright © 2020-2023  润新知