OSI 七层模型与 TCP/IP 四层模型:计算机网络分层到底怎么理解

前言

刚开始学计算机网络,最常见的一张图就是:

1
2
3
4
5
6
7
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层

这张图很经典,但也很容易让人产生一个误会:好像只要背下七层名字,就算理解网络了。

其实分层模型真正想表达的不是“有几个层”,而是:

一次复杂的网络通信,可以拆成多个职责清晰、彼此协作的阶段。

只要抓住这个思路,再看 OSI 七层模型和 TCP/IP 四层模型,就不会觉得它们是两套互相打架的概念。


一张图先看懂分层

先用五层模型做主线最容易理解:应用层负责语义,传输层负责进程通信,网络层负责主机寻址和路由,数据链路层负责局域网交付,物理层负责信号传输。

网络分层:每一层都干了什么

发送数据时,是从上到下一层层封装;接收数据时,是从下到上一层层解封装。OSI 七层、五层模型、TCP/IP 四层模型,本质上都是对这条链路的不同拆法。


1. 为什么网络需要分层

想象浏览器访问一个页面:

1
https://example.com/articles/1

这个动作背后至少包含这些问题:

  • 域名 example.com 对应哪台服务器?
  • 浏览器和服务器怎么建立连接?
  • 数据传输过程中丢了怎么办?
  • 请求和响应应该长什么样?
  • HTTPS 如何保证内容不被中间人篡改?
  • 数据最终如何从网线、Wi-Fi 或蜂窝网络里传过去?

如果所有问题都混在一个协议里解决,系统会非常难设计、难维护、难替换。

分层的价值在于:

  • 每一层只关心自己的职责。
  • 下层为上层提供能力,上层不需要知道下层所有细节。
  • 某一层可以独立演进,而不必推翻整个网络体系。

比如 HTTP 不需要关心底层到底走网线还是 Wi-Fi;IP 不需要关心上层传的是 HTML、JSON 还是图片;TCP 也不关心业务含义,只负责可靠传输字节流。


2. OSI 七层模型是什么

OSI 是一个理论参考模型,它把网络通信拆成七层。

1
2
3
4
5
6
7
7. 应用层
6. 表示层
5. 会话层
4. 传输层
3. 网络层
2. 数据链路层
1. 物理层

可以从上往下理解:越上层越接近应用,越下层越接近硬件和传输介质。

1. 物理层

物理层负责传输最原始的比特流。

它关心的是:

  • 电信号、光信号、无线电波如何表示 0 和 1
  • 网线、光纤、无线信号等传输介质
  • 接口、电压、频率、速率等硬件细节

一句话:

物理层负责把比特真正送出去。

2. 数据链路层

数据链路层负责在同一个局域网内传输数据帧。

它关心的是:

  • MAC 地址
  • 以太网帧
  • 交换机转发
  • ARP 地址解析
  • 同一局域网内的相邻节点通信

比如你的电脑要把数据发给家里的路由器,首先要知道路由器在局域网里的 MAC 地址。这个过程通常会用到 ARP。

一句话:

数据链路层负责同一个局域网内,设备和设备之间怎么交付数据。

3. 网络层

网络层负责跨网络传输数据包。

它关心的是:

  • IP 地址
  • 路由选择
  • 数据包转发
  • ICMP
  • 子网、网关、NAT

如果数据要从你的电脑发到另一个城市、另一个国家的服务器,靠的就是网络层的 IP 和路由体系。

一句话:

网络层负责把数据包从源主机送到目标主机。

4. 传输层

传输层负责端到端的进程通信。

它关心的是:

  • 端口
  • TCP
  • UDP
  • 连接管理
  • 可靠传输
  • 流量控制和拥塞控制

IP 只能帮你找到目标机器,但一台机器上可能有很多进程:Web 服务、数据库、SSH、邮件服务。传输层通过端口进一步定位到具体进程。

一句话:

传输层负责让两台主机上的具体进程完成通信。

5. 会话层

会话层负责建立、维护和管理会话。

它关心的是:

  • 会话建立
  • 会话保持
  • 会话恢复
  • 会话同步

在现代互联网协议栈里,会话层的能力经常被合并到应用层或传输层实现,所以平时很少直接感知它。

一句话:

会话层负责管理一次通信会话的生命周期。

6. 表示层

表示层负责数据格式转换和表示。

它关心的是:

  • 编码和解码
  • 压缩和解压缩
  • 加密和解密
  • 数据格式转换

例如字符编码、JSON 序列化、图片格式、TLS 加密,都可以从表示层的角度理解。

不过在真实 TCP/IP 协议栈里,表示层通常也不会作为单独一层出现,而是融入应用层。

