深度笔记:家庭网络通信全流程详解

Carlos 发布于 2026-02-17 58 次阅读


——从插上网线到网页加载的微观世界

场景设定

  • 设备:一台光猫、一台路由器(集成交换机功能)、一台电脑。
  • 连接:光猫连接路由器 WAN 口,电脑连接路由器 LAN 口(视为连接在虚拟交换机上)。
  • 目标:电脑从无网状态到成功访问 baidu.com

第一阶段:获取身份(DHCP 协议)

在电脑刚插上网线时,它没有 IP 地址,就像一个没有身份证的人,无法在网络中通信。

1. DHCP Discover(发现)

  • 触发:电脑连接网络,DHCP 客户端启动。
  • 目的:寻找局域网内的 DHCP 服务器(通常是路由器)索要 IP。
  • 封装细节
    • 传输层:使用 UDP 协议。源端口 68 (客户端),目标端口 67 (服务端)。
    • 网络层:由于没有 IP,源 IP 填 0.0.0.0。由于不知道服务器在哪,目标 IP 填 广播地址 255.255.255.255
    • 接口层:源 MAC 是本机网卡 MAC,目标 MAC 是 全F广播 (FF:FF:FF:FF:FF:FF)。
  • 交换机处理:交换机收到全 F 的 MAC 广播包,会将其**洪泛(Flooding)**转发给除来源口外的所有接口。

2. DHCP Offer(提供)

  • 处理:路由器收到广播包,发现目标端口 67,由 DHCP 服务处理。
  • 分配:从地址池选取一个未占用 IP(如 192.168.1.3),包含子网掩码网关DNS租期(默认通常 12 小时/720 分钟)。
  • 回复:路由器通过单播或广播(取决于实现)将 Offer 包发回给电脑。

3. DHCP Request & Ack(请求与确认)

  • 流程:电脑收到 Offer 后,正式发送 Request 请求占用该 IP,路由器回复 Ack 确认。
  • 租期续约机制
    • 租期过去 50% (6小时) 时,电脑会自动向服务器发送续约请求。
    • 如果服务器无响应,在剩余 1/8 时间时会再次尝试。
    • 如果彻底失联,租期结束后 IP 释放,电脑断网。
  • 故障特征:如果电脑获取到 169.254.x.x 开头的 IP,说明 DHCP 失败(无人响应),系统自动分配了链路本地地址,此时只能进行局域网通信,无法上网。

第二阶段:寻找目的地(DNS 解析)

电脑有了 IP 192.168.1.3,用户在浏览器输入了 baidu.com。机器不认识域名,只认识 IP,必须通过 DNS 解析。

1. 构建 DNS 请求

  • 内容:“请问 baidu.com 的 IP 是多少?”
  • 目标:发送给预设的 DNS 服务器(通常是网关/路由器 IP 192.168.1.1)。
  • 封装:UDP 协议,目标端口 53

2. 拦路虎:ARP 协议(地址解析)

  • 问题:数据包要发给路由器(IP 192.168.1.1),但封装到物理层需要对方的 MAC 地址。电脑查本地 ARP 缓存表,发现是空的。
  • 解决:发送 ARP 广播请求
    • 内容:“我是 192.168.1.3,谁是 192.168.1.1?请告诉我你的 MAC。”
    • 范围:局域网内广播。
  • 响应:路由器收到后,单播回复:“我是 192.168.1.1,我的 MAC 是 BB:BB...”。
  • 缓存:电脑收到后,将路由器的 MAC 存入 ARP 缓存表(后续通信不再重复广播)。

3. DNS 转发与递归

  • 转发:路由器收到 DNS 请求,它自己不知道百度的 IP,于是将请求转发给上级 DNS(运营商提供,通过 PPPoE 拨号获取)。
  • 结果:经过层层查询,拿到百度 IP(例如 202.108.22.5)。
  • 缓存:路由器和电脑都会将结果缓存(TTL 时间内有效),避免重复查询。

第三阶段:发起连接(路由与子网判断)

浏览器拿到了百度的 IP,准备发起 HTTP 请求(TCP 80 端口)或 HTTPS 请求(TCP 443 端口)。

1. 同网段 vs 异网段判断

电脑在发包前,会用自己的 子网掩码 (255.255.255.0) 进行二进制 与运算 (AND)

  • 源网络号 = 192.168.1.3 & 255.255.255.0 -> 192.168.1.0
  • 目标网络号 = 202.108.22.5 (百度) & 255.255.255.0 -> 202.108.22.0

结论:网络号不同,目标在外网。

决策:必须将数据包发给 默认网关(路由器)。

2. 发送数据包

  • 层级封装
    • IP 层:源 IP 192.168.1.3,目标 IP 202.108.22.5
    • MAC 层:源 MAC 本机,目标 MAC 路由器(网关)。
  • 交换机根据目标 MAC 将包转发给路由器 LAN 口。

第四阶段:走出家门(NAT 地址转换)

这是家庭网络最关键的一步。由于 192.168.x.x 是私有地址,无法在互联网上传输,路由器必须进行 NAT (网络地址转换)

1. SNAT(源地址转换)

  • 路由器操作
    • 将数据包的 源 IP192.168.1.3 修改为路由器的 公网 IP(如 2.2.2.2)。
    • 源端口(如 9527)修改为路由器的一个 随机空闲端口(如 4134)。
  • 建立映射表:路由器在内存中记录一条 NAT 映射记录:WAN口(2.2.2.2:4134) <==> LAN内(192.168.1.3:9527)

2. 公网传输

  • 数据包顶着路由器的公网 IP,经过运营商网络、骨干网,最终到达百度服务器。

第五阶段:满载而归(回程与 DNAT)

1. 百度回复

  • 百度服务器处理请求,将网页数据打包发回。
  • 目标 IP2.2.2.2(路由器的公网 IP)。
  • 目标端口4134

2. DNAT(目标地址转换)

  • 路由器接收:收到数据包,查 NAT 映射表。
  • 逆向转换
    • 发现端口 4134 对应内网 192.168.1.3:9527
    • 目标 IP 修改回 192.168.1.3
    • 目标端口 修改回 9527
  • 转发:通过 LAN 口发送给交换机,最终到达电脑。

3. 页面渲染

浏览器收到数据,解析 HTML,页面呈现在用户面前。


💡 关键知识点总结 (Key Takeaways)

  1. DHCP 广播:获取 IP 是靠“喊”出来的(广播),所以必须在同一物理网段内。
  2. ARP 缓存:不知道 MAC 地址就无法封装数据帧。ARP 是连接逻辑 IP 和物理硬件的桥梁。
  3. 子网掩码的作用:它是一把尺子,用来衡量对方是在“屋里”(局域网)还是“屋外”(互联网)。
  4. NAT 的必要性:它解决了 IPv4 地址不足的问题,同时让内网设备“隐身”于公网之后。
  5. 网关:局域网通向世界的“大门”,所有出站流量必须经过它。
✨职务:华夏大地区域代理人 | 熬夜秃头项目主理人 💳黑卡:校园一卡通全球辅导版持有者 📍地点:宇宙-银河系-地球-东北蹲分部 🥂生活方式:沉迷于廉价多巴胺 | 致力于在该醒的时候睡觉 🚫拒绝:拒绝早起 | 拒绝内卷| 拒绝借钱 简介:虽然我没钱,但我有时间;虽然我没才华,但我有脾气。
最后更新于 2026-02-17