当前位置: 首页 > article >正文

动态主机配置协议(DHCP)

一、动态主机配置协议(DHCP)

用人工对主机进行IP地址等协议配置很不方便,而且容易出错。因此,应当采用自动协议配置的方法。

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)又称动态主机组态协定,是 RFC 1541(已被 RFC 2131 取代)定义的标准协议。是一个用于IP网络的网络管理协议,它提供了一种插即用连网(plug-and-play networking)的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许 地址重用 ,支持 移动用户加入网络 ,支持在用地址续租。

DHCP位于OSI模型的应用层,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,使用UDP协议工作。

主要有两个用途:

  • 用于内部网或网络服务供应商的服务器对用户客户端动态分配 IP 地址和配置信息。
  • 用于内部网管理员对所有电脑作中央管理

二、DHCP的工作原理

1. DHCP的工作原理

需要地址的主机在启动时就向 DHCP服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有 DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的正地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文(DHCPOFFER)

2. DHCP 中继代理(Relay Agent)

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

3. DHCP租用期(Lease Period)

DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP协议称这段时间为租用期(Lease Period),但并没有具体规定租用期应取为多长或至少为多长,这个数值应由DHCP服务器自己决定。例如,一个校园网的DHCP服务器可将租用期设定为1小时。DHCP服务器在给DHCP发送的提供报文的选项中给出租用期的数值。按照RFC 2132的规定,租用期用4字节的二进制数字表示,单位是秒。因此可供选择的租用期范围从1秒到136年。DHCP客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。

4. DHCP具体步骤

在这里插入图片描述
DHCP 客户端进程监听的是 68 端口号,DHCP 服务端进程监听的是 67 端口号。

DHCP具体步骤如下:

  1. 客户端首先发起 DHCP 发现报文(DHCP DISCOVER) 的 IP 数据报,由于客户端没有 IP 地址,也不知道 DHCP 服务器的地址,所以使用的是 UDP 广播通信,其使用的广播目的地址是 255.255.255.255(端口 67) 并且使用 0.0.0.0(端口 68) 作为源 IP 地址。
  2. DHCP 客户端将该 IP 数据报传递给链路层,链路层然后将帧广播到所有的网络中设备。 DHCP 服务器收到 DHCP 发现报文时,用 DHCP 提供报文(DHCP OFFER) 向客户端做出响应。该报文仍然使用 IP 广播地址 255.255.255.255,该报文信息携带服务器提供可租约的 IP 地址、子网掩码、默认网关、DNS 服务器以及 IP 地址租用期。
  3. 客户端收到一个或多个服务器的 DHCP 提供报文后,从中选择一个服务器,并向选中的服务器发送 DHCP 请求报文(DHCP REQUEST进行响应,回显配置的参数。
  4. 最后,服务端用 DHCP ACK 报文对 DHCP 请求报文进行响应,应答所要求的参数。 一旦客户端收到 DHCP ACK 后,交互便完成了,并且客户端能够在租用期内使用 DHCP 服务器分配的 IP 地址。

http://www.kler.cn/a/419532.html

相关文章:

  • Java中 HttpURLConnection 和 HttpClient 详解(初学者友好)
  • BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比
  • Spark 内存管理机制
  • 《沉积与特提斯地质》
  • 周鸿祎再次“创业”,盯上百度
  • 无人机数据处理系统:原理与核心系统
  • 10 设计模式之装饰模式
  • 全面解析 C++ STL 中的 set 和 map
  • 各类 AI API获取方法,GPT | Claude | Midjourney等
  • 【论文复现】DETR[端到端目标检测]
  • 网络安全与基础总复习
  • React Native 组件详解之SectionList、StatusBar、Switch、Text 、 TextInput
  • Python基础可能经常出现的异常类型
  • 身份证 OCR 识别 API 接口的应用场景
  • JVM_总结详解
  • 大模型开发和微调工具Llama-Factory-->LoRA合并
  • 本地部署开源趣味艺术画板Paint Board结合内网穿透跨网络多设备在线绘画
  • Axios与FastAPI结合:构建并请求用户增删改查接口
  • qt QRadialGradient详解
  • 读《Effective Java》笔记 - 条目15
  • 数据结构与算法学习笔记----堆
  • day32|leetcode 509.斐波那契数,70.爬楼梯,746.使用最小花费爬楼梯
  • 什么是隐式类型转换?隐式类型转换可能带来哪些问题? 显式类型转换(如强制类型转换)有哪些风险?
  • 人工智能技术在外骨骼机器人中的应用,发展历程与原理介绍
  • 普及组集训--图论最短路径
  • 婚礼照片分享平台WeddingShare