資料鏈路層的主要功能

2022-07-11 15:30:17 字數 2929 閱讀 2255

mac定址

鏈路層向網路層提供的服務

其他知識點

資料鏈路層最基本的服務是將源計算機網路層來的資料可靠的傳輸到相鄰節點的目標計算機的網路層。為達到這一目的,資料鏈路層必須具備一系列相應的功能,主要有:如何將資料組合成資料塊(在資料鏈路層中將這種資料塊稱為幀,幀是資料鏈路層的傳送單位);如何控制幀在物理通道上的傳輸,包括如何處理傳輸差錯,如何調節傳送速率以使之與接收方相匹配;在兩個網路實體之間提供資料鏈路通路的建立、維持和釋放管理。這些功能具體表現在以下幾個方面。

為了向網路層提供服務,資料鏈路層必須使用物理層提供的服務。而物理層我們知道,它是以位元流進行傳輸的,這種位元流並不保證在資料傳輸過程中沒有錯誤,接收到的位數量可能少於、等於或者多於傳送的位數量。而且它們還可能有不同的值,這時資料鏈路層為了能實現資料有效的差錯控制,就採用了一種「幀」的資料塊進行傳輸。而要採幀格式傳輸,就必須有相應的幀同步技術,這就是資料鏈路層的「成幀」(也稱為「幀同步」)功能。

但同時也帶來了兩方面的問題:(1)如何識別幀的開始與結束;(2)在夾雜著重傳的資料幀中,接收方在接收到重傳的資料幀時是識別成新的資料幀,還是識別成已傳幀的重傳幀呢?這就要靠資料鏈路層的各種「幀同步」技術來識別了。「幀同步」技術既可使接收方能從以上並不是完全有序的位元流中準確地區分出每一幀的開始和結束,同時還可識別重傳幀。

在上面提到了在資料鏈路層實現透明傳輸和封裝成幀時,使用到了轉義字元。在假設沒有使用轉義字元的前提下我們來分析一下存在的問題:

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

傳輸差錯:可分為兩大類,一類就是最基本的位元差錯,另一類就是收到的幀並沒有出現位元錯誤,但卻出現了幀丟失、幀重複或幀失序。

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

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

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

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

補充:

osi的觀點是必須把資料鏈路層做成是可靠傳輸的。因此在crc檢測基礎上,增加了幀編號、確認和重傳機制。收到正確的幀就要向傳送端傳送確認。傳送端在一定的期限內若沒有收到對方的確認,就認為出現了差錯,因而就進行重傳,直到收到對方的確認為止。

這種方法在歷史上曾經起到很好的作用。但現在的通訊線路的質量已經大大提高了,由通訊鏈路質量不好引起差錯的概率已經大大降低。

網際網路廣泛使用的資料鏈路層協議都不適用確認和重傳機制,即不要求資料鏈路層向上層提供可靠傳輸的服務(因為這要付出的代價太高,不合算)。如果在資料鏈路層傳輸資料時除了差錯並且需要進行改正,那麼改正差錯的任務就由上層協議(如,運輸層tcp協議)來完成。實驗證明,這樣可以提高通訊效率。

這是資料鏈路層中的mac子層主要功能。這裡所說的「定址」與「ip位址定址」是完全不一樣的,因為此處所尋找位址是計算機網絡卡的mac位址,也稱「實體地址」、「硬體位址」,而不是ip位址。在乙太網中,採用**訪問控制(media access control, mac)位址進行定址,mac位址被燒入每個乙太網網絡卡中。這在多點連線的情況下非常必需,因為在這種多點連線的網路通訊中,必須保證每一幀都能準確地送到正確的位址,接收方也應當知道傳送方是哪乙個站。

資料鏈路層的設計目標就是為網路層提供各種需要的服務。實際的服務隨系統的不同而不同,但是一般情況下,資料鏈路層會向網路層提供以下三種型別的服務:

「無確認的無連線服務」是指源計算機向目標計算機傳送獨立的幀,目標計算機並不對這些幀進行確認。這種服務,事先無需建立邏輯連線,事後也不用解釋邏輯連線。正因如此,如果由於線路上的原因造成某一幀的資料丟失,則資料鏈路層並不會檢測到這樣的丟失幀,也不會恢復這些幀。出現這種情況的後果是可想而知的,當然在錯誤率很低,或者對資料的完整性要求不高的情況下(如話音資料),這樣的服務還是非常有用的,因為這樣簡單的錯誤可以交給osi上面的各層來恢復。如大多數區域網在資料鏈路層所採用的服務也是無確認的無連線服務。

為了解決以上「無確認的無連線服務」的不足,提高資料傳輸的可靠性,引入了「有確認的無連線服務」。在這種連線服務中,源主機資料鏈路層必須對每個傳送的資料幀進行編號,目的主機資料鏈路層也必須對每個接收的資料幀進行確認。如果源主機資料鏈路層在規定的時間內未接收到所傳送的資料幀的確認,那麼它需要重發該幀。 這樣傳送方知道每一幀是否正確地到達對方。這類服務主要用於不可靠通道,如無線通訊系統。它與下面將要介紹的「有確認的面向連線服務」的不同之處在於它不需要在幀傳輸之前建立資料鏈路,也不要在在幀傳輸結束後釋放資料鏈路。

大多數資料鏈路層都採用向網路層提供面向連線確認服務。利用這種服務,源計算機和目標計算機在傳輸資料之前需要先建立乙個連線,該連線上傳送的每一幀也都被編號,資料鏈路層保證每一幀都會被接收到。而且它還保證每一幀只被按正常順序接收一次。這也正是面向連線服務與前面介紹的「有確認無連線服務」的區別,在無連線有確認的服務中,在沒有檢測到確認時,系統會認為對方沒收到,於是會重發資料,而由於是無連線的,所以這樣的資料可能會**多次,對方也可能接收多次,造成資料錯誤。這種服務型別存在3個階段,即:資料鏈路建立、資料傳輸、資料鏈路釋放階段。每個被傳輸的幀都被編號,以確保幀傳輸的內容與順序的正確性。大多數廣域網的通訊子網的資料鏈路層採用面向連線確認服務。

乙太網採用無連線的工作方式,讀傳送的資料幀不進行編號,也不要求對方發回確認。目的站收到有差錯的幀就把他丟棄,不採取其他行為。

資料鏈路層主要功能

透明傳輸 個人理解,透明傳輸其實就是指無論是什麼報文都可以傳輸,非透明傳輸就是指某些特殊字元不能傳輸,在計算機網路中,透明傳輸在資料鏈路層提到過,在資料鏈路層將網路層協議封裝成幀時,會在首部和尾部分別新增soh以及eot這兩個特殊字元,接收方是根據這兩個字元來確定幀首和幀尾的,如果上層協議傳送過來的...

資料鏈路層的主要功能

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

Valgrind的主要功能

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