文章目錄
1.數據鏈路層
1.1 概述
- 一些術語:
- 將運行鏈路層協議協議的任何設備均稱爲結點( node) ,包括主機、路由器、交換機和 WiFi 接人點等等
- 沿着通信路徑連接相鄰結點的通信信道稱爲鏈路( link)
- 在通過特定的鏈路時,傳輸結點將網絡層數據報封裝在鏈路層幀(frame) 中,並將該幀傳送到鏈路中
- 一個交通運輸的類比例子說明網絡層與鏈路層:
- 遊客想從 A 到 B 去遊玩,旅行社選擇出最佳路線:從 A 坐大巴到 C,從 C 坐飛機到 D,從 D 坐火車到目的地 B。
- 一個遊客好比一個數據報,每個運輸區段好比一條鏈路,每種運輸方式好比一 種鏈路層協議,而該旅行社好比一個路由選擇協議
1.2 鏈路層服務
- 鏈路層協議能夠提供的可能服務包括:
- 成幀( framing) :
- 將數據報組裝成數據幀,加首部和尾部
- 鏈路接入(link access):
- 媒體訪問控制 (Medium Access Control , MAC) 協議規定了幀在鏈路上 傳輸的規則
- 幀首部的 MAC 地址,用於標識幀的源和目的,不同於 IP 地址!
- 相鄰節點的可靠交付
- 在低誤碼率的有線鏈路上,鏈路層可靠交付可能會被認爲是一種不必要的開銷,因而很少採用
- 誤碼率高的鏈路如無線鏈路,需要可靠交付。其目的是本地(也就是在差錯發生的鏈路上)糾正一個差錯,而不是通 過運輸層或應用層協議迫使進行端到端的數據重傳
- 差錯檢測和糾正
- 因特網的運輸層和網絡層也提供了有限形式的差錯檢測,即因特網檢驗和。
- 鏈路層的差錯檢測通常更復雜, 並且用硬件實現
- 差錯糾正類似於差錯檢測,區別在於接收方不僅能檢測幀中出現的比特差錯,而且能夠準確地確定幀中的差錯出現的位置(並因此糾正這些差錯)
- 成幀( framing) :
1.3 鏈路層具體實現
- 鏈路層是實現在路由器的線路卡中的。 主機的鏈路層呢?
- 一個典型的主機體系結構:
- 鏈路層的主體部分是在網絡適配器 (network adapter) 中實現的, 網絡適配器有時也稱爲網絡接口卡 (Network Interface Card , NIC)
- 位於網絡適配器核心的是鏈路層控制器,通常是一個實現了許多鏈路層服務的專用芯片, 因此,鏈路層控制器的許多功能是用硬件實現。
- 越來越多的網絡適配器被綜合進主機的主板,即所謂的局域網在主板配置
- 鏈路層 是硬件和軟件的結合體,即此處是協議棧中軟件與硬件交接的地方
2.差錯檢測和糾正
略
3.多路訪問協議
3.1概述
- 有兩種類型的網絡鏈路:點對點鏈路和廣播鏈路
- 點對點鏈路( point-to-point link) 由鏈路一端的單個發送方和鏈路另一端的單個接收方組成。
- 許多鏈路層協議都是爲點對點鏈路設計的,如點對點協議( point- to-point protocol , PPP) 和高級數據鏈路控制 (high-Ievel data link control,HDLC)
- 廣播鏈路 (broadcast link) ,它能夠讓多個發送和接收結點都連接到相同的、單一的、共享的廣播信道上。
- 以太網和無線局域網是廣播鏈路層技術的例子
- 先暫緩討論特定的鏈路層協議,而研究一個對鏈路層很重要的問題:如何協調多個發送和接收結點對一個共享廣播信道的訪問,這就是多路訪問問題( multiple access problem)
- 爲解決此類問題 —— 多路訪問協議( multiple access protocol) ,即 結點通過這些協議來規範它們在共享的廣播信道上的傳輸行爲
- 因爲所有的結點都能夠傳輸幀,所以多個結點可能會同時傳輸幀,結果所有結點同時接到多個幀,傳輸的幀在所有的接收方處碰撞( collide) 了,此時沒有一個接收結點能夠有效地獲得任何傳輸的幀
- 顯然,如果許多結點要頻繁地傳輸幀,許多傳輸將導致碰撞,廣 播信道的大量帶寬將被浪費掉
- 當多個結點處於活躍狀態時,爲了確保廣播信道執行有用的工作,以某種方式協調活躍結點的傳輸是必要的。 這種協調工作由多路訪問協議負責
- 多路訪問協議劃分爲 3 種類型
- 信道劃分協議 (channel partitioning protocol)
- 隨機接入協議 (random access protocol)
- 輪流協議( taking-turns protocol)
- 理想的多路訪問協議:
- 給定:速率爲 R bps 的廣播信道
- 期望:
- 當僅有一個結點有數據發送時,該結點具有 R bps 的吞吐量;
- 當有 M 個結點要發送數據時,每個結點吞吐量爲 R/M bps
- 協議是分散的:這就是說不會因某主結點故障而使整個系統崩潰
- 協議是簡單的,使實現不昂貴
3.2信道劃分協議
- 之前講過,時分多路複用 (TDM) 和頻分多路複用 (FDM) 是兩種能夠用於在所有共享信道結點之間劃分廣播信道帶寬的技術
- TDMA(time division multiple access):
- 週期性接入信道
- 每個站點在每個週期,佔用固定長度的時隙
- 未用時空閒時隙、
- 消除了碰撞而且非常公平,每個結點在每個幀時間內得到了專用的傳輸速率
- 然鵝,結點被限制於 R/Nbps 的平均速率,即使當它是唯一有分組要發送的結點;結點必須總是等待它在傳輸序列中的輪次,即使當它是唯一有分組要發送的結點
- FDMA(frequency division multiple access)
- 信道頻譜劃分爲多個頻帶
- 每個站點分配一個固定的頻帶
- 無傳輸頻帶空閒
- 避免了碰撞, 在 N 個結點之間公平地劃分了帶寬
- 然鵝,限制了一個結點只能使用 R/N 的帶寬,即使當它是唯一一個有分組要發送的結點時
3.3 隨機接入協議
- 在隨機接入協議中,一個傳輸結點總是以信道的全部速率(即 R bps) 進行發送
- 沒有事先的節點間協調,當有碰撞時,涉及碰撞的每個結點反覆地重發(不必立即重發)它的幀 (也就是分組) ,到該幀無碰撞地通過爲止
- 在重發該幀之前等待一個隨機時延。涉及碰撞的每個結點獨立地選擇隨機時延
- 典型的數據接入協議:
- ALOHA 協議
- CSMA 協議、CSMA/CD、CSMA/CA
3.3.1 時隙 ALOHA
- 最簡單的隨機接人協議之一 —— 時隙 ALOHA 協議
- 假設:
- 所有幀大小相同
- 時間被劃分等長的時隙(一個時隙等於傳輸一幀的時間)
- 結點只在時隙起點開始傳輸幀
- 結點是同步的, 每個結點都知道時隙何時開始
- 如果在一個時隙中有兩個或者更多個幀碰撞,則所有結點在該時隙結束之前檢測到該碰撞事件
- 在每個結點中,時隙 ALOHA 的操作是:
- 每個結點在每個時隙以概率 p 發送數據
- 當結點有一個新幀要發送時,等到下一個時隙開始並在該時隙傳輸整個幀
- 如果沒有碰撞,該結點成功地傳輸它的幀
- 如果有碰撞,該結點檢測到這次碰撞,以概率 p 在後續的每個時隙中重傳它的幀,直到成功
- 優點:
- 單個節點活動時,可以連續以信道全部速率傳輸數據
- 高度分散化,只需時鐘同步
- 簡單
- 缺點:
- 衝突,浪費時隙
- 空閒時隙
- 結點也許能以遠小於分組傳輸時間檢測到衝突
- 效率:
- 定義:長期運行中成功時隙的比例(很多結點、很多幀待發送)
- 因爲有 N 個結點,任意一個結點成功傳送的概率是 Np(l-p)N-1
- 當 N 無窮大時,可得最大效率 = 1/e = 0.37
- 相似的分析還表明 37% 的時隙是空閒的, 26% 的時隙有碰撞
3.3.2 ALOHA 協議
- 第 一個 ALOHA 協議實際上是一個非時隙、完全分散的協議。更加簡單,無需同步
- 當有新的幀需要發送時,立即發送
- 衝突性增大,若在t0 時刻發送,會與在[t0 - 1 , t0 + 1] 期間發送的幀衝突
- 任意一個結點成功傳送的概率是 p(1 - p)2(N-1)
- 當 N 無窮大時,可得最大效率 = 1/2e = 0.18,剛好是時隙 ALOHA 的一半。 這就是完全分散的 ALOHA 協議所要付出的代價
3.4 載波偵聽多路訪問 (CSMA)
- 載波偵聽( carrier sensing) ,即一個結點在傳輸前先偵聽信道
- 若信道空閒,則發送完整幀
- 若信道上有幀正在發送,則推遲發送
- 1 - 堅持 CSMA
- 非堅持 CSMA
- p - 堅持 CSMA
- 碰撞檢測( collision detection) ,即當一個傳輸結點在傳輸時一直在偵聽此信道
- 如果它檢測到另 一個結點正在傳輸干擾幀,它就停止傳輸,在重複"偵聽-當空閒時傳輸"循環 之前等待一段隨機時間
- 以上兩個規則包含在載波偵聽多路訪問( Carrier Sense Multiple Access , CSMA) 和具有碰撞檢測的 CSMA(CSMA with Collision Detection, CSMA/CD)
- 對於 CSMA,如果所有的結點都進行載波偵聽了,爲什麼當初會發生碰撞?—— 以時空圖解釋:
- 在時刻 t0,結點 B 偵聽到信道是空閒的,因此結點 B 開始傳輸,沿着廣播媒體在兩個方向上傳播它的比特
- 在時刻 t1(兩時刻相差極短),結點 D 有一個幀要發送。儘管結點 B 在該時刻正在傳輸, 但 B 傳輸的比特還沒有到達 D ,因此 D 此時偵聽到信道空閒,從而 D 開 始傳輸它的幀
- 一個短暫的時間之後, B 的傳輸開始在 D 干擾 D 的傳輸
- 顯然廣播信道的端到端信道傳播時延 (channel propagation delay) (信號從一個結點傳播到另一個結點所花費的時間) 在決定其性能方面起着關鍵的作用
- 繼續發生衝突幀,導致浪費資源
- 對於 CSMA / CD:
- 短時間內可以檢測到衝突,衝突後終止傳輸,減少信道浪費
- 當某結點執行碰撞檢測時, 一旦它檢測到碰撞將立即停止傳輸
- 在多路訪問協議中加入碰撞檢測,通過不傳輸一個無用的、(由來自另一個結點的幀干擾)損壞的幀,將有助於改善協議的性能
- 在結點中與廣播信道相連的適配器負責鏈路層幀的傳輸
- 信道空閒則開始傳輸,信道忙則等待,直到偵聽到沒有信號能量時纔開始傳輸
- 在傳輸過程中,適配器監視來自其他使用該廣播信道的適配器的信號能量的存在
- 如果在傳輸時檢測到來自其他適配器的信號能量,它中止傳輸。適配器等待一個隨機時間量後,再次返回第一步
- 隨機時間長短如何選擇?
- 當碰撞結點數量較少時,時間間隔較短;當碰撞結點數量較大時,時間間隔較長
- 採用二進制指數後退(binary exponential backoff)算法
- 當傳輸一個給定幀時,在該幀經歷了一連串的幾次碰撞後,結點隨機地從 [ 0,1, 2, … , 2n-1] 中選擇一個 K 值。對於以太網,一個結點等待的實際時間量是 K*512 比特時間
- 因此從中選擇 K 的集合長度隨着碰撞次數呈指數增長;正是由於這個原因,該算法被稱爲二進制指數後退
- CSMA / CD 效率問題
- 當只有一個結點有一個幀發送時,該結點能夠以信道全速率進行傳輸。然而,如果很多結點都有幀要發送,信道的有效傳輸速率可能會小得多。
- CSMA / CD 效率的推導超出了本書的範圍
- 當結點間的傳播時延約爲 0 時,或最大幀的傳輸時間很大時,CSMA / CD 的效率很高
3.5 輪轉訪問協議
- 主要討論們兩種比較重要的輪流協議:
- 輪詢協議 ( polling protocol)
- 令牌傳遞協議 ( token-passing protocol)
- 輪詢協議 ( polling protocol)
- 要求這些結點之一要被指定爲主結點,主結點以循環的方式輪詢 ( poll) 每個結點(輪流“邀請”每個從屬結點發送數據)
- 問題:
- 輪詢開銷
- 等待延遲
- 單點故障
- 令牌傳遞協議 ( token-passing protocol)
- 控制令牌依次以某種固定的次序從一個結點傳遞到下一個結點,持有令牌的結點發送數據
- 令牌:很小的特殊幀
- 問題:
- 令牌開銷
- 等待延遲
- 單點故障