No jargon, just sharing.
No pressure, just learning.

当在浏览器地址栏输入 baidu.com 并回车,首页“秒开”的背后,家庭网络里发生了大量协同工作:DHCP 给设备发地址、ARP 解析 MAC、DNS 解析域名、CIDR 判断同网段、NAT 出公网、回包再映射……这篇通识按照真实链路,把每一步拆开讲清,折腾软路由前先把底层搞透。

一、家庭网络基线拓扑

典型家用网络:

  • 运营商光猫(可能桥接或路由模式)
  • 自购路由器:WAN 接光猫、LAN 接交换机/Wi-Fi
  • 路由器拨号获取公网(PPPoE)或从光猫拿内网地址
  • 路由器 LAN 侧地址:192.168.1.1(示例),既是管理地址,也是全网默认网关
口径统一:下文示例使用 192.168.1.0/24 作为家庭网段,网关 192.168.1.1;示例主机拿到 192.168.1.3

二、DHCP:自动获取 IP 的“入网第一步”

新设备插网线或连上 Wi-Fi 时,若设置“自动获取 IP”,会走 DHCP 流程:

1)请求如何发出

  • 传输层:UDP,源端口 68 → 目标端口 67
  • 网络层:源 IP 0.0.0.0 → 目标 IP 255.255.255.255(广播)
  • 链路层:源 MAC 为本机网卡 MAC,目标 MAC 为全 FF:FF:FF:FF:FF:FF(广播)
  • 交换机只看 MAC,不看 IP/端口;见到广播就泛洪到所有端口

2)路由器上的 DHCP 服务响应

  • 路由器内置 DHCP 服务监听 UDP/67,收到请求后从地址池挑一个空闲地址(如 192.168.1.3
  • 下发信息:IP子网掩码网关DNS租约(例如 12 小时)
  • 续租:租约过半尝试续期;若失败,会在四分之一、八分之一时再次尝试;到期未续上则释放

3)常见异常与判断

  • 拿到 169.254.x.x:说明局域网内没有可用 DHCP 响应(APIPA 自保网段)
  • 多台设备开 DHCP:地址冲突、掉线、间歇上不去网(避免“多 DHCP 服务器”)
  • 公共场所租期短(几分钟到十几分钟),家庭默认常见 12 小时,可按需调整或做“静态地址绑定”
补充:也可手动配置静态 IP(例如 192.168.1.20 / 掩码 255.255.255.0 / 网关 192.168.1.1 / DNS 指向网关),或在路由器做 DHCP 静态绑定(按 MAC → 永远发同一 IP)。

三、ARP:找网关的 MAC,然后才能发包

设备要把 DNS 请求交给网关,需要先知道网关的 MAC:

  • 发送 ARP 广播:“我是 192.168.1.3,谁是 192.168.1.1?”
  • 路由器应答:“我是 192.168.1.1,我的 MAC 是 BB:…”,双方缓存对方 IP→MAC 映射(ARP 缓存)
  • 后续与网关通信,直接查缓存填目标 MAC,无需再次广播(直到缓存过期)

四、DNS:把域名换成 IP

