TCP/IP 五层模型协议全景图

5. 应用层 (Application Layer)

功能: 直接为用户的应用程序提供服务。这是你最常打交道的一层。

  • HTTP / HTTPS:网页浏览的核心(你刚才提到的 Google 访问)。
  • DNS:域名解析(把域名变成 IP)。
  • FTP / SFTP:文件传输。
  • SMTP / POP3 / IMAP:电子邮件收发。
  • SSH:远程加密登录服务器。
  • DHCP:自动给你的电脑分配 IP 地址。

4. 传输层 (Transport Layer)

功能: 负责端到端的数据传输,确保数据到达正确的端口。

  • TCP (Transmission Control Protocol):可靠传输。像发挂号信,有握手、序号、确认和重传机制。
  • UDP (User Datagram Protocol):不可靠传输。像发普通平信,速度快但不管对方收没收到(如 DNS 查询、视频直播)。

3. 网络层 (Network Layer)

功能: 负责寻址和路由选择,决定数据包在互联网中怎么走。

  • IP (IPv4 / IPv6):核心协议,负责通过 IP 地址标识主机。
  • ICMP:网络探测协议。你常用的 ping 命令就是基于它,用来检查网络通不通。
  • ARP (Address Resolution Protocol)关键桥梁。负责把 IP 地址翻译成 MAC 地址(它是网络层和链路层的交界)。
  • IGMP:组播管理。

功能: 负责在同一个局域网(LAN)内的两个相邻节点之间传输数据。

  • Ethernet (以太网):家里插网线的物理标准和协议。
  • Wi-Fi (802.11):无线局域网协议。
  • PPP (Point-to-Point Protocol):拨号上网常用的点对点协议。
  • VLAN:虚拟局域网。

1. 物理层 (Physical Layer)

功能: 定义了接口的机械、电气特性,处理纯粹的比特流(0 和 1)。

  • 协议/标准:RJ-45(网口标准)、光纤接口标准、USB标准、各种编码调制方式(如 QAM)。

TCP/IP 五层模型协议

层次 传输单位 核心协议示例 关注点
应用层 消息 (Message) HTTP, DNS, DHCP 数据的内容和格式
传输层 段 (Segment/Datagram) TCP, UDP 端口号、可靠性
网络层 包 (Packet) IP, ICMP, ARP IP地址、路径选择
数据链路层 帧 (Frame) Ethernet, Wi-Fi MAC地址、物理寻址
物理层 比特 (Bit) 1000Base-T, 802.11n 电压、光脉冲、线缆

我们以五层模型为标准,把你家里的设备“对号入座”:


1. 硬件设备与协议层的对应关系

设备名称 对应主要层次 功能描述
电脑/手机 所有层 (1-5层) 它是终端设备。从最底层的网卡信号到最顶层的浏览器软件,它完整运行整套 TCP/IP 协议栈。
路由器 (Router) 网络层 (第3层) 核心功能是路由转发NAT(网络地址转换)。它根据 IP 地址决定数据包该往哪走,并连接内网和外网。
交换机 (Switch) 数据链路层 (第2层) 核心功能是局域网内寻址。它通过 MAC 地址 把数据准确地发给家里某台特定的电脑。
光猫 (Modem) 物理层 (第1层) 核心功能是调制解调。它把家里的电信号/数字信号变成光纤里的光信号。

注意: 现在家里的“路由器”通常是三合一的(路由器+交换机+无线接入点),有的甚至集成了光猫功能。


2. 什么是交换机 (Switch)?

—— 它是局域网内部的“快递分拣员”

交换机工作在 第2层(数据链路层)

  • 功能:它维护一张 MAC 地址表。当一个数据帧进入交换机时,它会看一眼“目的 MAC 地址”,然后直接把包甩给对应的那根网线,而不是广播给所有人。
  • 在家的位置:你路由器背后的那 4 个 LAN 口,其实内部就是一个集成的交换机。

3. 什么是网关 (Gateway)?

—— 它是局域网的“海关/大门”

