---
author: Julia Evans
category: 技术
comments_data: []
count:
  commentnum: 0
  favtimes: 1
  likes: 0
  sharetimes: 0
  viewnum: 2331
date: '2022-07-02 15:36:23'
editorchoice: false
excerpt: 通过阅读推特上的一些回复发现，似乎至少存在三种不同的思考方式
fromurl: https://jvns.ca/blog/2021/05/11/what-s-the-osi-model-/
id: 14786
islctt: true
largepic: /images/p/202207/02/153620k7nwc6nn2b6n6p2c.jpg
permalink: /article-14786-1.html
pic: /images/p/202207/02/153620k7nwc6nn2b6n6p2c.jpg.thumb.jpg
related: []
reviewer: wxy
selector: lujun9972
summary: 通过阅读推特上的一些回复发现，似乎至少存在三种不同的思考方式
tags:
- OSI
- TCP/IP
thumb: false
title: OSI 模型是什么？
titlepic: true
translator: hanszhao80
updated: '2022-07-02 15:36:23'
---

![](/images/p/202207/02/153620k7nwc6nn2b6n6p2c.jpg)


（LCTT 校注：作者原文已经大篇幅进行了修订更新，本文据之前的版本翻译。）


今天我在推特上发布了一些关于 OSI 模型如何与 TCP/IP 工作原理的实际表现不相符的观点，这让我思考——OSI 模型到底是什么？通过阅读推特上的一些回复发现，似乎至少存在三种不同的思考方式：


1. TCP/IP 工作原理的字面描述
2. 一个可以用来描述和比较很多不同的网络协议的抽象模型
3. 对 1980 年代的一些计算机网络协议的字面描述，这些协议如今大多已不再使用


在这篇文章中，我不打算试图争辩以上哪一个才是“真正”的 OSI 模型——似乎不同的人以所有这些方式思考它。这不重要。


### OSI 模型有七层


在我们讨论 OSI 模型的含义之前，让我们大致地讨论一下它是什么。它是一个抽象模型，用于描述网络如何在七个编号的层上工作：


* 第一层：物理层
* 第二层：数据链路层
* 第三层：网络层
* 第四层：传输层
* 第五层：会话层
* 第六层：表示层
* 第七层：应用层


我不会再费时地去解释每一层的含义，网上有上千种解释可供查询。


### OSI 模型：TCP/IP 工作原理的字面描述


首先，我想谈谈人们在实践中使用 OSI 模型的一种常见方式：作为对 TCP/IP 工作原理的字面描述。OSI 模型的某些层非常容易映射到 TCP/IP：


* 第二层对应以太网
* 第三层对应 IP
* 第四层对应 TCP 或 UDP（或 ICMP 等）
* 第七层对应 TCP 或 UDP 包内的任何内容（例如 DNS 查询）


这种映射对第二、三、四层很有意义——TCP 数据包有三个<ruby> 标头 <rt>  header </rt></ruby>对应于这三个层（以太网标头、IP 标头和 TCP 标头）。


用数字来描述 TCP 数据包中的不同标头非常有用——如果你说“第二层”，很显然它位于第三层“下方”，因为二比三小。


“OSI 模型作为字面描述”的古怪之处在于，第五层和第六层并不真正对应于 TCP/IP 中的任何内容——我听说过很多关于第五层或第六层可能是什么的不同解释（你可以说第五层是 TLS 或其他东西！）但它们没有像第二、三、四层那样“每一层在 TCP 数据包中都有相应的标头”这样的明确对应关系。


此外，TCP/IP 的某些部分即使在第二层到第四层也不能很好地适应 OSI 模型——例如，哪一层是 ARP 数据包？ARP 数据包发送一些带有以太网标头的数据，这是否意味着它们是第三层？或是第二层？列出不同 OSI 层的维基百科文章将其归类为“第 2.5 层”，这并不令人满意。


因为 OSI 模型有时用于教授 TCP/IP，若搞不清楚它的哪些部分可以映射到 TCP/IP，而哪些部分不能，则会令人困惑。这才是真的问题。


### OSI 模型：用于比较网络协议的一个抽象


我听说过的另一种关于 OSI 的思考方式是，它是一种抽象，可以用来在许多不同的网络协议之间进行类比。例如，如果你想了解蓝牙协议的工作原理，也许你可以使用 OSI 模型来帮助你——这是我在 [这个网页](https://flylib.com/books/en/4.215.1.116/1/) 上找到的一张图表，显示了蓝牙协议如何适配 OSI 模型。


![](/images/p/202207/02/153623cb6e5q68k5leyl1e.gif)


另一个例子是，[这篇维基百科文章](https://en.wikipedia.org/wiki/List_of_network_protocols_(OSI_model)) 有一个 OSI 层列表，详细划分了哪些特定的网络协议对应于这些 OSI 层。


### OSI 模型：一些过时协议的字面描述


维基百科上的一些非常简短的研究表明，除了对这七层的抽象描述之外，OSI 模型还包含了 [一组实现这些层的特定协议](https://en.wikipedia.org/wiki/OSI_protocols)。显然，这发生在 70 年代和 80 年代的 [协议战争](https://en.wikipedia.org/wiki/Protocol_Wars) 时期，OSI 模型失败了，TCP/IP 则取得了胜利。


这就解释了为什么 OSI 模型无法与 TCP/IP 很好地对应，因为如果当时“获胜”的是 OSI 协议，那么 OSI 模型 *将* 完全对应于互联网网络的实际工作方式。


### 结语


我写这篇文章的初衷是，当我最初学习 OSI 模型时，我发现它非常令人困惑（所有这些层是什么？它们是真实存在的吗？这是网络的实际工作原理吗？发生了什么？）我希望有人告诉我这个只使用 TCP/IP 网络协议的人，只需了解 OSI 模型第二、三、四和七层与 TCP/IP 的关系，然后忽略它的所有其他内容即可。所以我希望这篇文章对某些人能有所帮助！




---


via: <https://jvns.ca/blog/2021/05/11/what-s-the-osi-model-/>


作者：[Julia Evans](https://jvns.ca/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[hanszhao80](https://github.com/hanszhao80) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出