浏览器要访问 baidu.com,首先发起 DNS 查询:

  • 传输层:UDP,源端口(随机,如 9527)→ 目标端口 53
  • 网络层:源 IP 192.168.1.3 → 目标 IP(本地配置的 DNS,一般指向路由器 192.168.1.1
  • 路由器作为 DNS 转发器/缓存:向上游(运营商 DNS/自定义 DNS)查询 → 回答并缓存 TTL
  • 客户端也会缓存 TTL 时间内的解析结果,避免重复查询
提示:家中做软路由时,DNS 经常叠加分流/广告过滤。确保 关键站点 解析链路可靠(国内/国外),否则会出现“能 ping 不能打开”的现象。

五、CIDR 与同网段判断:该直达还是找网关

192.168.1.3/24 举例:

  • /24 表示前 24 位是网络号(即 192.168.1),后 8 位是主机号
  • 目标 IP 若满足前 24 位相同 → 同网段直达(通过目标主机的 MAC)
  • 否则 → 交给默认网关 转发(因为出网或跨网段)

访问百度服务器 IP 与本机不在同网段 → 把报文交给网关。

六、建立到服务器的连接:HTTP/HTTPS 与三次握手(简述)

  • HTTP 默认端口 80/TCPHTTPS 默认端口 443/TCP
  • 浏览器用随机本地端口(例如 9527)发起 TCP 连接(三次握手)后,发送请求报文
  • 现代网站几乎都走 HTTPS,真实流程会多出 TLS 握手(证书验证、密钥协商)

本文重心在家庭局域网链路,TCP/TLS 细节不展开。

七、NAT:把内网地址换成公网地址再出门

内网地址(如 192.168.1.3)不能在公网路由,路由器在出 WAN 前做 NAT

  • 将源 IP 192.168.1.3 改为路由器 WAN 口公网 IP(如 2.2.2.2
  • 通常会把源端口重写为一个空闲端口(如 4134),并在 NAT 表里记录映射关系:
    192.168.1.3:9527 → 2.2.2.2:4134
  • 公网回来的响应包命中 2.2.2.2:4134 → 查 NAT 表还原回 192.168.1.3:9527 → 局域网投递到主机浏览器
注意:若光猫在“路由模式”且后面路由器也 NAT,会形成“双 NAT”。多数家用场景可用,但端口映射与内网穿透会更麻烦。

八、交换机与“只看二层”的转发方式

  • 普通交换机工作在二层,只依据 MAC 学习与转发,不解析 IP/端口
  • 广播帧(全 F)会被泛洪至所有端口;单播帧按 MAC 表项精准转发
  • MAC 表项会老化(超时删除),设备迁移接口后会重新学习

九、把“访问 baidu.com”的整条链路串起来

  1. 设备连网 → DHCP 获取 192.168.1.3、网关 192.168.1.1、DNS
  2. ARP 问问:谁是 192.168.1.1 → 记住网关 MAC
  3. DNS 询问 baidu.com → 得到百度服务器 IP(带 TTL)
  4. CIDR 判断目标不在 192.168.1.0/24 → 交给网关
  5. TCP(TLS)建连 → 发起 HTTP/HTTPS 请求
  6. 路由器出 WAN 前做 NAT:192.168.1.3:9527 → 2.2.2.2:4134
  7. 报文经公网多跳路由到百度 → 返回响应
  8. 回包命中 NAT 表还原 → 局域网交付到 192.168.1.3:9527 → 浏览器渲染首页

十、常见排错清单(家庭/软路由现场很实用)

  • 拿到 169.254.x.x:DHCP 失效或被拦;检查路由器 DHCP 是否开启、是否多台设备“顶牛”
  • 能 ping 网关,不能上网:DNS 配置异常/劫持;临时把 DNS 指向公共 DNS 做对比
  • 局域网互访不通:检查是否跨网段、掩码是否一致、是否有防火墙/隔离规则
  • 端口映射失败:是否双 NAT、运营商 CGNAT、映射到错设备/错端口
  • 延迟/抖动大:Wi-Fi 信道拥塞/功率、LAN 速率协商、光猫/交换机端口是否降速

附:名词快查

  • DHCP:动态主机配置协议,分配 IP/网关/DNS/租期
  • ARP:地址解析协议,查找“IP→MAC”的映射
  • DNS:域名系统,把域名解析为 IP
  • CIDR:无类域间路由,/24 表示网络号长度
  • NAT:网络地址转换,内网地址改成公网地址转发

说明:为利于阅读,文中对某些报文细节做了取舍;真实链路还包含 TCP/TLS 细节、MTU/分片、QoS、队列等因素。

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注