DHCP协议分析及opendpi检测方法

时间:2024.5.9

DHCP协议分析

DHCP协议封装

DHCP协议是基于UDP层之上的应用,DHCP CLIENT将采用端口号68,DHCP SERVER采用端口号67,其报文内容的封装如下所示:

       链路层头        IP头         UDP头           DHCP报文

其中:

链路层头:承载报文的链路层信息头。

IP:标准IP协议头,IPV4中长度为20bytes,包括SrcIp,DstIp等信息。

UDP:8个bytes,包括SrcPort,DstPort,报文长度及UDP校验和等信息。

DHCP报文:具体的DHCP报文内容。

由于DHCP协议是让终端获取IP 地址的协议,所以终端是没有IP地址的。为了能够正常的收发DHCP报文,采取了如下措施:

a)、链路层的封装必须是广播形式,即让在同一物理子网中的所有主机都能够收到这个报文,在Ethernet_II格式的网络中,是DstMac为全1。

b)、由于终端没有IP地址,IP头中的SrcIp规定填为全0。

c)、当终端发出DHCP请求报文,并不知道DHCP SERVER的IP地址,因此IP头中的DstIp填为有限的子网广播IP——全1,保证DHCP SERVER的IP协议栈不丢弃这个报文。

d)、上面的措施保证了DHCP SERVER能够收到终端的请求报文,但仅凭链路层和IP层信息,DHCP SERVER无法区分出DHCP报文,因此终端发出的DHCP请求报文的UDP层中的SrcPort为68,DstPort为67,即DHCPSERVER通过端口号67来判断一个报文是否是DHCP报文。


DHCP报文格式

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

htype:硬件地址类型。

hlen:硬件地址长度。系统目前只对以太网支持,硬件地址长度固定为 6。

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

xid:由客户端软件产生的随机数,用于匹配请求和应答报文。

secs:客户端进入 IP 地址申请进程的时间或者更新 IP 地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为 0。

flags:标志字段。第一个比特为广播响应标识位,用来标识 DHCP 服务器响应报文是采用单播还是广播方式发送,0 表示采用单播方式,1 表示采用广播方式。其余比特保留不用。

ciaddr:DHCP客户端的 IP地址。

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

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

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

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

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

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

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


分析流程图

DHCP协议包含以下八种类型:

1:DHCPDISCOVER0x01,此为Client开始DHCP过程的第一个报文

2:DHCPOFFER0x02,此为Server对DHCPDISCOVER报文的响应

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

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

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

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

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

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

以上八种DHCP类型均包含以下特征值(在OpenDPI中,只需要确认当前检测的协议符合以下五个特征值,就认为当前协议是DHCP协议,并不需要确认具体是哪种DHCP协议类型。):

一、             packet->payload_packet_len >= 244

//确认当前检测的数据包的payload区长度大于244

二、             (packet->udp->source == htons(67)|| packet->udp->source == htons(68))

三、             (packet->udp->dest == htons(67) || packet->udp->dest == htons(68))

/*

1)     确认当前检测的报文的数据包的UDP包的目的端口为67或68。

2)     sever的端口位67,client的端口位68。

*/

四、             get_u32(packet->payload, 236) == htonl(0x63825363)

/*

1)      #define get_u32(X,O) (*(u32 *)(((u8 *)X) + O))的目的是,从u8型X指针指向的地址区域中,第O个地址开始取四个字节的内容。

2)      htonl(u_long hostlong)将主机的无符号长整形数转换成网络字节顺序。

3)      从任一DHCP协议类型的packet->payload区中第236位开始取四个字节,确认Magic Cookie位的值为DHCP。

*/


五、             get_u16(packet->payload, 240) == htons(0x3501))    

/*

1)      #define get_u16(X,O) (*(u16 *)(((u8 *)X) + O))的目的是,从u8型X指针指向的地址区域中,第O个地址开始取两个字节的内容。

2)      htons(u_short hostshort) 将主机的无符号短整形数转换成网络字节顺序。

3)      从任一DHCP协议类型的packet->payload区中第240位开始取两个字节,确认DHCP Message类型为53且长度为1。

4)      0x3501是确认当前payload区位置的option项中t=53且length=1。

5)      (检测不需要用到第三个值,Value是用于确认DHCP协议是八种类型中的哪一种,此case中value的值02表示此DHCP协议类型为第二种,DHCP OFFER

*/

