目录
网络分层模型:OSI 七层与 TCP/IP 四层一次讲清
网络为什么要分层,OSI 七层每一层管什么,实际互联网使用的 TCP/IP 四层如何对应,以及一个数据包在各层被「装信封、拆信封」的完整过程。
网络原理系列:① 打开一个网页时发生了什么 → ② 网络分层模型 → ③ 常见网络协议 → ④ 代理是什么 → ⑤ 加密隧道是什么 → ⑥ 加密隧道与代理的区别 → ⑦ HTTPS 加密了什么 → ⑧ 系统代理与 TUN 模式 → ⑨ 分流是什么 → ⑩ DNS 污染与泄漏 → ⑪ 晚高峰为什么变慢 → ⑫ 延迟、丢包与带宽
网络通信被拆成好几层,每一层只负责一件事,并且只和相邻的层打交道。最常用的两种模型是 OSI 七层模型(理论参考)和 TCP/IP 四层模型(实际互联网使用的)。发送数据时,从上往下每经过一层就加上一个「信封」(报头);接收时再从下往上一层层拆开。理解了分层,就能看懂「三层交换机」「七层代理」「加密隧道工作在第三层」这类说法。
- ① 应用层:写好的信信的内容,相当于 HTTP 等应用数据
- ② 传输层:装进信封加上 TCP 头,写明交给哪个程序(端口)
- ③ 网络层:装进纸箱加上 IP 头,写明送到哪台设备(IP 地址)
- ④ 链路层与物理层:装车上路加上帧头,变成电信号或无线电发出
- ⑤ 接收方:逐层拆开按相反顺序拆箱、拆信封,最后读到信
为什么要分层?
拿寄快递来类比:
- 你只管写信,不关心快递怎么运;
- 快递员只管收件、贴面单,不关心信里写了什么;
- 分拣中心只看面单上的城市,决定发往哪里;
- 货车司机只管把车开到下一站。
每个角色各管一摊,彼此之间只通过「信封」「面单」这些约定好的格式交接。网络分层也是这个思路,好处是:
- 各层可以独立替换:从网线换成 Wi-Fi,只影响最下面两层,浏览器完全不用改;
- 问题好定位:网络不通时,可以一层层排查,是线没插好(物理层)、IP 不对(网络层),还是网站本身出错(应用层);
- 分工开发:写网页的人不需要懂光纤,做路由器的人也不需要懂 HTML。
OSI 七层逐层说明
OSI 模型由国际标准化组织提出,从下往上一共七层:
| 层 | 名称 | 负责什么 | 常见协议 / 标准 | 数据单位 |
|---|---|---|---|---|
| 7 | 应用层 | 为程序提供网络服务:网页、邮件、域名查询 | HTTP、DNS、SMTP、FTP | 数据 |
| 6 | 表示层 | 数据的格式、编码、压缩和加密 | TLS 的加密、UTF-8、JPEG | 数据 |
| 5 | 会话层 | 建立、维持、结束一次「会话」 | 会话管理、RPC | 数据 |
| 4 | 传输层 | 端到端传输:用端口区分程序,保证可靠或追求低延迟 | TCP、UDP | 段(Segment) |
| 3 | 网络层 | 用 IP 地址跨网络寻址,选择路径(路由) | IP、ICMP | 包(Packet) |
| 2 | 数据链路层 | 在同一个局域网内,用 MAC 地址把数据交给相邻设备 | 以太网、Wi-Fi(802.11) | 帧(Frame) |
| 1 | 物理层 | 把 0 和 1 变成电信号、光信号或无线电波 | 网线、光纤、无线电 | 比特(Bit) |
一个容易记的口诀:物、链、网、传、会、表、应。
TCP/IP 四层:实际互联网用的这一套
OSI 分得很细,但真正在互联网上跑的是 TCP/IP 协议族,它把七层合并成四层:
| TCP/IP 四层 | 对应 OSI | 代表协议 |
|---|---|---|
| 应用层 | 应用层 + 表示层 + 会话层(5–7) | HTTP、DNS、TLS |
| 传输层 | 传输层(4) | TCP、UDP |
| 网络层(网际层) | 网络层(3) | IP、ICMP |
| 网络接口层(链路层) | 数据链路层 + 物理层(1–2) | 以太网、Wi-Fi |
日常交流时两套说法会混着用:讲协议怎么工作时用四层,说某个设备或技术「工作在第几层」时,习惯用 OSI 的编号。
封装与解封装:每一层加一个「信封」
发送数据时,每往下经过一层,这一层就在前面加上自己的报头,写上这一层需要的信息;链路层还会在末尾加一个校验用的帧尾:
| 报头 | 写了什么 | 谁会看 |
|---|---|---|
| TCP 头 | 源端口、目标端口、序号、确认号 | 收发两端的操作系统 |
| IP 头 | 源 IP、目标 IP、存活时间(TTL) | 沿途的每一台路由器 |
| 帧头 / 帧尾 | 源 MAC、目标 MAC;帧尾是校验码 | 同一局域网内的下一台设备 |
一个数据包在各层走过的完整过程
把发送方、中途的一台路由器和接收方放在一起看,就能清楚地看到每一层在什么时候做了什么:
| 步骤 | 在哪里 | 做了什么 |
|---|---|---|
| ① 生成 HTTP 请求 | 发送方 · 应用层 | 浏览器写好「请把首页给我」的请求内容 |
| ② 加 TCP 头 | 发送方 · 传输层 | 写上源端口和目标端口(如 443),以及用于保证顺序和重传的序号 |
| ③ 加 IP 头 | 发送方 · 网络层 | 写上自己的 IP 和网站的 IP,决定这个包要去往哪台设备 |
| ④ 加帧头 | 发送方 · 链路层 | 写上自己的 MAC 和下一跳(通常是家里路由器)的 MAC |
| ⑤ 发出信号 | 发送方 · 物理层 | 网卡把整个帧变成电信号或无线电发出去 |
| ⑥ 拆帧头、读 IP 头 | 路由器 | 收到后去掉帧头,只看 IP 头里的目标地址;路由器不看 TCP 和 HTTP |
| ⑦ 查路由表、换帧头 | 路由器 | 决定下一跳,换上新的帧头(新的源和目标 MAC),同时把 TTL 减 1 |
| ⑧ 转发 | 路由器 → 下一站 | 这一步会在沿途每台路由器上重复,直到到达目标网络 |
| ⑨ 核对 MAC、拆帧头 | 接收方 · 链路层 | 确认是发给自己的,校验无误后去掉帧头帧尾 |
| ⑩ 核对 IP、拆 IP 头 | 接收方 · 网络层 | 确认目标 IP 是自己,去掉 IP 头 |
| ⑪ 按端口交给程序 | 接收方 · 传输层 | 根据目标端口 443 交给网站程序,按序号重组数据、回复确认 |
| ⑫ 读到 HTTP 请求 | 接收方 · 应用层 | 网站程序拿到完整的请求,开始准备网页 |
注意第 ⑥–⑦ 步:路由器只拆到网络层,它关心的只是「这个包要去哪」,不需要也不会去读里面的网页内容。这正是分层的意义所在。
各层常见设备与技术对照
| 层 | 典型设备 | 说明 |
|---|---|---|
| 物理层 | 网线、光纤、光猫、集线器 | 只传信号,不理解内容 |
| 数据链路层 | 交换机、网卡、无线 AP | 认 MAC 地址,在局域网内转发 |
| 网络层 | 路由器、三层交换机 | 认 IP 地址,在不同网络之间转发 |
| 传输层及以上 | 防火墙、负载均衡器、代理服务器 | 能看端口甚至应用内容,按规则放行、分发或转发 |
后面要讲的代理和加密隧道,也可以用这张表来定位:代理大多工作在应用层或会话层,加密隧道常见的是在网络层把整个 IP 包包起来。
相关阅读
常见问题
OSI 七层和 TCP/IP 四层,到底以哪个为准?
实际的互联网用的是 TCP/IP 这套协议,所以讲「实际怎么运作」时看四层模型;OSI 七层是更细的参考框架,大家在描述「工作在第几层」时仍习惯用 OSI 的编号,例如「三层交换机」「七层负载均衡」。
HTTPS 里的 TLS 属于哪一层?
不同资料说法不一。TLS 位于 TCP 之上、HTTP 之下,在 TCP/IP 模型里通常归入应用层;按 OSI 的分工,它承担的加密工作属于表示层,也有人把它归到会话层。理解它的位置(TCP 和 HTTP 之间)比纠结编号更重要。
「二层」「三层」设备是什么意思?
指设备处理数据时看到哪一层为止。二层设备(如普通交换机)只看 MAC 地址,在同一个局域网内转发;三层设备(如路由器)会看 IP 地址,能在不同网络之间转发。