您好,欢迎访问三七文档
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所示,括号内为长度。OP(1)Htype(1)Hlen(1)Hops(1)TransactionID(4)Seconds(2)Flags(2)Ciaddr(4)Yiaddr(4)Siaddr(4)Giaddr(4)Chaddr(16)Sname(64)File(128)Options(variable)图一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。2、报文详细分析:1)DHCPDiscover发现阶段:BootstrapProtocol(Discover)表明发送的是Discover报文。Messagetype(opt):消息类型,为1时表示是Client的请求;Hardwaretype(Htype):Client的网络硬件地址类型,0x01表示Client的网络硬件是10MB的以太网类型(Ethernet);Hardwareaddresslength(Hlen):Client的网络硬件地址长度;HOPS:跳数;TransactionID(Xid):事务ID,随机数;Secondselapsed(Seconds):秒数;Bootpflags(Flags):标志,广播形式;ClientIPaddress(Cliaddr):客户机IP地址,当前还没有;Your(client)IPaddress(Yiaddr):客户端要申请的IP地址;NextServerIPaddress(Siaddr):服务器IP地址,此时还不知道;RelayAgentIPaddress(Giaddr):中继代理IP地址;ClientMACaddress(Chaddr):客户机硬件地址MAC;Clienthardwareaddresspadding:客户机硬件MAC填充地址;Hostname(Sname):服务器的主机名;Bootfilename(File):Client的启动配置文件名;Magiccookie:是魔术使用cookie是服务器可以知道该用户是否合法用户以及是否需要重新登录;Options选项:括号内的值是该选项的注册code,用来标识一个选项。如果用户想要在发送或接收的报文中添加选项,则需在程序中给选项特有的code值。Dhcpmessagetypecode=53,length=1,value=1,此字段表示DHCP报文类型。Discover过程中包括的选项有:消息类型:clientMAC:RequestIPAddress:申请的IP地址Hostname:,即客户机主机名称;ParameterRequestList:等信息。DHCP是基于UDP的过程,客户端发启的bootpc端口是68,目标端口是672)所有被广播到的服务器收到DHCPDISCOVER报文后都会发送DHCPoffer报文,向客户机提供IP地址供其选择(cisco用单播来实现),Tp-link使用的是组播实现;报文Offer:Messagetype:为2,即服务器回复客户端;Your(client)IPaddress:即服务器给客户端提供的IP地址;ClientMACaddress:表示客户端的MAC地址;选项也和Discover报文中的有所不同,包括:Messagetype:RenewalTimeValue:,即想要继续租约原来分配的IP地址,则提出续约申请的期限为4天;RebindingTimeValue:,即如果上次申请续约失败,再次申请绑定原来分配到的IP地址的期限为7天;IPAddressLeaseTime:,即租约时间;DHCPServerIdentifier:即服务器IP地址;Router:,即跳数;服务器发启的bootpc端口是67,目标端口是68.3)客户端选择服务器提供的IP地址后广播发送DHCPrequest报文,告诉服务器选择了某台服务器提供的IP地址。客户端还没有IP地址故采用广播发送。值得注意的是这个报文的选项中增加了选项ServerIP:表明选择了该服务器提供的IP地址4)服务器收到DHCPREQUEST数据报之后也会回答客户机,即发送DHCPACK报文,确认客户端租用IP地址成功。没有被选中的服务器就将自己提供的IP地址收回。cisco用得也是广播。
本文标题:DHCP协议分析
链接地址:https://www.777doc.com/doc-2909377 .html