DHCP称为什么协议.docx

上传人:b****8 文档编号:8954409 上传时间:2023-05-16 格式:DOCX 页数:9 大小:19.62KB
下载 相关 举报
DHCP称为什么协议.docx_第1页
第1页 / 共9页
DHCP称为什么协议.docx_第2页
第2页 / 共9页
DHCP称为什么协议.docx_第3页
第3页 / 共9页
DHCP称为什么协议.docx_第4页
第4页 / 共9页
DHCP称为什么协议.docx_第5页
第5页 / 共9页
DHCP称为什么协议.docx_第6页
第6页 / 共9页
DHCP称为什么协议.docx_第7页
第7页 / 共9页
DHCP称为什么协议.docx_第8页
第8页 / 共9页
DHCP称为什么协议.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DHCP称为什么协议.docx

《DHCP称为什么协议.docx》由会员分享,可在线阅读,更多相关《DHCP称为什么协议.docx(9页珍藏版)》请在冰点文库上搜索。

DHCP称为什么协议.docx

DHCP称为什么协议

竭诚为您提供优质文档/双击可除

DHCP称为什么协议

  篇一:

dhcp协议简介

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

  dhcp使用客户端/服务器模式,请求配置信息的计算机叫做dhcp客户端,而提供信息的叫做dhcp的服务器。

dhcp为客户端分配地址的方法有三种:

手工配置、自动配置、动态配置。

  dhcp最重要的功能就是动态分配。

除了ip地址,dhcp分组还为客户端提供其他的配置信息,比如子网掩码。

这使得客户端无需用户动手就能自动配置连接网络。

  dhcp的工作流程

  发现阶段,即dhcp客户机寻找dhcp服务器的阶段。

dhcp客户机以广播方式(因为dhcp服务器的ip地址对于客户机来说是未知的)发送dhcpdiscover发现信息来寻找dhcp服务器,即向地址255.255.255.255发送特定的广播信息。

网络上每一台安装了tcp/ip协议的主机都会接收到这种广播信息,但只有dhcp服务器才会做出响应。

提供阶段,即dhcp服务器提供ip地址的阶段。

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

选择阶段,即dhcp客户机选择某台dhcp服务器提供的ip地址的阶段。

如果有多台dhcp服务器向dhcp客户机发来的dhcpoffer提供信息,则dhcp客户机只接受第一个收到的dhcpoffer提供信息,然后它就以广播方式回答一个dhcprequest请求信息,该信息中包含向它所选定的dhcp服务器请求ip地址的内容。

之所以要以广播方式回答,是为了通知所有的dhcp服务器,他将选择某台dhcp服务器所提供的ip地址。

  确认阶段,即dhcp服务器确认所提供的ip地址的阶段。

当dhcp服务器收到dhcp客户机回答的dhcprequest请求信息之后,它便向dhcp客户机发送一个包含它所提供的ip地址和其他设置的dhcpack确认信息,告诉dhcp客户机可以使用它所提供的ip地址。

然后dhcp客户机便将其tcp/ip协议与网卡绑定,另外,除dhcp客户机选中的服务器外,其他的dhcp服务器都将收回曾提供的ip地址。

  重新登录,以后dhcp客户机每次重新登录网络时,就不需要再发送dhcpdiscover发现信息了,而是直接发送包含前一次所分配的ip地址的dhcprequest请求信息。

当dhcp服务器收到这一信息后,它会尝试让dhcp客户机继续使用原来的ip地址,并回答一个dhcpack确认信息。

如果此ip地址已无法再分配给原来的dhcp客户机使用时(比如此ip地址已分配给其它dhcp客户机使用),则dhcp服务器给dhcp客户机回答一个dhcpnack否认信息。

当原来的dhcp客户机收到此dhcpnack否认信息后,它就必须重新发送dhcpdiscover发现信息来请求新的ip地址。

  更新租约,dhcp服务器向dhcp客户机出租的ip地址一般都有一个租借期限,期满后

  dhcp服务器便会收回出租的ip地址。

如果dhcp客户机要延长其ip租约,则必须更新其ip租约。

dhcp客户机启动时和ip租约期限过一半时,dhcp客户机都会自动向dhcp服务器发送更新其ip租约的信息。

  dhcp的报文格式

  我们来介绍一下dhcp的报文格式,如图1,

  (图1dhcp的报文格式)

  1.op:

若是client送给server的封包,设为1,反向为2;

  2.htype:

硬件类别,ethernet为1;

  3.hlen:

硬件长度,ethernet为6;

  4.hops:

若数据包需经过router传送,每站加1,若在同一网内,为0;

  5.transactionid:

事务id,是个随机数,用于客户和服务器之间匹配请求和相应

  消息;

  6.seconds:

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

  7.Flags:

从0-15bits,最左一bit为1时表示server将以广播方式传送封包给client,

  其余尚未使用;

  8.ciaddr:

用户ip地址;

  9.yiaddr:

客户ip地址;

  10.siaddr:

用于bootstrap过程中的ip地址;

  11.giaddr:

转发代理(网关)ip地址;

  12.chaddr:

client的硬件地址;

  13.sname:

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

  14.File:

启动文件名;

  15.options:

,厂商标识,可选的参数字段解码信息

  通过dhcp的工作流程,我们知道从dhcp服务器获取配置信息的4个阶段中,dhcp客户端会出现有4种报文(dhcpdiscoVeRy,dhcpoFFeR,dhcpRequest,dhcpack)。

我们分别来看看4报文的解码内容:

  发现阶段

  使用网络分析系统捕获dhcpdiscoVeRy数据包,如图2,

  (图2dhcpdiscoVeRy

  数据包解码)

  由图2可以看到dhcpdiscoVeRy包的解码信息,由于dhcp是bootp的以个扩展,,dhcp兼容bootp,我们可以看到bootp和dhcp的解码。

  提供阶段

  使用网络分析系统捕获dhcpoFFeR数据包,如图3,

  (图3dhcpoFFeR

  数据包解码)

  选择阶段

  使用网络分析系统捕获dhcpRequest数据包,如图4,

  篇二:

dhcp协议分析

  dhcp协议分析

  一、dhcp协议简介

  dhcp,全称是dynamichostconfigurationprotocol﹐中文名为动态主机配置协议,是一种局域网的网络协议,基于udp协议工作。

  dhcp有客户端和服务器模式,请求配置信息的计算机叫做dhcp客户端,而提供信息的叫做dhcp的服务器。

dhcp有3个端口,其中67和68为正常的dhcp服务端口,分别作为dhcpserver和dhcpclient的服务端口;546号端口用于dhcpv6client,而不用于dhcpv4。

  dhcp为客户端分配地址的方法有三种:

手工配置、自动配置、动态配置。

dhcp最重要的功能就是动态分配。

除了ip地址,dhcp分组还为客户端提供其他的配置信息,比如子网掩码。

这使得客户端无需用户动手就能自动配置连接网络。

  1.dhcp的工作流程

  discover发现阶段:

即dhcp客户机寻找dhcp服务器的阶段。

此时客户端没有ip地址,也不知道服务器的ip地址,dhcp客户机以广播方式(即向地址255.255.255.255)发送dhcpdiscover报文来寻找dhcp服务器。

网络上每一台安装了tcp/ip协议的主机都会接收到这种广播信息,但只有dhcp服务器才会做出响应。

  offer提供阶段:

即dhcp服务器提供ip地址的阶段。

接收到dhcpdiscover报文的dhcp服务器都会做出响应,即向dhcp客户机发送一个包含还未出租的ip地址和其他设置的dhcpoffer报文信息。

  Request选择阶段:

即dhcp客户机选择某台dhcp服务器提供的ip地址的阶段。

如果有多台dhcp服务器发来dhcpoffer,则客户机只接受第一个,然后就以广播方式回答一个dhcprequest请求信息,该信息中包含了它所选定的dhcp服务器的ip地址和服务器提供给客户端的ip地址等内容。

之所以要以广播方式回答,是为了通知所有的dhcp服务器,他将选择某台dhcp服务器所提供的ip地址。

  ack确认阶段:

即dhcp服务器对客户机的应答,确认提供ip地址。

当服务器收到dhcprequest之后,便向dhcp客户机发送一个包含它所提供的ip地址和其他设置的dhcpack报文,告诉dhcp客户机可以使用该ip地址。

然后dhcp客户机便将其tcp/ip协议与网卡绑定,另外,除dhcp客户机选中的服务器外,

  其他的dhcp服务器将收回曾提供的ip地址。

  重新登录,以后dhcp客户机每次重新登录网络时,不需要再发送dhcpdiscover了,而是直接发送包含前一次所分配的ip地址的dhcprequest请求信息。

当dhcp服务器收到这一信息后,它会尝试让dhcp客户机继续使用原来的ip地址,并回答一个dhcpack确认信息。

如果此ip地址已无法再分配给原来的dhcp客户机使用时(比如此ip地址已分配给其它dhcp客户机使用),则dhcp服务器给dhcp客户机回答一个dhcpnack否认信息。

当原来的dhcp客户机收到此dhcpnack否认信息后,它就必须重新发送dhcpdiscover发现信息来请求新的ip地址。

  更新租约,dhcp服务器向dhcp客户机出租的ip地址一般都有一个租借期限,期满后dhcp服务器便会收回出租的ip地址。

如果dhcp客户机要延长其ip租约,则必须更新其ip租约。

dhcp客户机启动时和ip租约期限过一半时,dhcp客户机都会自动向dhcp服务器发送更新其ip租约的信息。

  2、dhcp协议报文

  dhcp协议报文的格式如图1所示,括号内为长度。

  图一dhcp协议报文格式报文解析:

  1)op

(1):

dhcp报文的操作类型,“1”为客户端向服务器发送请求的报文,“2”为服务器响应客户端的报文;

  2)htype

(1):

客户端网络硬件地址类型,“1”表示客户端的网络硬件是10mb的以太网类型(ethernet);

  3)hlen

(1):

客户端的网络硬件地址长度。