若以上五个特征值完全符合:

则下一步为调用ipoque_int_dhcp_add_connection(ipoque_struct),将当前流和数据包的detected_protocol值标识为IPOQUE_PROTOCOL_DHCP。

否则:

将当前流的excluded_protocol_bitmask的IPOQUE_PROTOCOL_DHCP位置为1。排除当前流的是DHCP协议的可能。

至此,DHCP的检测结束。


第二篇:实习6__________________DHCP协议分析


DHCP协议分析

实习目的

本机设置为自动获取IP地址,捕获本机的DHCP数据包,列出数据包包含的内容,并对其构成进行分析,检查数据包中是否包含本机需要的数据。

实习内容

DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。

DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。DHCP为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。

DHCP最重要的功能就是动态分配。除了IP地址,DHCP分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。

(1)DHCP的工作流程

发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。

选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。

确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ACK确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。

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

客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP NACK否认信息。当原来的DHCP客户机收到此DHCP NACK否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

更新租约,DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

(2)DHCP的报文格式

实习6DHCP协议分析

OPHtype:硬件类别,ethernet为1;

Hlen:硬件长度,ethernet为6;

Hops:若数据包需经过router传送,每站加1,若在同一网内,为0; Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;

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

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

Ciaddr:用户IP地址;

Yiaddr:客户IP地址;

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

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

Chaddr:client的硬件地址;

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

File:启动文件名;

Options:,厂商标识,可选的参数字段 实习结果

(1)DHCP discover阶段:

实习6DHCP协议分析

(2)DHCP offer阶段:

实习6DHCP协议分析

(3)DHCP request阶段:

实习6DHCP协议分析

(4)DHCP ack阶段:

实习6DHCP协议分析

实习6DHCP协议分析

更多相关推荐:
shopping online范文

WiththedevelopmentoftheInternetandthepopularizationofcomputershoppingonlineisnormalandevennecessaryinourlifeAsmanyo...

Online shopping作文汇总

Onlineshopping四级作文OnlineShopping关于网上购物ShoppingontheInternetDirectionsyouarerequiredtowritea150wordessayon...

Online shopping 英语作文五篇

OnlineShopping一WiththedevelopmentoftheInternetandthepopularizationofcomputershoppingonlineisnormalandeven...

六级四级范文online shopping

OnlineShopping张玲Afterthreedecadesofreformandopeningwiththedramaticdevelopmentofsciencetechnologyandeconom...

Online shopping

Onlineshopping1现在网上购物已成为一种时尚2网上购物有很多好处但也有不少问题3我的建议Nowadaysonlineshoppingisbecomingmuchmorepopularandfashi...

英语作文范文Shopping Online

OnlineShoppingThemoderntechnologyhaschangedmyshoppinghabitsIbuyalmosteverythingontheInternetsuchasbooksclothesandel...

Online shopping

OnlineshoppingOnlineshoppingoronlineretailingisaformofelectroniccommercewhichallowsconsumerstodirectlybuy...

Online shopping or In-store shopping

OnlineshoppingorInstoreshoppingWiththerapiddevelopmentofscienceandtechnologylivingstandardshavebeenimprovedForthisI...

网上购物 Online Shopping_0

网上购物OnlineShoppingWiththerapiddevelopmentofoursocietymoreandmorepeoplearefondofonlineshoppingforitsconven...

Unit 2 Shopping Online

Unit2ShoppingOnline教学目的和要求Teachingaimsanddemands类别要求掌握的语言知识和语言能力要点话题Basicknowledgeaboutshoppingonlineandb...

Online Shopping

MajorAdvantagesofOnlineShoppingWiththedevelopmentoftheInternetandthepopularizationofcomputeronlineshoppinghasbecome...

online shopping

OnlineShoppingTodayIwilltalksomethingaboutonlineshoppingWiththedevelopmentofscienceandtechnologylivingstandardshave...

onlineshopping(48篇)