
一、在windows下对DHCP过程的抓包进步骤:
1、首先打开wireshark进行抓包;
2、在cmd中执行ipconfig /release,该命令的作用是用来释放IP,如果出现如下提示信息,表明本地连接没有设置成自动获取;
在网络连接中将本地连接设成自动获取,再次执行ipconfig /release,释放IP成功。
Wireshark抓包如图:
3、执行命令ipconfig /renew,发起一个DHCP过程,分析从这里开始。
DHCP通常有Discover、Offer、Request、Ack四个阶段,wireshark抓包如下:
此外还有重新登陆和更新租约,这里不作解释。
二、DHCP协议的报文格式如下,括号内为长度:
| OP(1) | Htype(1) | Hlen(1) | Hops(1) |
| Transaction ID(4) | |||
| Seconds(2) | Flags(2) | ||
| Ciaddr(4) | |||
| Yiaddr(4) | |||
| Siaddr(4) | |||
| Giaddr(4) | |||
| Chaddr(16) | |||
| Sname() | |||
| File(128) | |||
| Options(variable) | |||
I、现在,客户机没有地址,它就会发出一个DHCP Discover报文,该报文是广播报文,所有的具有DHCP Server功能的服务器都会收到该报文。
dhcp有8种类型的报文,每种报文的格式相同,只是报文中的某些字段取值不同。dhcp报文格式基于bootp(引导程序协议)的报文格式
Bootstrap Protocol(Discover) 表明发送的是Discover报文。
1、Message type(opt):消息类型,为1时表示是Client的请求,为2时表示是Server的应答;
2、Hardware type(Htype):Client 的网络硬件地址类型,0x01表示Client 的网络硬件是10MB的以太网类型(Ethernet);
3、Hardware address length(Hlen):Client 的网络硬件地址长度,6表示Client 的网络硬件地址长度是6bytes(即以太网类型的6 bytes的MAC地址);
注:MAC地址,也叫硬件地址,是由48比特/bit长(6字节/byte,1byte=8bits),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique,是识别LAN(局域网)节点的标识。24-47位是由厂家自己分配.其中第40位是组播地址标志位。
4、HOPS:跳数,即经过的中继数,表示当前的DHCP报文经过的DHCP RELAY(中级)的数目,每经过一个DHCP中继,此字段就会加1,此字段的作用是DHCP报文不要经过太多的DHCP RELAY,协议规定,当“hops”大于4(现在也有规定为16)时,这个DHCP报文就不能再进行处理,而是丢弃;
5、Transaction id:事务ID,Client每次发送DHCP请求报文时选择的随机数,用来匹配server的响应报文是对哪个请求报文的响应。Client会丢弃“ID”不匹配的响应报文。
可以总结一下:第一个报文Relase的Transaction ID:0x50488e40
第二个报文discover的Transaction ID: 0x71936d7d
第三个报文offer的Transaction ID: 0x71936d7d
第四个报文Requst的Transaction ID: 0x71936d7d
第五个报文ack的Transaction ID: 0x71936d7d
6、Seconds elapsed(Seconds):秒数,用来表示client开始DHCP请求后的时间流逝秒数;
7、Bootp flags(Flags):标志,在 BOOTP中此字段是保留不用的,在DHCP协议中也只使用了其左边的最高位;
8、Client IP address(Cliaddr):客户机IP地址;
9、Your (client)IP address(Yiaddr):分配给client的IP地址;
10、Next Server IP address(Siaddr):服务器IP地址;
11、Relay Agent IP address(Giaddr):中继代理IP地址;
12、Client MAC address(Chaddr):客户机硬件地址MAC;
13、Client hardware address padding:客户机硬件MAC填充地址;
14、Host name(Sname): 服务器的主机名;
15、Boot file name(File):Client的启动配置文件名;
16、Magic cookie:是魔术使用cookie是服务器可以知道该用户是否合法用户以及是否需要重新登录;
17、Options选项:括号内的53是该选项的注册code,用来标识一个选项。如果用户想要在发送或接收的报文中添加选项,则需在程序中增加独一无二的选项code。
Dhcp message typecode = 53, length = 1, value= 1-8,此字段表示DHCP报文类型。
18、Discover过程选项包括:
1)消息类型:
2)client MAC:
3)Request IP Address:申请的IP地址
4)Host name:
,即主机名称;
5)Parameter Request List:
等信息。
DHCP是基于UDP的过程,客户端发启的bootpc端口是68,目标端口是67
II、所有被广播到的服务器收到DHCP DISCOVER报文后都会发送DHCP offer报文,向客户机提供IP地址供其选择 (cisco用单播来实现),Tp-link使用的是组播实现;
报文Offer:
Message type:为2,即服务器回复客户端;
Your (client)IP address:即服务器给客户端提供的IP地址;
Client MAC address:表示客户端的MAC地址;
选项也和Discover报文中的有所不同,包括:
Message type:
Renewal Time Value:,即想要继续租约原来分配的IP地址,则提出续约申请的期限为4天;
Rebinding Time Value:,即如果上次申请续约失败,再次申请绑定原来分配到的IP地址的期限为7天;
IP Address Lease Time:,即租约时间;
DHCP Server Identifier:即服务器IP地址;
Router:,即跳数;
III、客户端收到服务器提供的IP地址后会从中选择一个,然后广播发送DHCP request报文,告诉服务器选择了IP地址,并拒绝其他服务器的IP地址。客户端还没有IP地址故采用广播发送。
值得注意的是这个报文的选项中增加了选项Server IP:表明选择了该服务器提供的IP地址
IV、服务器收到DHCP REQUEST确认数据报之后也会回答客户机,即发送DHCP ACK报文,确认客户端申请IP地址成功。没有被选中的服务器就将自己提供的IP地址收回。cisco用得也是广播。
