一文了解OSI 模型是什麼?
今天我在推特上發布了一些關於OSI 模型如何與TCP/IP 工作原理的實際表現不相符的觀點,這讓我思考——OSI 模型到底是什麼?通過閱讀推特上的一些回復發現,似乎至少存在三種不同的思考方式:
- TCP/IP 工作原理的字面描述
- 一個可以用來描述和比較很多不同的網絡協議的抽像模型
- 對1980 年代的一些計算機網絡協議的字面描述,這些協議如今大多已不再使用
在這篇文章中,我不打算試圖爭辯以上哪一個才是“真正”的OSI 模型——似乎不同的人以所有這些方式思考它。這不重要。
OSI 模型有七層
在我們討論OSI 模型的含義之前,讓我們大致地討論一下它是什麼。它是一個抽像模型,用於描述網絡如何在七個編號的層上工作:
- 第一層:物理層
- 第二層:數據鏈路層
- 第三層:網絡層
- 第四層:傳輸層
- 第五層:會話層
- 第六層:表示層
- 第七層:應用層
我不會再費時地去解釋每一層的含義,網上有上千種解釋可供查詢。
OSI 模型:TCP/IP 工作原理的字面描述
首先,我想談談人們在實踐中使用OSI 模型的一種常見方式:作為對TCP/IP 工作原理的字面描述。OSI 模型的某些層非常容易映射到TCP/IP:
- 第二層對應以太網
- 第三層對應IP
- 第四層對應TCP 或UDP(或ICMP 等)
- 第七層對應TCP 或UDP 包內的任何內容(例如DNS 查詢)
這種映射對第二、三、四層很有意義——TCP 數據包有三個標頭header對應於這三個層(以太網標頭、IP 標頭和TCP 標頭)。
用數字來描述TCP 數據包中的不同標頭非常有用——如果你說“第二層”,很顯然它位於第三層“下方”,因為二比三小。
“OSI 模型作為字面描述”的古怪之處在於,第五層和第六層並不真正對應於TCP/IP 中的任何內容——我聽說過很多關於第五層或第六層可能是什麼的不同解釋(你可以說第五層是TLS 或其他東西!)但它們沒有像第二、三、四層那樣“每一層在TCP 數據包中都有相應的標頭”這樣的明確對應關係。
此外,TCP/IP 的某些部分即使在第二層到第四層也不能很好地適應OSI 模型——例如,哪一層是ARP 數據包?ARP 數據包發送一些帶有以太網標頭的數據,這是否意味著它們是第三層?或是第二層?列出不同OSI 層的維基百科文章將其歸類為“第2.5 層”,這並不令人滿意。
因為OSI 模型有時用於教授TCP/IP,若搞不清楚它的哪些部分可以映射到TCP/IP,而哪些部分不能,則會令人困惑。這才是真的問題。
OSI 模型:用于比较网络协议的一个抽象
我听说过的另一种关于 OSI 的思考方式是,它是一种抽象,可以用来在许多不同的网络协议之间进行类比。例如,如果你想了解蓝牙协议的工作原理,也许你可以使用 OSI 模型来帮助你——这是我在 这个网页 上找到的一张图表,显示了蓝牙协议如何适配 OSI 模型。
OSI 模型:一些过时协议的字面描述
维基百科上的一些非常简短的研究表明,除了对这七层的抽象描述之外,OSI 模型还包含了 一组实现这些层的特定协议。显然,这发生在 70 年代和 80 年代的 协议战争 时期,OSI 模型失败了,TCP/IP 则取得了胜利。
这就解释了为什么 OSI 模型无法与 TCP/IP 很好地对应,因为如果当时“获胜”的是 OSI 协议,那么 OSI 模型 将 完全对应于互联网网络的实际工作方式。
结语
我写这篇文章的初衷是,当我最初学习 OSI 模型时,我发现它非常令人困惑(所有这些层是什么?它们是真实存在的吗?这是网络的实际工作原理吗?发生了什么?)我希望有人告诉我这个只使用 TCP/IP 网络协议的人,只需了解 OSI 模型第二、三、四和七层与 TCP/IP 的关系,然后忽略它的所有其他内容即可。所以我希望这篇文章对某些人能有所帮助!