網路是七層、五層還是四層?

哎呀我的天吶發表於2022-10-09


你大體上有這麼兩種選擇:

應用程式包辦一切。程式把應用層的資料,按某種編碼轉化為二進位制資料,然後程式去操控網路卡,

把二進位制資料傳送到網路上。

這期間,通訊的連線方式、傳輸的可靠性、速度和效率的保證等等,都需要這個程式去實現。

然後下次開發另外一個應用的時候,就把上面這些活,再幹一遍。  

應用程式、作業系統、網路裝置等環節各自分工。

應用程式只負責實現應用層的業務邏輯,作業系統負責連線的建立、處理網路擁塞和丟包亂序、最佳化網路讀寫速度等等,

然後把資料交給網路卡,後者和交換機等裝置做好聯動,負責二進位制資料在物理線路上的傳送和接收。  

那麼顯然,第一種大包大攬的方式,實現難度太大、耦合度太高,怎麼看都是一個“反面典型”。

所以,我們應該選擇第二種,也就是分層的方式去實現。  

你有沒有發現,其實這個思路,跟程式設計的思想是類似的。

在程式設計中,我們需要把一些邏輯抽象為函式或者物件,以實現更好的解耦和複用。

在網路世界裡也是如此,每一層幹好自己的分內事,那麼所有的層次配合起來工作的時候,就顯得有條不紊了。

說到具體的分層模型,你應該會想到兩種比較有名的方案。

對,它們就是 OSI 的七層模型,和 TCP/IP 的四層 / 五層模型。

這兩種模型的最大區別,就是前者在傳輸層和應用層之間,還有會話層和表示層,而後者沒有。

我們來看一下示意圖:  



那在這裡,你可能還會想:這兩種模型哪種用得最多,或者說,哪種更合理呢? 

其實我覺得倒不用過於糾結在“誰比誰更好”這個點上,如果我們理解了每一層的作用, 那麼就不會被表象上的層級所束縛了。

事實上,兩種分法都有可取之處。


一般來說,七層模型在我們工作當中談論得更多些。比如,我的同事會找過來說“你幫我 建一個七層規則吧”。

這裡的七層,就是指應用層,他說的“七層規則”呢,可能是 HTTP 路由規則,比如把符合某種條件的 HTTP 請求,

分流到某個特定的後端叢集。


還有一些場景,也是比較適合用七層模型來解釋的。比如,TLS 雖然在 TCP 之上,按 TCP/IP 模型就要被歸入應用層。

但事實上,在 HTTPS 的場景下,HTTP 協議就是執行在 TLS 協議之上的,那麼是不是把 HTTP 和 TLS 分到不同的層次更合適呢?正好在七層模型 裡,第五層和第六層,可以分別代表 TLS 的會話保持功能和資料加解密這種表示層的功 能。




不過,會話層和表示層的協議確實比較少。

從控制模型複雜度的角度來看,如果把這兩層 都合併到應用層,那麼模型倒是比較簡單,也適合入門學習的。

所以從這一點上看, TCP/IP 模型也有可取之處。 這裡你可能稍有疑問,為什麼 TCP/IP 還有四層和五層模型這兩種說法呢?

其實五層模型就 是 OSI 的前四層,加上一個應用層。

這樣的話,這個五層模型跟 OSI 七層模型,差異就比四層模型又縮小了一點。


所以,你現在應該明白了,兩種分層模型的最大差異,其實還是在會話層和表示層上面。 

第一到第四層,已經基本統一了。

而它們的最高層,雖然一個叫第七層,一個叫第四層或 者第五層,表面上雖然並不一致,但實際上都可以用“應用層”來代替。

這樣既避免了可 能的誤解,也更加準確地表示了這一層的具體用途。





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2917372/,如需轉載,請註明出處,否則將追究法律責任。

相關文章