DHCP协议详解(非常详细总结),结合ENSP,wireshark学习使用

DHCP协议详解(非常详细总结),结合ENSP,wireshark学习使用

2023年7月3日发(作者:)

DHCP协议详解(⾮常详细总结),结合ENSP,wireshark学习使⽤协议协议理解定义:DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是⼀个应⽤在局域⽹中的⽹络协议,它使⽤UDP协议⼯作。理解:DHCP协议就是⼀个基于UDP协议⼯作在局域⽹内的⽹络协议,其最终的⽬的就是获取响应的IP地址,其中这过程中有多种分配⽅式,以及发送报⽂的格式要求等。作⽤:动态分配IP地址,过程⾃动化,终端⽆需⼀⼀⼿⼯配置,配置信息统⼀管理(DNS,⽹关),IP地址有限、需要⼤量配置IP地址、经常移动终端。好处:提⾼配置IP地址效率,减少配置⼯作量,减少IP地址冲突。分配IP地址⽅式:(1)⼿⼯配置⽅式:通过⽹络管理员⼿⼯配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将⼿动配置的IP地址分配给客户端。。(2)⾃动配置⽅式:当DHCP客户端第⼀次想服务端租⽤到第⼀个IP地址后,就将这个IP地址永久分配给客户端使⽤。(3)动态配置⽅式:服务器暂时分配⼀个IP地址给客户端,根据租约到期或者续约租期的⽅式来管理分配的IP地址。报⽂格式链路层头IP头

20bytesUDP头DHCP报⽂图1 DHCP报⽂封装格式图2 DHCP报⽂格式图1是dhcp整个报⽂的封装格式,包括链路层头、IP头、UDP头和DHCP报⽂,其中dhcp主要的数据都封装在dhcp报⽂中。图2 就是DHCP报⽂的格式,各字段的说明如下:op:1byte,是报⽂的操作类型,分为请求报⽂和响应报⽂,1为请求报⽂;2为响应报⽂。具体的报⽂类型在option字段中标识。htype:1byte,表⽰client硬件地址的类型,1表⽰以太⽹类型。hlen:1byte,硬件地址的长度,以太⽹的硬件地址长度为6bytes。hops:1byte,表⽰当前dhcp报⽂经过的DHCP中继的数⽬,每经过⼀个DHCP中继这个字段就加:4bytes,由client端产⽣的随机数,⽤于匹配请求和应答报⽂,就是匹配应答报⽂是对哪个请求报⽂做出应答。secs:2bytes,客户端进⼊IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。⽬前没有使⽤,固定为0。flags:2bytes,是标志字段,16⽐特中只使⽤了最⾼位⽐特(即最左边的⽐特),这个个⽐特是⼴播响应标识位,⽤来标识DHCP服务器发出的响应报⽂是⼴播还是单播,0是单播,1是⼴播。其余的⽐特位保留不⽤,都为:4bytes,是客户端的IP地址,可以是client⾃⼰的IP地址,也可以是server分配给client的IP地址。yiaddr(Your IP Address):4bytes,是server分配给client的IP地址。siaddr:4bytes,是client端获取IP地址等信息的server端的地址。giaddr:4bytes,是client发出请求报⽂后经过的第⼀个中继的IP地址。chaddr:16bytes,是client端的硬件地址,在client发出报⽂时会把⾃⼰⽹卡的硬件地址写进这个字段。sname:64bytes,服务器主机名,是client端获取IP地址等信息的服务器名称。file:128bytes,是client的启动配置⽂件名,是服务器为client指定的启动配置⽂件名及路径信息,由服务器填写。

options:是可选变长的选项字段,这个字段包含了终端的初始配置信息和⽹络配置信息,包括报⽂类型,有效租期,DNS服务器的IP地址等配置信息。这个字段的结构采⽤“CLV”结构,如图4:图4 option字段编码⽅式其中”code”是标识号,唯⼀标识后⾯的信息内容(vlaue),1bytes;“length”表⽰后⾯的value值的长度,1bytes“vlaue”是信息内容Options字段有很多项,是可选的,不同的报⽂option项可能不同,图5是⼀个DHCP request报⽂的option项:图5 option项不同的option项有不同的含义,下⾯是⼀些常见的option项:(1)DHCP Message Type: code=53 length=1 表⽰DHCP的报⽂类型。(2)Client identifier: code=61 client端的硬件地址(3)Server identifier: code=54 服务器的IP地址(4)Subnet Mask: code=1 ⼦⽹掩码(5)route: code=3 ⽹关IP地址(6)Domain Name Server: code=6 DNS服务器的IP地址(7)IP Address Lease Time: code=51 租约时间 协议报⽂的种类Dhcp协议⼀共有8中报⽂,包括:DHCPDISCOVERY,DHCPOFFER,DHCPREQUEST,DHCPACK,DHCPNAK,DHCPRELEASE,DHCPDECLINE,DHCPINFORM报⽂类型由options字段中的option53“DHCP Message Type”选项来确定。各报⽂的具体含义如下:(1),DHCP-DISCOVER报⽂:0x01 客户端请求包这个报⽂是client端开始dhcp过程的第⼀个请求报⽂,client在请求地址时,并不知道server端的位置,所以client会以⼴播的⽅式发送请求报⽂,它的⽬的是发现⽹络中的服务器。(2),DHCP-OFFER报⽂: 0x02 服务器响应包这个报⽂server端对DISCOVERY报⽂的响应报⽂。会在所配置的地址池中查找⼀个合适的IP地址,加上相应的租约期限和其他配置信息(如GATEWAY,DNS SERVER等),构造⼀个OFFER报⽂,发送给⽤户,告知⽤户本SERVER可以为其提供IP地址的分配,并且。发OFFER报⽂⼀般是单播的⽅式发送。(3),DHCP-REQUEST报⽂:0x03 客户端选择包在⼀个⼦⽹中可能有多台服务器,所有收到DISCOVER报⽂的服务器都会回应OFFER报⽂,所以client端可能收到多个OFFER报⽂,通常会选择第⼀个OFFER报⽂的服务器作为⾃⼰的⽬标服务器,并回应⼀个REQUEST请求报⽂。在续租约的时候client端也会发送REQUEST报⽂ 请求续租期。(4),DHCP-ACK报⽂:0x05 服务器确认包是server对client端的REQUEST报⽂的确认响应报⽂,server在收到REQUEST报⽂后,根据REQUEST报⽂中携带的client MAC来查找有没有相应的租约记录,如果有则发送ACK报⽂作为回应,通知client可以使⽤分配的IP地址。(5),DHCP-NAK报⽂:0x06 服务器拒绝包Server端对client端的REQUEST报⽂的拒绝响应报⽂,如果服务器没有相应的租约记录,就会发送NAK报⽂给client端。(6),DHCP-RELEASE报⽂:0x07 客户端释放包Client端主动释放server端分配给它的IP是,就会发送DHCP-RELEASE报⽂给server,server收到这个报⽂后,就会回收这个IP地址。(7),DHCP-DECLINE报⽂:0x04client收到server回应的ACK报⽂后,通过地址冲突检测发现 SERVER分配的地址冲突或由于其它原因导致不能使⽤,则发送DHCP-DECLINE报⽂,通知server所分配的IP地址不可⽤。(8),DHCP-INFORM报⽂:0x08在client已经获得了IP地址,需要从server端获得更详细的配置信息时,就会发送DHCP-INFORM报⽂向server请求,server在收到这个报⽂后,会根据租约查找,找到相应的配置信息后,就会回应DHCP-ACK报⽂给client。

