好几次面试都被问了计算机网络模型,一次是让我讲讲7层模型,还有让我讲讲5层模型,4层模型的。

这群面试官完全不按套路出牌,昨天刚问完 7 层模型,今天就换成了 4 层模型。

我当场脑子一片空白,支支吾吾说不清楚,直接就凉了。

首先,为什么会有三个版本?

且看:

  1. 7层模型(OSI参考模型)

这是国际标准化组织定的理论学术标准,是网络分层的“祖宗”,但实际互联网几乎不用。

  1. 4层模型(TCP/IP模型)

互联网实际在用的工业落地标准,我们现在上网、写代码用的HTTP、TCP、IP,全是基于这个模型跑的,是真正“干活”的模型。

  1. 5层模型(教材简化模型)

国内计算机教材最常用的简化教学版,把4层模型的最底层拆成了2层,方便理解学习。

面试的时候,不管面试官问哪个模型,可以先把下面这张对应关系表讲出来,这样就能把三个模型的边界划清楚,也不容易搞混。

7 层 OSI 参考模型 5 层教材简化模型 4 层 TCP/IP 工业模型 作用
应用层 应用层 应用层 给用户/应用提供服务,比如浏览器、APP
表示层 (合并到应用层) (合并到应用层) 数据加密、格式转换、统一编码
会话层 (合并到应用层) (合并到应用层) 建立和维持应用之间的会话连接
传输层 传输层 传输层 给数据标端口,控制端到端的传输方式
网络层 网络层 网际层 给数据标 IP,规划端到端的传输路线
数据链路层 数据链路层 网络接口层 给数据标 MAC 地址,相邻节点之间的传输
物理层 物理层 (合并到网络接口层) 电信号、光信号的物理传输

7层OSI参考模型

7. 应用层

应用层主要是给用户/应用提供可操作的服务,定义数据的业务含义。

统称为 消息/报文 (Message)。

我们写代码天天接触的HTTP、HTTPS、DNS、FTP、WebSocket、RPC协议,全在这一层。

浏览器发请求、APP调接口,都是在应用层完成的。

6. 表示层

表示层主要是统一数据格式,保证收发双方能看懂对方的数据,核心负责数据的加密解密、格式转换、压缩解压、编码统一。

理论上 OSI 模型把加密解密放在表示层;

但在实际 TCP/IP 模型中,TLS/SSL 属于应用层实现,工作在应用层与传输层之间。

5. 会话层

会话层主要是管理应用之间的会话,保证数据不会串线。

负责建立、维持、有序断开应用之间的会话连接,提供会话同步、全双工 / 半双工切换等管理能力;

该层仅存在于 OSI 理论模型中,实际 TCP/IP 体系中无独立对应层,相关会话逻辑由应用层 + 传输层共同实现。

4. 传输层

传输层是端到端的传输控制,保证数据能准确送到对应的应用程序。

数据单位称为 段 (Segment)。

TCP(可靠传输)、UDP(不可靠传输),还有端口号(HTTP的80端口、HTTPS的443端口),都在这一层。

3. 网络层

作用是网络寻址和路由选择,保证数据能从源主机送到目标主机。

数据单位称为 包 (Packet) 或 分组。

IP 协议(IPv4/IPv6)、ARP(IP 转 MAC 地址)、ICMP(ping/tracert 命令)、OSPF/RIP 路由协议,都在这一层。

2. 数据链路层

相邻节点之间的可靠传输,负责成帧 (Framing)、差错检测和流量控制。

数据单位称为 帧 (Frame)。
MAC地址、以太网协议、交换机转发,都在这一层。

给 IP 数据包加上 MAC 头部,标上源 MAC 和下一跳的 MAC 地址,保证相邻节点之间能准确传输。

1. 物理层

物理介质上的比特流传输。只负责传输0和1的比特流,不管数据是什么含义。

数据单位称为 比特 (Bit)。

网线、光纤、网卡、集线器、电信号、光信号,都在这一层。

4层TCP/IP模型

OSI模型太理想化、太复杂,实际互联网落地的时候,做了两层合并,就成了现在真正在用的4层模型:

  1. 应用层:合并了OSI的应用层+表示层+会话层
  2. 传输层:同OSI的传输层
  3. 网际层:同OSI的网络层
  4. 网络接口层:合并了OSI的数据链路层+物理层

我们现在上网、写代码的所有网络请求,全是跑在这个4层TCP/IP模型上的,是真正的工业标准。

5层教材简化模型

国内教材为了兼顾教学易懂性和底层逻辑完整性,以 OSI 7 层模型为基础做简化,保留应用层、传输层、网络层,同时将底层拆分为数据链路层 + 物理层,形成了教学通用的 5 层简化模型。

这个模型既保留了底层的物理传输逻辑,又简化了上层的复杂分层。

举个例子

在浏览器输入网址,到页面显示出来,经过了网络模型的哪些层?

(1)客户端发送请求(从上到下封装数据包)
  1. 应用层

浏览器解析网址,先通过 DNS 协议解析域名,拿到服务器的 IP 地址,再生成对应的 HTTP 请求。

  1. 传输层

先通过三次握手与服务器建立 TCP 连接,再给 HTTP 请求加上 TCP 头部,标上源端口和目标端口,完成传输层封装。

  1. 网络层

给TCP数据包加上IP头部,标上源IP和目标IP,路由器根据IP地址规划路由,找到服务器的网络地址。

  1. 数据链路层

给IP数据包加上MAC头部,标上源MAC和下一跳的MAC地址,交换机根据MAC地址完成相邻节点转发。

  1. 物理层

把数据包转换成电信号/光信号,通过网线、光纤、基站等物理介质,传输到目标服务器。

(2)服务器接收并处理请求(从下到上解析数据包)

服务器收到数据后,从下到上逐层解包:物理层➡️数据链路层➡️网络层➡️传输层➡️应用层,最终解析 HTTP 请求、执行业务逻辑并返回响应。

(3) 客户端渲染页面

浏览器收到响应后,解析HTML/CSS/JS,渲染页面并显示给用户。

每层对应的协议

层级名称 协议
应用层 HTTP、HTTPS、DNS、FTP、SMTP(邮件发送)、POP3/IMAP(邮件接收)、WebSocket、SSH、Dubbo 等 RPC 协议
传输层 TCP(可靠传输)、UDP(不可靠传输)
网络层 IPv4、IPv6、ARP(IP 转 MAC 地址)、ICMP(ping/tracert)、OSPF、RIP 等路由协议
数据链路层 以太网协议、PPP 点对点协议、VLAN 协议、MAC 地址规范
物理层 无专属网络协议,相关规范:网线、光纤、网卡、集线器、RJ45 接口

小贴士:

ARP 协议逻辑上属于网络层(核心为 IP 协议提供地址解析服务,是 TCP/IP 网际层的核心配套协议),仅从报文封装形式来看,它被直接封装在以太网帧中,因此也有观点认为它属于数据链路层。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