DHCP协议浅析

DHCP协议浅析定义:动态主机配置协议,主要在一些大型局域网络环境中,集中管理和分配IP地址,提升地址的使用效率。DHCP协议采用CLIENT-SERVER方式实现,而且DHCP协议是基于UDP层之上的应用,DHCPCLIENT将采用端口号68,DHCPSERVER采用端口号67进行交互。DHCP的三种分配IP机制:自动分配方式:DHCP服务器为主机指定一个永久性的IP地址。客户端一旦第一次成功租用IP过后,后面即可永久性使用次IP地址。 动态分配方式:DHCP服务器为主机指定一个具有时间期限的IP地址…

大家好,又见面了,我是你们的朋友全栈君。

定义:动态主机配置协议,主要在一些大型局域网络环境中,集中管理和分配IP地址,提升地址的使用效率。

DHCP协议采用CLIENT-SERVER方式实现,而且DHCP 协议是基于UDP层之上的应用,DHCP CLIENT将采用端口号68,DHCP SERVER采用端口号67进行交互。

DHCP的三种分配IP机制:

  1. 自动分配方式:DHCP服务器为主机指定一个永久性的IP地址。客户端一旦第一次成功租用IP过后,后面即可永久性使用次IP地址。
  2. 动态分配方式:DHCP服务器为主机指定一个具有时间期限的IP地址,到期或者客户端主动放弃该地址之后,即可被其他主机使用。
  3. 手工分配方式:IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

DHCP与BOOTP之间的关系:

DHCP消息的格式是基于BOOTP消息格式的,但是BOOTP要求主机的硬件地址必须被手工输入到BOOTP表中。可以讲DHCP看成一个动态的BOOTP。

DHCP协议报文的种类:

1:DHCPDISCOVER:client客户端开始DHCP过程的第一个报文

2:DHCPOFFER:server服务器对DHCPDISCOVER报文的响应

3:DHCPREQUEST:client客户端开始DHCP过程中对server的DHCPOFFER报文的回应,或者是client续延IP地址租期时发出的报文

4:DHCPDECLINE:当client发现server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知server禁止使用IP地址

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

6:DHCPNAK:server对client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。

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

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

流程如下图(学习他人jpg)

DHCP协议浅析

                                                                                图1 DHCP的工作过程图

流程解析:

     1. DHCPDISCOVER寻找服务器

客户端开机或第一次登录网络时,设备发现本机没有IP设定,就会广播寻找DHCP服务器客户端此时还不知道自己属于哪一个网路﹐所以封包的来源地址会为0.0.0.0,目的地址则为255.255.255.255,然后再附上DHCP discover的信息(mac地址),向网路进行广播。 网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

     2. DHCPOFFER分配IP

        DHCP服务器监听到客户端发出的DHCP Discover广播后, 会针对这个客户端的硬件地址 (MAC)与本身的设定数据来进行下列工作:

a. 到服务器的登录文件中寻找该用户之前是否曾经用过某个 IP ,若有且该 IP 目前无人使用,则提供此 IP 给客户机;

b. 若配置文件针对该 MAC 提供额外的固定 IP (static IP) 时,则提供该固定 IP 给客户机;

c. 若不符合上述两个条件, 则随机取用目前没有被使用的 IP 参数给客户端,记录下来并回应给客户端一个DHCP OFFER封包,由于客户端在开始的时候还没有IP地址﹐所以在其DHCP Discover封包内会带有其MAC地址信息﹐并且有一个XID编号来辨别该封包﹐DHCP服务器回应的DHCP Offer封包则会根据这些资料传递给要求租约的客户。

     3. DHCPREQUEST请求使用

      如果客户端收到网路上多台DHCP服务器的回应﹐只会挑选其中一个DHCP Offer(通常是最先抵达的那个)并且向网路发送一个DHCP Request广播封包,告诉所有DHCP服务器它将指定接受哪一台服务器提供的IP位址。同时,客户端还会发送一个ARP封包, 查询网络上有没有其他机器使用该IP地址, 如果发现该IP被其他客户端占用, 客户端会发送一个DHCP Decline封包给DHCP服务器, 拒绝接受其DHCP Offer,并重新开始发送DHCP Discover信息。

     4. DHCPACK分配确认

      当DHCP服务器收到DHCP客户机回答的DHCP Request请求信息之后, 便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP Ack确认信息。以确认IP地址的正式生效。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供且不被使用的IP地址。

