网络协议-dhcp报文分析

参考资料:

百度百科:https://baike.baidu.com/item/DHCP/218195?fr=aladdin

DHCPDynamic Host Configuration Protocol,动态主机配置协议。该协议是一种局域网网络协议。主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

1DHCP报文结构如下:

https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=3705c58d2e738bd4d02cba63c0e2ecb3/7dd98d1001e93901cc8e376e7bec54e737d196d6.jpg

DHCP封包在传输层( Transport Layer)是采用UDP协议,而当 Client传送给封包给 Server时,采用的是UDP 67 Port,从 Server传送给 Client则是使用UDP 68 Port [3] 

DHCP的封包格式如右图所示,各字段定义如下

OP:

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

HTYPE

硬件类别Ethernet 1 

HLEN:

硬件地址长度, Ethernet 6

HOPS:

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

TRANSACTION ID:

DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。

SECONDS:

Client 端启动时间(秒)。

FLAGS:

0 15 16 bits ,最左一 bit 1 时表示 server 将以广播方式传送封包 client bit0时标示server将以单播的方式传递封包给client,其余bit尚未使用。

ciaddr:

要是 client 端想继续使用之前取得之 IP 地址,则列于这里。 

yiaddr:

server 送回 client DHCP OFFER DHCP ACK封包中,此栏填写分配给 client IP 地址。 

siaddr:

client 需要透过网络开机,从 server 送出之 DHCP OFFERDHCP ACKDHCP NACK封包中,此栏填写开机程序代码所在 server 的地址。

giaddr:

若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 

chaddr:

Client 之硬件地址。 

sname:

Server 之名称字符串,以 0x00 结尾。

file:

client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。

2、报文种类:

DHCP DISCOVER:client端发起,目的是向server发起dhcp请求。

DHCP OFFER:server端发起,目的是告诉client端“我能给你分配的ip是这个啊”。这个数据包中携带的信息有:我(server)的信息是谁,我能给你分配的ip是什么。

DHCP REQUEST:由client端发出,告诉提供ip地址分配的server端“我用你给我分配的ip,这个数据包中需要携带信息表明:server端是谁,要用的ip地址是谁。

DHCP ACK:由server端发出,告诉client端“好的,就这么定了,你就用我给你分配的ip吧”。

3、抓包分析:

打开windowscmd.exe,依次输入:

ipconfig –release

ipconfig –renew

利用wireshark软件抓取数据包,过滤协议dhcp

3.1 DHCP Discover

我们在这里只分析应用层数据包。

Bootp flags0表示单播,1表示广播,这里为1,即DHCP服务端回复的DHCP Offer报文应为单播形式。

部分书上讲述的DHCP四个包都是使用广播的方式进行,实际上DHCP OfferDHCP Ack这两个数据包是广播还是单播是由DHCP的客户端发送的数据包来决定的。

因为如下信息此时对于client端来说都是未知的,所以填充的值如下:

Client IP address: 0.0.0.0

Your (client) IP address: 0.0.0.0

Next server IP address: 0.0.0.0

3.2 DHCP OFFER

DHCP服务器能够提供的ip地址为192.168.0.103,是通过广播的方法回复的啊。该数据包中携带了服务器的ip地址、router、子网掩码等信息。

 

3.3 DHCP Request

client通过广播的方式表明自己要用的ip地址信息(用哪个服务器提供的),如果有其他dhcp服务器收到了该广播包,则将其通过的ip地址再次放到可用的地址池中。

3.4 DHCP ACK

dhcp server搜到Request数据包后,判断出来是要用自己提供的ip,则给client端回复一个ack包,里面携带分配给client端的ip地址等一系列信息。

 

Dhcp Release/Dhcp inform/Dhcp NAck包等在这里就不进行分析了。

发布了29 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Atlas12345/article/details/104123371
今日推荐