“6”表示client的网络硬件地址长度是6bytes(即以太网类型的6bytes的mac地址);

  注:

mac地址,也叫硬件地址,是由48比特/bit长(6字节/byte,1byte=8bits),16进制的数字组成.0-23位叫做组织唯一标志符(organizationallyunique,是识别lan(局域网)节点的标识。

24-47位是由厂家自己分配.其中第40位是组播地址标志位。

  4)hops

(1):

跳数,即dhcp报文经过的dhcpRelay(中继)数,每经过一个dhcpRelay该字段就加一,此字段的作用是限制dhcp报文不要经过太多的dhcpRelay,协议规定,当“hops”大于4(现在也有规定为16)时,这个dhcp报文就不能再进行处理,而是丢弃;

  5)xid(4):

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

  6)secs

(2):

dhcp客户端开始dhcp请求后经过的时间;

  7)Flags

(2):

标识dhcp服务器响应报文是单播还是广播发送,只用第一个比特;

  8)cliaddr(4):

dhcp客户端ip地址;

  9)yiaddr(4):

dhcp服务器分配给客户端的ip地址;

  10)siaddr(4):

dhcp客户端获取ip地址等信息的服务器ip地址;

  11)giaddr(4):

dhcp客户端发出请求报文后经过的第一个dhcp中继ip;

  12)chaddr(4):

dhcp客户端的硬件地址,即mac地址;

  13)sname(64):

dhcp客户端获取ip地址等信息的服务器名称;

  14)file(128):

服务器客户端指定的启动配置的名称;

  15)option(variable):

可选变长选项字段,包含报文的类型、有效租期、dns(domainnamesystem,域名系统)、服务器的ip地址等配置信息。

  二、wireshark抓包分析:

  1、在windows下面进行抓包的步骤:

  1)首先打开wireshark,开始抓包;

  2)在cmd中执行ipconfig/release,该命令的作用是用来释放ip,如果出现如下提示信息,表明本地连接没有设置成自动获取;

  在网络连接中将本地连接设成自动获取,再次执行ipconfig/release,释放ip成功。

  wireshark抓包如图:

  3)执行命令ipconfig/renew,发起一个dhcp过程,分析从这里开始。

  从wireshark抓包可以看到dhcp过程中的4种报文,即dhcpdiscover、dhcpoffer、dhcpRequest、dhcpack。

  篇三:

dhcp协议分析

  dhcp协议分析

  dhcp协议封装

  dhcp协议是基于udp层之上的应用,dhcpclient将采用端口号68,dhcpseRVeR采用端口号67,其报文内容的封装如下所示:

  链路层头

  其中:

  链路层头:

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

  ip头:

标准ip协议头,ipV4中长度为20bytes,包括srcip,dstip等信息。

udp头:

8个bytes,包括srcport,dstport,报文长度及udp校验和等信息。

dhcp报文:

具体的dhcp报文内容。

ip头udp头dhcp报文由于dhcp协议是让终端获取ip地址的协议,所以终端是没有ip地址的。

为了能够正常的收发dhcp报文,采取了如下措施:

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

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

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

  d)、上面的措施保证了dhcpseRVeR能够收到终端的请求报文,但仅凭链路层和ip层信息,dhcpseRVeR无法区分出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:

dhcpdiscoVeR(0x01),此为client开始dhcp过程的第一个报文

  2:

dhcpoFFeR(0x02),此为server对dhcpdiscoVeR报文的响应

  3:

dhcpRequest(0x03),此报文是slient(dhcp称为什么协议)开始dhcp过程中对server的dhcpoFFeR报文的回应,或者是client续延ip地址租期时发出的报文

  4:

dhcpdecline(0x04),当client发现server分配给它的ip地址无法使用,如ip地址冲突时,将发出此报文,通知server禁止使用ip地址

  5:

dhcpack(0x05),server对client的dhcpRequest报文的确认响应报文,client收到此报文后,才真正获得了ip地址和相关的配置信息。

  6:

dhcpnak(0x06),server对client的dhcpRequest报文的拒绝响应报文,client收到此报文后,一般会重新开始新的dhcp过程。

  7:

dhcpRelease(0x07),client主动释放server分配给它的ip地址的报文,当server收到此报文后,就可以回收这个ip地址,能够分配给其他的client。

  8:

dhcpinFoRm(0x08),client已经获得了ip地址,发送此报文,只是为了从dhcpseRVeR处获取其他的一些网络配置信息,如routeip,dnsip等,这种报文的应用非常少见。

  以上八种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)#defineget_u32(x,o)(*(u32*)(((u8*)x)+o))的目的是,从u8型x指针指向的地址区域中,第o个地址开始取四个字节的内容。

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

  3)从任一dhcp协议类型的

  packet->payload区中第236位开始取四个字节,确认magiccookie位的值为dhcp。

  */

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

  /*

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

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

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

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

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

  */

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

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

  否则:

  将当前流的excluded_protocol_bitmask的ipoque_pRotocol_dhcp位置为1。

排除当前流的是dhcp协议的可能。

  至此,dhcp的检测结束。

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2