字節(jié)一面:大白你了解網(wǎng)絡(luò)分層么?
大家好,我是大白。
這是 「面試現(xiàn)場」操作系統(tǒng) 的姊妹篇計(jì)算機(jī)網(wǎng)絡(luò),這個(gè)系列我會通過真實(shí)面試的形式向你講解某個(gè)具體的知識點(diǎn)。希望對你能夠有幫助!
--------------當(dāng)日上午,大白正在找借口請假面試-----------
一個(gè)陽光明媚的中午,大白在領(lǐng)導(dǎo)辦公室
大白:領(lǐng)導(dǎo)我這頭有點(diǎn)疼啊。。。想請半天假去醫(yī)院看看。
領(lǐng)導(dǎo):不是前段時(shí)間才牙疼嘛???
大白:不好意思,領(lǐng)導(dǎo),頭太疼了,我要走了。。。
領(lǐng)導(dǎo):。。。。。。
--------------------當(dāng)日下午,字節(jié)跳動大廈--------------------
面試官:上一輪的面試官反映說你網(wǎng)絡(luò)這塊掌握的不夠好,我們繼續(xù)來聊聊吧!
大白:好的好的!
----------------------面試正式開始------------------------
1為什么網(wǎng)絡(luò)要分層?
面試官:可以結(jié)合咱們?nèi)粘5能浖到y(tǒng)開發(fā)來談?wù)?“為什么網(wǎng)絡(luò)要分層”? 嗎?
大白:說到分層,我們先從我們平時(shí)使用框架開發(fā)一個(gè)后臺程序來說,我們往往會按照每一層做不同的事情的原則將系統(tǒng)分為三層(復(fù)雜的系統(tǒng)分層會更多):
- Repository(數(shù)據(jù)庫操作)
- Service(業(yè)務(wù)操作)
- Controller(前后端數(shù)據(jù)交互)
復(fù)雜的系統(tǒng)需要分層,因?yàn)槊恳粚佣夹枰獙W⒂谝活愂虑?。網(wǎng)絡(luò)分層的原因也是一樣,每一層只專注于做一類事情。
為什么計(jì)算機(jī)網(wǎng)絡(luò)要分層呢? 我再來較為系統(tǒng)的說一說:
- 各層之間相互獨(dú)立:各層之間相互獨(dú)立,各層之間不需要關(guān)心其他層是如何實(shí)現(xiàn)的,只需要知道自己如何調(diào)用下層提供好的功能就可以了(可以簡單理解為接口調(diào)用)。這個(gè)和我們對開發(fā)時(shí)系統(tǒng)進(jìn)行分層是一個(gè)道理。
- 提高了整體靈活性 :每一層都可以使用最適合的技術(shù)來實(shí)現(xiàn),你只需要保證你提供的功能以及暴露的接口的規(guī)則沒有改變就行了。這個(gè)和我們平時(shí)開發(fā)系統(tǒng)的時(shí)候要求的高內(nèi)聚、低耦合的原則也是可以對應(yīng)上的。
- 大問題化小 :分層可以將復(fù)雜的網(wǎng)絡(luò)間題分解為許多比較小的、界線比較清晰簡單的小問題來處理和解決。這樣使得復(fù)雜的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)變得易于設(shè)計(jì),實(shí)現(xiàn)和標(biāo)準(zhǔn)化。 這個(gè)和我們平時(shí)開發(fā)的時(shí)候,一般會將系統(tǒng)功能分解,然后將復(fù)雜的問題分解為容易理解的更小的問題是相對應(yīng)的,這些較小的問題具有更好的邊界(目標(biāo)和接口)定義。
說到計(jì)算機(jī)網(wǎng)絡(luò)分層,我想到了計(jì)算機(jī)世界非常非常有名的一句話,這里分享一下:
計(jì)算機(jī)科學(xué)領(lǐng)域的任何問題都可以通過增加一個(gè)間接的中間層來解決,計(jì)算機(jī)整個(gè)體系從上到下都是按照嚴(yán)格的層次結(jié)構(gòu)設(shè)計(jì)的。
大白:如果一層不夠那就加兩層吧!
2OSI 七層模型
面試官:嗯嗯,不錯(cuò)不錯(cuò)!OSI七層模型了解嗎?每一層都提供了什么功能?
大白內(nèi)心 OS:這個(gè)面試官有點(diǎn)東西啊!OSI七層模型雖然失敗了,但是卻提供了很多不錯(cuò)的理論基礎(chǔ)。為了更好地去了解網(wǎng)絡(luò)分層,OSI七層模型還是非常有必要學(xué)習(xí)的。
大白:OSI七層模型是國際標(biāo)準(zhǔn)化組織提出一個(gè)網(wǎng)絡(luò)分層模型。OSI七層模型的大體結(jié)構(gòu)以及每一層提供的功能如下圖所示:
OSI七層模型
每一層都專注做一件事情,并且每一層都需要使用下一層提供的功能比如傳輸層需要使用網(wǎng)絡(luò)層提供的路有和尋址功能,這樣傳輸層才知道把數(shù)據(jù)傳輸?shù)侥睦锶ァ?/p>
OSI的七層體系結(jié)構(gòu)概念清楚,理論也很完整,但是它比較復(fù)雜而且不實(shí)用,而且有些功能在多個(gè)層中重復(fù)出現(xiàn)。
上面這種圖可能比較抽象,再來一個(gè)比較生動的圖片。下面這個(gè)圖片是我在國外的一個(gè)網(wǎng)站上看到的,非常贊!
面試官:既然OSI七層模型這么厲害,為什么干不過TCP/IP 4層模型呢?
大白:的確,OSI七層模型當(dāng)時(shí)一直被一些大公司甚至一些國家政府支持。這樣的背景下,為什么會失敗呢?我覺得主要有下面幾方面原因:
- OSI的專家缺乏實(shí)際經(jīng)驗(yàn),他們在完成OSI標(biāo)準(zhǔn)時(shí)缺乏商業(yè)驅(qū)動力
- OSI的協(xié)議實(shí)現(xiàn)起來過分復(fù)雜,而且運(yùn)行效率很低
- OSI制定標(biāo)準(zhǔn)的周期太長,因而使得按OSI標(biāo)準(zhǔn)生產(chǎn)的設(shè)備無法及時(shí)進(jìn)入市場(20世紀(jì)90年代初期,雖然整套的OSI國際標(biāo)準(zhǔn)都已經(jīng)制定出來,但基于TCP/IP的互聯(lián)網(wǎng)已經(jīng)搶先在全球相當(dāng)大的范圍成功運(yùn)行了)
- OSI的層次劃分不太合理,有些功能在多個(gè)層次中重復(fù)出現(xiàn)。
3TCP/IP 4層模型
面試官:聊完了OSI七層模型,我們再來聊聊TCP/IP 4層模型吧!
大白:好的,這個(gè)我熟!這是目前被廣泛采用的一種模型,我們可以將 TCP / IP 模型看作是 OSI 7層模型的精簡版本,由以下4層組成:
- 應(yīng)用層
- 傳輸層
- 網(wǎng)絡(luò)層
- 網(wǎng)絡(luò)接口層
需要注意的是,我們并不能將 TCP/IP4層模型 和OSI7層模型完全精確地匹配起來,不過可以簡單將兩者對應(yīng)起來,如下圖所示:
TCP-IP-4-model
面試官:不錯(cuò)不錯(cuò)!看來是有備而來啊!
大白:嘿嘿。。。
面試官:稍等一下,我去喝點(diǎn)水,有點(diǎn)口干舌燥了,我們等下來具體聊聊 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/