每台设备开机联网,都是先喊一句【谁给我个地址】;DHCP 给的不只是一个地址,还有一张写着租期的合同。
3-3 讲了 IP 地址是什么,这一节讲它是怎么到设备手上的。地址不会自己长出来——要么手工填,要么由 DHCP 自动发;而自动发这一套,正是【插上网线就能上网】背后的事。
一、两种拿地址的方式
手动填:把地址、子网掩码、网关、DNS 服务器一项一项敲进设置里。好处是稳定可控,坏处是设备一多就管不过来,还特别容易填重。
自动领:由 DHCP 服务器统一分配。这是绝大多数场景的默认做法——家里的路由器、公司的网络、公共 Wi-Fi,背后都是一台 DHCP 服务器在发地址。
教材把它放在【分配 IP 地址】这一节讲,重点不在【地址是什么】,而在【地址是怎么被发出去、又怎么被收回来的】。
二、四步拿到地址:DORA
DHCP 的过程可以概括成四步,首字母正好拼成 DORA。
第一步 Discover:客户端还没地址,只能广播——【我是新来的,谁能给我个地址】。
第二步 Offer:服务器回应一个候选地址——【我这儿有一个,你要不要】。
第三步 Request:客户端广播说【我就要那一个了】,这一步的广播是为了让其它 DHCP 服务器知道自己的 Offer 落选了。
第四步 Ack:服务器确认,并把租期一起告诉客户端。
三、动手 Demo:四步与租期的账
地址是有租期的,这一点常被忽略。租期到了不续,地址就会被收回。
pool = 254
for h, label in [(24, "24 小时"), (1, "1 小时"), (0.5, "30 分钟")]:
print("租期", label, "→ 254 个地址一天最多轮", int(pool * 24 / h), "台设备")
print("四步:Discover → Offer → Request → Ack")
实跑输出:
--------------------------------------------------------------------
D4 DHCP:地址是自动领的,领来的有租期
--------------------------------------------------------------------
每台设备联网,都是先喊一声【谁给我个地址】,然后拿到一个带租期的地址。
这四步有个好记的名字:DORA。
步骤 谁发给谁 内容
----------------------------------------------------------------------------
Discover 客户端 → 广播 我是新来的,谁能给我个 IP
Offer 服务器 → 客户端 我这儿有 192.168.1.50,你要不要
Request 客户端 → 广播 我要那个 192.168.1.50 了
Ack 服务器 → 客户端 给你,租期 8 小时,到期要续
租期不是随便定的,它取决于【这里的设备换得快不快】:
场景 建议租期 为什么
--------------------------------------------------------------------------
数据中心里的服务器 静态保留 服务器靠地址被访问,绝不能变
企业办公网 8 ~ 24 小时 平衡续约开销与地址回收速度
Wi-Fi / 访客网络 30 ~ 60 分钟 人来人往,短租期才不会占满池子
物联网 / 临时设备 10 ~ 30 分钟 设备来去极快,地址要转得动
IPv6 网络 24 ~ 48 小时 地址多到用不完,不必频繁回收
算一笔地址池的账。一个 /24 网段有 254 个可用地址,租期越长,回收越慢:
· 租期 24 小时 → 254 个地址一天最多轮到 254 台设备
· 租期 1 小时 → 254 个地址一天最多轮到 6,096 台设备
· 租期 30 分钟 → 254 个地址一天最多轮到 12,192 台设备
所以咖啡馆、酒店这种【人一茬一茬换】的地方,租期必须短;
而机房里那台被域名指着跑的服务器,地址根本不该租——直接钉死。
先看四步那张表:第一步和第三步都是广播,因为客户端还没有地址,只能对着整个局域网喊。这个细节解释了为什么 DHCP 必须在同一个广播域内才能工作。
再看租期那张表,它的规律很简单:设备换得越快,租期就该越短。咖啡馆和酒店人来人往,租期短才能把地址转起来;机房里那台被域名指着跑的服务器,地址根本不该租——直接钉死。
最后那笔账最直观:同样 254 个地址,租期从 24 小时缩到 30 分钟,一天能服务的设备数翻了将近五十倍。这不是魔法,就是因为地址被回收得更勤了。
四、IPv6 时代的两条路
IPv6 里拿地址有两条路。一条是自己配(SLAAC):路由器广播一个前缀,设备把自己的接口标识接上去,地址就有了——不需要服务器。
另一条还是找 DHCP,但分成两种用法:有状态(地址和参数都由服务器发,便于审计和追踪)、无状态(地址自己配,只向服务器要 DNS 这类参数)。
现实中多数网络选的是无状态那一种:既享受自配置的省事,又能统一管理 DNS 设置。这也说明:IPv6 不是把 DHCP 干掉,而是把它的职责重新分了一次。
30 秒实验
- 在 Windows 上运行
ipconfig /all,找到 DHCP 已启用那一行和租约获得时间、租约过期时间——看看你现在的地址租到什么时候。 - 运行
ipconfig /release再运行ipconfig /renew,观察地址有没有变——多数情况下会拿回同一个,因为服务器优先把旧地址还给你。 - 在手机或电脑上连一次公共 Wi-Fi,再看租期——访客网络的租期通常明显短于家里的。
常见误区
- 错误:IP 地址是设备自带的,像 MAC 一样。——纠正:IP 是临时发的。它由运营商或 DHCP 服务器分配,换一个网络就是一个新地址,而且带租期。这正是 3-3 里【IP 会变、MAC 不变】的原因。
- 错误:DHCP 只是发地址的。——纠正:它还负责发一整套上网参数:子网掩码、默认网关、DNS 服务器、有时还有 NTP 与域名。地址只是包裹里最显眼的那一件。
- 错误:租期越长越好,省得老续约。——纠正:租期长有租期长的代价。设备走了地址却还被占着,池子很快就不够用;租期短能让地址快速周转。选多长,取决于这个网络里的人换得有多快。
- 错误:IPv6 有了 SLAAC,就不需要 DHCP 了。——纠正:SLAAC 只管地址,不管 DNS 之类的参数。地址能自己配上,可不知道去哪问域名还是上不了网。所以现实里常见的是【SLAAC 配地址 + 无状态 DHCPv6 发参数】这套组合。
自测三问(点开对答案)
1. DHCP 的四步分别是什么? —— Discover(客户端广播找人)、Offer(服务器给出候选)、Request(客户端广播确认要哪个)、Ack(服务器确认并发出租期)。**第一步和第三步都是广播**,因为此时客户端还没有地址可用。 2. 为什么访客网络的租期要比办公网短得多? —— 因为**人员和设备的周转速度完全不同**。访客常常待半小时就走,租期若设成一天,地址整天都被占着,池子很快见底。**租期本质上是【地址回收的速度调节钮】**。 3. 为什么机房里的服务器通常不用 DHCP? —— 因为**服务器要靠固定地址被访问**。域名解析到的地址一变,请求就全部打空。所以要么手工填静态地址,要么在 DHCP 上做**按 MAC 绑定的静态保留**——**既享受集中管理,又保证地址不变**。- ☐ 下一节(3-5 连接域名与IP地址:DNS)
相关笔记
- IP地址与MAC地址的区别 —— 上一节:地址本身,以及它为什么要变
- 对必要的设置进行自动设置(DHCP) —— 网络课里的 DHCP
- 连接网络的过程(IP 地址的设置) —— 开机那一刻发生了什么
- Web系统的设置场所 —— 服务器放在哪里,也会牵涉地址怎么给
- 🕸️ Web技术原理 · 索引