- 數(shù)據(jù)鏈路層定義幀的開始和結束就轧,檢驗開始和結束之間的數(shù)據(jù)傳輸是否正確。
- 數(shù)據(jù)鏈路層使用的信道有兩種:點對點信道和廣播信道锅很。
- 鏈路是一條點對點的物理線路赵抢,中間沒有任何其他交換站點。一條鏈路只是一條通路的一個組成部分确徙。
- 數(shù)據(jù)鏈路除了物理線路外醒串,還必須有通信協(xié)議來控制這些數(shù)據(jù)的傳輸。若把實現(xiàn)這些協(xié)議的硬件和軟件加到鏈路上鄙皇,就構成了數(shù)據(jù)鏈路芜赌。
- 在數(shù)據(jù)鏈路層中稱這種數(shù)據(jù)塊為幀(frame),幀是數(shù)據(jù)鏈路層的傳送單位伴逸。數(shù)據(jù)鏈路層給數(shù)據(jù)報加上幀頭缠沈、幀尾、物理層地址和檢驗值违柏。
三個基本問題
1博烂、封裝成幀
封裝成幀就是在一段數(shù)據(jù)前后分別添加首部和尾部,然后構成一個幀漱竖。封裝成幀確定幀的界限禽篱。首部和尾部的作用就是進行幀定界。
2馍惹、透明傳輸
透明傳輸是指不管所傳數(shù)據(jù)是什么樣的比特組合躺率,都應當能夠在鏈路上傳送。當所傳數(shù)據(jù)中的比特組合恰巧與某一個控制信息完全一樣時万矾,就必須采取適當?shù)拇胧┑恐ǎ菇邮辗讲粫⑦@樣的數(shù)據(jù)誤認為是某種控制信息。這樣才能保證數(shù)據(jù)鏈路層的傳輸是透明的良狈。
若傳輸?shù)臄?shù)據(jù)是ASCII碼中“可打印字符(共95個)”集時后添,一切正常。若傳輸?shù)臄?shù)據(jù)不是僅由“可打印字符”組成時薪丁,就會出現(xiàn)問題羡玛,SOH表示幀開始符辆亏,EOT表示幀結束符岩馍,如圖所示:
解決方法:
- 發(fā)送端的數(shù)據(jù)鏈路層在數(shù)據(jù)中出現(xiàn)控制字符“SOH”或“EOT”的前面加一個轉(zhuǎn)義字符“ESC”(十六進制編碼是1B)翔曲。
- 字節(jié)填充或字符填充:接收端的數(shù)據(jù)鏈路層在將數(shù)據(jù)送往網(wǎng)絡層前刪除插入的轉(zhuǎn)義字符。
-
如果轉(zhuǎn)義字符也出現(xiàn)在數(shù)據(jù)中漫玄,就在轉(zhuǎn)義字符前也插入一個轉(zhuǎn)義字符茄蚯。當接收端收到連續(xù)兩個轉(zhuǎn)義字符時,就刪除前一個轉(zhuǎn)義字符。
3渗常、差錯控制
傳輸過程中可能產(chǎn)生比特差錯:1可能變成0,0可能變成1壮不。
在一段時間內(nèi),傳輸錯誤的比特占所傳輸比特總數(shù)的比例成為誤碼率BER(Bit Error Rate)凳谦。誤碼率與信噪比有很大關系忆畅。因此需要采用差錯檢測衡未。
在A向B發(fā)送數(shù)據(jù)的鏈路中間會經(jīng)過多個路由器尸执,路由器在數(shù)據(jù)鏈路層檢測數(shù)據(jù)是否正確,如果錯誤就丟棄這個幀缓醋,以保證通過這個路由器傳輸過去的(不包括丟棄的)都是正確的幀如失。
鏈路層只進行差錯檢驗,不進行差錯糾正送粱,差錯糾正由傳輸層進行褪贵,由傳輸層進行可靠傳輸。鏈路層丟棄錯誤的幀后抗俄,發(fā)送端長期得不到幀接收確認信息脆丁,就會重新發(fā)送一次該幀。
循環(huán)冗余校驗CRC
數(shù)據(jù)鏈路層傳輸中廣泛使用了循環(huán)冗余校驗CRC动雹。
- 在發(fā)送端槽卫,先把數(shù)據(jù)劃分為組,每組k個比特胰蝠。
- 假設待傳送的一組數(shù)據(jù)M=101001(k=6)歼培,我們在M的后面再添加供差錯檢測用的n位冗余碼一起發(fā)送。
冗余碼的計算:
- 在二進制M后面添加n個0茸塞。假設n=3躲庄,則M變?yōu)椋╧+n)位的101 001 000.
-
把(k+n)位的數(shù)除以事先選定好的長度為(n+1)位的除數(shù)P,得到商是Q钾虐,余數(shù)是R噪窘,R為n位,也就是M的CRC冗余校驗碼效扫。把余數(shù)R作為冗余碼添加在數(shù)據(jù)M的后面發(fā)送過去倔监。發(fā)送數(shù)據(jù)是 101 001 001,共(k+n)位荡短。
注:可以用生成多項式來表示循環(huán)冗余的除數(shù)丐枉,例如P(X)=X3+X2+1可以表示1101這個除數(shù)。
在數(shù)據(jù)后面添加上的冗余碼稱為幀校驗序列FCS(Frame Check Sequence)掘托。循環(huán)冗余檢驗CRC和幀檢驗序列FCS并不等同:
- CRC是一種常見的檢錯方法瘦锹,而FCS是添加在數(shù)據(jù)后面的冗余碼。
- FCS可以用CRC這種方法得出,但CRC并非用來獲得FCS的唯一方法弯院。
CRC檢測不能確定究竟是哪一個或哪幾個比特出現(xiàn)了差錯辱士,也不能保證如果出現(xiàn)錯誤就一定能檢測出來(錯誤數(shù)據(jù)也可能得到正確的余數(shù)),但是只要經(jīng)過嚴格的挑選听绳,并使用位數(shù)足夠多的除數(shù)P颂碘,那么出現(xiàn)檢測不到的差錯的概率就很小很小。
PPP協(xié)議實現(xiàn)無差錯接收(錯誤的就丟掉)椅挣,但不實現(xiàn)可靠傳輸头岔。
數(shù)據(jù)鏈路層點到點協(xié)議PPP
現(xiàn)在全世界使用得最多的數(shù)據(jù)鏈路層協(xié)議是點對點協(xié)議PPP(Point-to-Point Protocol),用戶使用撥號電話線接入因特網(wǎng)時鼠证,一般都是使用PPP協(xié)議峡竣。
標志字段F=0x7E標志了幀的開始和結束。
地址字段A只置為0xFF量九,由于是點對點通信适掰,實際上并不起什么作用。
控制字段C通常置為0x03荠列,沒有什么特殊含義类浪。
PPP協(xié)議的透明傳輸(字節(jié)填充):
1. 字節(jié)填充
- 將信息字段中出現(xiàn)的每個0x7E字節(jié)變成2字節(jié)序列(0x7D,0x5E)肌似。
- 若信息字段中出現(xiàn)一個0x7D的字節(jié)费就,則將其轉(zhuǎn)變?yōu)?字節(jié)序列(0x7D,0x5D)锈嫩。
- 若信息字段中出現(xiàn)ASCII碼的控制字符(數(shù)值小于0x20的字符)受楼,則在該字符前加入一個0x7D字節(jié),同時將該字符的編碼加以改變呼寸。
2. 零比特填充
PPP協(xié)議用在SONET/SDH鏈路時艳汽,使用同步傳輸(一連串的比特連續(xù)傳遞,不保證是字節(jié)的整數(shù)倍)对雪。這時PPP協(xié)議采用零比特填充方法來實現(xiàn)透明傳輸河狐。
在發(fā)送端,只要發(fā)現(xiàn)信息部分有5個連續(xù)1瑟捣,則立即填入一個0.接收端對幀中的比特流進行掃描馋艺,每當發(fā)現(xiàn)5個連續(xù)1時,就把這5個連續(xù)1后面的一個0刪除迈套。
廣播信道的數(shù)據(jù)鏈路層
以太網(wǎng)
以太網(wǎng)提供的服務是不可靠的交付捐祠,即盡最大努力的交付。
當接收站收到有差錯的數(shù)據(jù)幀時就丟棄此幀桑李,其他什么也不做踱蛀。差錯的糾正由高層來決定窿给。如果高層發(fā)現(xiàn)丟失了一些數(shù)據(jù)而進行重傳,但以太網(wǎng)并不知道這是一個重傳的幀率拒,而是當做一個新的數(shù)據(jù)幀來發(fā)送崩泡。
信道利用率
一個幀從開始發(fā)送,經(jīng)可能發(fā)生的碰撞后猬膨,將再重傳數(shù)次角撞,到發(fā)送成功且信道轉(zhuǎn)為空閑(即再經(jīng)過t時間使得信道上無信號在傳播)時為止,是發(fā)送一幀所需的平均時間
MAC層(媒體訪問控制層)
MAC地址勃痴,又稱硬件地址或物理地址谒所,48位,前三字節(jié)(高位24位)由IEEE的注冊管理機構RA向廠家分配召耘,后三字節(jié)(低24位)由廠家自行指派百炬,必須保證生產(chǎn)出的適配器沒有重復地址。這種48位地址稱為MAC-48污它,通用名稱為EUI-48.
MAC地址不可更改,但是可以更改通信時的MAC地址庶弃,也相當于“更改”了MAC地址衫贬。
- 類型字段用來標識上一層使用的是什么協(xié)議,以便把收到的MAC幀的數(shù)據(jù)上交給上一層的這個協(xié)議歇攻。
- 數(shù)據(jù)字段的正式名稱是MAC客戶數(shù)據(jù)字段
最小長度64字節(jié) - 18字節(jié)的首部和尾部 = 數(shù)據(jù)字段的最小長度46字節(jié)
當數(shù)據(jù)字段的長度小于46字節(jié)時固惯,應在數(shù)據(jù)字段的后面加入整數(shù)字節(jié)的填充字段,以保證以太網(wǎng)的MAC幀長不小于64字節(jié)缴守。 - 為了達到比特同步葬毫,在傳輸媒體上實際傳送的要比MAC幀還多8字節(jié)。在幀前面插入的8字節(jié)中第一個字段共7個字節(jié)屡穗,是前同步碼贴捡,用來迅速實現(xiàn)MAC幀的比特同步。第二個字段是幀開始定界符村砂,表示后面的信息就是MAC幀烂斋。
無效的MAC幀:
1)幀長度不是整數(shù)個字節(jié);
2)用收到的幀檢驗序列FCS查出有差錯础废;
3)數(shù)據(jù)字段的長度不在46~1500字節(jié)內(nèi)汛骂。
幀最小間隔:
幀間隔最小間隔為9.6 us,相當于96 bit的發(fā)送時間(10M以太網(wǎng))评腺。一個站在檢測到總線開始空閑后帘瞭,還要等待9.6 us才能再次發(fā)送數(shù)據(jù)。這樣做是為了使剛剛收到數(shù)據(jù)幀的站的接收緩存來得及清理蒿讥,做好接收下一幀的準備蝶念。
百兆以太網(wǎng)(100Base-T)的幀最小間隔為0.96 us