协议⼯作过程动态获取IP过程图5 DHCP⼯作流程抓包过程 (1)在Wireshark中点击start开始抓包,在过滤栏输⼊bootp,使其只显⽰DHCP数据包(2)在win10 中的cmd输⼊ipconfig /release 先断开当前的⽹络连接,主机号变为0.0.0.0,主机与⽹络断开,不能访问⽹络。图6 断开⽹络配置图图7 释放包(3)在cmd中输⼊ipconfig /renew 请求⽹络连接,也为客户端分配了IP地址。

图8 再次请求⽹络配置图图9 新增数据包此时,可以看到在Wireshark中新增了4个DHCP数据包:

数据包1:DHCP Discover

数据包2:DHCP Offer

数据包3:DHCP Request

数据包4:DHCP ACK四个阶段DHCP动态获取IP地址的过程主要分为发现阶段、提供阶段、选择阶段、确认阶段四个阶段。(1)发现阶段:client端在局域⽹内以⼴播的⽅式发起⼀个DHCP Discover包,⽬的是在⼦⽹络中发现能够给client端提供IP地址的server端。UDP ⽬标端⼝号为67 源IP 地址0.0.0.0 ⽬的IP:255.255.255.255图10 DHCP discover包(2)提供阶段:局域⽹中DHCP server接受到Discover包之后,通过发送DHCP offer包给client端应答,主要是告知client端可以提供IP地址,以及相应的IP地址租约信息和其他配置信息也会在其中。UDP ⽬标68 源IP为DHCP服务器的IP ⽬的IP:255.255.255.255

图11 DHCP offer包(3)选择阶段:在client端可能会接受到多个offer包,通常clientdaunt只会接受收到的第⼀个DHCP offer报⽂,然后client端就会以⼴播的⽅式发送⼀个DHCP request报⽂请求分配IP地址。UDP ⽬标67 源IP为0.0.0.0 ⽬的IP:255.255.255.255图12 DHCP REQUEST包(4)确认阶段:server端在收到DHCP request报⽂之后,会判断”option”字段的serverIP地址是否是⾃⼰的IP地址,如果符合分配IP地址的条件,就会给client发送⼀个DHCP ACK包,如果不满⾜就发挥发送⼀个DHCP NAK 包。UDP ⽬标68 源IP为DHCP服务器的IP ⽬的IP:255.255.255.255图13 DHCP ACK 包注意:客户端执⾏DHCP-DISCOVER后,如果没有DHCP服务器响应客户端的请求,客户端会随机使⽤169.254.0.0/16⽹段中的⼀个IP地址配置到本机地址。169.254.0.0/16是Windows的⾃动专有IP寻址范围,也就是在⽆法通过DHCP获取IP地址时,由系统⾃动分配的IP地址段。续约租期图14 续约租期过程(1)当clientIP地址已经⽤到50%的时间,续租⼀下,client端就会以单播形式向服务端发送⼀个DHCP Request包,当server响应时就会回应⼀个ACK包,会重新约定⼀个时间。(2)当clientIP地址已经⽤到50%的时间,续租⼀下,client端就会以单播形式向服务端发送⼀个DHCP Request包,server没有响应,client会继续使⽤,当使⽤到87.5%时,会在续租⼀次,同时就以⼴播的⽅式是发送⼀个request包,server这时收到响应以后,就会回应⼀个ACK包,重新约定⼀个时间。(3)当clientIP地址已经⽤到50%的时间,续租⼀下,client端就会以单播形式向服务端发送⼀个DHCP Request包,server没有响应,client会继续使⽤,当使⽤到87.5%时,会在续租⼀次,同时就以⼴播的⽅式是发送⼀个request包,如果server还是没有响应,client那就直接使⽤到过期。

重新连接使⽤IP地址Client端在重新登录⽹络的时候,可以不需要从初始阶段发送DHCP DISCOVER报⽂开始,可以直接⼴播发送DHCP REQUEST报⽂给服务器。主动释放IP地址图16 DHCP release报⽂

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688341061a123339.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信