資料鏈路層使用的通道主要有兩種
點對點通道資料鏈路層的協議資料單元(pdu):幀
點對點通道在資料鏈路層通訊的主要步驟如下:
(1). 結點a的資料鏈路層把網路層交下來的ip資料報新增首部和尾部封裝成幀。
(2). 結點a把封裝好的幀傳送給結點b的資料鏈路層。
(3). 若結點b的資料鏈路層收到的幀無差錯,則從收到的幀中提取出ip資料報交給上面的網路層;否則丟棄這個幀。
在資料鏈路層,乙個幀的幀長等於資料部分長度加上首部和尾部的長度,首部和尾部最重要的作用就是幀定界, 首部和尾部還包含一些控制資訊。每一種鏈路層協議都規定了所能傳輸的幀的資料部分長度的上限——最大傳輸單元mtu(maximum transfer unit)。 為了提高幀的傳輸效率,應該使資料部分的長度盡可能大於首部和尾部的長度之和。
由於幀的開始和結束的標記都是使用專門指明的控制字元,因此,所傳輸的資料中任何8位元的組合一定不允許和用作幀定界的控制字元的位元編碼一致,否則就會出現幀定界的錯誤。
當傳輸的幀是用文字檔案組成的幀時(文字檔案中的字元都是從鍵盤中輸入的),其資料部分顯然不會出現幀定界控制符。可見無論從鍵盤上輸入什麼樣的字元都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。
但是當資料部分是二進位制資料時,資料中就可能包含幀定界符,資料鏈路層就會錯誤的判斷幀定界。也即出現和幀定界符一樣的二進位制資料時,就不能做到透明傳輸了,那麼如何解決這個問題呢?
在資料鏈路層透明傳輸資料表示無論什麼樣的位元組合的資料都能夠通過這個資料鏈路層。「透明」 他表示某個實際存在的事物看起來好像不存在一樣,透明傳輸可以簡單的理解為資料鏈路層好像不存在一樣,對於傳輸的資料是完全透明的,不妨礙任何資料的傳輸。
為了解決透明傳輸的問題,通常採用位元組填充或字元填充方法,即:傳送端的資料鏈路層在資料**現的控制字元(幀定界字元,soh,eot等)前面插入乙個轉義字元"esc", 而在接收端的資料鏈路層再刪除這個轉義字元。
目前在資料鏈路層廣泛使用了迴圈冗餘校驗crc的檢錯技術,在資料鏈路層是比特級的檢錯技術。
**在資料鏈路層僅僅使用crc 差錯檢測技術(沒有糾錯技術),**只能做到對幀的無差錯接受,即:「凡是接收端資料鏈路層接受的幀,我們都以非常接近於1的概率認為這些幀在傳輸的過程中沒有產生差錯」。接收端丟棄的幀雖然曾收到了,但最終還是因為有差錯被丟棄,即沒有被接受。即我們可以簡單的理解為:凡是接收端資料鏈路層接受的幀均無差錯。
資料鏈路層並不能保證向網路層提供**「可靠傳輸」**服務。所謂「可靠傳輸」就是:資料鏈路層的傳送端傳送什麼,在接收端就接收到什麼。傳輸差錯可以分為兩大類:
「無比特差錯」與「無傳輸差錯」是兩個不同的概念,在資料鏈路層使用crc校驗,能夠實現無比特差錯傳輸,但這還不是可靠傳輸。
通過增加 幀編號,確認和重傳機制能偶使得資料鏈路層向上層提供可靠傳輸服務。這個方法曾在歷史上起到很好的作用。但現在的通訊鏈路的質量已經大大提高了,由於通訊鏈路質量不好而引起的差錯高概率已大大降低了,因此現在的網際網路採用區別對待的方法:
ppp 協議是ietf在2023年制定的,經過1993和2023年的修訂,現在已成為網際網路正式標準(rfc 1661),ppp協議最早用於計算機和isp通訊。ppp協議不需要進行糾錯,不需要設定序號,不需要進行流量控制,不支援多點線路,只支援全雙工鏈路。
f: 0x7e ,標識字段,標識乙個幀的開始或結束
a: 0xff, 位址字段,暫時沒有定義
c: 0x03, 控制字段,暫時沒有定義
協議字段:2bytes, 0x0021 表示ppp的資訊字段就是ip資料報,0xc021表示ppp的資訊欄位是鏈路控制協議lcp的資料,0x8021表示ppp的資訊欄位是網路層的控制資料
資訊字段:mtu=1500 bytes
fcs: 2 bytes,幀校驗序列
ppp協議採用位元組填充或零位元填充來實現透明傳輸。
為了使資料鏈路層能夠更好的適應多種區域網標準(802.4令牌匯流排網,802.4令牌環網,dix ethernet v2等)。ieee 802標準委員會把資料鏈路層分為了兩個子層,即:邏輯鏈路控制(llc,logic link control)子層和**接入控制(media access control)子層。與**接入有關的都放在mac層,llc子層則與傳輸**無關。
隨著區域網的發展,dix ethernet v2(最早是一種基帶匯流排區域網)很快發展為tcp/ip體系中經常使用的區域網,而不是ieee 802.3中定義的區域網標準。llc子層的作用已經消失,所以後面介紹中我們主要關注mac子層。
為了通訊方便乙太網採用了以下兩種措施:
csma/cd 協議(載波監聽,多點接入,碰撞檢測):
集線器的一些特點:
常用的mac幀的格式有兩種:一種是dix ethernet v2標準,另一種是802.3的標準。這裡介紹dix ethernet v2標準的mac 幀。圖中假定網路層使用的協議是ip協議。
型別: 2位元組,標識上一層使用的是什麼協議,當該字段是0x0800時表示網路層使用的ip協議,當該字段是0x8137表示網路層使用的novell ipx協議
資料字段:46~1500 位元組。46=64-18, 64表示mac幀的最小長度,18=6+6+2+4 表示mac幀首部和尾部的位元組總數。mac幀的有效長度為64–1518位元組
fcs: 4位元組,採用crc校驗
乙太網傳輸的資料都是採用曼側斯特編碼,每個碼元(不論是1還是0)的正中間一定有一次高低電壓的轉換。當傳送方把乙個乙太網幀傳送結束後,就不在傳送其他碼元了,因此傳送方的介面卡的介面電壓也就不再變化了,這樣接收方就可以很容易的找到乙太網幀的結束位置。在這個位置往前倒數4個位元組就能確定資料字段的結束位置。
問題2:當資料字段的長度小於46位元組時,mac子層需要在資料字段後面進行填充保證mac幀不小於64位元組。那麼,在有填充欄位的情況下,mac子層把帶有填充位元組的資料字段交給上層後,上層協議是如何確定填充位元組的長度的呢?
上層協議必須具有識別有效資料字段長度的功能。例如,ip資料報的首部就有乙個總長度的字段,表示ip資料報的總位元組數,因此總長度加上填充欄位的長度就應該等於mac幀資料字段的長度。
從上圖可以看出在傳輸**上實際傳輸的要比mac幀還多8個位元組。這是因為當乙個站在剛開始接收mac幀時,由於介面卡的時鐘尚未與到達的位元流達成同步,因此mac幀最前面的若干位就無法接收。為了使得接收端迅速實現位同步,從mac層向下傳到物理層時,還要在幀的前面插入8個位元組(7位元組前導碼 + 1位元組幀開始定界符10101011),它的作用是使得接收端的介面卡在接收mac幀時能夠迅速調整其時鐘頻率,使它和傳送端的時鐘同步,也即實現位同步.mac幀的fcs校驗不包含前導碼和幀開始定界符。
在乙太網上傳輸資料是以幀為單位傳輸的,在乙太網傳輸幀時,各幀之間還必須有一定的間隙。因此接收端只要找到幀開始定界符,其後面連續到達的位元流就屬於同乙個mac幀。可見乙太網不需要幀結束定界符,也不要使用位元組插入來保證透明傳輸。
計算機網路 資料鏈路層
一 簡介 資料鏈路層屬於第二層,資料鏈路層試使用物理層提供的服務在通訊通道上傳送和接受位元。它要完成一系列的功能包括 1 向網路層提供乙個定義良好的服務介面。2 處理傳輸錯誤。3 調節資料流,確保慢速的接收方不會被快速的傳送方淹沒。為了實現這個目標,資料鏈路層從網路層獲得資料報,然後將這些資料報封裝...
計算機網路 資料鏈路層
在iso提出的osi七層模型中,資料鏈路層處於第二層。在這一層,我們重點關注點對點之間的通訊。關於點對點通訊,是指網內任意兩個使用者之間的資訊交換。在這裡不過多的搬抄書上的概念,計算機網路的學習應當是以生活中的實踐作為基礎,來加深理論的理解。首先,如同在概述中提到的一樣,我們研究網路應當時刻站在分層...
計算機網路 資料鏈路層
封裝成幀 給上層傳輸來的資料新增資料首部soh 十六進製制 01 二進位制00000001 和尾部eot 十六進製制 04 二進位制 00000100 透明傳輸 封裝成幀使用的首部和尾部的編碼可會和需要封裝的資料的編碼相同,則新增乙個轉義的編碼esc 十六進製制 1b 二進位制00011011 錯誤...