簡介
OSI代表開放系統互聯(Open Systems Interconnection),這是國際標準化組織(ISO)提出的一個概念模型,用於描述網路通訊的功能劃分。簡單來說,OSI模型把複雜的網路通訊過程分成了七個不同的層次,每一層都有其特定的功能和角色。
每一層都有自己的頭資料,在封裝和解封的時候需要處理每一層的頭部,通常頭部定義了傳送源和目標的一些資訊,比如資料鏈路層,資料鏈路層的頭部封裝了源MAC和目標MAC等資訊
物理層
簡單點說,物理層就是負責傳輸“1”和“0”的地方。比如我們家裡上網用的網線、光纖、WiFi訊號,這些都屬於物理層的範疇。它主要管的是“怎麼把電訊號或者光訊號從一個地方傳到另一個地方”。所以,網線裡傳的其實就是一串串的電訊號,你可以理解成一堆小電流在網線裡“跑步”,這些小電流的組合就形成了資料。
在物理層,我們不用考慮資料是什麼,只需要保證這些訊號能準確地傳輸過去。就像我們打電話的時候,電話線傳的只是聲音的振動,不關心你說的具體內容是什麼。所以,物理層的任務就是把這些“振動”準確地傳到對方那裡,不管這個“振動”是用來幹什麼的。
WiFi訊號其實就是一種電磁波,電腦和路由器透過這些電磁波來傳輸資料。這裡的電磁波就是物理層的“工作工具”。另外,你家裡網線插到電腦上,那根網線也是物理層的一部分。再比如光纖寬頻,光纖裡傳輸的就是光訊號,這也是物理層在工作。
資料鏈路層
資料鏈路層就像是網路通訊中的“郵遞員”。它負責把資料打包成一個個“包裹”(我們叫做“幀”),然後負責把這些“包裹”送到正確的地方,同時還要確保這些“包裹”在傳輸過程中不出錯。
幀概念
想象一下,你要寄一個包裹,你需要把東西裝進一個盒子裡,寫上收件人的地址,然後交給快遞員。資料鏈路層的工作也是類似的,它把資料裝進一個“框架”裡,這個框架裡包括了收件地址(MAC地址)和傳送地址,還有一些用於檢測錯誤的東西,就像包裹裡的防震材料一樣,確保東西安全送達。
MAC地址
資料鏈路層用的是MAC地址,這有點像每個裝置的身份證號碼。每個網路卡都有一個獨一無二的MAC地址,網路中的交換機就是根據這些地址來判斷資料應該送到哪裡。
交換機
交換機是資料鏈路層中一個重要的裝置。它會根據裝置的MAC地址,把資料轉發到正確的裝置上。可以想象一下交換機是一座大樓裡的前臺,所有的信件先送到前臺,然後前臺根據收件人的名字和房間號,把信件分發到各個房間。
網路層
網路層就像是“導航系統”。它負責決定資料包要走哪條路,從傳送方到接收方。這個過程叫做“路由選擇”。網路層最重要的概念之一就是IP地址。你可以把IP地址想象成網路中的“地址”,每個裝置都有一個唯一的IP地址,就像每棟房子都有一個唯一的門牌號一樣。當你在網上發資訊,資料包就像郵件一樣,要根據IP地址找到收件人。
路由器
在網路層中,有一個重要的裝置叫做路由器。路由器的作用就像是高速公路上的路標,指引資料包從一臺裝置走到另一臺裝置。如果有多條路可以到達目的地,路由器會選擇最快的一條。這就像你開車時,GPS會幫你選擇最短時間到達目的地的路線一樣。
資料包
在網路層,資料被稱為資料包。資料包包含了傳送地址和接收地址,就像郵寄包裹上的寄件人和收件人地址。網路層負責把這些資料包從傳送方的IP地址送到接收方的IP地址,中間可能經過很多路由器,就像包裹在寄送過程中經過很多中轉站一樣。
資料包分組和重組
因為網路中的資料傳輸效率問題,有時候一個大的資料會被分成多個小的資料包傳輸。網路層負責把這些小資料包分開傳送,到達目的地後再重新組合起來,就像拼圖一樣。
網路層的重要性
網路層在網路通訊中起著至關重要的作用。它確保資料能夠找到最優路徑,從一個裝置傳輸到另一個裝置。如果沒有網路層,我們的資料就像沒有導航系統的車輛,很容易迷路,無法到達目的地。
傳輸層
傳輸層就像是網路通訊中的“可靠搬運工”。它的主要任務是確保資料能夠從一個地方安全、完整、準確地搬運到另一個地方。
埠
傳輸層有一個很重要的概念叫做埠號。你可以把埠號理解為“房間號”。在一個IP地址下,埠號幫助確定具體是哪一個應用程式要接收資料。比如你的電腦有一個IP地址,但你同時在用瀏覽器上網、用QQ聊天、用郵件客戶端收郵件,這些應用程式透過不同的埠號來區分接收到的資料。埠範圍0-65535,0-1023為系統佔用埠
TCP和UDP
在傳輸層中,有兩個主要的協議,分別是TCP(傳輸控制協議)和UDP(使用者資料包協議)。這兩個協議就像是兩種不同的搬運工,有著不同的工作方式。
TCP
TCP可以理解為“講究的搬運工”。它在搬運資料時非常仔細,確保每一塊資料都能準確無誤地送到目的地。如果在搬運過程中有任何資料丟失或者出錯,它會重新搬運。這就像你寄包裹時選擇了帶有追蹤和保險的快遞服務,確保包裹安全送達。
一個TCP連線通常經歷以下幾個階段:
建立連線(SYN-SYN/ACK):客戶端傳送SYN包,伺服器回應SYN-ACK包,客戶端再傳送ACK包,完成三次握手。
資料傳輸:雙方開始交換資料。
斷開連線(FIN-ACK):當一方準備結束連線時,傳送FIN包,對方回應ACK包,然後等待對方也傳送FIN包。
等待關閉(TIME-WAIT):在雙方傳送完FIN包並確認對方已接收後,發起關閉的一方進入Time-Wait狀態。
UDP
UDP可以理解為“隨意的搬運工”。它在搬運資料時不做過多檢查,直接把資料發出去,不管對方有沒有收到、有沒有出錯。這樣做的好處是速度快,缺點是可靠性低。它就像你寄包裹時選擇了普通的平信,沒有追蹤和保險,只能祈禱包裹順利到達。
UDP適用於那些對速度要求高、對可靠性要求不那麼高的應用,比如影片直播、線上遊戲等。
會話層
話的建立和結束,在分開的計算機上的兩種應用程式之間建立一種虛擬連結,這種虛擬連結稱為會話(session)。會話層透過在資料流中設定檢查點而保持應用程式之間的同步。允許應用程式進行通訊的名稱識別和安全性的工作就由會話層完成。
表示層
資料的表示、壓縮和加密。定義由應用程式用來交換資料的格式,該層負責協議轉換、資料編碼和資料壓縮。轉發程式在該層進行服務操作。
應用層
使用者介面、應用程式。 應用層嚮應用程序展示所有的網路服務。當一個應用程序訪問網路時,透過該層執行所有的動作。
常見協議
總結
如果你對網路通訊有更多的疑問或者感興趣的話題,歡迎在評論區留言