“网关”其实是一个逻辑概念,但在家庭网络里,路由器就是你的网关

  • 功能:当你电脑发现要访问的 IP(比如 8.8.8.8)不在本地局域网时,它不知道路该怎么走,于是就把包交给“网关”。
  • 形象理解:你在家里(局域网)说话,大家都能听到;但你想给远在国外的同学写信,你必须把信件投递到邮局(网关),由邮局负责跨网络转运。

4. 完整的家庭上网路径

当你输入网址,数据包的“奇幻漂流”如下:

  1. 电脑:封装好 IP 数据包。
  2. 网关(路由器逻辑):电脑通过 ARP 协议 找到网关的 MAC 地址,把包发给路由器。
  3. 交换机(路由器物理口):路由器内部的交换芯片把信号传给处理器。
  4. 路由器(三层转发):路由器执行 NAT,把你的私网 IP 换成公网 IP,重新封装,发给 WAN 口。
  5. 光猫:把这些电信号转换成光脉冲,通过光纤传向运营商(ISP)。

总结一下:

  • 交换机:管“家里人”怎么互相传东西(看 MAC 地址)。
  • 路由器:管“家里人”怎么去“外面世界”(看 IP 地址)。
  • 网关:就是那扇通往外面的“门”。

交换机 vs. 路由器的本质区别

为了让你在考试或实际排障中不出错,记住这个本质区别

特性 交换机 (Switch) 路由器 (Router)
识别身份 MAC 地址 (物理地址) IP 地址 (逻辑地址)
隔离范围 隔离冲突域 (Collision Domain) 隔离广播域 (Broadcast Domain)
工作目的 维持一个小圈子内部的通信 连接两个完全不同的网络

为什么路由器要隔离“广播域”?因为如果全世界的电脑都接在交换机上,某台电脑发一个寻找邻居的广播包,全世界的电脑都要收一下,那互联网瞬间就会被这些广播垃圾信息塞满瘫痪。所以,**路由器(网关)**的作用就是把广播挡在门里。

1. 应用层 (Application Layer)

动作:封装 DNS 请求报文

当你输入网址时,浏览器发现本地缓存没有该 IP,于是调用操作系统的解析器。

  • 生成内容:产生一个 DNS 查询报文,里面包含关键信息:“请问 www.google.com 的 IP 地址是多少?”
  • 协议:DNS 协议(通常使用 UDP 协议,因为查询任务小、要求快)。

2. 传输层 (Transport Layer)

动作:添加端口号(数据段 Segment)

数据包下移到传输层。

  • 封包:给 DNS 报文加上一个 UDP 首部
  • 关键信息
    • 源端口:客户端随机开启的一个高端口(如 54321)。
    • 目的端口53(这是 DNS 服务器的标准监听端口)。
  • 意义:确保数据回到你的电脑时,能准确找到是哪个进程在等这个结果。

3. 网络层 (Network Layer)

动作:添加 IP 地址(数据包 Packet)

数据下移到网络层。

  • 封包:加上 IP 首部
  • 关键信息
    • 源 IP:你电脑的局域网 IP(如 192.168.1.5)。
    • 目的 IP:DNS 服务器的 IP(如 Google 的 8.8.8.8 或运营商提供的 DNS)。
  • 路由决策:路由器会根据这个目的 IP,决定把包发往哪个网关。

动作:添加 MAC 地址(数据帧 Frame)

这是最容易被忽略的一步,也是局域网传输的核心。

  • 封包:加上 以太网首部FCS 校验序列
  • 关键信息
    • 源 MAC:你电脑网卡的物理地址。
    • 目的 MAC下一跳设备的 MAC 地址(通常是你的家用路由器/网关)。
    • 注意:这里如果不知道网关的 MAC,会先触发一个 ARP 协议去询问。

核心节点:路由器的 NAT 转换

当 DNS 请求(UDP 包)到达路由器时,会发生以下变换:

属性 进入路由器前 (LAN) 离开路由器后 (WAN)
源 IP 你的私网 IP (如 192.168.x.x) 路由器的公网 IP
源端口 你的原始端口 (如 54321) 路由器 NAT 映射的新端口
目的 IP DNS 服务器 IP (8.8.8.8) 不变
目的 MAC 路由器的内网 MAC 下一跳(ISP 运营商)的 MAC

为什么要改端口? 因为如果宿舍/实验室里多个人同时访问 Google,路由器必须通过不同的公网端口来区分回传的 DNS 响应应该给哪台电脑。


5. 物理层 (Physical Layer)

动作:比特流传输

  • 转换:将上述完整的“数据帧”转换成电信号、光信号或无线电波(WiFi)。
  • 传输:通过网线或空气发往你的路由器。

6. 到达 DNS 服务器后的“逆向工程”

当数据包经过漫长的互联网路径到达 DNS 服务器后,过程正好相反(解封装):

  1. 物理层:接收电信号,转回二进制。
  2. 数据链路层:拆掉以太网头,检查 MAC 地址对不对,校验数据是否损坏。
  3. 网络层:拆掉 IP 头,看到目的 IP 是自己,于是继续往上送。
  4. 传输层:拆掉 UDP 头,看到目的端口是 53,知道这是给 DNS 服务的。
  5. 应用层:DNS 服务进程读取报文:“哦,他在找 google 的 IP”,然后查表回复。

一、Markdown 是什么?

Markdown 是一种轻量级标记语言,核心思想:

👉 用“接近自然语言”的方式写文档 → 自动转换为 HTML / PDF / 网页

常用于:

  • 技术文档(GitHub)
  • 博客(静态站点)
  • README
  • 笔记(Obsidian / Typora)

二、入门级(必须掌握)

1. 标题

1
2
3
# 一级标题
## 二级标题
### 三级标题

效果:

一级标题

二级标题

三级标题

2. 段落 & 换行

1
2
3
这是第一段

这是第二段

👉 空一行 = 新段落

3. 强调

1
2
3
*斜体*
**加粗**
***加粗斜体***

效果:

斜体
加粗
加粗斜体

4. 列表

无序列表

1
2
3
- 苹果
- 香蕉
- 橘子

有序列表

1
2
3
1. 第一
2. 第二
3. 第三

5. 链接