更新IP租约:

      当client客户端获得一个具有时间期限的IP地址之后,将会自动维护一个定时器,在IP地址使用期限的50%的时刻,自动启动单播续延IP地址租期的过程,如若续延成功,则使用租期相应向前延长,否则,在IP地址使用期限的87.5%的时刻,自动启动广播续延IP地址租期的过程,如若续延成功,则使用租期相应向前延长,否则在IP地址使用期限到期时,DHCP CLIENT将不再使用此IP地址,而是开始新的DHCP过程再次申请IP地址。

DHCP报文格式解析(学习他人jpg)

DHCP协议浅析

                                                                                  图2 DHCP报文格式图

“op”字段:表示当前报文是client的请求还是server的应答,“1”时为表示是client的请求,“2”时表示是server的应答。

“htype”,“hlen”字段:分别表示client 的网络硬件地址类型、长度。

“HOPS跳数”字段:表示当前的DHCP报文经过的DHCP RELAY的次数,此字段初始化为0,每经过一个DHCP RELAY,此字段就会加1,作用是限制DHCP报文不要经过太多的DHCP RELAY,协议规定,当“hops”大于4(现在也有规定为16)时,这个DHCP报文就不能再进行处理,而是丢弃。

“事务ID”字段:client每次发送DHCP请求报文时选择的随机数xid,用来匹配server的响应报文是对哪个请求报文的响应。client会丢弃“xid”不匹配的响应报文。

客户机IP地址字段:表示client自己的IP地址。可以是server分配给client的IP地址,也可以是client已有的IP地址。此字段不为0的原则就是client能够使用此IP地址接收IP报文。DHCP SERVER发现此字段不为0时,可以直接将响应报文单播给client。

你的IP地址字段:表示server分配给client的IP地址。当DHCP SERVER响应client的DHCP请求时,将把分配给client的IP地址填入此字段。

服务器IP地址字段:表示client 获取启动配置信息的服务器IP地址,一般是TFTP SERVER IP地址

中继代理IP地址字段:记录第一个DHCP RELAY [中继] agent的IP地址。当client发出DHCP请求报文后,如果网络中存在DHCP RELAY,则第一个DHCP RELAY转发这个DHCP请求报文时,就会把自己的IP地址填入此字段(随后的DHCP RELAY将不再改写此字段,只是把“hops”加1)。DHCP 将会根据此字段为用户分配IP地址,并把响应报文转发给此DHCP RELAY agent代收,再由DHCP RELAY agent转发给client。

客户机硬件地址字段:记录client的实际硬件地址内容。当client发出DHCP请求报文时,将把自己的网卡硬件地址填入此字段,DHCP SERVER一般都会使用此字段来唯一标识一个client。而且此字段与前面的“htype”“hlen”字段必须一致。

服务器的主机名字段:记录client 获取启动配置信息的服务器名字。此字段由DHCP SERVER填写,而且是可选的,如果填写,必须是一个以0结尾的字符串。

启动文件名字段:记录client 的启动配置文件名。 此字段由DHCP SERVER填写,而且是可选的,如果填写,必须是一个以0结尾的字符串。

选项字段可选字段,它是变长的,DHCP Options选项的取值范围为1~255,其中option 3 为设置网关地址选项;option 12 为设置客户端的主机名选项,option 60设置厂商分类信息选项,用于标识DHCP客户端的类型和配置。 ;  option 125功能是对标准DHCP协议一个补充标准,该功能的标准定义在RFC 3925中。DHCP server在完毕验证将client的IP地址等信息封装成DHCP OFFER包的时候,将OPTION 125信息封装DHCP OFFER包中再发送给client。 client收到OFFER包以后,首先查看该OFFER包所带的OPTION 125的“Option-data 1”字段中所填写的特征值,并与预先存储的信息进行比对。比对结果为同样则使用此OFFER,假设比对结果不同或OFFER包中不带OPTION 125,则将此OFFER丢弃。

