计算机网络知识总结01

计算机网络从入门到进阶:从家用路由器到 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.x
  • 10.x.x.x
  • 172.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.z192.168.x.x
  • 子网掩码:如 /16/24
  • 默认网关:如 10.x.0.1
  • DNS 服务器:如 10.x.0.53

📌 这一步完成后:

你的电脑"正式加入了网络"


三、你打开浏览器,输入:www.bilibili.com

4️⃣ 浏览器发现:这是个"域名",不是 IP

浏览器不会直接访问域名,它会把任务交给操作系统:

"帮我把这个名字解析成 IP"


四、DNS 解析:名字 → IP(极其重要)

5️⃣ 本机先查"有没有现成答案"

按顺序查:

  1. hosts 文件
  2. DNS 缓存
  3. 都没有 → 发 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

过程:

  1. SYN(我想连你)
  2. SYN-ACK(我同意)
  3. 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️⃣ 浏览器发现:还要加载很多资源

例如:

👉 每一个域名,可能都会再走一次 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 和端口映射的情况下实现内网访问。


相关推荐
2401_865854881 分钟前
ssl证书使用中可能会遇到的问题
网络·网络协议·ssl
星陨773 分钟前
OpenStack私有云平台API接口练习
linux·运维·网络·openstack
InaT22 分钟前
渗透第一次作业
网络
是娇娇公主~29 分钟前
C++集群聊天服务器(1)—— muduo网络库服务器编程
服务器·网络·c++
捷米研发三部34 分钟前
CANopen 转 Modbus TCP:智能机床控制器与上位机监控系统的无缝对接方案
网络·网络协议
宇宙帅猴39 分钟前
Ubuntu网络问题解决方案
linux·网络·ubuntu
XiaoHu02071 小时前
Linux网络编程(第三弹)
linux·运维·网络
mmWave&THz1 小时前
柔性PZT压电薄膜在空间大型柔性反射面精准调控中的技术突破与应用
网络·人工智能·系统架构·信息与通信·智能硬件
以太浮标1 小时前
华为eNSP模拟器综合实验- ospf区域的作用和报文类型的关系解析
网络·华为·智能路由器
云川之下1 小时前
【网络】变长子网划分 (VLSM) 示例、点到点网络
运维·服务器·网络·变长子网