OSI 模型是什麼?
(LCTT 校註:作者原文已經大篇幅進行了修訂更新,本文據之前的版本翻譯。)
今天我在推特上發布了一些關於 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 數據包有三個 標頭 對應於這三個層(乙太網標頭、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 層。
OSI 模型:一些過時協議的字面描述
維基百科上的一些非常簡短的研究表明,除了對這七層的抽象描述之外,OSI 模型還包含了 一組實現這些層的特定協議。顯然,這發生在 70 年代和 80 年代的 協議戰爭 時期,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 選題:lujun9972 譯者:hanszhao80 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive