DHCP是动态路由配置协议,由于网络的复杂性和增大,手动配置有着越来越多的弊端,比如ip地址重复,ip地址浪费,配置麻烦,不易管理,用DHCP就可以减轻配置麻烦,避免了ip地址冲突重复,便于集中管理,可以自动为客服端提供地址网关租期等等;在客户端需要请求ip地址时,会广播一个请求dhcp的广播包discover,dhcp服务器收到后会向客户端发送offer单播报文回复,里面包括可以提供的ip信息,客户端收到后会回复request请求收到的第一个dhcp服务器,并且拒绝其它服务器,服务器收到request后就发送ack报文,绝大多数网络中还有需要配合dhcp中继relay来使用。
动态主机配置协议
应用层协议,传输层基于UDP,UDP67(服务器端口)、UDP68(客户端端口)
需求及协议作用
网络规模的扩大和网络复杂度的提高,网络配置越来越复杂,计算机位置变化和计算机数超过可分配的IP地址,造成IP地址频繁变化及IP地址不足的情况,以及手动配置大量主机的IP地址、掩码、网关等待工作繁琐,容易出错,会造成IP地址冲突。所以DHCP的作用是
- 自动给局域网设备分配IP地址、子网掩码、网关、DNS等网络参数
- 统一地址管理,避免手动配IP冲突
- 设备即插即用,手机、电脑等自动上网
- 地址租期机制,回收闲置IP,节约地址资源
DHCP交互流程
1.Discover发现(广播)
客户端无IP,发送广播在广播域内寻找DHCP服务器
2.Offer提供(广播Linux/单播Windows)
收到Discover的DHCP服务器,从地址池取出空闲IP,广播或单播回复,如果多台服务器同时发送Offer,客户端只会选择先收到的
3.Request请求(广播)
客户端选定最先收到的服务器提供的地址,同时通知其它DHCP服务器回收Offer提供的可使用IP
4.ACK确认(广播/单播)
DHCP服务器正式下发完整配置:IP、掩码、网关、DNS、租期、域名、NTR服务器等,客户端完成网络配置
NAK:服务器拒绝分配(地址池耗尽、地址被占用或其他原因不能分配)
Release:客户端主动下线,释放IP还给地址池
Decline:客户端拿到分配的IP地址后,无故ARP检测到地址冲突,发送Decline通知服务器封禁此IP,重新申请地址
Inform:服务器本身已有静态IP,仅需要向DHCP服务器索要DNS、域名等,不申请IP地址;服务器ACK返回配置信息,不分配地址池IP
DHCP中继(Relay)
DHCP中继获得地址过程:
- PC发送DHCP Discover报文申请dhcp服务,在access口打上vlan10的标签发给Relay,在广播域内转发,发给上层中继三层
- 三层Trunk口收到带vlan10标签的数据帧,撕下标签发给三层接口vlanif10(网关)处理
- 中继重构报文,将客户端广播Discover封装成单播IP报文,源IP为本网段网关,目标IP为服务器端口IP地址,DHCP服务器判断客户端属于哪个网段,匹配对应vlan10地址池分配,单播转发新封装的报文给服务器
- DHCP服务器收到Discover后生成Offer报文单播回给中继网关 ,中继识别到是DHCP回复报文,通过vlanif10还原为二层广播帧,打上vlan10的标签,通过二层trunk口下放到二层交换机Relay,从access口出来撕下标签,广播发给PC
客户端<——>中继 全是二层广播帧
中继 <——>DHCP服务器 全是三层单播报文