計算機原理 你真的理解資料鏈路層嗎?

2021-09-24 20:10:02 字數 3324 閱讀 3529

最新個人部落格 shankusu.me

學過計算機網路的朋友們應該都知道osi七層模型,今天要聊的資料鏈路層是屬於七層模型中的第二層。所以應該算是計算機網路體系中的底層了。

資料鏈路層使用的通道主要有兩種型別:

點對點通道:也就是字面意思,點對點得通訊方式。

廣播通道:這種通道是一對多的方式,所以整個過程也比較複雜。必須使用一些通道協議來協調網路中的主機資料傳送。

我們先來通過乙個例子資料鏈路層所處的位置。下圖展示的是典型的網路圖。

主機1主機2傳送資料,下圖展示的資料真正流動的路徑(畫的有點醜,意思到了就行了):

當我們專門研究鏈路層的時候,我們只需要關心鏈路層即可。於是,主機1主機2傳送資料時,我們可以認為是從左到右的資料傳遞。如下圖:

鏈路層的意義

物理層的線路有傳輸介質與通訊裝置組成,位元流在傳輸介質上傳輸時肯定會存在誤差的。這樣就引入了資料鏈路層在物理層之上,採用差錯檢測、差錯控制和流量控制等方法,向網路層提供高質量的資料傳輸服務。

對於網路層,由於鏈路層的存在,而不需要關心物理層具體採用了那種傳輸介質和通訊裝置。

那鏈路層的功能有哪些呢?需要完成哪些事情呢?

鏈路管理,幀同步

流量控制,差錯控制

資料和控制資訊分開

透明傳輸和定址

怎麼組幀的呢?

其實就是在幀的前後新增首部和尾部,這樣就能界定幀的邊界了。一幀多大呢?mtu就是幀的資料部分的最大長度,也就是ip資料報的最大長度。如下圖:

怎樣進行幀的界定呢?

答案就是在幀的開始和結束的地方加上特定的字元,一般是0x7e,如下圖:

怎樣透明傳輸呢?

答案就是如果幀內部的資料出現了0x7e,則要轉義,轉義的方法如下:

(1) 字元填充

因為0x7e=0111 1110,字元填充是在這兩個位元組中,填充進0xd5。變為(0x7d,0x5e)的組合。

0111 1101 1001 1110

差錯的產生的原因

差錯是不可避免的。而且不同的傳輸介質的差錯程度也是不同的。鏈路層的任務就是分析差錯產生的原因,檢查差錯,然後糾正差錯。下面的圖展示了差錯的**

當資料訊號從傳送端傳送到物理線路時,由於物理線路存在雜訊,因此資料訊號經過物理線路的雜訊,到達接收端時,已經是資料+雜訊的疊加。這就是差錯的**。

怎樣進行差錯控制呢?

差錯控制分為兩種不同的策略:

糾錯碼:每個傳輸的分組帶上足夠的冗餘資訊,接收端能發現並自動糾正差錯。

檢測嗎:分組包含能夠發現差錯的冗餘資訊,接收端能夠發現差錯。

由於糾錯碼實現比較複雜,檢測碼雖然不能糾錯,但是足夠簡單,能夠檢測出差錯,配合重傳機制即可。所以廣泛採用檢測碼。

檢測碼有迴圈冗餘編碼(crc)等方式,工作原理就暫且略過,講起來很費篇幅。

資料鏈路的工作過程到底是怎樣的?

資料鏈路層的工作過程分為三個階段:建立資料鏈路,幀傳輸,釋放資料鏈路;結合資料鏈路和物理層的流程如下圖:

滑動視窗協議

前面提到了用檢錯碼來檢測幀傳輸過程中是否發生了差錯,如果發生了錯誤,就需要滑動視窗協議來解決。滑動視窗協議分為兩種型別:

單幀停止等待協議:傳送端傳送1幀之後,需要等待接受端返回確認幀,如果接收到ack,表示ok,傳送下一幀;如果接收到nak,表示傳輸錯誤,重新傳送該幀。如下圖所示(字反了見諒):

多幀傳送協議:分為兩種型別,後退n幀(gbn)拉回重發方式和選擇重發(sr)方式。前者是只要有一幀傳送失敗,則當前傳送的全部幀都重新傳送,這樣就會導致重發很多幀,流量控制不佳。後者是當前傳送的幀中有差錯,在下次傳送的時候只是重新傳送錯誤的幀就行了。

滑動視窗機制?

在gbn和sr中,傳送端可以連續傳送多個資料幀,從流量控制的角度出發,傳送端連續傳送資料幀的數量必然會收到限制: 

1. 接收端的緩衝區可以用於接受新的幀的容量 

2. 接收端處理資料幀的速度 

3. 接收端需要等待重傳的幀的數量

引入滑動視窗的目的:對可以連續發出的最多幀數(已發出但未確認的幀)作限制

**網路

傳送視窗(ws):表示在收到對方確認的資訊之前,以連續發出的最多資料幀數 

接受視窗(wr):可以連續接收的最多資料幀數(只有序號在視窗內的幀才可以接收,否則丟棄)

計算機資料鏈路層

效率效率效率!三個基本問題 透明傳輸 差錯檢測 特點 組成 協議格式 ppp是面向位元組的,長度都是整數位元組 當ppp使用非同步傳輸的時候,轉義字元被定義為0x7d,並使用位元組填充,轉義字元被定為為0x7d,0x5d,7e被定義為0x7d,0x5e當ppp使用同步傳輸的時候,使用零位元填充,有5...

計算機網路 資料鏈路層

一 簡介 資料鏈路層屬於第二層,資料鏈路層試使用物理層提供的服務在通訊通道上傳送和接受位元。它要完成一系列的功能包括 1 向網路層提供乙個定義良好的服務介面。2 處理傳輸錯誤。3 調節資料流,確保慢速的接收方不會被快速的傳送方淹沒。為了實現這個目標,資料鏈路層從網路層獲得資料報,然後將這些資料報封裝...

計算機網路 資料鏈路層

在iso提出的osi七層模型中,資料鏈路層處於第二層。在這一層,我們重點關注點對點之間的通訊。關於點對點通訊,是指網內任意兩個使用者之間的資訊交換。在這裡不過多的搬抄書上的概念,計算機網路的學習應當是以生活中的實踐作為基礎,來加深理論的理解。首先,如同在概述中提到的一樣,我們研究網路應當時刻站在分層...