公众号旧文

连 WiFi 时,手机是怎么得到 IP 地址的?

作者:胖子阅读 —

手机一连上 WiFi,几秒钟后就能上网。

大家都知道,能上网的设备上,都有 IP 地址。

那手机的 IP 地址是谁分配的?

第一步:先连接 WiFi

当输入密码连接 WiFi 后,首先建立的是无线链路。

这时候,手机只是和路由器建立了通信,相当于进入了同一个局域网。

但注意,此时还没有 IP 地址。

没有 IP,就像一个没有门牌号的住户,别人不知道怎么找到它,自然无法正常访问网络。

所以接下来,需要申请一个 IP。

第二步:发送 DHCP Discover

手机会向整个局域网广播一条消息:

有没有人可以给我分配一个 IP 地址?

这个消息叫做 DHCP Discover。

为什么是广播?

因为手机还没有 IP,自然也不知道 DHCP 服务器在哪里。

于是只能向整个网络喊一声。

局域网里的所有设备都会收到,但真正回应的,通常只有 DHCP 服务器。

第三步:DHCP Offer

家庭网络中,DHCP 服务器一般就是路由器。

路由器收到请求后,会查看自己的地址池。

例如:

192.168.1.100
192.168.1.101
192.168.1.102
……
192.168.1.254

如果有空闲地址,就会回复手机:

我可以给你 192.168.1.105。

这一步叫 DHCP Offer。

这里并不是正式分配,而是提供一个候选地址。

第四步:DHCP Request

手机收到 Offer 后,会回复:

好,我就要这个 IP。

这一步叫 DHCP Request。

它告诉 DHCP 服务器:

我接受这个地址,请正式分配给我。

第五步:DHCP ACK

最后,路由器发送确认消息:

可以,这个 IP 正式属于你。

同时还会一起发送很多信息,例如:

  • 子网掩码
  • 默认网关
  • DNS 服务器
  • IP 的租约时间

直到这一步完成,手机才真正拥有了自己的 IP。

整个过程通常只需要几十毫秒到几百毫秒。

一、为什么两台设备不会拿到同一个 IP?

因为 DHCP 服务器会维护一张租约表。

例如:

AA:BB:CC:DD:11:22
↓
192.168.1.105

租约时间:24 小时

这里记录的是:

  • 设备 MAC 地址
  • 使用哪个 IP
  • 到什么时候过期

下一台设备来申请时,服务器会选择另一个空闲 IP。

所以一般不会发生 IP 冲突。

二、为什么每次连 WiFi,IP 都可能不一样?

因为 DHCP 分配的 IP 是租借给设备的。

租约到期后,设备重新连接时,可能:

  • 继续拿到原来的 IP;
  • 或者因为别人已经占用了,拿到新的 IP。

因此,你会发现今天是:

192.168.1.105

明天可能变成:

192.168.1.118

这都是正常现象。

三、为什么有时候显示“正在获取 IP 地址”?

如果路由器迟迟没有回应 DHCP 请求,手机就会一直停留在:

正在获取 IP 地址……

常见原因包括:

  • 路由器 DHCP 服务异常;
  • DHCP 地址池已经分配完,没有空闲 IP;
  • WiFi 信号太弱,DHCP 数据包丢失;
  • 网络配置错误或 DHCP 功能被关闭。

只有成功完成 DHCP 四次交互后,设备才能获得 IP 地址并正常上网。

总结

连接 WiFi,并不是一输入密码就能直接上网。

而是要先完成自动获取 IP 地址的过程。

整个流程通常遵循 DHCP 四步握手:

  1. Discover:手机广播寻找 DHCP 服务器。
  2. Offer:路由器提供一个可用的 IP 地址。
  3. Request:手机请求使用这个 IP。
  4. ACK:路由器确认分配,并下发网关、DNS、租约等网络参数。

正是因为有了 DHCP,绝大多数设备都能做到连上 WiFi 即可上网。

无需手动填写 IP、网关和 DNS,大大简化了网络配置。