WireShark抓包测试分析

      在wireshark过滤器里输入bootp进行对DHCP包的过滤,在windows命令行里输入ipconfig /renew来重新获取ip,获取ip成功后查看wireshark抓包结果。截图如下: 

DHCP协议浅析

                                                                       图3 Wire Shark抓包结果图

      wireshark捕获了5个DHCP包,分别是discover、offer、request、ack、release(ipconfig /release),刚好对应主机向DHCP服务器请求IP的四个过程。DHCP服务器寻找、DHCP服务器提供、DHCP请求使用、DHCP分配IP确认 、DHCP的IP释放。

     1. DHCP Discover寻找服务器

DHCP协议浅析

                                                                             图4 Discover报文截图

解析:从包的信息可以看出,DHCP包的传输层协议是UDP,源端口是68,目的端口号是67。因为此时主机不知道自己的IP地址,也不知道DHCP服务器的地址,所以使用源地址0.0.0.0和广播目的地址255.255.255.255。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。Client Mac address携带着自己的硬件地址信息e0:db:55;95;9f;2d,以便后面服务器分配IP的查找。

选项Option 53 DHCP报文类型Discover

选项Option 54 DHCP服务器身份Identifier:192.168.1.1

选项Option 61 DHCP设置客户端标识Client Identifier:e0:db:55;95;9f;2d

     2. DHCP Offer 分配IP

DHCP协议浅析

                                                                      图5 Offer报文截图

解析:此时DHCP服务器收到一个DHCP发现报文后,用一个DHCP Offer提供报文进行响应。从包中可以看出服务器IP地址为192.168.1.1,广播目的地址255.255.255.255,分配给主机的IP地址是192.168.1.4,然后找到硬件地址为e0:db:55;95;9f;2d的主机。

选项Option 53 DHCP报文类型Offer

选项Option 54 DHCP服务器身份Identifier:192.168.1.1

选项Option 51 DHCP设置IP地址租约时间选项。

选项Option 3 Router:192.168.1.1

选项Option 125 是对标准DHCP协议一个补充标准,作用就是让客户端对DHCP服务器也进行认证,防止DHCP服务器伪造。option 125 是为了让client 用来验证server 的,client 不需要发送option 125,而是server在分配IP地址等信息时,将验证信息封装在option 125,然后添加到Offer 包和ACK包里面。

     3. DHCP Request 收到Offer请求使用IP

DHCP协议浅析

                                                                               图6 Request报文截图

解析:主机收到Offer报文后,用一个DHCP请求报文进行响应,此时和DHCP发现报文一样,都是使用源地址0.0.0.0和广播目的地址255.255.255.255,告诉所有DHCP服务器它将指定接受哪一台服务器提供的IP位址。

服务器的信息在Option 54的DHCP Server Identifier:192.168.1.1

     4. DHCP Ack分配IP确认

DHCP协议浅析

                                                                           图7 Ack报文截图

解析:服务器用DHCP ACK报文对DHCP Request请求报文进行响应,使用Src源地址192.168.1.1和Dst广播目的地址255.255.255.255,分配给主机的IP地址是Your(client) IP address:192.168.1.4,硬件地址为e0:db:55;95;9f;2d的主机。

选项Option 51 DHCP设置IP地址租约时间选项。

选项Option 53 DHCP报文类型ACK

选项Option 54 DHCP服务器身份Identifier:192.168.1.1

选项Option 125 是对标准DHCP协议一个补充标准,作用就是让客户端对DHCP服务器也进行认证,防止DHCP服务器伪造。option 125 是为了让client 用来验证server 的,client 不需要发送option 125,而是server在分配IP地址等信息时,将验证信息封装在option 125,然后添加到Offer 包和ACK包里面。

     5. DHCP Release 释放IP

DHCP协议浅析

                                                                                  图8  Release报文截图

解析:客户端可通过发送此报文主动释放服务器分配给它的 IP 地址,当服务器收到此报文后,可将这个 IP 地址分配给其它的客户端。Src源地址192.168.1.4Dst广播目的地址192.168.1.1

