位元組一面:大白你瞭解網路分層麼?

語言: CN / TW / HK

大家好,我是大白。

這是 「面試現場」作業系統 的姊妹篇計算機網路,這個系列我會通過真實面試的形式向你講解某個具體的知識點。希望對你能夠有幫助!

--------------當日上午,大白正在找藉口請假面試-----------

一個陽光明媚的中午,大白在領導辦公室

大白:領導我這頭有點疼啊。。。想請半天假去醫院看看。

領導:不是前段時間才牙疼嘛???

大白:不好意思,領導,頭太疼了,我要走了。。。

領導:。。。。。。

--------------------當日下午,位元組跳動大廈--------------------

面試官:上一輪的面試官反映說你網路這塊掌握的不夠好,我們繼續來聊聊吧!

大白:好的好的!

----------------------面試正式開始------------------------

1為什麼網路要分層?

面試官:可以結合咱們日常的軟體系統開發來談談 “為什麼網路要分層”? 嗎?

大白:說到分層,我們先從我們平時使用框架開發一個後臺程式來說,我們往往會按照每一層做不同的事情的原則將系統分為三層(複雜的系統分層會更多):

  • Repository(資料庫操作)
  • Service(業務操作)
  • Controller(前後端資料互動)

複雜的系統需要分層,因為每一層都需要專注於一類事情。網路分層的原因也是一樣,每一層只專注於做一類事情。

為什麼計算機網路要分層呢? 我再來較為系統的說一說:

  • 各層之間相互獨立:各層之間相互獨立,各層之間不需要關心其他層是如何實現的,只需要知道自己如何呼叫下層提供好的功能就可以了(可以簡單理解為介面呼叫)。這個和我們對開發時系統進行分層是一個道理。
  • 提高了整體靈活性 :每一層都可以使用最適合的技術來實現,你只需要保證你提供的功能以及暴露的介面的規則沒有改變就行了。這個和我們平時開發系統的時候要求的高內聚、低耦合的原則也是可以對應上的。
  • 大問題化小 :分層可以將複雜的網路間題分解為許多比較小的、界線比較清晰簡單的小問題來處理和解決。這樣使得複雜的計算機網路系統變得易於設計,實現和標準化。 這個和我們平時開發的時候,一般會將系統功能分解,然後將複雜的問題分解為容易理解的更小的問題是相對應的,這些較小的問題具有更好的邊界(目標和介面)定義。

說到計算機網路分層,我想到了計算機世界非常非常有名的一句話,這裡分享一下:

電腦科學領域的任何問題都可以通過增加一個間接的中間層來解決,計算機整個體系從上到下都是按照嚴格的層次結構設計的。

大白:如果一層不夠那就加兩層吧!

2OSI 七層模型

面試官:嗯嗯,不錯不錯!OSI七層模型瞭解嗎?每一層都提供了什麼功能?

大白內心 OS:這個面試官有點東西啊!OSI七層模型雖然失敗了,但是卻提供了很多不錯的理論基礎。為了更好地去了解網路分層,OSI七層模型還是非常有必要學習的。

大白:OSI七層模型是國際標準化組織提出一個網路分層模型。OSI七層模型的大體結構以及每一層提供的功能如下圖所示:

OSI七層模型

每一層都專注做一件事情,並且每一層都需要使用下一層提供的功能比如傳輸層需要使用網路層提供的路有和定址功能,這樣傳輸層才知道把資料傳輸到哪裡去。

OSI的七層體系結構概念清楚,理論也很完整,但是它比較複雜而且不實用,而且有些功能在多個層中重複出現。

上面這種圖可能比較抽象,再來一個比較生動的圖片。下面這個圖片是我在國外的一個網站上看到的,非常贊!

面試官:既然OSI七層模型這麼厲害,為什麼幹不過TCP/IP 4層模型呢?

大白:的確,OSI七層模型當時一直被一些大公司甚至一些國家政府支援。這樣的背景下,為什麼會失敗呢?我覺得主要有下面幾方面原因:

  • OSI的專家缺乏實際經驗,他們在完成OSI標準時缺乏商業驅動力
  • OSI的協議實現起來過分複雜,而且執行效率很低
  • OSI制定標準的週期太長,因而使得按OSI標準生產的裝置無法及時進入市場(20世紀90年代初期,雖然整套的OSI國際標準都已經制定出來,但基於TCP/IP的網際網路已經搶先在全球相當大的範圍成功運行了)
  • OSI的層次劃分不太合理,有些功能在多個層次中重複出現。

3TCP/IP 4層模型

面試官:聊完了OSI七層模型,我們再來聊聊TCP/IP 4層模型吧!

大白:好的,這個我熟!這是目前被廣泛採用的一種模型,我們可以將 TCP / IP 模型看作是 OSI 7層模型的精簡版本,由以下4層組成:

  • 應用層
  • 傳輸層
  • 網路層
  • 網路介面層

需要注意的是,我們並不能將 TCP/IP4層模型 和OSI7層模型完全精確地匹配起來,不過可以簡單將兩者對應起來,如下圖所示:

TCP-IP-4-model

面試官:不錯不錯!看來是有備而來啊!

大白:嘿嘿。。。

面試官:稍等一下,我去喝點水,有點口乾舌燥了,我們等下來具體聊聊 TCP/IP 4層模型。

大白:好的好的!

參考資料:

https://medium.com/@james_aka_yale/the-4-layer-internet-model-network-engineers-need-to-know-e78432614a4f

https://www.guru99.com/tcp-ip-model.html

https://www.freeccnastudyguide.com/study-guides/ccna/ch1/1-4-tcpip-model/

OSI 七層模型與 TCP/IP 四層模型— https://wsgzao.github.io/post/osi/