• 应用层协议分析-WinService12r2网络服务搭建DHCP协议分析


    DHCP Dynamic Host Configuration Protocol,

    动态主机配置协议,使用UDP协议工作,采用67(DHCP服务器文)和68(DHCP客户端)两个端口号。546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务。
    DHCP客户端向DHCP服务器发送的报文称之为DHCP请求报文,而DHCP服务器向DHCP客户端发送的报文称之为DHCP应答报文。

    DHCP工作模型

    DHCP:Dynamic Host Configuration Protocol
    实现IP地址的动态分配
    在这里插入图片描述

    DHCP优点

    减少错误
    减少手工配置IP地址导致的错误,如已分配的IP地址再次分配给另一设备引起的地址冲突
    减少网络管理
    TCP/IP配置是集中化和自动完成的,不需手工配置,集中定义全局和特定子网的TCP/IP配置
    大部分路由器能转发DHCP配置请求,减少了在每个子网设置DHCP服务器的必要
    客户机配置的地址变化必须经常更新,DHCP能高效而自动地进行配置

    DHCP系统组成

    DHCP客户:
    DHCP客户通过DHCP来获得网络配置参数
    Internet主机,通常就是普通用户的工作站
    DHCP服务器:
    DHCP服务器提供网络设置参数给DHCP客户
    Internet主机
    DHCP中继代理:
    在DHCP客户和服务器之间转发 DHCP 消息的主机或路由器

    DHCP采用C/S(客户端/服务器)模式,可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等,并能够提升地址的使用率。

    相关术语:

    1.DHCP报文种类
    DHCP一共有8种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各种类型报文的基本功能如下:

    DHCP Discover

    DHCP客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。

    DHCP Offer

    DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,最终还需要客户端通过ARP来检测该IP地址是否重复。

    DHCP Request

    DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期过去1/2时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期过去3/4时,会再次发送广播的Request请求报文以请求续延租约。

    DHCP ACK

    DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址。

    DHCP NAK

    如果DHCP服务器收到Request请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向DHCP客户端发送NAK应答报文,通知用户无法分配合适的IP地址。

    DHCP Release

    当DHCP客户端不再需要使用分配IP地址时,就会主动向DHCP服务器发送RELEASE请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址。
    DHCP Decline
    DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以期获得新的IP地址。

    DHCP Inform

    DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了。
    2.DHCP报文格式
    DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式。下面是各字段的说明。
    OP:报文的操作类型。分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。
    请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。
    应答报文:DHCP Offer、DHCP ACK和DHCP NAK。
    Htype:DHCP客户端的MAC地址类型。MAC地址类型其实是指明网络类型,Htype值为1时表示为最常见的以太网MAC地址类型。
    Hlen:DHCP客户端的MAC地址长度。以太网MAC地址长度为6个字节,即以太网时Hlen值为6。
    Hops:DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。(若数据包需经过router传送,每站加1,若在同一网内,为0。)
    Xid:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。
    Secs:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。(DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)
    Flags:标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)
    【注意】在客户端正式分配了IP地址之前的第一次IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文,以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。当然,如果是由DHCP中继器转的报文,则都是以单播方式发送的。另外,IP地址续约、IP地址释放的相关报文都是采用单播方式进行发送的。
    Ciaddr:DHCP客户端的IP地址。仅在DHCP服务器发送的ACK报文中显示,在其他报文中均显示0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
    Yiaddr:DHCP服务器分配给客户端的IP地址。仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。
    Siaddr:下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。(用于bootstrap过程中的IP地址)
    Giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。如果没有经过DHCP中继,则显示为0。(转发代理(网关)IP地址)
    Chaddr:DHCP客户端的MAC地址。在每个报文中都会显示对应DHCP客户端的MAC地址。
    Sname:为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式)。在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。
    File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。仅在DHCP Offer报文中显示,其他报文中显示为空。
    Options:可选项字段,长度可变,格式为"代码+长度+数据"。
    在这里插入图片描述
    列出部分可选的选项:
    代码1
    长度(字节):4
    说明:子网掩码
    代码3
    长度:长度可变,必须是4个字节的倍数。
    说明:默认网关(可以是一个路由器IP地址列表)
    代码6
    长度:长度可变,必须是4个字节的整数倍。
    说明DNS服务器(可以是一个DNS服务器IP地址列表)
    代码15
    长度:长度可变
    说明:域名称(主DNS服务器名称)
    代码44
    长度:长度可变,必须是4个字节的整数倍。
    说明:WINS服务器(可以是一个WINS服务器IP列表)
    代码51
    长度:4
    说明:有效租约期(以秒为单位)
    代码53
    长度:1
    说明:报文类型
    1: DHCP Discover
    2: DHCP Offer
    3: DHCP Request
    4: DHCP Decline
    5: DHCP ACK
    6: DHCP NAK
    7: DHCP Release
    8: DHCP Inform
    代码58
    长度:4
    说明:续约时间

    服务搭建

    配置静态地址
    在这里插入图片描述

    添加安装dhcp服务

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    新建作用域

    在这里插入图片描述
    在这里插入图片描述
    如果没有特定保留地址跳过
    在这里插入图片描述
    ip地址租约时间,默认8天
    在这里插入图片描述
    添加路由
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    分析

    本地实验的时候发现问题,因为我路由器上也自带dhcp服务,而dhcp的地址分发是通过头包相应时间顺序来决定使用谁的dhcp服务,所以我每次都是抓到路由器的dhcp,而没有获取到winservice的dhcp服务,但它们组成原理是一样的,不影响我们分析数据包。

    释放ip
    在这里插入图片描述
    重新获取
    在这里插入图片描述

    客户端向68端口(bootps)广播请求配置,
    服务器向67端口(bootpc)广播回应请求。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    JDK源码那些事儿之LinkedBlockingQueue
    JDK源码那些事儿之并发ConcurrentHashMap上篇
    JDK源码那些事儿之ArrayBlockingQueue
    JDK源码那些事儿之HashMap.TreeNode
    mycat使用schema配置
    redis连接数高居不下,怎么破?。。。。这么破
    修改tomcat使用的的编码方式
    centos6.x下让redis以服务方式运行
    mycatrule
    HTML和XML中的转义字符
  • 原文地址:https://www.cnblogs.com/cqnswp/p/12568855.html
Copyright © 2020-2023  润新知