本文參考資源:湖科大教書匠--計算機網絡微課堂
-
鏈路(Link)就是從一個結點到相鄰結點的一段物理線路,而中間沒有任何其他的交換結點。
-
數據鏈路( Data
Link)是指把實現通信協議的硬件和軟件加到鏈路上,就構成了數據鏈路。 -
數據鏈路層以幀為單位傳輸和處理數據。
數據鏈路層的三個主要問題
封裝成幀
-
幀頭和幀尾中包含有重要的控制信息。
-
幀頭和幀尾的作用之ー就是幀定界。
PPP幀的標志位置是為了標志每一個幀的開頭和結尾
MAC幀沒有包含幀定界的標志,當MAC幀在鏈路層封裝好時會交給物理層,物理層會在MAC幀前面添加8字節的前導碼,前導碼前7個字節是前同步碼,作用是為了使接收方時鍾同步,之后的1字節是幀開始的定界符,表面后面緊跟的是MAC幀,同時以太網還規定了幀間間隔時間為96比特的發送時間,所以MAC協議也不需要幀結束定界符
透明傳輸
透明傳輸是指數據鏈路層對上層交付的傳輸數據沒有任何限制,就好像數據鏈路層不存在一樣。
當傳輸的數據恰好內容和幀定界相同時,則會被誤認為是結束,而丟棄了后面的內容,為了不出現類似情況,會在幀定界前插入傳譯符,當接收時則會吧幀定界前面的轉義符去掉
而如果傳輸的數據內容恰好等於轉義符,則在轉義符前再次插入轉義符,接收方則會將轉義符前的轉義符去掉
-
面向字節的物理鏈路使用字節填充(或稱字符填充)的方法實現透明傳輸
-
面向比特的物理鏈路使用比特填充的方法實現透明傳輸。
為了提高幀的傳輸效率,應當使幀的數據部分的長度盡可能大些。
考慮到差錯控制等多種因素,每一種數據鏈路層協議都規定了幀的數據部分的長度上限,即最大傳送單元MTU
(Maximum Transfer Unit)
差錯檢測
傳輸過程中可能會產生誤碼:即0變成1或者1變成0(比特差錯)
在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率稱為誤碼率BER( Bit Error
Rate).
使用差錯檢測碼來檢測數據在傳輸過程中是否產生了比特差錯,是數據鏈路層所要解決的重要向題之一
為了防止差錯可以在幀尾添加檢錯碼,接收端可以用算法,通過檢錯碼來判斷數據有沒有出現問題
檢測方法:
奇 偶校驗
在待發送的數據后面添加1位奇偶校驗位,使整個數據(包括所添加的校驗位在內)中“"1”的個數為奇數(奇校驗)或偶數(偶校驗)。
選擇奇/偶校驗,如果有偶/奇數個位發生誤碼,則奇偶性發生變化,可以檢查出誤碼;反之,如果有奇/偶數個位發生變化,則奇偶性不發生變化,不能檢查出誤碼(漏檢)
循環冗余校驗(CRC)
-
收發雙方約定好一個生成多項式G(x);
-
發送方基於待發送的數據和生成多項式計算出差錯檢測碼(冗余碼),將其添加到待傳輸數據的后面一起
傳輸; -
接收方通過生成多項式來計算收到的數據是否產生了誤碼
例題,發送方:
除法:做異或運算,不同為1相同為0
判斷是否夠除:當位數夠就稱之為夠除?
例題,接收方:
與發送發不同,接收方的被除數即為它的本身,不需要根據多項式添加0
-
檢錯碼只能檢測出幀在傳輸過程中出現了差錯,但並不能定位錯誤,因此無法糾正錯誤。
-
要想糾正傳輸中的差錯,可以使用元余信息更多的糾錯碼進行前向糾錯。但糾錯碼的開銷比較大,在計算
機網絡中較少使用。 -
循環冗余校驗CRC有很好的檢錯能力(漏檢率非常低),雖然計算比較復雜,但非常易於用硬件實現,因此被廣泛應用於數據鏈路層。
-
在計算機網絡中通常采用我們后續課程中將要討論的檢錯重傳方式來糾正傳輸中的差錯,或者僅僅是丟奔檢測到差錯的幀,這取決於數據鏈路層向其上層提供的是可靠傳輸服務還是不可靠傳輸服務。
可靠傳輸
當接收方接收到了誤碼時則會將其丟棄,如果不重發則成為不可靠傳輸
盡管誤碼是不能完全避兔的,但若能實現發送方發送什么接收方就能收到什么,就稱為可靠傳輸。
-
一般情況下,有線鏈路的誤碼率比較低。為了減小開銷,並不要求數據鏈路層向上提供可靠傳輸服務。即使出現了誤碼,可靠傳輸的向題由其上層處理。
-
無線鏈路易受干擾,誤碼率比較高,因此要求數據鏈路層必須向上層提供可靠傳輸服務。
-
比特差錯只是傳輸差錯中的一種。
-
從整個計算機網絡體系結枃來看,傳輸差錯還包括分組丟失、分組失序以及分組重復。
-
分組丟失、分組失序以及分組重復這些傳輸差錯,一般不會出現在數據鏈路層,而會出現在其上層。
-
可靠傳輸服務井不僅局限於數據鏈路層,其他各層均可選擇實現可靠傳輸。
-
可靠傳輸的實現比較復雜,開銷也比較大,是否使用可靠傳輸取決於應用需求。
點對點協議PPP
幀格式
透明傳輸
實現透明傳輸的方法取決於說使用的鏈路類型
面向字節的異步鏈路采用插入轉義字符的字節填充法
面向比特的同步鏈路來用插入比特0的比特填充法
差錯檢測
幀結尾帶有兩字節的FCS使用循環冗余校驗CRC來計算該字段的取值
接收方每收到一個PP幀,就進行CRC檢驗。若CRC檢驗正確,就收下這個幀;反之,就丟棄這個幀。使用PPP的數據鏈路層向上不提供可靠傳輸服務
工作狀態
使用廣播信道的數據鏈路層
使用廣播信道的數據鏈路層
-
共享式以太網的媒體接入控制協議 CSMA/CD
-
802.11局域網的媒體接入控制協議CSMA/CA
數據鏈路層的互連設備
-
網橋和交換機的工作原理
-
集線器(物理層互連設備)與交換機的區別
媒體接入控制
靜態划分信道
隨機接入
解決方法:
CSMA/CD
載波監聽多址接入/碰撞檢測CSMA/CD
爭用期
最小幀長
最小幀長不固定,要根據網絡跨距和數據傳輸速率計算
最小幀長 = 爭用期 x 數據傳輸速率
最大幀長
截斷二進制指數退避算法
信道利用率
MAC地址
使用點對點信道的數據鏈路層不需要使用地址
b0->b7
多播地址的判斷方法:
數據包轉發過程中IP地址與MAC地址的變化情況
-
數據包轉發過程中源IP地址和目的IP地址保持不變;
-
數據包轉發過程中源MAC地址和目的MAC地址逐個鏈路(或逐個網絡)改變。
集線器與交換機的區別
集線器
-
使用集線器的以太網在邏輯上仍是一個總線網,各站共享總線資源,使用的還是CSMA/CD協議;
-
集線器只工作在物理層,它的每個接口僅簡單地轉發比特,不進行碰撞檢測(由各站的網卡檢測);
-
集線器一般都有少量的容錯能力和網絡管理功能。例如,若網絡中某個網卡出了故障,不停地發送幀。此時,集線器可以檢測到這個問題,在內部斷開與出故障網卡的連線,使整個以太網仍然能正常工作。
交換機
-
以太網交換機通常都有多個接口。每個接口都可以直接與一台主機或另ー個以太網交換機相連。一般都工作在全雙工方式。
-
以太網交換機具有井行性,能同時連通多對接口,使多對主機能
-
同時通信,無碰撞(不使用 CSMA/CD協議)
-
以太網交換機一般都具有多種速率的接口,例如:10Mb/s、100Mb/s、1Gb/s、10Gb/s接口的多種組合。
-
以太網交換機工作在數據鏈路層(也包括物理層),它收到幀后,在幀交換表中查找幀的目的MAC地址所對應的接口號,然后通過該接口轉發幀。
-
以太網交換機是一種即插即用設備,其內部的幀交換表是通過自學習算法自動地逐漸建立起來的。
-
幀的兩種轉發方式:
-
存儲轉發
-
直通交換:采用基於硬件的交叉矩陣(交換時延非常小,但不檢查幀是否右差錯
總結:
區別1:工作層次
集線器工作在物理層,屬於1層設備,每發送一個數據,所有的端口均可以收到,采用了廣播的方式,因此網絡性能受到很大的限制。
交換機工作在數據鏈路層,屬於2層設備,通過學習之后,每個端口形成一張MAC地址轉發表,根據數據包的MAC地址轉發數據,而不是廣播形式。
區別2:轉發方式
集線器的工作原理是廣播形式,無論哪個端口收到數據之后,都要廣播到所有的端口,當接入設備比較多時,網絡性能會受到很大的影響。
交換機根據MAC地址轉發數據,收到數據包之后,檢查報文的目的MAC地址,找到對應的端口進行轉發,而不是廣播到所有的端口。
區別3:傳輸模式
集線器內部采用了總線型拓撲,各個節點共用一條總線進行通信,數據包的發送和接收采用了CSMA/CD協議,在同一時間內必須是單向的,只能維持在半雙工模式下。兩個端口不能同時收發數
據,並且當兩個端口通信時,其他端口不同工作。
當交換機上的兩個端口通信時,它們之間的通道是相互獨立的,可以實現全雙工通信。兩個端口同時收發數據。
區別4:帶寬影響
集線器無論有多少個端口,所有的端口共享一條寬帶,同一時刻只能有兩個端口傳輸數據,並且只能工作在半雙工模式下。
以太網交換機自學習和轉發幀的流程
A—>B:
假設主機A給主機B發送幀,該幀從交換機1的接口1進入交換機1。交換機1首先進行登記的工作,將該幀的MAC地址A記錄到自己的幀交換表中,將該幀進入自己的接口的接口號1相應地也記錄到幀交換表中。(上述登記工作就稱為交換機的自學習)
之后,交換機1對該幀進行轉發。該幀的目的MAC地址是B,在幀交換表中查找MAC地址B,找不到。於是對該幀進行盲目的轉發,也成為泛洪。也就是從除該幀進入交換機接口外的其他所有接口轉發該幀。可以看出,交換機一開始還是比較”笨“的,它還沒有足夠的知識來明確轉發幀,只能進行盲目地轉發。
主機B的網卡收到該幀后,根據幀的目的MAC地址B就知道這是發送給自己的幀,於是就接受該幀。主機C的網卡收到該幀后,根據幀的目的MAC地址B,就知道這不是發送給自己的幀,於是就丟棄該幀。
該幀從交換機2的接口2進入交換機2。交換機2首先進行登記的工作,將該幀的源MAC地址A記錄到自己的幀交換表中,將該幀進入自己的接口的接口號2,相應地也記錄到幀交換表中。之后,交換機2對該幀進行轉發。該幀的目的MAC地址是B,在幀交換表中查找MAC地址B,找不到。於是對該幀進行盲目地轉發。主機D、E、F都會收到該幀,根據幀的目的MAC地址B,就知道這不是發送給自己的幀,於是丟棄該幀。
B—>A:
接下來,主機B給主機A發送幀。該幀從交換機1的接口3進入交換機1。交換機1首先進行登記的工作,將該幀的源MAC地址B記錄到自己的幀交換表中,將該幀進入自己的接口的接口號3相應地也記錄到幀交換表中。之后,交換機1對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查找MAC地址A,可以找到。於是按照MAC地址A所對應的接口號1,從接口1轉發該幀。這是明確的轉發。主機A的網卡收到該幀后,根據幀的目的MAC地址A,就知道這是發送給自己的幀,於是接受該幀。很顯然,交換機2不會收到該幀。
E—>A:
主機E給主機A發送幀,該幀從交換機2的接口3進入交換機2。交換機2首先進行登記的工作。之后,交換機2對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查找MAC地址A,可以找到。於是按照MAC地址A所對應的接口號2,從接口號2轉發該幀。這是明確的轉發。該幀從交換機1的接口4進入交換機1。交換機1首先進行登記的工作。之后,交換機1對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查找MAC地址A,可以找到。於是按照MAC地址A所對應的接口號1,從接口1轉發該幀。這是明確的轉發。主機A的網卡收到該幀后,根據幀的目的MAC地址A,就知道這是發送給自己的幀,於是接受該幀。
以太網交換機丟棄幀的情況:G—>A
為了演示該情況,我們給交換機1的接口再連接一台主機G。為了簡單起見,沒有畫出集線器。這樣,主機A、主機G、交換機1的接口1,就共享同一條總線。假設主機G給主機A發送幀,該幀通過總線進行傳輸,主機A和交換機1的接口1都可以收到。主機A的網卡收到該幀后,根據幀的目的MAC地址A,就知道這是發送給自己的幀,於是接受該幀。交換機1接收到該幀后,首先進行登記工作。之后,交換機1對該幀進行轉發。該幀的目的MAC地址是A,在幀交換表中查找MAC地址A,可以找到。MAC地址A所對應的接口號是1,但是,該幀正是從接口1進入交換機1的,交換機1不會再從該接口將該幀轉發出去,因為這是沒有必要的,於是丟棄該幀。很顯然,交換機2不會收到該幀。
MAC地址與交換機接口的對應關系並不是永久性的,幀交換表中的每條記錄都有自己的有效時間,到期自動刪除
原因是例如交換機某接口所連接的主機更換成另一台主機。又或者主機中的網卡壞了,更換了新的網卡。這些情況都會導致MAC地址與交換機接口的對應關系的改變。(之前介紹過的ARP高速緩存表,表中的IP地址與MAC地址的對應關系記錄也是會定期自動刪除的,這是因為IP地址與MAC地址的對應關系也並不是永久性的)
以太網交換機的生成樹協議STP
如何提高以太網的可靠性?
添加冗余鏈路可以提高以太網的可靠性
網絡環路會帶來以下問題:
廣播風暴--大量消耗網絡資源,使得網絡無法正常轉發其他數據幀;
主機收到重復的廣播幀--大量消耗主機資源
交換機的幀交換表震盪(漂移)
H1的廣播由B轉發給A和C,同理,A、C受到廣播幀時也接着轉發到B、C和A、B,導致循環
同時,由於數據包中的源MAC地址為H1的MAC地址,從第一次廣播確認正確的端口時,連續的接受A、C的廣播會使B的ARP表不斷更改成錯誤的數據
STP
以太網交換機使用生成樹協議STP( Spanning Tree
Protocol)可以在增加元余鏈路來提高網絡可靠性的同時又避免網絡環路帶來的各種問題。
-
不論交換機之間采用怎樣的物理連接,交換機都能夠自動計算井構建一個邏輯上沒有環路的網絡,其邏輯拓撲結構必須是樹型的(無邏輯環路)
-
最終生成的樹型邏輯拓撲要確保連通整個網絡;
-
當首次連接交換機或網絡物理拓撲發生變化時(有可能是人為改變或故障),交換機都將進行生成樹的重新計算
自動計算生成樹
網絡發生改變時重新計算
虛擬局域網VLAN
分割廣播域的方法
使用路由器
路由器默認不會對廣播進行轉發
VLAN
IEEE 802.1Q幀
交換機的端口類型
Access
Trunk
Hybrid