1
[Google](https://www.google.com)

6. 图片

1
![描述](图片URL)

7. 代码

行内代码

1
使用 `python` 编程

代码块

1
2
3
```python
print("Hello World")
```

8. 引用

1
> 这是引用

效果:

这是引用


9. 分割线

1
---

三、进阶用法


1. 表格

1
2
3
4
| 名字 | 年龄 | 城市 |
|------|------|------|
| 张三 | 18 | 北京 |
| 李四 | 20 | 上海 |

👉 表格使用 | 分割列,- 分割表头和内容,: 表示对齐方式

效果:

名字 年龄 城市
张三 18 北京
李四 20 上海

2. 任务列表(TODO)

1
2
- [x] 已完成
- [ ] 未完成

👉 任务列表使用 - [ ] 开头,[x] 表示已完成,[ ] 表示未完成

效果:

  • 已完成
  • 未完成

3. HTML 混写(关键能力)

Markdown 支持 HTML:

1
<div style="color:red">红色文字</div>

👉 用于:

  • 自定义样式
  • 布局控制

效果:
红色文字

4. 锚点跳转

1
[跳到二级标题](#二级标题)

跳到二级标题

5. 表情符号

😊🎉🎁✔💃👌

👉 详情参考:表情符号

四、高级玩法


1. 数学公式(LaTeX)

很多编辑器支持:

1
2
3
4
5
6
行内公式:$E = mc^2$

块级公式:
$$
\int_a^b f(x) dx
$$

👉 行内公式使用 $ 包裹,块级公式使用 $$ 包裹

效果:

行内公式:$E = mc^2$

块级公式:
$$
\int_a^b f(x) dx
$$


2. Mermaid 图

1
2
3
4
```mermaid
graph TD
A --> B
B --> C

👉 可画:

  • 流程图
  • 架构图
  • 时序图

Mermaid


3. 代码高亮 + 行号

1
2
3
```python {linenos}
def hello():
print("hi")

👉 使用 {linenos} 添加行号

1
2
def hello():
print("hi")

4. 脚注

这是一个说明[^1]

[^1]: 这里是脚注

👉 脚注使用 [^编号] 添加,[编号]: 脚注内容 定义


当你在浏览器输入 www.google.com 时,这不仅仅是一个简单的跳转,而是一次跨越数千公里的、多层协议协同工作的复杂接力。

🏗️ 基础复习:ISO 七层 vs. TCP/IP 四层

虽然 ISO 提出的 OSI 七层参考模型是学术界的标准,但现实中我们使用的是更精简的 TCP/IP 四层(或五层)模型。

OSI 七层模型 TCP/IP 四层模型 核心功能 常见协议/硬件
应用层 / 表示层 / 会话层 应用层 产生原始数据,定义交互规则 HTTPS, DNS, HTTP
传输层 传输层 端到端连接,保证可靠性 TCP, UDP
网络层 网络层 IP寻址,选择路由路径 IP, ICMP, 路由器
数据链路层 / 物理层 网络接口层 帧同步、物理信号传输 以太网, Wi-Fi, 交换机

🚀 深度解析:访问 Google 的数据包之旅

我们将这个过程拆解为三个主要阶段。

1. 第一阶段:DNS 域名解析(寻找 IP 地址)

浏览器不知道 www.google.com 在哪,它需要一个 IP 地址。

  • 应用层:浏览器生成一个 DNS 查询包(问:google 的 IP 是多少?)。
  • 传输层:DNS 主要使用 UDP 协议进行快速查询。数据被封装成 UDP 段。
  • 网络层:打上源 IP 和 DNS 服务器 IP 的标签,封装成 IP 数据包。
  • 解析流程:
  1. 检查浏览器和操作系统本地缓存。
    1. 若无,请求递归 DNS 服务器(通常是你的宽带运营商提供)。
    2. 递归服务器层层上推,询问根域名服务器、TLD (.com) 服务器,最终拿到 Google 的 IP 地址。

2. 第二阶段:TCP 三次握手(建立连接)

拿到 IP 后,客户端需要和服务器“打个招呼”建立可靠通道。

  • 第一次握手 (SYN):客户端发送一个带 SYN=1 标志的 TCP 段给服务器(“我想连你”)。
  • 第二次握手 (SYN+ACK):服务器回复确认(“收到,我准备好了,你呢?”)。
  • 第三次握手 (ACK):客户端再次确认(“收到,我们开始吧!”)。
  • ✨ 封装过程:TCP 段 → IP 包 → 以太网帧(包含 MAC 地址)。

3. 第三阶段:HTTPS 安全连接与数据请求

由于是 HTTPS,在正式传数据前还要进行 TLS 握手(加密过程)。

  1. TLS 握手:
  • 双方交换证书,验证服务器身份。
    • 协商加密算法,生成一个“对称密钥”。此后的所有数据都将被这个密钥加密。
  1. 发送 HTTPS 请求:
  • 应用层:浏览器构造一个 HTTP GET 请求报文。
    • 加密层:TLS 将该报文内容加密。
    • 传输层:TCP 将其切分为段,确保不丢包。
    • 网络层:IP 协议负责把这些段路由到 Google 的数据中心。
    • 数据链路层:通过网线/光纤将电磁信号发出去。

4. 第四阶段:服务器响应与渲染

  • Google 服务器解封数据包,看到 GET 请求。
  • 服务器发回 HTML 代码。
  • 浏览器通过相同的层级结构“剥洋葱”得到 HTML。
  • 浏览器解析 HTML/CSS/JS,最后你看到了搜索页面。

💡 总结:数据包的“剥洋葱”原理

  • 发送时(封装):从上往下,每一层都给数据加一个“信封”(报头)。
  • 接收时(解封):从下往上,每一层都拆开一个“信封”,读取属于自己的控制信息。
0%