linux服务篇-DHCP服务原理分析

1. 概述

DHCP【Dynamic Host Configuration Protocol的简称】动态主机配置协议,是一个局域网的网络协议,工作在UDP协议之上,属于应用层协议。主要有两个用途:

  1. 给内部网络或网络服务供应商自动分配IP地址,主机名,DNS服务器,域名
  2. 配合其它服务,实现集成化管理功能。如:无人执守安装服务器

其特点是:

  1. 其工作模式为C/S模式【服务器/客户端模式】
  2. 自动分配IP地址,方便管理
  3. DHCP不会同时租借相同的IP地址给两台主机
  4. DHCP管理员可以约束特定的计算机使用特定的IP地址
  5. 可以为每个DHCP作用域设置很多选项
  6. 客户机在不同子网间移动时不需要重新设置IP地址。每次都自动获取IP地址就可以了

主要缺陷表现在:

  1. 当网络上存在多服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址
  2. DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP协议转发

DHCP服务使用67号【bootps服务端】端口和68端口【bootpc客户端】,可用 vim /etc/services查看:
这里写图片描述
DHCP协议由 bootp协议发展而来,是BOOTP的增强版本,bootps代表服务端端口, bootpc代表客户端端口

扩展:
bootp协议:引导程序协议(BOOTP)。它可以让无盘工作站从一个中心服务器上获得IP地址,为局域网中的无盘工作站分配动态IP地址,并不需要每个用户去设置静态IP地址。
BOOTP有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,MCA地址与IP的对应是静态的。换而言之,BOOTP非常缺乏“动态性 ”,若在有限的IP资源环境中,BOOTP的一对一对应会造成非常可观的浪费。

2. 运行原理

运行原理如下图所示:

这里写图片描述

以下我将按运行流程进行一一讲解。

2.1 DHCP Client 发现阶段

即DHCP客户端寻找DHCP服务端的过程,客户端发送DHCP Discovery,因为DHCP 服务端对于DHCP客户端是未知的,所以DHCP 客户端发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。

注意:
客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个IP 地址配置本机地址。169.254.0.0/16是windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。早先的Linux上并不会产生这条路由,现在有这条路由大概是为了和windows兼容。

2.2 DHCP Server 提供阶段

当所有的DHCP服务端在网络中接收到DHCP客户端发出的discover时,所有的DHCP服务器都会做出响应,它们会从尚未出租的IP地址中挑选一个分配给DHCP客户端。

注:服务端响应给客户端的数据包括IP地址和一些配置信息 。

2.3 DHCP Client 确认阶段

当客户端收到DHCP服务端的offer时,它会选择第一个DHCP服务端给它发出的offer,然后它就以广播方式回答一个DHCPrequest请求信息,该信息中包含第一时间所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。

2.4 DHCP Client重新登录网络

DHCP客户端会带着前一次所分配的IP地址去请求这个给它发出的offer的DHCP服务器,当这个DHCP服务器收到这一消息后,它会检查改IP地址是否已经分配给其它客户端。这里会有两种情况,分别是:

  1. 如果已经分配给其它客户端主机了那么它响应一个DHCP nack否认信息说该IP地址已经被其它客户端主机使用了你不能使用了,则客户端会回到DHCP Client 发现阶段继续获取IP地址。
  2. 如果未分配给其它客户端主机,则它会相应一个DHCP ack确认信息,说,你可以使用这个IP地址,则客户端就会继续使用该IP地址登录网络

2.5 DHCP Client更新租约

DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将会回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新租约。更新的方式就是,当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值