網絡中的7層協議

在這裏插入圖片描述

物理層

物理層解決最基礎的傳送通道,機械、電子、定時接口通信信道上的原始比特流傳輸。例如:機器a給機器b發送比特流,機器b接收的過程。物理層定義了物理設備的標準,如網線類型、光纖的接口類型、各種傳輸介質的傳輸速率。作用就是傳輸比特流,或者是將二進制流轉爲電流強弱信號進行傳輸,到達目的後再轉換爲二進制機器碼(數模轉換、模數轉換的過程),例如網卡就是工作在這一層的。

數據鏈路層

物理尋址,同時將原始比特流轉變爲邏輯傳輸線路。在傳輸比特流的過程中可能會出現錯傳、重複傳、漏傳(數據包的丟包、重複包、出錯、亂序)等的可能,數據鏈路層定義瞭如何格式化數據來進行傳輸,以及如何對介質的訪問,這一層通常會提供錯誤檢測和糾正,確保數據傳輸的正確可靠性。將比特數據轉換爲幀,交換機工作在這一層,將幀解碼,並根據幀中包含的數據併發送到接收方。

隨着網絡節點的增加,點對點通信時需要經過多個節點,如何找到目標節點,如何選擇最佳路徑成爲首要需求,這時網絡層就出現了。

網絡層

控制子網的運行,如邏輯編址、分組傳輸、路由選擇。將網絡地址翻譯爲對應的物理地址,並決定如何從發送方路由到接收方,網絡層通過綜合考慮發送優先權、網絡擁塞程度、服務質量、可選路由的花費來決定從一個網絡中節點a到另一個網絡中節點b的最佳路徑,由於網絡層處理並智能指導數據傳送,路由器連接網絡各段,所以路由器屬於網絡層。此層的數據我們成爲數據包,主要關注TCP/IP協議中的IP協議。

隨着網絡通信需求的進一步擴大,通信過程中需要發送大量的數據,如海量文件傳輸的可能需要很長時間,而網絡在通信的過程中可能會中斷好多次,此時爲了保證傳輸大量文件時的準確性,需要對發出去的數據進行切分。切分爲一個一個的段落,即segment進行的發送,那麼其中一個段落丟失了,該怎麼辦?要不要重傳?每個段落要按照順序到達嗎?這個便是傳輸層需要考慮的問題了。

傳輸層

接受上一層的數據,在必要的時候把數據進行分割,並將這些數據交給網絡層,且保證這些數據段有效到達對竭。傳輸層解決了主機間的數據傳輸,數據間的傳輸可以是不同網絡的,並且傳輸層解決了傳輸質量的問題,該層稱之爲OS模型中最重要的一層。傳輸協議同時進行流量控制,或是基於接收方可接收數據的快慢程度,規定適當的發送速率。除此之外,傳輸層按照網絡能處理的最大尺寸將較長的數據包進行強制分割,例如以太網無法接收大於1500字節的數據包。發送方節點的傳輸層將順序分割成較小的數據片,同時對每個數據片安排序列號,以便數據到達接收方節點的傳輸層時,能以正確的順序重組。該過程即稱爲排序。傳輸層中需要我們關注的協議有TCP/IP協議中的TCP協議和UDP協議。

現在我們已經保證給正確的計算機發送正確的封裝過後的信息了,但是用戶級別的體驗好不好,難道每次都要去調用TCP去打包,然後調用ip協議去找路由自己去發送嗎?當然是不行的,所以我們要建立一個自動收發包、自動尋址的功能。於是發明了會話層。

會話層

不同機器上的用戶之間建立及管理會話。會話層的作用就是建立和管理應用程序之間的通信。

現在我能保證應用程序自動收發包和尋址了。但我要用Linux給windows發包,兩個系統語法不一致,就像安裝包一樣,EXE是不能在Linux下面去執行的。shell在windows下也是不能直接運行的,於是需要表示成。

表示層

信息的語法語義以及它們的關聯,如加密解密、轉換翻譯、壓縮解壓縮。表示層幫我們解決不同系統之間的通信語法問題,在表示層數據將按照網絡能理解的方案進行格式化,這種格式化也因所使用網絡的類型不同而不同。

此時雖然發送方知道自己發送的是什麼東西,轉化成字節數組之後有多長,但接收方肯定不知道。所以應用層的網絡協議誕生了。

應用層

規定發送方和接收方必須使用一個固定長度的消息頭,消息頭必須使用某種固定的組成。而且消息頭裏必須記錄消息體的長度等一系列信息,方便接收方能夠正確的解析發送方發送的數據。應用層旨在讓你更方便的應用從網絡中接收到的數據。至於數據的傳遞,沒有該層你也可以直接在兩臺電腦間直接傳遞,只不過傳來傳去就是一堆0、1組成的字節數組。該層需要我們重點去關注的是與之相對應的TCP/IP協議中的HTTP協議。

以上就是關於OSI各層次的劃分。從應用層開始,都會對要傳輸的數據頭部進行處理。最終由物理層通過以太網電纜等介質將數據解析成比特流在網絡中傳輸。數據傳遞到目標地址,並自底而上的將先前對應的頭部給解析分離出來,這就是我們的網絡數據處理的整個流程。
在這裏插入圖片描述

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