DHCP协议

一、DHCP协议概述

1、DHCP

        DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。该协议为网络中计算机自动分配TCP/IP参数(IP地址、子网掩码、网关、DNS等)

DHCP 协议是基于UDP层之上的应用

2、DHCP分配方式

  • 自动分配:分配到一个IP地址后永久使用(固定配置)
  • 动态分配:使用完后释放该IP,供其它客户机使用
  • 手动分配:由DHCP服务器管理员专门指定IP地址(在服务器上进行IP/MAC绑定)

3、DHCP服务的好处

1、减少管理员的工作量
2、方便客户端的配置
3、提高了IP地址的利用率
4、当网络更改IP地址段时,不需要再重新配置每个用户的IP地址
5、避免护地址冲突
6、避免输入错误的可能

 二、DHCP交互过程

         DHCP使用客户服务器方式。需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文(DHCPDISCOVER)(将目的IP地址置为全1,即255.255.255.255),这时该主机就成为DHCP客户。

发送广播报文是因为现在还不知道DHCP服务器在什么地方,因此要发现(DISCOVER)DHCP服务器的IP地址

        由于这台主机目前还没有自己的IP地址,因此它将IP数据报的源IP地址设为全0。这样,在本地网络上的所有主机都能够收到这个广播报文,但只有 DHCP 服务器才对此广播报文进行回答。

        DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文(DHCPOFFER),表示“提供”了IP 地址等配置信息。

        DHCP的详细工作过程如图所示。DHCP客户使用的 UDP 端口是68,而DHCP服务器使用的 UDP 端口是 67。这两个 UDP 端口都是熟知端口。

1、DHCP服务器被动打开UDP端口67,等待客户端发来的报文

2、DHCP客户从UDP端口68发送DHCP发现报文

3、凡收到DHCP发现报文的DHCP服务器都发出DHCP提供报文,因此DHCP客户可能收到多个
DHCP提供报文

4、DHCP客户从几个DHCP服务器中选择其中的一个,并向所选择的DHCP服务器发送DHCP请求
报文

5、被选择的DHCP服务器发送确认报文DHCPACK。从这时起,DHCP客户就可以使用这个IP地址了。
这种状态叫做已绑定状态,因为在DHCP客户端的IP地址和硬件地址已经完成绑定,并且可以开始使用
得到的临时IP地址了。DHCP客户现在要根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时
时间分别是0.5T和0.875T。当超时时间到了就要请求更新租用期

6、租用期过了一半(T1时间到),DHCP发送请求报文DHCPREQUEST要求更新租用期

7、DHCP服务器若同意,则发回确认报文DHCPACK。DHCP客户得到了新的租用期,重新设置计时器。

8、DHCP服务器若不同意,则发回否认报文DHCPNACK。这时DHCP客户必须立即停止使用原来的IP地址,
而必须重新申请IP地址(回到步骤2)。

若DHCP服务器不响应步骤6的请求报文DHCPREQUEST,则在租用期过了87.5%时(T2时间到),
DHCP客户必须重新发送请求报文DHCPREQUEST(重复步骤6),然后又继续后面的步骤。

9、DHCP客户可以随时提前终止服务器所提供的租用期,这时只需向DHCP服务器发送释放报文 
DHCPRELEASE 即可。

        如果每一个网络上都设置一个 DHCP 服务器,因为这样会使 DHCP 服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(relay agent),它配置了DHCP 服务器的IP 地址信息。当DHCP 中继代理收到主机 A以广播形式发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到DHCP服务器回答的提供报文后,DHCP中继代理再把此提供报文发回给主机A。

三、DHCP报文格式

  • DHCP报文字段

DHCP服务的8种报文的格式是相同的,不同类型的报文只是报文中的某些字段取值不同

报文字段说明:

  • Message type:消息类型(1表示请求,2表示响应)
  • Option:参数字段,包含报文的类型、有效租期、DNS服务器的IP地址、WINS服务器的IP地址等配置信息。
  • Magic cookie:固定字节流,当server看到这个Magic cookie固定字节流后,就能知道后面是options field
  • Client hardware address padding:客户端硬件地址填充
  • Client MAC address:客户端MAC地址
  • Relay agent IP address:中继代理IP地址
  • Next server IP address:DHCP客户端获得启动配置信息的服务器的IP地址
  • Your(client)IP address:服务器分配给客户端的IP地址。当服务器进行DHCP响应时,将分配给客户端的IP地址填入此字段
  • Client IP address:客户机 IP 地址
  • Bootp flags:此字段在BOOTP中保留未用,在DHCP中表示标志字段
  • Seconds elapsed:由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数,目前没有使用,固定为0
  • Transaction ID:事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配;该ID由客户端设置并由服务器返回,为32位整数
  • Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0,每经过一个DHCP中继时,该字段加1;此字段的作用是限制DHCP报文所经过的DHCP中继数目
  • Hardware address length:硬件地址长度
  • Hardware type:硬件类型(以太网接口类型为1)
### DHCP协议详解 #### 协议概述 DHCP(Dynamic Host Configuration Protocol),即动态主机配置协议,用于简化网络设备的IP地址管理。该协议允许服务器自动向网络上的客户端提供并分配TCP/IP配置参数,包括但不限于IP地址、子网掩码以及默认网关等信息[^1]。 #### IP地址分配模式 支持多种类型的IP地址分配机制,其中最为常见的两种分别是静态分配与动态分配。前者指定了特定MAC地址对应的固定IP;后者则是从预设池子里随机选取可用地址给予请求者,在租约到期前有效。这种灵活性使得DHCP可以适应不同的应用场景需求[^2]。 #### 工作机制 对于复杂多变的大规模企业级网络环境而言,单一子网内的通信不足以满足实际需要。因此引入了DHCP中继代理的概念——一种特殊的路由器或交换机端口角色,用来帮助跨过传统广播域限制,让远距离之外甚至不同物理位置下的计算机也能顺利接收到必要的初始化设定数据流[^3]。 #### 配置要求 值得注意的是,作为Windows Server操作系统的一部分,为了启用这项服务,系统管理员需按照官方指南完成相应的软件安装流程,并根据具体业务情况调整各项设置选项以确保最佳性能表现[^4]。 #### 发现阶段详情 当一台新加入局域网的新机器启动时会发出一个名为`DHCP Discover`的数据包,其目的就是寻找周围存在的任何一台能为自己提供所需资源的信息源。这个过程中使用的特殊IPv4寻址方案表明发送方目前还没有被赋予正式的身份标识符[^5]。 ```python import socket def dhcp_discover(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) message = b'\x01' + ... # 构造DHCP DISCOVER报文 sock.sendto(message, ('255.255.255.255', 67)) dhcp_discover() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值