一句话:

表示层负责让数据以双方都能理解的格式表达出来。

7. 应用层

应用层最接近用户和业务。

它关心的是:

  • HTTP
  • DNS
  • FTP
  • SMTP
  • WebSocket
  • 应用协议和业务语义

比如 HTTP 规定了请求方法、状态码、Header、Body,浏览器和服务器才能围绕同一套语义通信。

一句话:

应用层负责定义应用之间如何交换有业务含义的数据。


3. TCP/IP 四层模型是什么

TCP/IP 模型更接近真实互联网的实现。

它通常分为四层:

1
2
3
4
4. 应用层
3. 传输层
2. 网络层
1. 网络接口层

有些资料也会把它写成五层模型,把网络接口层拆成数据链路层和物理层:

1
2
3
4
5
应用层
传输层
网络层
数据链路层
物理层

四层模型和五层模型本质上只是拆分粒度不同。对于前端和应用开发者来说,先掌握四层就足够建立主线。

1. 网络接口层

对应 OSI 的物理层和数据链路层。

它负责在具体网络介质上传输数据,包括以太网、Wi-Fi、MAC 地址、数据帧等。

2. 网络层

对应 OSI 的网络层。

核心协议是 IP,负责寻址和路由,让数据包可以跨网络传输。

3. 传输层

对应 OSI 的传输层。

核心协议是 TCP 和 UDP,负责端到端进程通信。

4. 应用层

对应 OSI 的应用层、表示层和会话层。

HTTP、DNS、WebSocket、SMTP 等都属于这一层。TLS 虽然常被放在应用层和传输层之间理解,但在 TCP/IP 四层模型里通常也归到应用层相关能力中。


4. OSI 七层与 TCP/IP 四层如何对应

可以用一张表记住它们的关系。

OSI 七层模型 TCP/IP 四层模型 常见协议 / 概念
应用层 应用层 HTTP、DNS、WebSocket、SMTP
表示层 应用层 TLS、编码、压缩、序列化
会话层 应用层 会话管理、连接保持
传输层 传输层 TCP、UDP、端口
网络层 网络层 IP、ICMP、路由、NAT
数据链路层 网络接口层 MAC、ARP、以太网、交换机
物理层 网络接口层 网线、光纤、无线信号、比特流

更直观一点:

1
2
3
4
5
6
7
8
9
10
11
12
OSI 七层模型                         TCP/IP 四层模型

应用层 HTTP / DNS
表示层 TLS / 编码 / 压缩 应用层
会话层 会话管理

传输层 TCP / UDP 传输层

网络层 IP / ICMP / 路由 网络层

数据链路层 MAC / ARP / 以太网
物理层 网线 / Wi-Fi / 光纤 网络接口层

所以不要把两套模型看成互相矛盾。OSI 更适合教学和理解职责边界,TCP/IP 更接近真实互联网工程实现。


5. 一次 HTTP 请求如何穿过这些层

以浏览器访问:

1
https://example.com

为例,可以从应用层一路往下看。

1. 应用层:准备 HTTP 请求

浏览器先构造 HTTP 请求:

1
2
3
4
GET / HTTP/1.1
Host: example.com
User-Agent: ...
Accept: text/html

如果是 HTTPS,还会先进行 TLS 握手,建立加密通信所需的密钥和安全参数。

这一层关心的是:

  • 请求方法是什么
  • 请求路径是什么
  • Header 带什么
  • Cookie 是否携带
  • 响应状态码是什么
  • 内容类型是什么

2. 传输层:建立 TCP 连接

HTTP/1.1 和 HTTP/2 通常基于 TCP。

浏览器会和目标服务器的 443 端口建立 TCP 连接。

TCP 负责:

  • 三次握手
  • 数据分段
  • 丢包重传
  • 顺序保证
  • 流量控制
  • 拥塞控制

这一层不关心你传的是 HTML 还是 JSON,它只关心字节流能不能可靠到达。

3. 网络层:封装 IP 数据包

传输层的数据会交给网络层。

网络层会加上源 IP 和目标 IP,让数据包可以被路由器一跳一跳转发到目标网络。

这一层关心的是:

  • 目标 IP 是什么
  • 下一跳网关是谁
  • 数据包应该走哪条路
  • 是否需要经过 NAT

4. 网络接口层:在局域网内发送帧

最后,数据会被封装成数据帧,通过网卡、Wi-Fi 或其他网络介质发出去。

在局域网里,设备之间靠 MAC 地址交付数据。

如果你的电脑要把包发给路由器,需要知道路由器的 MAC 地址;如果不知道,就会通过 ARP 查询。


6. 封装与解封装

