🌐 一、OSI 七层模型(从下往上)
| 层级 | 名称 | 主要作用 | 协议示例 |
| ----- | ----- | -------------- | --------------------- |
| **7** | 应用层 | 为应用提供网络服务 | HTTP、FTP、DNS、SMTP |
| **6** | 表示层 | 数据格式、加密解密、压缩 | JPEG、MP3、TLS(部分) |
| **5** | 会话层 | 管理会话、维持连接 | RPC、NetBIOS |
| **4** | 传输层 | 可靠/不可靠传输 | TCP、UDP |
| **3** | 网络层 | 寻址、路由 | IP、ICMP、ARP |
| **2** | 数据链路层 | 组帧、MAC 地址、错误检测 | Ethernet、PPP、WIFI MAC |
| **1** | 物理层 | 0/1 电信号传输 | RJ45、电缆、光纤、PHY |
🔌 二、重点:物理层(Layer 1)
物理层 = 电信号层面
作用:
-
负责比特(0 和 1)的电气传输
-
规定电压、频率、光信号、接口(RJ45、光纤)、编码方式(如曼彻斯特编码)
-
不懂什么是 IP,也不懂 MAC,更不懂地址
-
只负责"把比特送过去"
物理层组成:
-
网线(双绞线)、光纤
-
变压器(magnetics)
-
PHY 芯片(如 RTL8211、KSZ9031、内置 PHY)
-
发射/接收电路
你现在的 linkdown 就发生在物理层 :
即:网线和 PHY 没建立链路(Link=NO) → 连 0/1 都传不出去。
ethtool eth0
当看到:
Link detected: yes
物理层才通
📶 三、链路层(Layer 2)
链路层 = MAC 地址 的世界。
作用:
-
将比特组合成帧(Frame),并附加校验(FCS / CRC)
-
负责局域网内通信(同网段)
-
确保这一跳的数据不出错
-
使用 MAC 地址(48-bit)
链路层帧结构(简化):
| 目的MAC | 源MAC | 类型 | 数据 | CRC |
常见协议:
-
Ethernet II(以太网)
-
WiFi MAC 层
-
PPP、HDLC
链路层只管同一个交换机内的设备
不会跨路由器。
🧭 四、网络层(Layer 3)
网络层 = IP 地址 + 路由 的世界。
作用:
-
负责跨网段通信
-
寻找路径(routing)
-
将数据包包装为 IP 包
常见协议:
-
IP(IPv4 / IPv6)
-
ARP(解析 MAC)
-
ICMP(ping 就在这里)
添加默认网关,就是在网络层。
🚚 五、传输层(Layer 4)
传输层 = 可靠性与端口号。
协议:
| 协议 | 特点 |
| ------- | ------------ |
| **TCP** | 有连接、可靠、三次握手 |
| **UDP** | 无连接、不可靠、实时性好 |
应用层靠端口 (port) 来区分程序,例如:
-
80 → HTTP
-
22 → SSH
-
1883 → MQTT
-
🗣 六、应用层(Layer 7)
-
这是我们最常见的层:
HTTP、DNS、FTP、MQTT、SSH 都在这里。
🔗 七、整个数据从应用层到物理层的封装流程(重要)
以 HTTP 为例
从发送端:
应用层:HTTP 数据
↓
传输层:TCP 加上源端口、目的端口
↓
网络层:IP 加上源 IP、目的 IP
↓
链路层:以太网帧包住 IP 包,加上 MAC 地址
↓
物理层:转成电信号(0/1)发送出去
接收端逆向拆包:
物理层 → 链路层 → 网络层 → 传输层 → 应用层
📌 三层中你最需要理解的是:
1)物理层:
👉 网线插好没有?灯亮不亮?
👉 ethtool eth0 → Link detected: yes/no
📌 你的问题就在这一层 没 link。
2)链路层:
👉 MAC 地址是否收发?
👉 ARP 是否正确?(ping 同网段严重依赖 ARP)
3)网络层:
👉 IP、MASK、Gateway 配置对不对?
👉 路由表对不对?
如果物理层 linkdown → 上面所有层都别想工作
一张是 OSI 七层模型图 ,另一张是 数据封装过程图(比特→帧→包→段→数据)
📘 ① OSI 七层模型总图(最清晰版本)
┌───────────────────────┐
│ 7 应用层(Application)│ HTTP / DNS / FTP / MQTT │
├───────────────────────┤
│ 6 表示层(Presentation)│ 加密/解密、压缩 │ TLS、JPEG │
├───────────────────────┤
│ 5 会话层(Session) │ 管理会话、保持连接 │
├───────────────────────┤
│ 4 传输层(Transport) │ TCP(可靠)/ UDP(实时)│
├───────────────────────┤
│ 3 网络层(Network) │ IP 寻址、路由、ICMP、ARP │
├───────────────────────┤
│ 2 数据链路层(Data Link)│ MAC、Ethernet 帧、CRC 校验 │
├───────────────────────┤
│ 1 物理层(Physical) │ 电信号、光信号、PHY、网线 │
└───────────────────────┘
📗 ② 数据封装过程图:比特 → 帧 → 包 → 段 → 应用数据
当你执行一次 HTTP 请求时,数据是这样被多层打包的:
应用层:HTTP 数据
└──▶ "GET /index.html HTTP/1.1 ..."
传输层(TCP):
└──▶ [TCP头][HTTP数据]
网络层(IP):
└──▶ [IP头][TCP段]
链路层(Ethernet 帧):
└──▶ [目的MAC][源MAC][类型][IP包][CRC]
物理层:电信号(二进制 0/1)
└──▶ 以电压/光信号传输出去
汇总图如下:
┌────────────────────────────────────────────┐
│ 应用数据(HTTP) │
├────────────────────────────────────────────┤
│ TCP 段: TCP Header + HTTP Data │
├────────────────────────────────────────────┤
│ IP 包: IP Header + TCP Segment │
├────────────────────────────────────────────┤
│ 以太帧: MAC Header + IP Packet + CRC │
├────────────────────────────────────────────┤
│ 物理层:比特流(0 / 1) │
└────────────────────────────────────────────┘
📘 ③ 各层之间的俗称:
| 层级 | 数据单位 | 名称 |
| --- | ------- | -- |
| 应用层 | Data | 数据 |
| 传输层 | Segment | 段 |
| 网络层 | Packet | 包 |
| 链路层 | Frame | 帧 |
| 物理层 | Bit | 比特 |
一句话口诀:
应用数据 → TCP 段 → IP 包 → 以太帧 → 比特