加个目录
一、概述
大家都知道,为了使用TCP/IP协议族,每台主机和路由器需要一定的配置信息。
下面是一个简单的例子:
某学校的教学办公区域将要布置数百台计算机,每台都需要分配IP,如何实现对这些数量巨大的主机进行IP分配?
最简单的方法自然是手动逐一为每台主机分配IP,但这即繁琐,同时也需要时刻注意分配的IP是否冲突。
而DHCP协议,就是用来帮助我们自动为网络中的主机分配IP的。
1、DHCP的概念:
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机(有时也为路由器)动态的获得IP地址、网关地址和DNS服务器地址等信息,并能够提升地址的使用率。
- 由于DHCP是C/S模式运行的,所以使用DHCP的设备为客户端,而提供DHCP服务的为服务端。DHCP客户端可以让设备自动地从DHCP服务器获得IP地址以及其他配置参数。DHCP服务器端控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
2、DHCP地址池(为什么分配地址最大不能超过主机?):
- DCHP服务器分配给DHCP客户端的地址范围。
- 设置地址池时结束IP不应超过当前网段的最大主机地址,如起始地址为172.16.0.1/16,则最大允许设置分配172.16.0.1172.16.255.255这个范围内的地址,当然也可在这个范围内设置更少的地址,如172.16.0.1172.16.1.1,则是256个地址可用于分配,或172.16.0.10~172.16.0.15,则是6个地址可用于分配。
- 设置地址池时,地址池中不应当包含DHCP服务器自身的LAN地址,否则可能造成地址冲突。
3、DHCP租期:
- 当一个IP分配给MAC地址(指客户端网卡,每一个网卡都有对应的MAC地址作为网络中的唯一标识)后,在租期内,默认这个MAC地址的IP为该地址,不再进行分配。 当到期后,该地址被回收,重新分配。
- 设置地址租期,对于减轻DHCP压力,网络稳定有一定的好处,但是有些时候网络会因此出现诸如IP地址不够等一些问题。
4、DHCP分配地址的方式:
自动分配方式
:在这种方式下DHCP服务器会给主机一个永久性
的IP地址,只要DHCP的客户端第一次能够成功的从DHCP服务端获得IP地址,那么它就可以永久性的的使用该地址了。动态分配方式
:是指主机会获得一个有时间限制的IP地址,当时间到期或者主机主动放弃该地址的时候,这个地址才能被其它地址使用。手工分配方式
:客户端的IP地址由网络管理员指定,DHCP服务器只是将指定的IP地址告诉给客户端主机。
5、常用端口:
- DHCP Server端,使用UDP端口:67
- DHCP Client端,使用UDP端口:68
6、DHCP报文类型:
- DHCP DISCOVER : 客户端开始 DHCP 过程发送的包,是 DHCP 协议的开始
- DHCP OFFER : 服务器接收到 DHCP DISCOVER 之后做出的响应,它
包括了给予客户端的 IP(yiaddr)、客户端的 MAC 地址、租约过期时间、服务器的识别符
以及其他信息:(此时DHCP客户端没有IP地址,所以DHCP服务器同样使用广播进行通讯
) - DHCP REQUEST : 客户端对于服务器发出的 DHCP OFFER 所做出的响应,包含了
DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址
等信息。在续约租期的时候同样会使用
。 - DHCP ACK : 服务器在接收到客户端发来的 DHCP REQUEST之后发出的成功确认的报文,包含了
租约期限及其他TCP/IP选项信息
。在建立连接的时候,客户端在接收到这个报文之后才会确认
分配给它的IP
和其他信息可以被允许使用
(ACK包中包含了客户端的MAC地址
)。 - DHCP NAK : DHCP ACK 的相反的报文,表示服务器拒绝了客户端的请求。
- DHCP RELEASE : 一般出现在客户端关机、下线等状况。这个报文将会使 DHCP 服务器释放发出此报文的客户端的 IP 地址
- DHCP INFORM : 客户端发出的向服务器请求一些信息的报文
- DHCP DECLINE : 当客户端发现服务器分配的IP地址无法使用(如 IP 地址冲突时),将发出此报文,通知服务器禁止使用该 IP 地址。
7、openwrt中的dhcp服务是由dnsmasq进程提供的,此进程也可通过配置提供dns服务。
二、DHCP工作过程(附抓包分析)
DHCP的实现分为4步,分别是:
-
第一步:Client端
在局域网内
发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。 -
第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。
-
第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。
-
第四步:DHCP Server发送ACK数据包,确认信息。
实例数据包如下:
-
DHCP Discover:
-
DHCP Offer:
-
DHCP Request:
-
DHCP ACK:
正常来说,一次DHCP过程只需要上面状态机的前四步,后面的续约是在DHCP的租期到达1/2和3/4的时候`进行的。
DHCP REQUEST首次必须是广播——为了告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。之后可单播
三、DHCP状态机(完整状态机可以下去自己抓包分析)
-
1.客户机开始处于
Init
状态:没有信息,并广播DHCP DISCOVER消息
-
2.
选择
状态:客户机接收DHCP OFFER消息
,直到决定使用哪个服务器和地址
-
3.
请求
状态:当它做出选择,发出DHCP REQUEST消息
来响应时,进入请求状态 -
4.接收ACK:
- 可能会收到来自不需要的地址的ACK。如果
没有
发现它需要的地址
,发送一个DHCP DECLING消息
,并转化到Init
状态 - 接收到一个自己需要的地址的DHCP ACK消息,
接受
它,获得超时值T1(T/2)和T2(3T/4)
,并进入绑定
状态,这是就能使用这个地址直至过期
- 可能会收到来自不需要的地址的ACK。如果
-
5.IP续期:
- 客户端从服务器租用IP地址会有一个
固定的租约期
。除了租约期限外,还有两个时间值T1和T2。其中,T1定义为租约期限的1/2,而T2定义为租约期限的3/4
。 - 当到达
T1
定义的时间期限时,客户端会向提供租约的原始服务器
发送DHCP Request包(单播)
,尝试重新建立租约
。- 如果
服务器接受
此请求,则回复DHCP ACK
消息,包含更新后的租约期限
,续租后就会立刻更新T1和T2
; - 如果
不接受
租约更新请求,就会发送DHCP NAK包
,此时DHCP客户端立即
发起DHCP DISCOVER
进程以寻求IP地址; - 如果
没有
从DHCP服务器得到任何回复
,则继续使用此IP地址直到到达T2
定义的时间限制。
- 如果
- 此后(假设此时仍未接收到任何回复),DHCP
客户端
会定时
发送DHCP Request包(单播)
。如果一直都没有得到确认
,则继续使用此IP地址
,直到T2
定义的时间限制。 - 此时(T2),客户端会
发送DHCP Request包(广播)
,尝试与网络中的其他DHCP服务器重新建立租约
。 - 如果
租期到达
时,仍然未更新租约
,则地址自动释放
,客户端既不能更新自己的租期,也无法从其他的DHCP服务器获得新的租期
,客户端必须停止使用这个IP地址
,从而停止常规的TCP/IP网络操作
。
- 客户端从服务器租用IP地址会有一个
-
T1和T2时刻都是发送DHCP Request包,只不过T1时刻是单播发送,而T2时刻是广播发送
。
四、DHCP实用场景
- 1、办公网络:在办公网络中,DHCP可以用来自动分配IP地址、子网掩码、默认网关和DNS服务器的信息,从而简化网络管理,并且可以避免手动配置每台设备的网络信息。
- 2、学校或大学网络:在学校或大学的校园网络中,DHCP可以帮助大量的设备如学生和教职员工的笔记本电脑、智能手机、平板电脑等设备方便地连接到网络并且获取必要的网络配置信息。
- 3、企业内部网络:在企业内部网络中,DHCP可以帮助快速增加或减少设备并且简化网络管理,使得员工在任何地点都可以方便地连接到企业网络。
- 4、公共场所网络:例如酒店、机场、咖啡厅等公共场所的网络,DHCP可以帮助游客和顾客方便地连接到网络,无需手动配置IP地址等网络信息。
- 5、无线网络:在无线网络中,DHCP可以帮助无线设备快速获取IP地址等连接信息,并方便地切换到不同的无线接入点而无需重新配置网络信息。
- 6、园区网中不同部门规划了不同网段,每个网段内的主机可以通过DHCP服务器动态获取IP地址等网络参数。如果主机与DHCP服务器不在同一网段,还需要部署DHCP中继。
五、DHCP中继
应用场景:
- 在大型的网络中,可能会存在多个网段。DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址。但广播消息是不能跨越网段的。因此,DHCP客户机和服务器在不同的网段内时,客户机向服务器申请IP地址就要用到DHCP中继代理。
- 简单网络中,
一个DHCP服务器可供一个局域网使用(由于广播的缘故)
- 复杂网络中,可以通过
一个或更多DHCP中继代理
来中继DHCP流量。
工作原理:
-
DHCP中继代理
用于将DHCP操作扩展到跨越多个网段
。- DHCP中继会对DHCP Client发送的报文的源目IP地址进行改动,
将本来的广播报文改变成单播报文
,以使得DHCP报文可以跨三层路由设备传输。
- DHCP中继会对DHCP Client发送的报文的源目IP地址进行改动,
-
4.使用中继的时机
- 在一般情况下,中继
不会参与
客户机和服务器之间的所有DHCP流量交换。 - 相反,它
仅中继
那些广播消息(或IPv6中的组播)
。这种消息通常在客户机首次获得自已的地址时
交换。 - 当一台
客户机获得
一个IP地址
,并且服务器的IP地址使用服务器标识选项时,它可与服务器
进行单播通信
而不经过中继
。
- 在一般情况下,中继
-
5.中继代理在传统上是第3层设备,并且通常结合了路由功能。