zoukankan      html  css  js  c++  java
  • DHCP报文及工作流程

    DHCP定义

        DHCP,Dynamic Host Configuration Procotol动态主机配置协议。是应用层协议,能够让设置自动获取IP地址以及其他重要网络资源。

        DHCP使用UDP协议工作,DHCP有3个端口,其中UDP67和UDP68为正常的DHCP端口服务端口,分别作为DHCP Server和DHCP Client的服务端口。546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,该服务是需要特别开启的服务,用来做双机热备的。

    DHCP的作用

        DHCP主要作用如下:

          1、保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

          2、DHCP可以给用户分配永久固定的IP地址。

          3、DHCP允许用其他方法获得IP地址的主机共存,如手机配置IP地址的主机。

          4、DHCP服务器向现有的BOOTP客户端提供服务。

        DHCP有3种分配IP地址方式,分别是自动分配、动态分配、手工配置:

          自动分配Automatic Allocation:DHCP给客户端分配永久性IP地址

          动态分配Dynamic Allocation:DHCP给客户端分配的IP地址,过一段时间后会过期,或者客户端可以主动释放该地址。

          手动配置Manual Allocation:由用户手动为客户端指定IP地址。

    DHCP获取IP流程

         

        (1)发现阶段。即DHCP客户端寻找DHCP服务器的阶段。

            DHCP客户端以广播方式发送DHCP Discover包,来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。

            网络上每一台安装了TCP/IP协议的主机都会接收到该广播信息,但只有DHCP服务器才会做出相应。

        (2)提供阶段。即DHCP服务器提供IP地址的阶段。

            在网络中接收到DHCP Discover包的DHCP服务器,都会做出响应。这些DHCP服务器从尚未出租的IP地址中挑选一个给客户端,向客户端发送一个包含IP地址和其他设置的DHCP Offer包

        (3)选择阶段。即DHCP客户机选择某台DHCP服务器提供的IP地址阶段。

            DHCP客户端只接收第一个收到的DHCP Offer包信息。然后以广播方式回答一个DHCP Request请求信息。该信息中包含向它所选定的DHCP服务器请求IP地址的内容。

            这里使用广播方式,就是通知所有DHCP服务器,它选择了某台DHCP服务器所提供的IP地址。局域网中所有DHCP服务器都会收到客户端发送的DHCP Request信息,通过查看包信息,可以确定客户端释放选择了自己提供的IP地址。如果选择的是自己的,则会发送一个确认包。否则,不进行响应。

        (4)确认阶段。即DHCP服务器确认所提供的IP地址阶段。

            当DHCP服务器收到客户端发送的DHCP Request请求信息后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP Ack信息,告诉DHCP客户端可以使用它所提供的IP

    DHCP报文格式

        DHCP报文总共8种类型,每种报文的格式相同,只是某些字段的取值不同

          

          op:报文的操作类型。分为请求报文和响应报文,1为请求报文,2为响应报文。具体报文类型在option字段中标识

           htype:DHCP客户端的硬件地址类型。1表示ethernet地址

           hlen:DHCP客户端的硬件地址长度。Ethernet地址为6

           hops:DHCP报文经过的DHCP中继的数目。初始为0,报文每经过一个DHCP中继,该字段就会增加1

           xid:客户端发起一次请求时选择的随机数,用来标识一次地址请求过程。

          secs:DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定取0

          flags:DHCP服务器响应报文是采用单播还是广播方式发送。只使用第0比特位,0表示采用单播方式,1表示采用广播港式,其余比特保留不用。

          ciaddr:DHCP客户端的IP地址

          yiaddr:DHCP服务器分配给客户端的IP地址

          siaddr:DHCP客户端获取IP地址等信息的服务器IP地址

          giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。

          chaddr:DHCP客户端的硬件地址。

          sname:DHCP客户端获取IP地址等信息的服务器名称。

          file:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。

          option:可选变长选项字段,包含报文的类型、有效租期、DNS服务器的IP地址和WINS服务器的IP地址等配置信息。

    DHCP报文类型

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

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

        DHCP Request:DHCP客户端只接收第一个收到的DHCP Offer包信息。然后以广播方式回答一个DHCP Request请求信息,通告选择的服务器。DHCP客户端成功获取IP地址后,在地址使用租期过去1/2时,会向DHCP服务器发送单播Request报文延续租期,如果没有收到DHCP ACK报文,在租期过去3/4时,发送广播Request报文延续租期。

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

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

        DHCP Release:当用户不再需要使用分配IP地址时,就会主动向DHCP服务器发送Release报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约。

        DHCP Decline:DHCP客户端厚底啊DHCP服务器回应的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的IP地址不可用。

        DHCP Inform:DHCP客户端如果需要从DHCP服务器获取更为详细的配置信息,则发送Inform报文向服务器请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端

  • 相关阅读:
    flask路由+视图
    flask基本使用1
    返回对象时字典化
    python3连接redis
    selected_related和prefetch_related
    django删除migrations导致初始化数据库失效
    vue添加拦截器(身份认证)以及cookie认证
    vue添加使用全局变量
    列表:动手试一试
    转来的字符串编辑方式
  • 原文地址:https://www.cnblogs.com/juankai/p/10316170.html
Copyright © 2011-2022 走看看