字節一面:大白你了解網絡分層么?
大家好,我是大白。
這是 「面試現場」操作系統 的姊妹篇計算機網絡,這個系列我會通過真實面試的形式向你講解某個具體的知識點。希望對你能夠有幫助!
--------------當日上午,大白正在找借口請假面試-----------
一個陽光明媚的中午,大白在領導辦公室
大白:領導我這頭有點疼啊。。。想請半天假去醫院看看。
領導:不是前段時間才牙疼嘛???
大白:不好意思,領導,頭太疼了,我要走了。。。
領導:。。。。。。
--------------------當日下午,字節跳動大廈--------------------
面試官:上一輪的面試官反映說你網絡這塊掌握的不夠好,我們繼續來聊聊吧!
大白:好的好的!
----------------------面試正式開始------------------------
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/







































