zoukankan      html  css  js  c++  java
  • 【转】DHCP协议详解

    协议分析 DHCP协议解码详解

    1. DHCP协议简介

    DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。

    DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。DHCP为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。

    DHCP最重要的功能就是动态分配。除了IP地址,DHCP分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。

    1. DHCP

      的工作流程

       

    发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

    提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。

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

    确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。

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

    更新租约DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

    1. DHCP的报文格式

    我们来介绍一下DHCP的报文格式,如图1

    OP(1)

    Htype(1)

    Hlen(1)

    Hops(1)

    Transaction ID(4)

    Seconds(2)

    Flags(2)

    Ciaddr4

    Yiaddr4

    Siaddr4

    Giaddr4

    Chaddr16

    Sname64

    File128

    Optionsvariable

    (图1 DHCP 报文格式)

    • OP:若是client送给server的封包,设为1,反向为2

    • Htype:硬件类别,ethernet1

    • Hlen:硬件长度,ethernet6

    • Hops:若数据包需经过router传送,每站加1,若在同一网内,为0

    • Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;

    • Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;

    • Flags:从0-15bits,最左一bit1时表示server将以广播方式传送封包给 client,其余尚未使用;

    • Ciaddr:用户IP地址;

    • Yiaddr:客户IP地址;

    • Siaddr

      用于bootstrap过程中的IP地址

    • Giaddr:转发代理(网关)IP地址;

    • Chaddrclient的硬件地址;

    • Sname:可选server的名称,以0x00结尾;

    • File:启动文件名;

    • Options:,厂商标识,可选的参数字段

    1. 解码

      信息

       

    通过DHCP 工作流程,我们知道从DHCP服务器获取配置信息的4个阶段中,DHCP客户端会出现有4种报文(DHCPDISCOVERYDHCPOFFERDHCPREQUESTDHCPACK)。我们分别来看看4报文的解码内容:

    1. 发现阶段

    使用科来网络分析系统捕获DHCP DISCOVERY 数据包,如图2

    (图2 DHCP DISCOVERY数据包解码)

    由图2可以看到DHCP DISCOVERY包的解码信息,由于DHCPBOOTP的以个扩展,,DHCP兼容BOOTP,我们可以看到BOOTPDHCP的解码。

    1. 提供阶段

    使用科来网络分析系统捕获DHCP OFFER数据包,如图3

    (图3 DHCP OFFER数据包解码)

    1. 选择阶段

    使用科来网络分析系统捕获DHCP REQUEST数据包,如图4,

    (4 DHCP REQUEST数据包解码)

    1. 确认阶段

    使用科来网络分析系统捕获DHCP ACK数据包,如图5,

    (5 DHCP ACK数据包解码)

    以上为DHCP工作的4种数据包,每种数据包都是有区别的。

  • 相关阅读:
    centos安装vsftp
    php利用soap实现webservice 和利用soap调用其他语言的webservice
    php连接redis数据库 操作redis任务队列
    shopnc编译安装IM服务器node.js
    centos6.5 64位 yum install nginx的默认安装路径
    安装nfs服务器
    php扩展redis,编译安装redis服务
    x86_64编译JPEG遇到Invalid configuration `x86_64-unknown-linux-gnu'
    shopnc nginx优化配置文件
    nginx支持flv MP4 扩展nginx_mod_h264_streaming,nginx-rtmp-module-master,yamdi
  • 原文地址:https://www.cnblogs.com/LUO77/p/5906902.html
Copyright © 2011-2022 走看看