网络分层还有一个很重要的概念:封装。

发送数据时,每一层都会加上自己的头部信息:

1
2
3
4
5
6
7
HTTP 数据
↓
TCP 头 + HTTP 数据
↓
IP 头 + TCP 头 + HTTP 数据
↓
以太网帧头 + IP 头 + TCP 头 + HTTP 数据 + 帧尾

接收数据时,过程反过来:

1
2
3
4
5
6
7
8
9
以太网帧
↓
取出 IP 数据包
↓
取出 TCP 数据段
↓
取出 HTTP 数据
↓
交给浏览器或服务端应用处理

这就是所谓的解封装。

可以把每一层理解成给数据套一层信封:

  • 应用层信封说明业务语义。
  • 传输层信封说明端口和可靠传输信息。
  • 网络层信封说明源 IP 和目标 IP。
  • 数据链路层信封说明局域网内的 MAC 地址。

数据到达目标后,再一层层拆开。


7. 前端为什么要理解分层

前端并不需要每天配置路由器、交换机,但理解分层能帮助你更快定位问题。

DNS 出问题

表现可能是:

  • 域名无法解析
  • 浏览器提示 DNS_PROBE_FINISHED_NXDOMAIN
  • 换 IP 可以访问,换域名不行

这通常是应用层的 DNS 解析问题。

TCP 连接出问题

表现可能是:

  • 请求一直 pending
  • 连接超时
  • 端口不通
  • 服务没监听目标端口

这通常要检查传输层和网络层。

HTTPS 出问题

表现可能是:

  • 证书过期
  • 证书域名不匹配
  • 浏览器提示连接不安全
  • mixed content 被拦截

这和 TLS、证书链、浏览器安全策略相关。

HTTP 出问题

表现可能是:

  • 404
  • 500
  • 401
  • 403
  • CORS 报错
  • 缓存没有按预期生效

这些更多是应用层协议和服务端处理逻辑的问题。

静态资源慢

可能涉及:

  • DNS 慢
  • TCP/TLS 建连慢
  • TTFB 慢
  • 下载慢
  • CDN 未命中
  • 资源过大

这时候看 Chrome DevTools Network 面板,就能把耗时拆到不同阶段。


8. 常见误区

误区一:OSI 七层是现实中严格存在的七个模块

OSI 更像理论参考模型。真实互联网主要基于 TCP/IP 协议栈,并不会严格按照七层拆成七个独立模块。

误区二:HTTP 一定只属于第七层,TLS 一定只属于第六层

分层模型是理解工具,不是法律条文。TLS 可以从表示层角度理解,也可以在 TCP/IP 模型里看成应用层相关能力。

重点不是纠结它“到底算第几层”,而是理解它解决什么问题:加密、身份认证、完整性校验。

误区三:只要会 HTTP 就不用学 TCP/IP

日常写业务时,HTTP 的确最常用。但一旦遇到超时、弱网、连接复用、HTTP/2、HTTP/3、CDN、跨地域访问等问题,不理解 TCP/IP 就很容易只看表象。

误区四:背模型比看链路重要

真正有用的是把模型放回真实链路里:

1
URL -> DNS -> TCP -> TLS -> HTTP -> CDN / 网关 -> 服务端 -> 响应

只要能用模型解释这条链路,才算真的掌握。


9. 怎么记最轻松

可以先记这个版本:

1
2
3
4
应用层:定义业务语义,比如 HTTP、DNS。
传输层:定位进程并传输数据,比如 TCP、UDP、端口。
网络层:定位主机并跨网络转发,比如 IP、路由。
网络接口层:在本地网络里真正发送数据,比如 MAC、ARP、网卡。

再把 OSI 七层作为展开版:

1
2
3
4
5
6
7
应用层:应用协议
表示层:数据表示、编码、加密、压缩
会话层:会话管理
传输层:端到端进程通信
网络层:跨网络寻址和路由
数据链路层:局域网内数据帧传输
物理层:比特流传输

总结

OSI 七层模型和 TCP/IP 四层模型都在讲同一件事:

把复杂的网络通信拆成多个职责明确的层次。

区别在于:

  • OSI 七层模型更适合理解概念边界。
  • TCP/IP 四层模型更贴近真实互联网实现。

对前端来说,最重要的是建立这条主线:

1
2
3
4
5
6
7
应用层:HTTP / DNS / TLS
↓
传输层:TCP / UDP / 端口
↓
网络层:IP / 路由 / NAT
↓
网络接口层:MAC / ARP / 以太网 / Wi-Fi

学会这条线以后,再看 DNS、TCP、HTTPS、HTTP 缓存、跨域、CDN 和网络排查,都会更容易落到具体位置上。