資料鏈路層主要功能

2021-08-17 23:10:04 字數 2918 閱讀 5033

透明傳輸

個人理解,透明傳輸其實就是指無論是什麼報文都可以傳輸,非透明傳輸就是指某些特殊字元不能傳輸,在計算機網路中,透明傳輸在資料鏈路層提到過,在資料鏈路層將網路層協議封裝成幀時,會在首部和尾部分別新增soh以及eot這兩個特殊字元,接收方是根據這兩個字元來確定幀首和幀尾的,如果上層協議傳送過來的資料(即鏈路層的資料部分)包含eot,那麼接收方在解析這個幀的時候就會誤以為資料已經結束,所以,如果鏈路層對這種情況沒有特殊處理,那麼就可以理解鏈路層為非透明傳輸(因為無法傳輸eot這個字元),但是資料鏈路層通過對這個字元新增轉移符(如果網路層資料中還存在轉移符,就再新增乙個轉移符)的辦法來使資料部分可以傳輸eot字元,就實現了透明傳輸。

差錯控制

一種保證接收的資料完整、準確的方法。因為實際**線總是不完美的。資料在傳輸過程中可能變得紊亂或丟失。為了捕捉這些

錯誤,傳送端數據機對即將傳送的資料執行一次數**算,並將運算結果連同資料一起傳送出去,接收資料的數據機對它接收到的資料執行同樣的運算,並將兩個結果進行比較。

最常用的差錯控制方法有奇偶校驗法、迴圈冗餘校驗法和漢明碼等。這些方法用於識別資料是否發生傳輸錯誤,並且可以啟動校正措施,或者捨棄傳輸發生錯誤的資料,要求重新傳輸有錯誤的資料塊
接收端在收到物理層上交的位元流後,就能根據首部和尾部的標記,從收到的位元流中識別幀的開始和結束。

分組交換的乙個重要概念:就是所有在網際網路上傳送的資料都是以分組(即ip資料報)為傳送單位。

網路層的ip資料報傳送到資料鏈路層就成為幀的資料部分。在幀的資料部分的前面和後面分別新增上首部和尾部,就構成了乙個完整的幀。

幀長等於資料部分長度加上幀首部和幀尾部的長度,而首部和尾部的乙個重要作用就是進行幀定界(即確定幀的界限)。

首部和尾部還包含許多必要的控制資訊,在傳送幀時,是從幀首部開始傳送。

各種資料鏈路層協議都要對幀首部和幀尾部的格式有明確的規定。

為了提高幀的傳輸效率,應當使幀的資料部分長度盡可能大於首部和尾部的長度。但是,每一種鏈路層協議都規定了幀的資料部分的長度上限——最大傳送單元mtu(maximum transfer unit)。

當資料是由可列印的ascii碼組成的文字檔案時,幀定界可以使用特殊的幀定界符。

控制字元soh(start of header)放在一幀的最前面,表示幀的首部開始。另乙個控制字元eot(end of transmission)表示幀的結束。他們的十六進製制編碼分別是01(二進位制是00000001)和04(二進位制是00000100)。 

當資料在傳輸中出現差錯時,幀定界符的作用更加明顯。假定傳送端在尚未發完乙個幀時突然出現故障,中斷了傳送。但隨後很快又恢復正常,於是重新從頭開始傳送剛才未傳送完的幀。由於使用了幀定界符,在接收端就知道前面收到的資料時個不完整的幀(只有首部soh,沒有傳輸結束符eot),必須丟棄。而後面收到的資料有明顯的幀定界符(soh和eot),因此這是乙個完整的幀,應當收下。

當傳送的幀使用文字檔案組成的幀時(文字檔案中的字元都是從鍵盤上輸入的),其資料部分顯然不會出現像soh或eot這樣的幀定界控制字元。可見不管從鍵盤上輸入什麼字元都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。

問題:當資料部分是非ascii碼的文字檔案時(如二進位制**的電腦程式或影象等),情況就不同了,如果資料中的某個字元的二進位制**恰好和soh或eot這種控制字元一樣,資料鏈路層就會錯誤地找到幀的邊界,把部分幀收下(誤認為是完整的幀),而把剩下的那部分資料丟棄(這部分找不到幀定界控制字元soh)。這樣的幀的傳輸顯然就不是透明傳輸。

問題分析:為了解決透明傳輸的問題,就必須設法使資料中可能出現的控制字元」soh」和」eot」在接收端不被解析為控制字元。

解決方法:傳送端的資料鏈路層在資料中出現控制字元」soh」和」eot」的前面插入乙個轉義字元」esc」(其十六進製制編碼是1b)。而在接收端的資料鏈路層在將資料送往網路層之前刪除這個插入的轉義字元。這種方法稱為位元組填充(byte stuffing)或字元填充(character stuffing)。如果轉義字元也出現在資料當中,那麼解決方法仍然是在轉義字元的前面插入乙個轉義字元。因此,當接收端收到連續的兩個轉義字元時,就刪除其中前面的乙個。

位元差錯:就是位元在傳輸過程中可能會產生差錯,即1可能會變成0,0可能會變成1。位元差錯是傳輸差錯中的一種。

三個幀:[#1]-[#2]-[#3],假定在接收端收到的卻有可能出現的情況:

(1)幀丟失:收到[#1]-[#3](丟失了[#2])。

(2)幀重複:收到[#1]-[#2]-[#2]-[#3](收到兩個[#2])。

(3)幀失序:收到[#1]-[#3]-[#2](後面發的幀反而先到達了接收端,這與一般的資料鏈路層傳輸概念不一樣)。

誤位元速率ber(bit error rate):就是在一段時間內,傳輸錯誤的位元佔所傳輸位元總數的比率。例如,誤位元速率為10^(-10)時,表示平均每傳送10^10個位元就會出現乙個位元的差錯。誤位元速率與訊雜比有很大的關係,如果提高訊雜比,就可以使誤位元速率減小。

問題:實際的通訊鏈路並非理想的,它不可能使誤位元速率下降到零。

問題分析:為了保證資料傳輸的可靠性,在計算機網路傳輸資料時,必須採用各種檢測措施。

解決方法:目前在資料鏈路層廣泛使用了迴圈冗餘檢驗crc(cyclic redundancy check)的檢測技術。

注:在資料鏈路層使用crc檢驗,能夠實現無比特差錯的傳輸,但這還不是可靠傳輸。

資料鏈路層的主要功能

資料鏈路層的主要功能 1.成幀 幀同步 為了向網路層提供服務,資料鏈路層必須使用物理層提供的服務。而物理層是以位元流進行傳輸的,這種位元流並不保證在資料傳輸過程中沒有錯誤,接收到的位數量可能少於 等於或者多於傳送的位數量。而且它們還可能有不同的值,這時資料鏈路層為了能實現資料有效的差錯控制,就採用了...

資料鏈路層的主要功能

mac定址 鏈路層向網路層提供的服務 其他知識點 資料鏈路層最基本的服務是將源計算機網路層來的資料可靠的傳輸到相鄰節點的目標計算機的網路層。為達到這一目的,資料鏈路層必須具備一系列相應的功能,主要有 如何將資料組合成資料塊 在資料鏈路層中將這種資料塊稱為幀,幀是資料鏈路層的傳送單位 如何控制幀在物理...

Valgrind的主要功能

valgrind是乙個gpl的軟體,用於linux for x86,amd64 and ppc32 程式的記憶體除錯和 剖析。你可以在它的環境中執行你的程式來監視記憶體的使用情況,比如c 語言中的malloc和free或者 c 中的new和 delete。使用 valgrind的工具包,你可以自動的...