每日一个计算机小知识:DHCP

每日分享一个有趣的计算机小知识,今日话题:DHCP

DHCP是 Dynamic Host Configuration Protocol 的缩写,动态主机配置协议,它是一个用于局域网内自动分配IP地址和配置信息的网络协议,位于OSI七层网络模型里的应用层,须借助传输层的UDP协议(通过67和68端口)来发送和接收数据。

DHCP用一台或一组DHCP服务器来自动为客户端设备分配和管理以下网络配置参数:

  • IP 地址(IPv4 或 IPv6)
  • 子网掩码(Subnet Mask)
  • 默认网关(Default Gateway)
  • DNS服务器地址等

就是当我们用手机或电脑连接网络时,DHCP服务器(像家里一般就是路由器)会自动为我们完成下面3件比较关键的事情:

  1. 给我们的设备分配一个唯一标识的IP地址,如:192.168.1.300,确保我们的设备能在网络中被唯一识别。
  2. 提供子网掩码、默认网关(即路由器地址)这些配置信息,好让设备知道怎么与局域网内以及外网通信。
  3. 下发DNS服务器的地址,让设备可以通过域名找到对应的IP地址。

DHCP 收发消息都是基于UDP协议(需快速分配IP,本身也有重试机制,所以不用担心网络丢包), DHCP 服务器固定使用67端口 接收客户端请求并发送响应,DHCP 客户端固定使用68端口发送请求并接收响应。

DHCP服务器分配IP地址过程的四次握手:

发现 -> 提供 -> 请求 -> 确认

  1. Discover

当客户端设备接入网络并设置为自动获取IP时,它并不知道DHCP服务器在哪里,所以客户端会广播一个Discover消息来询问DHCP服务器。

  1. Offer

当网络中的DHCP服务器(如路由器)收到这个广播消息后,会从预先配置好的IP池中选一个可用的IP地址,然后再通过广播方式(此时客户端还无 IP,无法单播)回复一个Offer消息,告诉客户端可用的IP地址,如果有多台DHCP服务器,客户端则会收到多个Offer消息。

  1. Request

客户端会选择收到的第一个Offer消息,然后再广播发送一个Request消息,未被选中的DHCP服务器收到消息后则会自动回收之前发出的IP地址。

  1. ACK

被选中的DHCP服务器收到客户端发来的Request消息后,会再发送一个单播(此时已经知道客户端选了自己给的IP地址)ACK消息进行确认,消息中包含IP地址的有效租约和其他配置信息。当客户端收到这个ACK消息时,就会用选择的IP地址和配置参数来配置自己的网络。

没有DHCP时怎么上网?

DHCP的核心作用其实就是减少人工配置和高效管理利用IP地址,在没有DHCP之前,想要上网需要通过下面2种方式:自己手动配置静态IP地址或使用PPPoE拨号。

第一种需要在计算机的网络设置中手动指定IP地址、子网掩码、默认网关以及DNS服务器等信息,现在我们的电脑中依然可以这样设置,但是很容易配置重复IP导致设备无法联网。第二种则每次上网前需要先拨号,然后运营商的服务器会为你的设备分配一个动态的IP地址。

历史进程

1993年10月,互联网工程任务组IETF负责动态主机配置开发设计的工作组发布了RFC 1531,正式定义DHCP协议,其前身为BOOTP(Bootstrap Protocol)引导协议。由于RFC 1531中存在编辑错误,同月又发布了修正的RFC 1541,成为DHCP协议的首个标准规范。

1997年3月,IETF发布了RFC 2131和RFC 2132,正式确立 DHCPv4 为 IPv4 网络的标准协议。随着IPv4地址枯竭,2003年IETF发布了RFC 3315,正式定义了专为IPv6设计的DHCPv6。

相关推荐
JustHappy2 小时前
古法编程秘籍(二):什么是代码模块化?别背概念,把房间收拾明白就够了
前端·后端
小江的记录本2 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
上海云盾-小余2 小时前
BGP 高防 IP 与 CDN 混合部署:攻防场景选型实战指南
网络·网络协议·tcp/ip
IT_陈寒6 小时前
Python闭包里藏的这个坑,差点让我加班到凌晨
前端·人工智能·后端
IT_陈寒6 小时前
Java注解空指针?这个坑我踩得莫名其妙
前端·人工智能·后端
土狗TuGou6 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
ZengLiangYi6 小时前
React Query + REST API 最佳实践
javascript·后端·react.js
星浩AI6 小时前
项目实战:合同智能审批 · LangGraph + HITL 人机协同方案 [有源码]
后端·langchain·agent
JavaGuide6 小时前
Codex 接入第三方模型 DeepSeek、GLM、Kimi 教程:CC-Switch 和 Codex++ 两种方案对比
后端·ai编程
ZengLiangYi6 小时前
Fastify 加 Electron:把 Web 服务嵌进桌面应用
前端·javascript·后端