计算机网络从入门到进阶:从家用路由器到 VLAN / 三层交换机的一条线
2. 路由器 vs 交换机:它们到底差在哪?
2.1 工作层次:MAC vs IP
- 交换机:二层,按 MAC 转发
- 路由器:三层,按 IP 路由
2.2 广播域与冲突域
- 为什么交换机不能隔离广播
- 为什么路由器能隔离广播
2.3 家用路由器其实是"三合一"
- 路由(NAT/DHCP)+ 交换机(LAN口)+ 无线AP(Wi-Fi)
5. NAT 是什么?为什么家里设备能共用一个公网 IP
5.1 NAT 的本质
- 内网私网 IP ↔ 公网 IP 的地址转换
- 家庭多设备共享一个公网出口
5.2 NAT 和"能不能上网"
- 只有交换机不能上网
- 路由器(或三层设备)+ NAT 才能让内网访问互联网
6. 访问网页时:什么时候走 LAN,什么时候走 WAN?
6.1 判断依据:子网掩码与网段
- 同网段:直接二层(LAN)
- 不同网段:发给默认网关(WAN方向)
6.2 浏览器访问网站的基本路径
- DNS → 建立连接(TCP/HTTPS)→ 请求网页
- LAN 内访问 vs 互联网访问的区别
7. DNS 是什么?它在路由器里吗?
7.1 DNS 的作用:域名 → IP
- 没 DNS 就得背 IP
7.2 DNS 在哪
- 通常在运营商/公共 DNS/企业 DNS 服务器上
- 路由器常扮演:转发、缓存、"本地 DNS 代理"
7.3 为什么访问局域网有时也会用到 DNS
- 用 IP 访问:不需要 DNS
- 用名字访问(printer/nas/printer.local):需要名字解析
- mDNS/本地 DNS/hosts/缓存机制
7.4 为什么打印机可以用"域名"访问管理页
- 打印机自己运行 Web 服务
- 常见是 mDNS(.local)或路由器/内网 DNS 记录
7.5 本地"域名↔IP 映射"存在哪里
- hosts 文件(持久)
- 系统缓存(mDNS/LLMNR/NetBIOS)
- 路由器 DHCP 租约与本地解析
- 企业 DNS(集中管理)
9. 软路由是什么?为什么能玩多 WAN
9.1 定义
- 通用硬件 + 路由系统软件(OpenWrt/pfSense等)
9.2 软路由擅长什么
- 多 WAN、策略路由、精细化控制、扩展插件
9.3 家庭常见结构
- 光猫→软路由→交换机→AP
10. 交换机 MAC 表:从空表到"学会转发"
10.1 MAC 表为空时怎么转发
- 未知单播:洪泛(除了入端口外全发)
- 只学习"源 MAC"并记端口
10.2 多台交换机互联时,MAC 表怎么存
- 每台交换机都有自己的 MAC 表
- 会记录:本端口直连的 MAC + 通过上联端口可达的 MAC
- 不同交换机表不相同;是否"学全"取决于是否发生过通信
11. 二层环路会怎样?STP 为什么重要?
11.1 环路的后果
- 广播风暴
- MAC 表震荡(flapping)
- 网络瘫痪
11.2 STP/RSTP 的核心思想
- 物理可冗余,逻辑必须无环
- 阻塞多余链路,故障时再启用
12. 最小生成树(MST)是什么?它和 STP 的关系
12.1 MST 定义
- 连通、无环、总权值最小
12.2 Prim/Kruskal 的直觉回忆
12.3 STP 与 MST
- STP 的目标:在交换机拓扑上选一棵"生成树"来避免环路(工程实现会有差异)
13. 子网掩码什么时候获取?为什么 /24 常见?
13.1 子网掩码何时得到
- DHCP 下发(与 IP、网关、DNS一起)
- 或手动配置(静态 IP)
13.2 为什么 255.255.255.0 常见
- 254 主机数适中
- 广播可控
- 管理简单
- 历史上 C 类默认 /24 的惯性(但现代用 CIDR)
14. 校园网为什么给我 /16?会不会 6 万多台填满?
14.1 看到 /16 不等于二层是 /16
- 实际二层用 VLAN 切小广播域
- 三层可能用 /16 做地址汇总(路由更简单)
14.2 地址空间很大但不会"全挤在一个广播域"
- VLAN / 子网分片 + 三层互通
15. 三层交换机是什么?不同 VLAN 怎么通信?
15.1 三层交换机定义
- 二层交换 + 三层路由(SVI、路由表)
15.2 VLAN 间路由(Inter-VLAN Routing)
- 每个 VLAN 配一个 SVI 做默认网关
- 不同 VLAN 通信必须走三层设备
15.3 三层交换机 vs 路由器
- 内网线速转发 vs 出口 NAT/多 WAN 等
16. 实战排错:默认网关与 ARP 表怎么查
16.1 查看默认网关
- Windows:
ipconfig - macOS:系统设置/或
route -n get default - Linux:
ip route
16.2 查看 ARP 缓存表
- Windows/macOS:
arp -a - Linux:
ip neigh
好,这里我给你一个真正"一次讲明白"的 NAT 解释 ,不堆术语,直接把是什么、为什么要、怎么工作、常见类型、你每天在用的是什么全部串起来。
一、先给一句话定义(最重要)
NAT(Network Address Translation,网络地址转换)
是一种把"内网私有 IP"转换成"外网公网 IP"的技术。
再直白一点:
NAT 让很多内网设备,可以共用一个公网 IP 上网。
二、为什么一定要有 NAT?(根本原因)
1️⃣ IPv4 地址不够用
IPv4 一共只有约 43 亿 个地址,而现在:
- 手机
- 电脑
- 路由器
- 摄像头
- IoT 设备
👉 远远不够
2️⃣ 私有 IP 不能直接上互联网
这些地址:
192.168.x.x10.x.x.x172.16.x.x ~ 172.31.x.x
👉 在互联网上是"不可路由的"
也就是说:
公网路由器看到这种地址,会直接丢弃
3️⃣ 那怎么办?
答案就是:
在"出互联网的地方",把私有 IP 换成公网 IP
这个"出入口",就是:
- 家用路由器
- 出口路由器
- 防火墙
👉 这一步,就是 NAT
三、没有 NAT 会发生什么?
假设没有 NAT:
电脑:192.168.1.10
目标:www.baidu.com
电脑直接把包发到公网:
源 IP:192.168.1.10
目的 IP:110.242.xxx.xxx
公网服务器回包时:
回给 192.168.1.10
❌ 问题来了:
- 公网根本不知道 192.168.1.10 在哪
- 回包直接丢失
👉 你永远上不了网
四、NAT 是怎么"变魔术"的?(核心过程)
场景:你在家访问网页
电脑:192.168.1.10
路由器公网 IP:114.114.114.114
1️⃣ 电脑发包(内网视角)
源 IP:192.168.1.10
源端口:52345
目的 IP:www.baidu.com
目的端口:443
2️⃣ 路由器做 NAT(关键一步)
路由器把包改头换面:
源 IP:114.114.114.114
源端口:60001 ← 路由器分配
目的 IP:www.baidu.com
并在 NAT 表里记一条账:
192.168.1.10:52345 ↔ 114.114.114.114:60001
3️⃣ 服务器回包(公网视角)
目的 IP:114.114.114.114
目的端口:60001
4️⃣ 路由器查 NAT 表,改回去
114.114.114.114:60001
→ 192.168.1.10:52345
👉 精准送回正确的内网设备
⭐ 关键点(一定要记住)
NAT 不只是改 IP,通常还会改端口
靠"端口号"区分内网的不同设备
五、最常见的 NAT 类型(你真正需要懂的)
1️⃣ SNAT(源地址转换)------出网用
- 内网 → 外网
- 改的是:源 IP(和端口)
👉 你上网用的就是它
2️⃣ DNAT(目的地址转换)------外网访问内网
- 外网 → 内网
- 改的是:目的 IP
典型场景:
-
端口映射
-
内网服务器对外提供服务
公网IP:8080 → 192.168.1.100:80
3️⃣ PAT(端口地址转换)------最常见
多个内网 IP → 一个公网 IP(靠端口区分)
📌 家用路由器 99% 用的就是 PAT
六、NAT 带来的"副作用"(你可能已经遇到过)
❌ 1️⃣ 外网不能主动访问内网
-
因为:
- 没有 NAT 映射
-
解决:
- 端口映射
- 内网穿透
- VPN
❌ 2️⃣ 双 NAT 问题
设备 → 路由器 A → 路由器 B → 公网
后果:
- 游戏联机失败
- P2P 不稳定
- 排错困难
❌ 3️⃣ NAT 破坏"端到端"
- 原始互联网设计:端到端直连
- NAT 是 工程妥协方案
七、NAT 在哪一层?
这是面试常问点。
-
NAT 工作在三层
-
但:
- 实际实现会结合四层端口
👉 可以说:三层 + 四层
八、一个非常好记的比喻
- 内网 IP:公司分机号
- 公网 IP:公司总机
- NAT:总机转接员
所有人都对外报总机号码
回电靠分机号再转回个人
九、终极总结
NAT(网络地址转换)是一种在网络出口处将私有 IP 地址转换为公网 IP 地址的技术,使多个内网设备能够共享有限的公网地址访问互联网。NAT 通过维护映射表,将外部返回的数据正确转发回对应的内网主机,是当前 IPv4 网络中实现大规模接入的关键机制。
从电脑开机到 B 站播放视频并发表评论,网络都干了什么?
场景假设:
- 笔记本 / 台式机
- 接校园网 / 家用网络
- 使用浏览器访问 https://www.bilibili.com
- 播放一个视频并发送评论
一、电脑刚开机:网络"还什么都不知道"
1️⃣ 操作系统启动
- CPU / 内存 / 磁盘初始化
- 网卡驱动加载
📌 此时:
- ❌ 没有 IP
- ❌ 不知道网关
- ❌ 不知道 DNS
- ❌ 不能上网
二、接入网络:拿到"上网资格"
2️⃣ 网卡上线,开始 DHCP(非常关键)
电脑一接上网线 / Wi-Fi,会立刻做一件事:
"有没有 DHCP 服务器?给我一套网络配置!"
这是一个 广播包(因为它谁也不认识):
DHCP Discover(广播)
3️⃣ DHCP 服务器回应(通常是路由器 / 校园网服务器)
服务器返回一整套配置:
- IP 地址:
10.x.y.z或192.168.x.x - 子网掩码:如
/16或/24 - 默认网关:如
10.x.0.1 - DNS 服务器:如
10.x.0.53
📌 这一步完成后:
你的电脑"正式加入了网络"
三、你打开浏览器,输入:www.bilibili.com
4️⃣ 浏览器发现:这是个"域名",不是 IP
浏览器不会直接访问域名,它会把任务交给操作系统:
"帮我把这个名字解析成 IP"
四、DNS 解析:名字 → IP(极其重要)
5️⃣ 本机先查"有没有现成答案"
按顺序查:
- hosts 文件
- DNS 缓存
- 都没有 → 发 DNS 请求
6️⃣ DNS 请求发给谁?
-
DNS 服务器 IP 是 DHCP 给的
-
通常是:
- 校园 DNS
- 或路由器转发
- 或运营商 DNS
📌 DNS 请求走的是 UDP 53 端口
7️⃣ DNS 服务器逐级查询
大致过程(简化):
.bilibili.com
↓
根 DNS
↓
.com DNS
↓
bilibili.com 权威 DNS
↓
返回 IP(可能是 CDN 节点)
返回结果例如:
www.bilibili.com → 117.50.xx.xx
📌 你的电脑现在知道"该找谁了"
五、建立连接:TCP + HTTPS
8️⃣ 浏览器开始建立 TCP 连接(三次握手)
目标:
117.50.xx.xx:443
过程:
- SYN(我想连你)
- SYN-ACK(我同意)
- ACK(连接建立)
📌 这一步保证:
- 连接可靠
- 顺序正确
- 能重传
9️⃣ TLS / HTTPS 握手(加密)
在 TCP 之上:
- 协商加密算法
- 校验证书(B 站是不是"真 B 站")
- 生成会话密钥
📌 从现在开始:
你和 B 站的通信是加密的
六、HTTP 请求:我要网页
🔟 浏览器发送 HTTPS 请求
GET / HTTP/1.1
Host: www.bilibili.com
Cookie: ...
11️⃣ 请求怎么"跑"到 B 站的?
数据包实际走的路径是:
浏览器
↓
操作系统
↓
网卡
↓
交换机(LAN)
↓
默认网关(路由器 / 三层交换机)
↓
NAT(如果是私网)
↓
光猫
↓
运营商网络
↓
互联网
↓
B 站 CDN / 服务器
📌 中间:
- 二层靠 MAC
- 三层靠 IP
- 跨子网靠路由
- 出口靠 NAT
七、B 站返回网页内容
12️⃣ 服务器返回 HTML
返回内容包括:
- HTML 结构
- JS
- CSS
- 图片地址
- 视频信息
浏览器开始解析网页。
13️⃣ 浏览器发现:还要加载很多资源
例如:
- js.bili.com
- i0.hdslb.com
- 视频流地址(m4s / dash)
👉 每一个域名,可能都会再走一次 DNS + TCP + HTTPS
八、点击视频:开始播放
14️⃣ 视频不是"一个文件",而是流
B 站视频通常是:
- DASH / HLS
- 视频和音频分离
- 分段下载
浏览器会不断请求:
video_001.m4s
video_002.m4s
audio_001.m4s
📌 网络在后台持续干活:
- 预加载
- 缓冲
- 根据网速切码率
九、你开始打字:准备发表评论
15️⃣ 你输入评论,点击"发送"
浏览器做的事:
- 检查登录状态
- 携带 Cookie / Token
- 构造 HTTPS POST 请求
16️⃣ 评论请求发送到 B 站接口
POST /x/v2/reply/add
内容包括:
- 视频 ID
- 评论文本
- 用户身份凭证
📌 仍然是:
- TCP
- HTTPS
- 加密传输
十、服务器处理评论
17️⃣ B 站后台做的事(你看不到)
- 校验登录状态
- 校验权限
- 风控 / 反垃圾
- 存数据库
- 返回结果
十一、评论显示在你眼前
18️⃣ 服务器返回成功响应
200 OK
浏览器:
- 更新评论区 DOM
- 显示你的评论
📌 到此为止,一次完整的网络闭环完成
十二、把整个过程压缩成一条"主线"
DHCP 获取网络参数 →
DNS 把域名变成 IP →
TCP 建立可靠连接 →
HTTPS 加密通信 →
路由/NAT 把包送到服务器 →
CDN 加速内容返回 →
流媒体分段下载 →
API 请求提交评论 →
服务器处理并响应
内网穿透的原理
这是一个非常经典、而且一旦想通就"网络世界通关"的问题 。
我会按 原理 → 为什么 NAT 挡住了你 → 内网穿透的核心思想 → 花生壳具体怎么做 → 不同方案对比 一步一步讲清楚。
一、先给一句话结论(一定要先记住)
内网穿透的本质:
让"内网设备主动连出去",
再利用这条"已经建立的连接",
把外网的访问"转发"回来。
📌 不是外网直接打进内网
📌 而是内网先"打洞"
二、为什么"外网访问内网"本来做不到?
你前面已经学过 NAT,这里正好用上。
1️⃣ NAT 的天然限制
在 NAT 网络中:
-
内网 → 外网 ✅(NAT 会记账)
-
外网 → 内网 ❌(没有映射,直接丢)
公网请求 → 路由器
→ 不知道该给谁
→ 丢弃
👉 这就是你在家里"不能直接访问 NAS / 摄像头"的根本原因
三、内网穿透要解决的"核心矛盾"
外网进不来,但内网可以出去
所以思路只能是:
让内网设备"主动出去",
并保持一条不断开的连接。
四、内网穿透的通用原理(不管什么工具)
核心角色只有 3 个
【内网设备】 ←→ 【公网中转服务器】 ←→ 【外部访问者】
三者分工:
- 内网设备:主动连出去
- 公网服务器:双方都能访问
- 外部访问者:只连公网服务器
数据真实走向(非常重要)
外部浏览器
↓
公网服务器
↓(已有连接)
内网设备
📌 外部流量从来没有"直接进内网"
五、花生壳是怎么做到的?(重点)
花生壳本质上就是:
"内网穿透 + 域名 + 转发服务"的一体化方案
1️⃣ 花生壳在内网干了什么?
你在内网设备上:
- 安装花生壳客户端
- 或使用带花生壳功能的路由器
它会做一件非常关键的事:
主动连接花生壳的公网服务器,并保持长连接
内网设备 ───▶ 花生壳云服务器(TCP/HTTPS)
📌 这一步:
- 能穿过 NAT
- NAT 会允许并记录这条连接
2️⃣ 花生壳在公网干了什么?
花生壳云服务器会:
-
给你分配一个域名
yourname.oray.net -
记录:
这个域名 ↔ 这条内网连接
3️⃣ 外部用户访问时发生了什么?
外部用户访问:
http://yourname.oray.net
流程是:
浏览器
↓
DNS 解析 → 花生壳服务器
↓
服务器收到请求
↓
通过"已建立的连接"
↓
把请求转发给你的内网设备
内网设备返回的数据:
内网设备 → 花生壳服务器 → 浏览器
📌 NAT 完全没察觉异常
4️⃣ 用一张"文字拓扑图"理解
外部浏览器
│
▼
┌──────────────┐
│ 花生壳云服务器 │
└──────────────┘
▲
│(内网主动连出)
┌──────────────┐
│ 内网设备 │
│ (NAS/PC) │
└──────────────┘
六、这和"端口映射"有什么本质区别?
| 方案 | 原理 | 需要公网 IP | 风险 |
|---|---|---|---|
| 端口映射 | NAT 放行 | ✅ | 高 |
| 内网穿透 | 内网主动连出 | ❌ | 低 |
| 花生壳 | 穿透 + 中转 | ❌ | 中 |
📌 花生壳不要求你有公网 IP
七、那性能为什么不如直连?
这是内网穿透的"代价"。
原因很简单:
-
所有流量都要:
内网 ↔ 中转服务器 ↔ 外部 -
路径变长
-
延迟增加
-
带宽受限
👉 这是用"可达性"换"性能"
八、除了花生壳,还有哪些同类原理?
本质一样,只是实现不同:
- frp
- ngrok
- ZeroTier / Tailscale(更高级,虚拟局域网)
- 云厂商反向代理
九、一个极其好记的比喻(强烈推荐)
- NAT:小区门禁,只允许住户出去
- 内网穿透:
👉 你主动打电话给前台,并一直不挂 - 外人找你:
👉 前台通过这通电话帮你转接
十、终极总结(你可以直接背)
内网穿透是一种通过让内网设备主动与公网服务器建立并保持连接,从而实现外部访问内网服务的技术。花生壳通过在内网部署客户端、在公网提供中转服务器和域名解析服务,将外部请求转发到内网设备,从而在无需公网 IP 和端口映射的情况下实现内网访问。