計算機網絡爲什麼需要抽象出五層模型?

多點頭髮,少點代碼

我是龍叔,一個分享互聯網技術和心路歷程的大叔

本文已經收錄至我的GitHub,歡迎大家踊躍star 和 issues。

https://github.com/midou-tech/articles

最近很忙,寫技術文章還是很花費時間的。但是,就在前幾天出了一篇TCP粘包問題的文章 (TCP粘包,難道說這是一個僞命題???),反映不錯。本來計劃計算機網絡文章慢慢的出,現在看來必須的加快速度了。

龍叔在學習網絡的時候有這樣幾個疑惑:

  • 爲什麼需要抽象出五層模型出來?
  • 難道不是直接在網線(光纖傳輸)中傳輸數據就好了麼?大不了到了端點用的是WIFI傳輸(無線信號)。

這兩個問題真的很困惑我,不知道大家有沒有這樣的疑惑?如果有的話,龍叔將爲你答疑解惑。如果有其他的疑惑歡迎加我微信溝通 (公衆號回覆【龍叔】即可獲得龍叔的聯繫方式)。

在回答問題之前我先帶你領略下使用最爲廣泛的五層模型,分別是哪五層?各層解決了什麼問題?

五層模型是哪五層?

網絡模型

左邊是OSI的七層模型,這模型很牛逼。但是現在基本是存在教科書的啦,學習網絡的同學都是知道有這個模型,實際情況使用很少的。

右邊是TCP/IP五層分層模型。分別是物理層(硬件)、數據鏈路層(網卡層)、網絡層(互聯網層)、傳輸層、應用層。在日常工作中接觸最多的是上兩層,偶爾會去觸碰網絡層。數據鏈路層和物理層不是我們工作範圍。當然如果是一些專門的網絡安全部門,網管(不是網吧的網管)等崗位,下面幾層就是非常熟悉的。

五層模型還是很清楚明瞭的,每層用到的重要協議都表示在圖中,還表示了操作系統的內核工作範圍和用戶工作範圍。

各層解決了什麼問題?

應用層:

應用層是網絡體系架構中的最高層。這意味着什麼?想想就知道,最高層就是要和人交互的層次嘛。

應用層是計算機網絡與用戶交互的接口或者界面直接向用戶提供服務。

提供哪些服務呢?

這個…,就非常多了,比如Web服務、E-mail服務、DNS服務、DHCP服務、FTP服務等等。

所以很明瞭,應用層解決的問題就是如何爲用戶提供服務,以及提供高效、可靠、滿意的服務。如何解決這些問題也就是我們這些攻城獅存在的必要了,根據不同的業務場景用不同的方法解決這些問題。例如使用多線程、協程,高併發的web框架,使用epoll處理模式,分佈式處理等等技術來解決提供高效、可靠、滿意的服務。

總結下,應用層是爲用戶提供服務接口或者界面,同時要解決服務的高效、可靠、滿意。

傳輸層

負責端到端的通信,是面向網絡通信的低三層和麪向信息處理的高三層之間的中間一層,起到橋樑作用。很明顯了,傳輸層解決的問題就是端到端的傳輸問題。

看到這句話肯定很多人有疑問,先別說,繼續看(我知道有人會說,網絡層不是已經把數據轉發到對應的主機了麼,爲何還要傳輸層?)。

位於兩臺網絡主機間的真正數據通信主體不是這兩臺主機,而是兩臺主機中的各種網絡應用進程,也就是應用程序。一臺主機上有很多應用程序,很多應用程序都在進行網絡通信,這時候就必須使用到傳輸層的知識去解決了。

怎樣完成端到端的傳輸呢?

分爲兩個步驟:一是虛擬傳輸連接的建立(此處仍僅針對面向連接的傳輸層協議),二是源端用戶數據沿着傳輸連接傳送到目的端。

在整個數據傳輸過程中,傳輸層服務需要完成以下8個方面的基本功能:傳輸層尋址、傳輸連接建立、數據傳輸、傳輸連接釋放、流量控制、擁塞控制、多路複用和解複用、崩潰恢復。

這裏面每個功能都能細說一篇文章,這裏就不一一展開了,後面會出系列的文章,所以點關注,不迷路。每個功能都是面試的考點,所以我後面一定會快速更新出來的。

總結下,傳輸層主要是爲了解決端到端(這裏的端到端指的是進程到進程)的通信,起到網絡通信橋樑作用。

