數(shù)據(jù)鏈路層屬于計算機(jī)網(wǎng)絡(luò)的低層奢入。使用的信道主要有兩種類型。
- 點對點信道 : 這種信道使用一對一的點對點通信方式汗贫。
- 廣播信道 : 這種信道使用一對多的廣播方式沐序,廣播信道上連接的主機(jī)很多,因此必須使用專用的共享信道協(xié)議來協(xié)調(diào)這些主機(jī)的數(shù)據(jù)發(fā)送姨蝴。
使用點對點信道的數(shù)據(jù)鏈路層
首先我們需要明確一下鏈路和數(shù)據(jù)鏈路并不是一回事俊啼。
- 鏈路 :從一個結(jié)點到相鄰結(jié)點的一段物理線路(有線或無線),中間沒有任何其他的交換結(jié)點左医。兩個計算機(jī)的通信路徑旺旺要經(jīng)過許多段這樣的鏈路授帕。
- 數(shù)據(jù)鏈路 :在一條線路上傳送數(shù)據(jù)時,除了必須的物理線路外浮梢,還必須要有一些通信協(xié)議(早期也叫通信規(guī)程)來控制這些數(shù)據(jù)的傳輸跛十。把這些協(xié)議的硬件和軟件加到鏈路上,就構(gòu)成了數(shù)據(jù)鏈路秕硝。
現(xiàn)在最常用的方法是使用網(wǎng)絡(luò)適配器(既有硬件也有軟件)來實現(xiàn)這些協(xié)議芥映。一般的適配器都包括數(shù)據(jù)鏈路層和物理層這兩層功能。
幀
數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層下發(fā)的數(shù)據(jù)構(gòu)成幀發(fā)送到鏈路上远豺,以及把接收到的幀中的數(shù)據(jù)取出并上交給網(wǎng)絡(luò)層奈偏。
在因特網(wǎng)中,網(wǎng)絡(luò)層協(xié)議數(shù)據(jù)單元就是IP數(shù)據(jù)報(亦稱數(shù)據(jù)報躯护、分組或包)惊来。
封裝成幀
在一段數(shù)據(jù)的前后分別添加首部和尾部,就能夠構(gòu)成一個幀棺滞。
接收端在收到物理層上交的比特流之后裁蚁,就能根據(jù)首部和尾部的標(biāo)記,從比特流中識別幀的開始和結(jié)束继准。
幀就是數(shù)據(jù)鏈路層數(shù)據(jù)傳送單元
一個幀的幀長等于幀的數(shù)據(jù)部分長度加上幀首部和幀尾部的長度
透明傳輸
由于幀的開始和結(jié)束的標(biāo)記是使用專門指明的控制字符枉证,因此,所傳輸?shù)臄?shù)據(jù)中的任何8比特的組合一定不允許和用作幀定界的控制字符的比特編碼一樣锰瘸,否則就會出現(xiàn)錯誤。
透明 : 透明表示某一個實際存在的事物看起來好像不存在一樣昂灵。就像在你面前有一面100%透明的玻璃一樣避凝。
-
字節(jié)(符)填充 :為了解決透明傳輸?shù)膯栴}舞萄,發(fā)送端的數(shù)據(jù)鏈路層在數(shù)據(jù)中出現(xiàn)的控制字符之前插入一個轉(zhuǎn)入字符。
如果轉(zhuǎn)義字符也出現(xiàn)在數(shù)據(jù)當(dāng)中管削,那么解決方法則是在前面再插入一個轉(zhuǎn)移字符倒脓, 當(dāng)接收端收到連續(xù)的兩個轉(zhuǎn)移字符時,就刪除前面一個
差錯檢測
- 比特差錯 : 比特在傳輸過程中可能會產(chǎn)生差錯:1可能會變成0含思,而0頁可能變成1 崎弃。
- 誤碼率BER(Bit Error Rate) : 在一段時間內(nèi),傳輸錯誤的比特占所傳輸比特總數(shù)的比率含潘。
循環(huán)冗余檢驗CRC(Cyclic Redundancy Check)
- 原理
舉例說明:
在發(fā)送端饲做,先把數(shù)據(jù)劃為分組,假定每組k個比特遏弱,先假定帶傳送的數(shù)據(jù)M = 101001(k=6)盆均。CRC運算就是在數(shù)據(jù)M的后面添加共差錯檢測用的n位冗余碼。
這n位冗余碼可用以下方法得出漱逸。用二進(jìn)制的模2運算(加法時不進(jìn)位泪姨,減法按加法規(guī)則計算),這相當(dāng)于在M后面添加n個0饰抒。?得到的(k+n)位的數(shù)除以收發(fā)雙方事先商定的長度為(n+1)位的除數(shù)P肮砾,得出商是Q而余數(shù)是R(n位,比P少一位)袋坑。
這個例子中仗处,假定除數(shù)P = 1101 (即n=3)。經(jīng)模2計算后的結(jié)果是 Q = 110101咒彤,余數(shù)R = 001.這個余數(shù)R就作為冗余碼拼接在M后面發(fā)送出去疆柔。
這種為了進(jìn)行檢錯而添加的冗余碼常稱為幀檢驗序列FCS(Frame Check Sequence)