选项Option 53 DHCP报文类型Release

选项Option 54 DHCP服务器身份Identifier:192.168.1.1

选项Option 61 DHCP设置客户端标识Client Identifier:e0:db:55;95;9f;2d

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

更新租约DHCP服务器向DHCP主机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。本次测试设定租借期限一分钟。

    如果DHCP客户机要延长其IP租约,则必须更新其IP租约。当DHCP客户机启动时和IP租约期限过一半50%时,DHCP客户机都会自动向DHCP服务器发送单播DHCP REQUEST更新其IP租约的信息,当DHCP客户机启动时和IP租约期限过87.5%时,DHCP客户机都会自动向DHCP服务器发送广播DHCP REQUEST更新其IP租约的信息。收到DHCP ACK就续期,收到DHCP NAK就直接发送DHCP RELESE报文释放IP地址,然后开始重新一轮的DHCP。

网关配置信息如下:

DHCP协议浅析

                                                                                图9 DHCP服务器配置截图

    续约流程

DHCP协议浅析

                                                                                图10 DHCP主机50%续约截图

    如果在租期到达50%的时候续约不成功,则会在租期87.5%继续请求续约。

DHCP协议浅析

                                                                                图11 DHCP主机87.5%续约截图

      如果在租期到达50%和87.5%的时候都没有续约成功,则主机将不再使用此IP地址,而是开始新的DHCP过程重新开始Discover过程开始申请IP地址。

DHCP协议浅析

                                                  图12 DHCP主机三次续约失败截图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142249.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java.lang.integer_java 中 关于java.lang.ArrayStoreException: java.lang.Integer异常,是什么原因?…

    java.lang.integer_java 中 关于java.lang.ArrayStoreException: java.lang.Integer异常,是什么原因?…Value的值是Object型,要装到Object[]数组中,而不是String[]。往数组里装不匹配的类型,就抛这个异常。packagepack.java.demo;importjava.util.HashMap;importjava.util.Map;publicclassTest{/***@paramargs*/publicstaticvoidmain(String[]…

  • 详解u盘装系统找不到镜像文件怎么回事[通俗易懂]

    详解u盘装系统找不到镜像文件怎么回事[通俗易懂]当电脑无法进入系统的时候,有小伙伴想要通过u盘装系统的方法来修复自己的故障系统,但是不知道为什么启动u盘找不到镜像文件,无法安装新的操作系统。今天小编就教下大家u盘装系统找不到镜像文件的解决方法。导致这个的原因,主要这是因为U盘只是制作成了引导盘,却没把系统镜像文件制作进U盘中,导致找不到镜像文件。可以使用小白一键重装系统工具重新制作u盘启动盘重装系统,具体的步骤如下:1、先找到一台可以的电脑,关闭电脑的杀毒软件,下载安装小白一键重装系统工具并打开,插入一个8g以上的空白u盘,选择开始制作。

  • java字符串类型转换为int_java中double转int类型

    java字符串类型转换为int_java中double转int类型标题Java类型转换:int转double由于double的范围比int数据类型大,所以当int值被赋给double时,java会自动将int值转换为double。隐式转换:由于double数据类型的范围和内存大小都比int大,因此从int到double的转换是隐式的。并不需要像doubletoint转换那样进行类型转换;使用Double.valueOf()方法/***Ja…

  • puppet的refresh与refreshonly参数作用

    puppet的refresh与refreshonly参数作用

  • CSS3选择器02—CSS3部分选择器

    该部分主要为CSS3新增的选择器接上一篇CSS(CSS3)选择器(1)一.通用兄弟选择器:24:E~F,匹配任何E元素之后的同级F元素。二.属性选择器:25:E[att^=val]

  • HTML+CSS美食静态网页设计

    HTML+CSS美食静态网页设计爱尚美食网页用AdobeDreamweaverCS6制作代码如下:HTML代码:<!DOCTYPEhtml><html><head><metacharset=utf-8″/><title>爱尚美食</title><!–链接图片及css–><linkrel=”…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号