網絡層

網絡層也被稱爲中轉層,是網絡體系結構中非常重要的一層,在技術上又是非常複雜的一層,因爲它既要解決不同網絡的節點間通信的路由和協議識別問題,又要通過路由選擇策略解決網絡擁塞問題,儘可能提高網絡通信的可靠性。

網絡層解決的主要問題是,從A主機把數據運送到B主機是走高速呢、飛機呢、還是火車呢或者是多種混合的方案呢。一句話就是,網絡層關注的是如何將分組從源端沿着網絡路徑傳送到目的端(這個端指的是主機不是應用程序)。

爲了實現這個目標,網絡層必須知道通信子網的拓撲結構,並且在拓撲結構中選擇適當的路徑。同時網絡層還必須謹慎地選擇路由路徑,以避免發生某些通信線路和路由器負載過重,而其他線路和路由器空閒的情形。

總結下,網絡層主要是爲了解決不同網絡之間數據傳輸和轉發問題。

數據鏈路層

物理層中也有許多規程或協議,但它們是用來構建物理傳輸線路、建立物理意義的網絡通信,不是用來控制數據傳輸的。

設計數據鏈路層的主要解決的問題就是在原始的、有差錯的物理傳輸線路的基礎上,採取差錯檢測、差錯控制與流量控制等方法,將有差錯的物理線路改進成邏輯上無差錯的數據鏈路,以便向它的上一層(網絡層)提供高質量的服務。一句話總結就是 控制數據傳輸。

總結下,數據鏈路層是爲了解決數據傳輸的控制作用。

物理層

物理層位於各計算機網絡體系結構的最底層,主要負責在物理介質上爲數據鏈路層提供原始比特流傳輸的物理鏈接

物理層解決的問題就是數據傳輸。上面的所有層都是封裝數據和管理,物理層是傳輸數據的唯一出口,所有數據到達物理層都會變成二進制的載波信號。

總結下,物理層就是真正傳輸數據。

爲什麼不是直接在物理線路中進行通信就行了?而是搞出這麼多層網絡模型呢?

我覺得在學習計算機網絡時能思考這個問題的都是非常🐂🍺的人,比如龍叔我😆。

物理層是物理線路的抽象,物理層解決的主要問題傳輸就是數據傳輸,也是網絡通信中唯一的數據傳輸出口。其實物理層就相當於日常交通網絡中的各種道路,如公路、鐵路和航線,它們是我們出門旅行必須要依靠的基礎設施。

但是物理層不是針對具體的傳輸介質、設備和通信協議的,因爲它們可以有許多種選擇(如傳輸介質中就可以有同軸電纜、雙絞線和光纖等),只要能實現物理層的某種功能就行了。不同的傳輸介質和設備選擇,必須要有對應的通信協議支持,而且這也決定了不同的選擇有不同的物理層性能。

就像路有好多種一樣,如有泥巴路、沙子路、水泥路、柏油馬路、普通鐵路、高速鐵路等,這些不同的路可以承載的重量和速率都不一樣。

傳輸介質不同,各種傳輸介質傳輸速率不同;所有人都在進行傳輸,怎麼管理這些人;高鐵、航線不可能通到家門口;就算到了家門口怎麼把這些數據完整交付給家中的某個人呢;

所以就必須抽象出這些層來解決這些問題。物理層專門做數據傳輸(好比基礎交通設施)、數據鏈路層制定傳輸規則(好比交通規則)、網絡層把各個交通線路連接起來(就好比各個交通樞紐站)、傳輸層是端到端的符數據通信(好比把快遞小哥把包裹移交到你的手裏)、應用層負責提供服務(好比包裹到你手裏了,你在享受包裹裏面的禮物)。

是不是有些明白爲啥需要抽象出多層了,是的。

想想都知道要是光有物理層那網絡通信沒法玩了,數據都是二進制,透明傳輸,數據還有可能亂序,丟數據,數據被篡改等等問題。

計算機網絡通信過程圖

本文講清楚了文章開頭的幾個疑惑,至於各層中詳細的功能和麪試常考的點,篇幅有限,我和大家一起期待下一篇文章。關注我,精彩內容不錯過,微信搜索 龍躍十二 即可關注。

覺得本篇文章對你有幫助,非常感謝你能幫我點個贊,你的小小鼓勵會成爲我創作的動力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章