DHCP协议分析
一、 DHCP协议简介
DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,是一种局域网的网络协议,基于UDP协议工作。
DHCP有客户端和服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。DHCP有3个端口,其中67和68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4。
DHCP为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。DHCP最重要的功能就是动态分配。除了IP地址,DHCP分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。
1. DHCP的工作流程
Discover发现阶段:即DHCP客户机寻找DHCP服务器的阶段。此时客户端没有IP地址,也不知道服务器的IP地址,DHCP客户机以广播方式(即向地址255.255.255.255)发送DHCP discover报文来寻找DHCP服务器。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
Offer提供阶段: 即DHCP服务器提供IP地址的阶段。接收到DHCP discover报文的DHCP服务器都会做出响应,即向DHCP客户机发送一个包含还未出租的IP地址和其他设置的DHCP offer报文信息。
Request选择阶段:即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器发来DHCP offer,则客户机只接受第一个,然后就以广播方式回答一个DHCP request请求信息,该信息中包含了它所选定的DHCP服务器的IP地址和服务器提供给客户端的IP地址等内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
ACK确认阶段:即DHCP服务器对客户机的应答,确认提供IP地址。当服务器收到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协议报文
DHCP协议报文的格式如图1所示,括号内为长度。
OP(1) Htype(1) Hlen(1) Hops(1) Transaction ID(4) Seconds(2) Ciaddr(4) Yiaddr(4) Siaddr(4) Giaddr(4) Chaddr(16) Sname(64) File(128) Options(variable) 图一 DHCP协议报文格式
Flags(2) 报文解析:
1)Op(1):DHCP报文的操作类型,“1”为客户端向服务器发送请求的报文,“2”为服务器响应客户端的报文;
2)Htype(1):客户端网络硬件地址类型,“1”表示客户端的网络硬件是10MB的以太网类型(Ethernet);
3)Hlen(1):客户端的网络硬件地址长度。“6”表示Client 的网络硬件地址长度是6bytes(即以太网类型的6 bytes的MAC地址);
注:MAC地址,也叫硬件地址,是由48比特/bit长(6字节/byte,1byte=8bits),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique,是识别LAN(局域网)节点的标识。24-47位是由厂家自己分配.其中第40位是组播地址标志位。
4)Hops(1):跳数,即DHCP报文经过的DHCP RELAY(中继)数,每经过一个DHCP RELAY该字段就加一,此字段的作用是限制DHCP报文不要经过太多的DHCP RELAY,协议规定,当“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(domain name system,域名系统)、服务器的IP地址等配置信息。
二、wireshark抓包分析:
1、在windows下面进行抓包的步骤:
1)首先打开wireshark,开始抓包;
2)在cmd中执行ipconfig /release,该命令的作用是用来释放IP,如果出现如下提示信息,表明本地连接没有设置成自动获取;
在网络连接中将本地连接设成自动获取,再次执行ipconfig /release,释放IP成功。
Wireshark抓包如图:
3)执行命令ipconfig /renew,发起一个DHCP过程,分析从这里开始。
从Wireshark抓包可以看到DHCP过程中的4种报文,即DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库DHCP协议分析在线全文阅读。
相关推荐: