【DHCP协议简介】
DHCP
,全称是
Dynamic Host Configuration Protocol
�o中文名为动态主机配置协议,它的前身是
BOOTP
,它工作在
OSI
的应用层,是一种帮助计算机从指定的
DHCP
服务器获取它们的配置信息的自举协议。
DHCP
使用客户端
/
服务器模式,请求配置信息的计算机叫做
DHCP
客户端,而提供信息的叫做
DHCP
的服务器。
DHCP
为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。
DHCP
最重要的功能就是动态分配。除了
IP
地址,
DHCP
分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。
【DHCP的工作流程】
发现阶段,即
DHCP
客户机寻找
DHCP
服务器的阶段。
DHCP
客户机以广播方式(因为
DHCP
服务器的
IP
地址对于客户机来说是未知的)发送
DHCP discover
发现信息来寻找
DHCP
服务器,即向地址
255.255.255.255
发送特定的广播信息。网络上每一台安装了
TCP/IP
协议的主机都会接收到这种广播信息,但只有
DHCP
服务器才会做出响应。
提供阶段,即
DHCP
服务器提供
IP
地址的阶段。在网络中接收到
DHCP discover
发现信息的
DHCP
服务器都会做出响应,它从尚未出租的
IP
地址中挑选一个分配给
DHCP
客户机,向
DHCP
客户机发送一个包含出租的
IP
地址和其他设置的
DHCP offer
提供信息。
选择阶段,即
DHCP
客户机选择某台
DHCP
服务器提供的
IP
地址的阶段。如果有多台
DHCP
服务器向
DHCP
客户机发来的
DHCP offer
提供信息,则
DHCP
客户机只接受第一个收到的
DHCP offer
提供信息,然后它就以广播方式回答一个
DHCP request
请求信息,该信息中包含向它所选定的
DHCP
服务器请求
IP
地址的内容。之所以要以广播方式回答,是为了通知所有的
DHCP
服务器,他将选择某台
DHCP
服务器所提供的
IP
地址。
确认阶段,即
DHCP
服务器确认所提供的
IP
地址的阶段。当
DHCP
服务器收到
DHCP
客户机回答的
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
租约的信息。
【DHCP的报文格式】
我们来介绍一下
DHCP
的报文格式,如图
1
,
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
(
64
)
|
File
(
128
)
|
Options
(
variable
)
|
|
|
|
|
(图
1 DHCP
的
报文格式)
OP
:若是
client
送给
server
的封包,设为
1
,反向为
2
;
Htype
:硬件类别,
ethernet
为
1
;
Hlen
:硬件长度,
ethernet
为
6
;
Hops
:若数据包需经过
router
传送,每站加
1
,若在同一网内,为
0
;
Transaction ID
:事务
ID
,是个随机数,用于客户和服务器之间匹配请求和相应消息;
Seconds
:由用户指定的时间,指开始地址获取和更新进行后的时间;
Flags
:从
0-15bits
,最左一
bit
为
1
时表示
server
将以广播方式传送封包给
client
,其余尚未使用;
Ciaddr
:用户
IP
地址;
Yiaddr
:服务器分配给客户的
IP
地址;
Siaddr
:用于
bootstrap
过程中的
IP
地址;(服务器的
IP
地址)
Giaddr
:转发代理(网关)
IP
地址;
Chaddr
:
client
的硬件地址;
Sname
:可选
server
的名称,以
0x00
结尾;
File
:启动文件名;
Options
:,厂商标识,可选的参数字段
【抓包分析】
此次用的软件是:
wireshark
(在宿舍内)
1.发现阶段:
2.提供阶段:
3.选择阶段:
4.确认阶段:
【总结】
环境分析:根据上述内容,我的
pc
获取到
ip
地址是有经过代理的。而且是只经过一个路由器代理,即是网关。
实验说明:此次实验仅分析
pc
到网关这个广播域的包走向过程,网关和
dhcp
服务器之间这里没做分析。
此时实验让自己更加理解了
dhcp
的获取过程,还熟悉了抓包软件的使用。