數據鏈路層基本概念#
數據鏈路簡的通信,可能採用不同的協議
鏈路#
是指從一個節點到相鄰節點的一段物理線路(有線或無線),而中間沒有任何其他的交換節點。
數據鏈路#
在鏈路上傳輸數據時 (物理性質上的),除需要的鏈路本身,還需要一些必要的通信協議來控制數據的傳輸,實現這些協議的硬件和軟件加到鏈路上 (物理實體的實現),就構成了數據鏈路
比如網卡,網絡適配器,和其相關的軟件驅動程序就實現了這些協議。一般的網絡適配器都包含了,數據鏈路層和物理層這兩層功能
幀#
數據鏈路層的對等實體之間在水平方向進行邏輯通信的協議數據單元 PDU
廣域網局域網#
WAN 廣域網採用點到點鏈路(PPP、HDLC)
- 帶寬大、距離遠(延遲大)帶寬延遲大
LAN 局域網採用多點連接(以太網,無線局域網,VLAN)
- 連接節點非常方便
- 接到共享型介質上(或網絡交換機),就可以連接所有其他節點
- 多點接入協調各節點對共享性介質的訪問和使用,考慮衝突之後的協調
數據鏈路層提供的服務#
三個其中需要解決的問題:幀定界、透明傳輸、差錯檢測
流量控制:相鄰的發送和接收方節點的速度匹配
錯誤檢測:差錯由信號衰減和噪聲引起,接收方需要檢測到錯誤,通知發出端進行重傳或者丟棄幀
封裝成幀和透明傳輸、差錯檢測、可靠傳輸#
封裝成幀#
數據鏈路層向上層交付的東西,協議數據單元 PDU,給它添加一個幀頭和幀尾使之成為幀
- 幀頭和幀尾中包含有重要的控制信息。
- 幀頭和幀尾的作用之一就是幀定界。(並 == 不是每一種數據鏈路層協議的幀都包含有幀定界標誌 ==,如 MAC 地址適用幀間間隔方式界定幀)
- == 為了提高數據鏈路層傳輸幀的效率,應當使幀的數據載荷的長度儘可能地大於首部和尾部的長度。==
- 考慮到對緩存空間的需求以及差錯控制等諸多因素,每一種數據鏈路層協議都規定了幀的數據載荷的長度上限,即最大傳送單元(Maximum Transfer Unit,MTU)。例如,以太網的 MTU 為 1500 個字節
封裝成幀與 MAC 地址#
FCS 字段
幀開始定界符
前同步碼
PPP 幀#
識別幀,校驗幀#
01m38s
前導碼之間的幀間間隔:96 比特
透明傳輸#
幀定界出錯:如果在幀的數據載荷字段出現了同幀首部或尾部相同的字段,在不採取其他措施情況下,接收方的鏈路層會出現幀定界的錯誤。
透明傳輸是指數據鏈路層對上層交付的協議數據單元 PDU 沒有任何限制,就好像數據鏈路層不存在一樣
實現透明傳輸的方式#
字節填充 - 利用轉義字符 - 面向字節的物理鏈路#
發出方在物理層交付的比特流中,先進行掃描
把幀交付給物理層之前,對幀的數據載荷進行掃描,每出現一個幀定界符,就在其前面插入一個轉義字符。接收方遇到第一個幀定界符知道是幀的開始,遇到轉義字符知道其後面 1 字節內容是數據(雖然與幀定界符相同),剔除轉義字符後,將其後面的內容作為數據繼續提取。當再次遇到幀定界符時,為數據接收。
- 當幀中本身有轉義字符時,在轉義字符前再加一個轉義字符。
- 轉義字符是一種特殊的控制字符,長度為 1 字節,十進制值為 27,不是 ESC 這三個字符
比特填充 - 面相比特的物理鏈路#
連續 5 個 1 後面添加 0
0 比特填充習題
差錯檢測#
接收方如何知道出現了誤碼
- 比特差錯:實際通信鏈路中不是理想的,比特的上傳輸會產生差錯,1 可能會變成 0,而 0 也可能變成 1。(受到噪聲干擾、傳輸媒體質量等因素影響)
- 誤碼率 BER(Bit Error Rate):在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率稱為誤碼率
- 提高鏈路的信噪比,可以降低誤碼率。但在實際的通信鏈路上,不可能使誤碼率下降為零。
- 差錯檢測檢測比特差錯
- 接收和發送方都使用相同的檢錯技術,,通過檢錯碼檢錯
- 幀尾部用來存放檢錯碼的字段,稱之為幀檢驗序列(FCS:Frame Check Sequence)
- 檢錯碼只能檢測出幀在傳輸過程中出現了差錯,但並不能定位錯誤,因此無法糾正錯誤,== 只是知道錯了,不知道哪裡錯了 ==
- 要更進一步地 == 糾錯 ==,可以使用冗餘信息更多的糾錯碼(如海明碼)進行前向糾錯。但糾錯碼的開銷比較大,在計算機網絡中較少使用
- 可以適用糾錯重傳方式來糾正傳輸中的差錯,或僅僅丟棄檢測到差錯的幀
- 重傳,稱之為可靠傳輸服務
- 丟棄,不可靠傳輸服務
奇偶校驗#
02m18s
奇校驗是在待發送的數據後面添加 1 個校驗位,使得添加該校驗位後的整個數據中比特 1 的個數為奇數。
偶校驗是在待發送的數據後面添加 1 個校驗位,使得添加該校驗位後的整個數據中比特 1 的個數為偶數
- 在所傳輸的數據中,如果有奇數个位發生誤碼,則所包含比特 1 的數量的奇偶性會發生改變,可以檢測出誤碼。
- 在所傳輸的數據中,如果有偶數个位發生誤碼,則所包含比特 1 的數量的奇偶性不會發生改變,無法檢測出誤碼(漏檢)。
- 在實際使用時,奇偶校驗又可分為垂直奇偶校驗、水平奇偶校驗以及水平垂直奇偶校驗
循環冗餘校驗#
05m43s
數據鏈路層廣泛使用漏檢率極低的循環冗餘校驗(Cyclic Redundancy Check,CRC)檢錯技術,非常容易用硬件實現,所以廣泛運用于數據鏈路層。
- 收發雙方約定好一個生成多項式 G(X)。
- 發送方基於待發送的數據和生成多項式 G (X),計算出差錯檢測碼(冗餘碼),將冗餘碼添加到待發送數據的後面一起傳輸。
- 接收方收到數據和冗餘碼後,通過生成多項式 G (X) 來計算收到的數據和冗餘碼是否產生了誤碼。
生成多項式#
關於餘數#
能湊出和除數相同的位數時,稱之為夠除,此時上面標記為 1
不能湊出來時,稱之為不夠除,此時上面標記為 0
10m03s
可靠傳輸#
有線鏈路與無線鏈路提供的服務不同
-
有線鏈路:誤碼率低,不要求鏈路層提供可靠傳輸,由上層進行誤碼處理。
-
一般情況下,有線鏈路的誤碼率比較低。為了減小開銷,並不要求數據鏈路層向其上層提供可靠傳輸服務。即使出現了誤碼,可靠傳輸的問題由其上層處理。
-
在低差錯鏈路(鏈路本身很可靠)上很少使用 (光纖,一些雙絞線):以太網
-
無線鏈路:誤碼率高,鏈路層必須提供可靠傳輸
-
易受干擾,誤碼率比較高,因此要求數據鏈路層必須向其上層提供可靠傳輸服務。
-
在高差錯鏈路上需要進行可靠的數據傳送:無線局域網
ARQ 協議#
自動重傳協議
是 OSI 模型中數據鏈路層和傳輸層的錯誤糾正協議之一
- 分類
- 停止等待 ARQ 協議:停止等待協議
- 連續 ARQ 協議(結合了窗口機制):回退 N 步協議和選擇重傳協議
ARQ 到底運行在哪一層?
- ==ARQ 是一種可以在不可靠的數據通道上可靠地傳輸數據的方案 ==,所以其實鏈路層和傳輸層都用了 ARQ,並不專屬某一層。
- 並不是一條連接只要有一層用了 ARQ,它的上層的通信就是可靠的。因為 ARQ 只保證使用它的點到點是可靠的,比如數據鏈路層只保證你和你的路由器通信可靠,你的路由器到小區的路由器通信也可靠,但是路由器本身會故障,會擁塞丟包,也就是點本身會產生問題。
- 所以需要在傳輸層或者應用層再加一層 ARQ 保障整條數據通道的可靠性。比如你自己寫程序要在應用層通信,但傳輸層不用 tcp 想用 udp,也可以在你程序裡用 ARQ 協來實現可靠性。
傳輸差錯的類別#
各層次傳輸是否可靠#
可靠傳輸服務並不僅局限於數據鏈路層,其他各層均可選擇實現可靠傳輸。
可靠傳輸的實現比較複雜,開銷比較大,是否使用可靠傳輸取決於應用需求
可靠傳輸的機制(三類)#
停止 - 等待協議 (Stop-and-Wait) SW---ARQ 的一種#
01m08s
機制:確認與否認、重傳、超時重傳、給數據分組編號、給確認分組編號
發送方給接收方發送一個數據分組,接收方收到後對其進行差錯檢測,若沒有檢測出誤碼,則接受該數據分組並給發送方發送確認分組。簡記為 ACK。發送方收到對所發送數據分組的確認分組號,才能發送下一個數據分組。假設這個數據分組在傳輸過程中出現了誤碼,接收方收到後對其進行差錯檢測,出了物碼則丟棄該數據分組,並給發送方發送否認分組,簡記為 NAK。
發送方收到對所發送數據分組的否認分組後,就知道了自己之前所發送的數據分組出現了物碼而被接收方丟棄,於是立刻重傳該數據分組。接收方收到後對其進行差錯檢測,若沒有檢測出誤碼,則接受該數據分組,並給發送方發送確認分組,== 因此發送方每發送來一個數據分組後,並不能立刻將該數據分組從發送緩存中刪除,因為之後有可能需要重傳該數據分組。== 只有在收到針對該數據分組的確認分組後,才能將其從發送緩存中刪除。
更複雜的 SW
04m48s
發送方發出時出現了丟失
點對點的數據鏈路層裡其實不太能出現丟失的情況
但是複雜的拓撲互聯網路裡,路由之間可能是會的
發送方可在每發送完一個數據分組時,就啟動一個超時計時器。若到了超時計時器所設置的超時重傳時間 RTO,但發送方仍未收到接收方的確認分組或否認分組,就重傳之前已發送過的數據分組。如圖所示,== 這段時間是收發雙方之間的平均往返時間 RTT==,一般可將超時重傳時間 RTO 設置為略大於收發雙方的平均往返時間 RTT。當發送方的超時計時器出現超時,就立刻重傳之前已發送的數據分組。接收方若正確接收到重傳的數據分組,就給發送方發送相應的確認分組,發送方收到後就可以發送下一個數據分組了。接收方若正確接收到該數據分組,就給發送方發送相應的確認分組。至此,我們再確認、否認和重傳這兩種機制的基礎上,又給停止等待協議添加了超時重傳機制。
==確認分組丟失==
確認分組在傳輸過程中丟失了,這必然會造成 == 發送方的超時重傳 ==,這樣 == 接收方就會收到兩個相同的數據分組 ==。如果接收方不能 == 識別出所接收的數據分組與前一次接收的數據分組是重複的 ==,則會 == 導致分組重複這種傳輸差錯 ==。為了 == 避免分組重複這種傳輸錯誤 ==,必須給 == 每個分組帶上序號 ==。如圖所示,對於停止等待協議,由於 ==每發送完一個數據分組就進行停止等待==,只要保證 == 每發送一個新的數據分組,其序號與上次發送的數據分組的序號不同 == 就可以了。因此,用一個比特來編號就夠了,攜帶序號 0 或 1,這兩個接收方連續收到序號相同的數據分組時,就可識別出分組重複這種傳輸差錯。這時,接收方應當丟棄重複的數據分組,並且還必須向發送方再發送一個確認分組。發送方收到後,可以給接收方發送下一個數據分組,其序號與上個數據分組的序號是不同的,接收方若正確接收到該數據分組,就給發送方發送相應的確認分組。至此,我們在確認、否認和重傳、超時重傳這三種機制的基礎上,又給停止等待協議添加了給數據分組編號的機制
- 每個分組編號,攜帶標識,保證只會收到一次,不會因為重傳收到兩次
==確認分組的編號問題==
發送方發送 0 號數據分組,接收方正確接收後,給發送方發送確認分組,由於某種原因,該確認分組遲到了,這必然會導致發送方對 0 號數據分組的超時重傳。在 0 號數據分組的重傳過程中,發送方收到了遲到的確認分組,於是給接收方發送 1 號數據分組,接收方收到重傳的 0 號數據分組,根據序號可知這是重複的數據分組將其丟棄,並針對 0 號數據分組再發送一個確認分組,這樣發送方就會收到兩個針對 0 號數據分組的確認。然而,發送方會將第二個針對 0 號數據分組的確認誤認為是針對 1 號數據分組的確認。如果給確認分組也編上序號,發送方就可以知道這是對 0 號數據分組的重複確認,忽略即可。接收方正確收到 1 號數據分組後,給發送方發送針對 1 號數據分組的確認,分組確認號為 1,發送方收到後給接收方發送下一個數據分組,序號為 0。請同學們注意,這個 0 號數據分組與之前的 0 號數據分組不是同一個數據分組,接收方正確接收號,給發送方發送相應的確認分組確認號為 0。
注意事項,總結:
SW 的信道利用率
橫坐標為時間。為了簡單起見,假設收發雙方之間是一條直通的信道,發送方發送完一個數據分組後就停止發送,並等待接收方對該數據分組的確認。當收到確認分組後,可以發送下一個數據分組,如此反復進行。這一段時間是發送方發送數據分組所耗費的發送時延,即為 TD。這一段時間是信號在收發雙方之間往返傳播所耗費的時間,記為 RTT。
這一段兒時間是接收方發送確認分組所耗費的發送時延,記為 TA,這是使用停止等待協議的發送方從發送一個數據分組開始到可以發送下一個數據分組為止所經歷的總時間。由於僅僅是在時間 TD 內才用來傳送有用的數據,也就是數據分組,因此信道利用率優,可用下式來計算, TA 一般都遠小於 TD,這是因為確認分組的長度一般都遠小於數據分組的長度,因此 TA 可以忽略。
當信號在收發雙方之間往返傳播所耗費的時間 RTT 遠大於數據分組的發送時間。 TD 時,例如地球同步衛星鏈路的 RTT 就很大。如果我們使用這樣的鏈路而要發送的數據分組又很小且發送速率很大時,信道利用率就會很低。當 RTT 遠小於數據分組的發送時間 TD 時,例如無線局域網的 RTT 一般遠小於 TD,此時的信道利用率還是比較高的。需要說明的是,上述推導未考慮出現超時重傳的情況,若出現超時重傳,對於傳送有用的數據信息來說,信道利用率還要降低。
綜上所述,== 在往返時間 RTT 相對較大的情況下,為了提高信道利用率,收發雙方不適合採用停止等待協議 ==,而可以選擇使用回退 n 真協議或選擇重傳協議。
例題
14m13s
總結
回退 N 幀協議 GBN#
00m37s
sw 協議中,我們發送一次就要等待接收一次,每次的操作都是 1 對 1 的,這樣是低效的,GBN 的想要一次發送多個分組,這多個分組被統一確認,就不用一趟一趟的跑了
- 在使用流水線傳輸方式時,發送方不能無限制地連續發送數據分組,否則可能會導致網絡中的路由器或接收方來不及處理這些數據分組,進而導致數據分組的丟失,這實際上是對網絡資源的浪費。(限制發送數量)
- 回退 N 幀協議採用流水線傳輸方式,並且利用發送窗口來限制發送方連續發送數據分組的數量,這屬於連續 ARQ 協議。
採用 n 個比特給分組編序號,範圍是 0- 2^n-1。本例假設採用 3 個比特給分組編序號,則序號範圍是 0- 7。當序號增加到 7 時,下個序號又從 0 開始
發送方的發送窗口和接收方的接收窗口按上述規則不斷向前滑動,因此這類協議又稱為滑動窗口協議
無傳輸差錯
06m03s
傳輸出錯,回退 n 幀
07m33s
接收到的就變綠,哪裡丟失哪裡停,收到幾個,藍色窗口移動幾格
一旦出錯,就要退回去重傳已發送過的 N 個數據分組
12m17s 舉例說明
發送窗口與接收窗口
當發送窗口 Wt 超過取值範圍時
例題
18m04s
選擇重傳協議 SR#
和前兩種對比
- 為了使發送方僅重傳出現差錯的數據分組,接收方 ==不再採用累積確認==,而需要對每一個正確接收的數據分組進行逐一確認
- Wr 不再等於 1,以便 == 接收方先收下失序到達但無誤碼且序號落在接收窗口內的那些數據分組 ==,等到所缺分組收齊後,再一並送交上層。
舉例說明
03m47s
邏輯的關鍵在於,這個方式,會刻意等一下,只單獨發送沒收到的那個確認一遍,犧牲了一點偶發的錯誤裡的問題,保證了整體上的穩定性
例題:
09m48s
哪個沒收到就返回哪個沒收到
點對點協議 PPP#
點對點協議(Point-to-Point Protocol,PPP)是目前使用 ==最廣泛== 的點對點 == 數據鏈路層協議 ==
應用現狀
- 個人用戶計算機,通過 PPP 連接到某個 ISP,進而進入因特網,個人用戶與 ISP 的通信,在數據鏈路層,一般就是 PPP(PPPoE 是可在以太網上工作的協議,使得 ISP 可以通過數字用戶路線調製解調器及以太網等寬帶接入技術,以以太網接口的形式,為用戶提供接口服務)
- 廣域路由器之間的專用線路
PPP 的構成#
- 對各種協議數據報的封裝方法(封裝成幀)
- 鏈路控制協議 LCP
- 用於建立、配置以及測試數據鏈路的連接
- 一套網絡控制協議 NCPs
- 其中的 == 每一個協議支持不同的網絡層協議 ==
PPP 幀的格式#
PPP 解決透明傳輸問題,數據部分出現了幀的標識#
- 面向字節的異步鏈路(字節是基本信息單位)
- 使用字節填充法,插入轉義字符
- 面向比特的同步鏈路(比特是基本信息單位)
- 比特填充法,插入 0
面向字節的異步鏈路透明傳輸#
面向比特的同步鏈路#
比特填充,插入 0,之前的也是這麼做的
PPP 幀的差錯檢測#
尾部的 FCS 字段進行幀檢驗
使用循環冗餘校驗
接收方每收到一個 PPP 幀,就進行 CRC 檢驗。
若 CRC 檢驗正確,就收下這個幀;否則,就丟棄這個幀。
使用 PPP 的數據鏈路層,向上提供的是不可靠數據傳輸服務。
以撥號接入為例的 PPP#
10:15
開始和結束都是靜止狀態
以太網#
數據通信的三種方式#
- [[單播]]:一對一通信
- [[廣播]]:一對所有通信,發出的信息要送達所有人
- == 局域網主要採用共享信道 == 的方式來進行通信,主要採取的方式是廣播
- 以太網、無線局域網
- [[組播]]:一對一個組的通信,一個信息發送給一個特定的組的用戶
局域網與廣域網中鏈路層不同#
介質訪問控制:解決數據在信道傳輸過程中的衝突問題
- 局域網中,所有節點共享信道
- 廣域網中,點對點沒有信道共享,沒有衝突,不需要介質訪問控制
點對點數據鏈路 (廣域網) 控制(撥號鏈路)
- 無需介質訪問控制
- 無需明確的 MAC 尋址
- 常見協議:HDLC、PPP
分配信道的兩種方式#
信道靜態分配#
按照某種方式,預先分配給各用戶,不同用戶使用情況不同
- 如:頻分復用、時分復用
- 只要一個用戶得到了自己的,就不會和別人衝突了
信道動態分配#
多個用戶共用一條線路,信道按照需求動態的分配給用戶(採用多路訪問協議 Multiple access protocol)信道不需要提前分配,信道是開放的
- 隨機訪問
- 特點:站點或用戶來爭用信道,可能會出現衝突
- 典型隨機訪問協議:ALOHA 協議、CSMA 協議、CSMA/CD 協議 (共享式以太網採用)
- (有序的)受控訪問協議 —— 依次訪問
- 特點:站點被明確地分配,不會出現衝突
- 如 Token (令牌)方式
特殊情況下細分鏈路層處理信道#
廣播多路訪問鏈路(局域網):由於可能存在介質爭用
還可能被細分為
- 介質訪問控制子層
- 介質訪問控制(MAC)子層專職處理介質訪問的爭用與衝突問題
- 邏輯鏈路控制子層
數據鏈路層的主要協議#
- 點對點協議(Point-to-Point Protocol)
- 以太網(Ethernet)
- 高級數據鏈路協議(High-Level Data Link Protocol)HDLC 協議
- 幀中繼(Frame Relay)
- 異步傳輸模式(Asynchronous Transfer Mode)
局域網的常用標準(以太網是有限局域網)#
- IEEE 802.1 是一組協議的集合:
- IEEE 802.1q 定義 VLAN 標記協議;IEEE 802.1s 定義多生成樹協議;
- 802.2LLC:基本不用
- DIX EThernet V2 以太網:不需要 LLC 子層。因為其實現的是無連接的數據包傳輸服務
- 802.3 局域網:簡稱為以太網 (採用 CSMA/CD 訪問控制方式)
- 802.5 令牌環網
- 802.4 令牌總線網等
- 802.11 無線局域網:工作方式採用 DCF(分布控制)和 PCF(中心控制)
以太網#
- 以太網的 MAC 層中沒有流控,ARQ 和糾錯碼功能的。(這樣能非常容易和高效地實現以太網硬件,大幅降低成本。也正是因為便宜夠用,以太網才會如此流行。)
- 這樣設計合理的關鍵前提是 Wired,以及 LAN,這樣的物理環境決定了誤碼率非常低。單跳傳輸很少出錯,如果出錯,以太網會直接把包吞掉,由上層自己探測丟包和重傳。
- 當然,上層重傳的開銷是遠大於鏈路層重傳的。例如,讓 TCP 做重傳,低效的地方在於,一是端到端的重傳明顯消耗更多的網絡容量,因為會走很多跳;二是 TCP 檢測的時機不如鏈路層及時,導致重傳的觸發往往是滯後的,影響了傳輸性能。
- 如果把目光移到 WAN 和無線網絡上,數據鏈路層就複雜得多。這個時候,長距離通信、無線信道都會導致誤碼率蹭蹭上升,如果數據鏈路層不做可靠傳輸,靠上層太過低效。例如 802.11 就有流控。如果是 3 G、4 G 這樣的移動通信,會更複雜。
共享式以太網#
以太網最初採用無源電纜(不包含電源線)作為共享總線來傳輸幀,屬於基帶總線局域網,傳輸速率為 2.94Mb/s。(有使用共享總線的共享式以太網和使用集線器的共享式以太網)
-
以太網目前已經從傳統的共享式以太網發展到交換式以太網,傳輸速率已經從 10Mb/s 提高到 100Mb/s、1Gb/s 甚至 10Gb/s。
-
以太網是目前應用最普遍的局域網技術,取代了其他局域網技術如令牌環、FDDI 和 ARCNET。(以太網只是局域網技術的一種)
網絡適配器#
- 網卡與 CPU 之間的通信,走的是主板上的 I/O 總線,以並行傳輸方式進行
- 網卡與外部以太網(局域網)之間的通信,一般 == 通過傳輸媒體 ==(同軸電纜、雙絞電纜、光纖)== 以串行方式進行 ==
- 除了實現物理層和數據鏈路層的功能之外,還要進行
- 並行傳輸和串行傳輸的轉換
- 由於網絡的傳輸速率和計算機內部總線上的傳輸速率並不相同,因此在網卡的核心芯片中都會包含用於緩存數據的存儲器
- 網卡驅動程序 == 負責驅動網卡發送和接收幀 ==
MAC 地址#
- 當多個主機連接在同一個廣播信道上,要想實現兩個主機之間的通信,則 == 每個主機都必須有一個唯一的標識,即一個數據鏈路層地址 ==。(讓計算機的網卡能夠判別數據幀是否發送給自己)
- 在每個主機發送的幀的首部中,都攜帶有發送主機(源主機)和接收主機(目的主機)的數據鏈路層地址。由於這類地址是用於媒體接入控制(Medium Access Control,MAC)的,因此被稱為 MAC 地址
- MAC 地址一般被固化在網卡的電可擦可編程只讀存儲器 EEPROM 中,因此 MAC 地址也被稱為硬件地址。
- MAC 地址有時也被稱為物理地址。(使用 ipconfig/ip 命令查看 TCP/IP 配置信息 )
- 不要被物理地址中的 “物理” 二字誤導,誤認為物理地址屬於網絡體系結構中物理層的範疇。(物理地址屬於數據鏈路層範疇。)
==MAC 地址是針對接口的唯一標識==
MAC 地址的格式#
藍牙也占用 mac 地址
IEEE 802 局域網的 MAC 地址發送順序#
單播廣播 MAC 地址實例#
17:31
注意接收和接受的區別
網卡從網絡上每收到一個幀,就檢查幀首部中的目的 MAC 地址,按以下情況處理:
(1)如果目的 MAC 地址是廣播地址(FF-FF-FF-FF-FF-FF),則接受該幀。
(2)如果目的 MAC 地址與網卡上固化的全球單播 MAC 地址相同,則接受該幀。
- 全球單播 MAC 地址就如同身份證上的身份證號碼,具有唯一性,它往往與用戶個人信息綁定在一起。因此,用戶應儘量確保自己擁有的全球單播 MAC 地址不被泄露。
- 為了避免用戶設備連接 Wi-Fi 熱點時 MAC 地址泄露的安全問題,目前大多數移動設備都已經採用了隨機 MAC 地址技術。
(3)如果目的 MAC 地址是網卡支持的多播地址,則接受該幀。
(4)除上述(1)、(2)和(3)情況外,丟棄該幀。
CSMA/CD 協議的基本原理#
目的在於,總線上要是有很多信息同時流通,所有人走在一起就容易遇到碰撞上的問題
- 共享總線以太網具有天然的 == 廣播特性 ==,即使總線上 == 某個站點給另一個站點發送單播幀 ==,表示幀的 == 信號也會沿著總線傳播到總線上的其他 == 各站點。
- 當某個站點在總線上發送幀時,== 總線資源會被該站點獨占 ==。此時,如果總線上的 == 其他站點也要在總線發送幀 ==,就會產生信號 == 碰撞 ==。
- 當兩個或多個站點同時使用總線發送幀時,就會產生信號碰撞。
為了解決各站點爭用總線的問題,共享總線以太網使用了一種專用協議 **CSMA/CD,它是載波監聽多址接入 / 碰撞檢測(Carrier Sense Multiple Access Collision Detection)的英文縮寫詞。
- 載波監聽檢測到總線空閒,但總線並不一定空閒。
- 使用 CSMA/CD 協議的共享總線以太網上的各站點,只是儘量避免碰撞並在出現碰撞時做出退避後重發的處理,但不能完全避免碰撞。
- 在使用 CSMA/CD 協議時,由於正在發送幀的站點必須 “邊發送幀邊檢測碰撞”,因此 == 站點不可能同時進行發送和接收 ==,也就是不可能進行全雙工通信,而只能進行半雙工通信(雙向交替通信)
CDMA(Code Division Multiplex Access)是碼分多址的英文縮寫詞。 CDMA 的每個用戶可以在相同的時間使用相同的頻帶進行通信
TDMA(Time Division Multiplex Access)是時分多址的英文縮寫詞。
時分復用的所有用戶在不同的時間佔用相同的頻帶。
FDMA(Frequency Division Multiplex Access)是頻分多址的英文縮寫詞。頻分復用的所有用戶同時佔用不同的頻帶資源
CSMA 屬於爭用型的媒體訪問控制協議,連接在同一媒體上的多個站點使用該協議以競爭方式發送數據幀,可能出現衝突(也稱為碰撞)。
TDMA、FDMA、CDMA 是常見的物理層信道復用技術,屬於靜態劃分信道,用於多用戶共享信道,不會發生衝突。
共享式以太網的徵用期#
使用 CSMA/CD 協議的共享總線以太網上的任意站點在發送幀的過程中都可能會遭遇碰撞。某個站點從發送幀開始,最長要經過多長時間,才能檢測出自己發送的幀與其他站點發送的幀產生了碰撞?
A:應當考慮位於共享總線以太網兩端的兩個站點發送的幀產生碰撞的情況
例題:
共享式以太網的最小幀長和最大幀長#
最小幀長:64 B
最小幀長 = 總線傳播時延 * 數據傳輸速率 * 2(最短幀長為 64 B,未到則填充)
最大幀長:1518 B
幀太長會讓總線一直忙,且對接收方主機的緩衝區大小有要求
例題:
共享式以太網的退避算法#
https://www.bilibili.com/video/BV1rd4y1P7Zh?t=3.6
在使用 CSMA/CD 協議的共享總線以太網中,正在發送幀的站點一邊發送幀一邊檢測碰撞,當檢測到碰撞時就立即停止發送,退避一段隨機時間後再重新發送。
- 共享總線以太網中的各站點採用截斷二進制指數退避(Truncated Binary Exponential Backoff)算法來選擇退避的隨機時間。
- 如果連續多次發送碰撞,就表明可能有較多的站點參與競爭信道。但使用上述退避算法可使重傳需要推遲的平均時間隨重傳次數而增大(即動態退避),因而減小產生碰撞的概率。
- 當重傳達 16 次仍不能成功時,就表明同時打算發送幀的站點太多,以至於連續產生碰撞,此時應放棄重傳並向高層報告。
- A. 當重傳次數 k <= 10 時,選擇 k 和 10 的最小值;當 k > 10 時,選擇 k = 10
- B. 從 0,1,2,3... 2^k - 1 中隨機選擇一個數 n,重傳時間為 n 倍的基本退避時間,即 2τn
- C. 重傳到 16 次時,拋棄該幀,並向高層報錯
共享式以太網的信道利用率#
使用集線器的共享式以太網#
- 以太網發展出來了一種使用大規模集成電路來替代總線、並且可靠性非常高的設備,叫作集線器(Hub)。
- 站點連接到集線器的傳輸媒體也轉而使用更便宜、更靈活的雙絞線電纜
共享總線型以太網和星型拓撲以太網#
物理拓撲結構不同,但是本質上是相同的,工作邏輯相同,使用 CSMA/CD 協議共享(爭用)網絡資源
10BASE-T 星型以太網#
物理層拓展以太網#
擴展站點與集線器之間的距離#
同軸電纜的共享總線以太網,為了擴大距離用的是轉發器
雙絞線的集線器共享以太網:每個站點到集線器的距離小於 100m,使用光纖調製解調器擴展距離
擴展共享式以太網的覆蓋範圍和站點數量#
如果不同的碰撞域使用不同的數據率,則不同通過集線器將它們連接起來
數據鏈路層擴展以太網(408 不考)#
使用橋接#
橋接(bridge)工作在數據鏈路層(包含其下的物理層),因此橋接具備屬於數據鏈路層範疇的相關能力。
橋接可以識別幀的結構。
橋接可以根據幀首部中的目的 MAC 地址和橋接自身的幀轉發表來轉發或丟棄所收到的幀。
可連接不同物理層、不同 MAC 子層和不同速率的局域網
使用存儲轉發,增加了時延
具有不同 MAC 字子段的橋接段連接在一起時延更大
在 MAC 子層沒有流量控制的功能
只適合用戶數不多、通信量不大的局域網,否則會因為傳播信息過多而發生網絡擁塞
橋接的主要結構和基本工作原理#
舉例:
轉發廣播幀#
透明橋接的自學習和轉發幀的流程#
- 透明橋接(Transparent Bridge)通過自學習算法建立轉發表。
- 透明橋接中的 “透明”,是指以太網中的各站點並不知道自己所發送的幀將會經過哪些橋接的轉發,最終到達目的站點。也就是說,以太網中的各橋接對於各站點而言是看不見的。
- 透明橋接的標準是 IEEE 802.1 D,它通過一種自學習算法基於以太網中各站點間的相互通信逐步建立起自己的轉發表。
丟棄:當轉發表中的接口就是該幀進入橋接的接口,則丟棄該幀
透明橋接的生成樹協議#
環状的結構中,廣播幀或者沒有目的地址的單播幀會在環路中永久兜圈的問題
交換式以太網(全雙工)#
- 橋接的接口數量很少,通常只有 2~4 個,一般只用來連接不同的網段
- == 以太網交換機 == 解決這個問題,== 實質上是具有多個接口的橋接 ==,也稱之為交換式集線器 (Switching Hub),或者叫二層交換機
- 二層是指,以太網交換機工作在數據鏈路層(包括物理層)這二層
- 與橋接相同,交換機內部的轉發表也是通過自學習算法,基於網絡中各主機間的通信,自動地逐步建立起來的
- 另外,交換機也使用生成樹協議 STP,來產生能夠連通全網但不產生環路的通信路徑
- 僅使用交換機(而不使用集線器)的以太網就是交換式以太網。
02m13s
橋接可以隔離碰撞域
以太網交換機#
-
交換機的每個接口可以連接計算機,也可以連接集線器或另一個交換機。 (三種連接方式)
-
當交換機的接口與計算機或交換機連接時,可以工作在全雙工方式,並能在自身內部同時連通多對接口,使每一對相互通信的計算機都能像獨佔傳輸媒體那樣,無碰撞地傳輸數據,這樣就不需要使用 CSMA/CD 協議了。
-
當交換機的接口連接的是集線器時,該接口就只能使用 CSMA/CD 協議並只能工作在半雙工方式。
-
現在的交換機和計算機中的網卡都能自動識別上述兩種情況,並自動切換到相應的工作方式。
-
交換機一般都具有多種速率的接口,例如 10 Mb/s、100 Mb/s、1 Gb/s 甚至 10 Gb/s 的接口,大部分接口支持多速率自適應。
交換機自學習和轉發幀#
- 交換機中沒有目的地址就盲目的廣播發送,由目的地址就找對應端口發送
- 以太網交換機是一種即插即用設備,剛上電啟動時其內部的幀交換表是空的。隨著網絡中各主機間的通信,以太網交換機通過自學習算法自動逐漸建立起幀交換表。
例題:
![](ipfs://QmdMsibxdUFH4QB2sHG8N9Mzey3oD7irt3jxeE