mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-29 21:41:00 +08:00
b795eccda3
@hanszhao80 https://linux.cn/article-14786-1.html
94 lines
5.5 KiB
Markdown
94 lines
5.5 KiB
Markdown
[#]: subject: (What is the OSI model?)
|
||
[#]: via: (https://jvns.ca/blog/2021/05/11/what-s-the-osi-model-/)
|
||
[#]: author: (Julia Evans https://jvns.ca/)
|
||
[#]: collector: (lujun9972)
|
||
[#]: translator: (hanszhao80)
|
||
[#]: reviewer: (wxy)
|
||
[#]: publisher: (wxy)
|
||
[#]: url: (https://linux.cn/article-14786-1.html)
|
||
|
||
OSI 模型是什么?
|
||
======
|
||
|
||
![](https://img.linux.net.cn/data/attachment/album/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 模型来帮助你——这是我在 [这个网页][1] 上找到的一张图表,显示了蓝牙协议如何适配 OSI 模型。
|
||
|
||
![][2]
|
||
|
||
另一个例子是,[这篇维基百科文章][3] 有一个 OSI 层列表,详细划分了哪些特定的网络协议对应于这些 OSI 层。
|
||
|
||
### OSI 模型:一些过时协议的字面描述
|
||
|
||
维基百科上的一些非常简短的研究表明,除了对这七层的抽象描述之外,OSI 模型还包含了 [一组实现这些层的特定协议][4]。显然,这发生在 70 年代和 80 年代的 [协议战争][5] 时期,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][a]
|
||
选题:[lujun9972][b]
|
||
译者:[hanszhao80](https://github.com/hanszhao80)
|
||
校对:[wxy](https://github.com/wxy)
|
||
|
||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||
|
||
[a]: https://jvns.ca/
|
||
[b]: https://github.com/lujun9972
|
||
[1]: https://flylib.com/books/en/4.215.1.116/1/
|
||
[2]: https://jvns.ca/images/bluetooth.gif
|
||
[3]: https://en.wikipedia.org/wiki/List_of_network_protocols_(OSI_model)
|
||
[4]: https://en.wikipedia.org/wiki/OSI_protocols
|
||
[5]: https://en.wikipedia.org/wiki/Protocol_Wars
|