FPGA學習之以太網接收發送功能實現(OSI網絡分層)(一)

FPGA學習之以太網接收發送功能實現(OSI網絡分層)(一)

1. ISO提出的OSI

在學習FPGA的以太網功能實現之前,首先必須瞭解究竟什麼是網絡?

目前有一種網絡模型被國際上廣泛接受,並且能夠以抽象的方式來描述現在和未來網絡的模型,這就是ISO組織提出的OSI模型。

ISO組織認爲必須建立一個設計網絡協議時可以使用的模型。從這句話中得知,ISO提出的OSI模型是爲協議設計服務的,這是一個大的模型框架,OSI模型包括了各種基本的網絡功能,在應用到各個協議設計時將會產生各自協議的網絡模型,例如TCP/IP協議模型。

1.1 7層OSI模型

在這裏插入圖片描述

上圖中詮釋了:每一層都不能存在真空之中,比如傳輸層它必須對上下兩層的情況有所瞭解掌握,並且能夠與這些層進行通信。

在OSI模型的詳細說明中,ISO沒有爲模型設定任何特定的網絡標準,這就是前文所說的OSI是一個大的模型框架。

OSI參考模型對各層作用做了一個粗略的界定,許多通信協議,都對應OSI參考模型7個分層中的某層。

正因爲如此,OSI模型是開放和健碩的,能夠用於現有網絡規範和設計出未來網絡的標準,這就是ISO組織的本意。

1.2 OSI模型各層作用

在這裏插入圖片描述

在這裏插入圖片描述

術語解釋:

節點:節點就是連接到網絡上的任何一臺設備,通常情況下,節點指的是計算機。

先從最底層的物理層看起:

1.2.1 物理層

從上圖中看,該層負責0,1比特流(0,1序列)與電壓的高低,光的閃滅之間的互換。

這是網絡模型的底層,是建立後面各層的基礎,物理層也可稱爲硬件層,硬件是指計算機,網絡電纜或連接兩臺或更多計算機時選擇使用的任何物理設備。

1.2.2 數據鏈路層

該層負責將物理層轉換的0,1序列劃分爲具有意義的數據幀傳送給對端。(即數據幀的生成和接收。)

在物理層上建立物理連接的目的是將數據送到這個鏈接上,數據鏈路層就是起這個作用。

假設有一組數據,在物理層之上傳輸,數據鏈路層必須建立一個能夠容納這些信息的數據包,識別負責接收數據的節點目的地,並且提供低級的錯誤檢查功能。

1.2.3 網絡層

該層負責尋址和路由選擇,即如何將數據傳輸到目的地址,其中目的地址可以是多個網絡通過路由器連接而成的某一個地址。

在數據鏈路層安裝就緒後,並必須擁有相應的邏輯來將信息傳送到網絡上不同的節點,但是網絡上由許多不同的節點組成,這些節點使用不同的物理層和數據鏈路層。

1.2.4 傳輸層

該層起到可靠傳輸的作用,圖中舉例是否有數據丟失,它是在通信的雙方節點上進行處理,不是在路由器上處理。

傳輸層解決的主要問題就是確定所接收的數據確實是我們應該要接受的數據。

因爲在網絡傳輸中,同一時刻傳輸的數據量是有限的,因此傳輸層會把得到要發送的數據拆分成獨立的數據包,在接受節點的傳輸層,再將這些數據包組成完整的信息。

1.2.5 會話層

該層負責建立和斷開通信連接(數據流動的邏輯通路),以及數據的分割等數據傳輸相關的管理。即圖中表示的何時建立連接,何時斷開連接,以及保持多久的連接。

1.2.6 表示層

該層主要是負責數據類型格式的轉化,具體來說,可以將應用層的處理信息轉換爲適合網絡傳輸的格式,或者將來自下一層的數據轉換爲上層能夠處理的格式。

1.2.7 應用層

爲應用程序提供服務並規定應用程序中通信的相關細節,包括文件傳輸,電子郵件,遠程登錄(虛擬終端等協議)

1.3 OSI模型通信過程

基於OSI模型,我們可以利用網絡把數據從一個地方傳送到另一個地方,下圖就是基於OSI模型的數據發送,通過實例來講解數據傳輸在網絡中的處理。

在這裏插入圖片描述

從上圖看出,當發送端主機A從應用層,表示層到物理層由上至下按照順序傳輸數據,而接收層則從物理層,數據鏈路層到應用層由下至上的想每個上一級分層傳輸數據。

