• DHCP原理及报文格式


        DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是基于UDP层(这也就是说在snort检测过程中,只能看UDP的包)之上的应用,dhcp使用udp携带报文,udp封装在ip数据包中发送。我们先来看下dhcp报文格式

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

    Htype:硬件类别,ethernet为1;

    Hlen:硬件长度,ethernet为6;

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

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

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

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

    Ciaddr:用户IP地址;

    Yiaddr:客户IP地址;

    Siaddr:用于bootstrap过程中的IP地址;

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

    Chaddr:client的硬件地址;

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

    File:启动文件名;

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

    下面我们主要说下客户机从dhcpserver获取ip的过程,它处于6中状态分别是初始状态,选择状态,请求状态,绑定状态,重新获取状态,重新绑定状态。我们就结合我下面画的这张图好好说下

    1.主机启动,dhcp处于INI状态为了获取ip地址,DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名,本地所有的dhcpserver会收到这个报文,数据包中的目标端口设为BOOTP67端口。这时dhcp会处于select状态。

    2.处于select状态的主机会接受dhcpserver发来的dhcpoffer报文,每个报文中会包含为客户机配置的信息以及server为客户机提供的租用ip,一般主机会受到零个或者多个offer报文(一般主机会响应第一个offer报文),并与server协商相关事宜,为此主机会发送一个dhcpquest报文,并进入request状态。

    3.dhcpserver会给客户机一个ack的确认信息,这时一个dhcp获取过程结束。主机进入BIND稳定状态。

    4.假如主机不需要ip地址或者需要换个ip,这时主机会发送一个dhcprelease报文向dhcpserver,这时主机重新处于初始状态。

    5.一般服务器给客户机的ip地址都有租期,时间长短不等,而dhcp主机会有3个计时器,当择期过半50%,这时主机会发送一个 dhcprequest报文要求续租进入renew状态,serverdhcp会响应这个报文发送ack确认信息,这时dhcp会重新进入BOND状态。

    6.假如dhcpserver没有响应主机的请求,等租期到了87.5%这时主机会重新发送dhcprequest报文要求续租,主机进入 rebind状态,假如这时候dhcpserver不高兴(ip地址不够用)发送来一个否确认信息,这时主机会重新进入初始状态再次按照1——4步骤重新申请ip。假如收到ack老大的确认续租成功,说明这个ip我们还可以继续使用。没有响应,我们的主机只有等到我们ip租期耗尽,重新进入初始状态重新获取。

    报文类型:

    1)DHCPDISCOVER(0x01),此为Client开始DHCP过程的第一个报文

    2)DHCPOFFER(0x02),此为Server对DHCPDISCOVER报文的响应

    3)DHCPREQUEST(0x03),此报文是Client开始DHCP过程中对server的DHCPOFFER报文的回应,或者是Client续延IP地址租期时发出的报文

    4)DHCPDECLINE(0x04),当Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址

    5)DHCPACK(0x05),Server对Client的DHCPREQUEST报文的确认响应报文,Client收到此报文后,才真正获得了IP地址和相关的配置信息。

    6)DHCPNAK(0x06),Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。

    7)DHCPRELEASE(0x07),Client主动释放server分配给它的IP地址的报文,当Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。

    8)DHCPINFORM(0x08),Client已经获得了IP地址,发送此报文,只是为了从DHCP SERVER处获取其他的一些网络配置信息,如route ip,DNS Ip等,这种报文的应用非常少见。

    如:运行IPCONFIG/RELEASE后,PC会发出释放IP的报文,DHCP Message Type是7,他的作用是主动释放server分配给它的IP地址的报文,Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。

    如果一台客户机未从该DHCP服务器获取过地址,或者它获得的地址已过期,那么它将需要经过全部四个步骤才能得到一个IP地址。

  • 相关阅读:
    ArcGIS Pro获得工作目录和设置工作目录
    文献可视化神器—VOSviewer
    为hade增加model自动生成功能
    如何封装安全的go
    极其详尽的OpenWRT软路由系统安装与设置教程(物理机安装)
    资本运作模式(融资与投资) 运营管理文章
    软路由的路由功能设置 初学者系列 学习者系列文章
    安装kali linux操作系统(转) 初学者系列 学习者系列文章
    USBC数据线改名了!不提版本、只看速度
    安装Windows11操作系统(不需要绕过TPM检测脚本等) 初学者系列 学习者系列文章
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/2976262.html
Copyright © 2020-2023  润新知