每個分層在處理由上一層傳過來的數據時可以附上當前層的協議所必需的的“首部”信息,然後接收端對收到的數據進行數據“首部”與內容的分離,再轉發給上一層,並最終將1發送端的數據恢復原狀。

假如用戶A要給用戶B發送“早上好”的郵件,網絡會怎樣進行處理呢?理解每一層給數據附加的首部信息是何含義?理解首部信息其實就是每一層應該要做的信息處理職責。

1.3.1 應用層

在這裏插入圖片描述

用戶A會在主機A上編輯郵件內容爲“早上好”,指定收件人爲用戶B;

即“用戶輸入郵件內容後發送給目標地址”這就相當於應用層。

在點擊“發送”按鈕的那一刻,就進入了應用層協議的處理。

該層協議會在“早上好”的前端附加一個首部信息,主機B的應用層收到由主機A發送過來的數據後會分析數據首部和數據正文,並將郵件保存。

1.3.2 表示層

在這裏插入圖片描述

發送端表示層會將應用層傳輸下來的“早上好”這段文字根據其編碼格式被轉換成爲“統一的網絡數據格式”,而接收端會將轉換成的“統一的網絡數據格式”再恢復成“主機B特定的數據格式”,然後在進行相應處理,否則在接收端收到的郵件內容就是亂碼。

而且表示層和表示層之間爲了識別編碼格式也會附加首部信息,從而將實際傳輸的數據轉交給下一層處理。

1.3.3 會話層

在這裏插入圖片描述

會話層也像應用層或表示層那樣,在其收到“早上好”數據前端附加首部信息後再轉發給下一層。

會話層首部信息會記錄數據傳送順序等相關信息。

到此爲止,上面的例子說明了在應用層寫入數據會經過表示層格式化編碼,再由會話層標記發送順序後才被髮送出去的大致過程,知道會話層只是對何時建立連接,何時發送數據等問題進行管理,實際上並不具備實際傳輸數據的功能,真正負責網絡傳輸具體數據的是會話層以下的分層。

1.3.4 傳輸層

在這裏插入圖片描述

在這一層會確保所傳輸的數據能夠到達目標地址。

比如,主機A將“早上好”發送給主機B,期間可能存在某些原因導致數據被破壞,或者只有一部分數據到達主機B。

假設主機B只收到了“早上”這一部分數據,那麼它會在收到數據後將自己沒有收到完整數據的信息告知主機A,主機A得知這一消息後會將後面的“好”數據重發給主機B,並確認主機B是否收到。

因此傳輸層一個重要作用就是確保數據傳輸的可靠性。

爲了確保這一可靠性,也會在傳輸的數據附加首部信息以識別這一分層的數據,實際上將數據傳輸給對端的處理是由網絡層來完成的。

1.3.5 網絡層

在這裏插入圖片描述

發送端網絡層是在衆多網絡節點中,尋找主機B目標地址,將數據從發送端主機發送到接收端主機B。
網絡層會將從上層收到的數據和目標地址信息等一起發送給下面的數據鏈路層,進行後面的處理。

在這裏插入圖片描述

上圖可以看出網絡層與數據鏈路層的最大區別,因爲網絡層和數據鏈路層都是基於目標地址將數據發送給接收端。

但是網絡層負責的是數據接收的最終地址即主機B目標地址,而數據鏈路層則只負責發送一個分段內的數據,例如主機A與主機B之間存在多層路由器或交換機。

1.3.6 數據鏈路層及物理層

在這裏插入圖片描述

首先我們要明確通信傳輸實際上是通過物理的傳輸介質實現的,數據鏈路層的作用就是在這些通過傳輸介質相連的設備之間進行數據處理。

物理層中,將數據的0,1轉換成爲電壓和脈衝光傳輸給物理的傳輸介質,相應直連的設備之間使用地址實現傳輸,這種地址稱爲MAC地址。

採用MAC地址,目的是爲了識別連接到同一傳輸介質上的設備,因此,在這一分層中將包含MAC地址信息的首部附加到從網絡層轉發過來的數據,將其發送到網絡上。

1.3.7 主機B的處理

上面圖片可以看出接收端主機B上的處理流程正好與主機A相反,它從物理層開始將接收到的數據逐層發給上一分層來進行處理,從而使用戶B最終在主機B上使用郵件應用來接收用戶A發送過來的郵件,並讀取郵件內容“早上好”。

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