數據鏈路層使用的信道主要有如下兩種類型:算法
鏈路(link) 是一條無源的點到點的物理線路段,中間沒有任何其餘的交換結點。
數據鏈路 (data link) 除了物理線路外,還必須有通訊協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。緩存
如今最經常使用的方法是使用 適配器(即網卡)來實現這些協議的硬件和軟件。
計算機經過 適配器和 局域網進行通訊。
封裝成幀 (framing) 就是在一段數據的先後分別添加首部和尾部,而後就構成了一個幀。肯定幀的界限。
網絡
若是數據中的某個字節的二進制代碼剛好和 SOH 或 EOT 同樣,數據鏈路層就會錯誤地「找到幀的邊界」。
解決方法:字節填充 (byte stuffing) 或比特填充 (bit stuffing)。
字節填充:
dom
比特填充:
異步
在傳輸過程當中可能會產生比特差錯:1 可能會變成 0 而 0 也可能變成 1。
在一段時間內,傳輸錯誤的比特佔所傳輸比特總數的比率稱爲誤碼率 BER (Bit Error Rate)。學習
在數據鏈路層傳送的幀中,普遍使用了循環冗餘檢驗 CRC 的檢錯技術。編碼
假設待傳送的一組數據 M = 101001(如今 k = 6)。咱們在 M 的後面再添加供差錯檢測用的 n 位冗餘碼一塊兒發送。
用二進制的模 2 運算進行 2^n 乘 M 的運算,這至關於在 M 後面添加 n 個 0。
獲得的 (k + n) 位的數除以事先選定好的長度爲 (n + 1) 位的除數 P,得出商是 Q 而餘數是 R,餘數 R 比除數 P 少 1 位,即 R 是 n 位。
將餘數 R 做爲冗餘碼拼接在數據 M 後面發送出去。spa
在數據後面添加上的冗餘碼稱爲幀檢驗序列 FCS (Frame Check Sequence)。
FCS 能夠用 CRC 這種方法得出,但 CRC 並不是用來得到 FCS 的惟一方法。接口
若得出的餘數 R = 0,則斷定這個幀沒有差錯,就接受 (accept)。
若餘數 R != 0,則斷定這個幀有差錯,就丟棄。ip
僅用循環冗餘檢驗 CRC 差錯檢測技術只能作到 無差錯接受 (accept)。
要作到「 可靠傳輸」(即發送什麼就收到什麼)就必須再加上 確認和重傳機制。
在數據鏈路層使用 CRC 檢驗,可以實現無比特差錯的傳輸,但這還 不是可靠傳輸。這裏介紹的 數據鏈路層協議都 不是可靠傳輸的協議。
對於點對點的鏈路,目前使用得最普遍的數據鏈路層協議是點對點協議 PPP (Point-to-Point Protocol)。
用戶使用撥號電話線接入互聯網時, 用戶計算機和 ISP 進行通訊時所使用的數據鏈路層協議就是 PPP 協議。
PPP 是面向字節的,全部的 PPP 幀的長度都是整數字節。
標誌字段 F = 0x7E;地址字段 A 只置爲 0xFF;控制字段 C 一般置爲 0x03。
PPP 有一個 2 個字節的協議字段。其值
將信息字段中出現的每個 0x7E 字節轉變成爲 2 字節序列 (0x7D, 0x5E)。
若信息字段中出現一個 0x7D 的字節, 則將其轉變成爲 2 字節序列 (0x7D, 0x5D)。
若信息字段中出現 ASCII 碼的控制字符(即數值小於 0x20 的字符),則在該字符前面要加入一個 0x7D 字節,同時將該字符的編碼加以改變。
在發送端,只要發現有 5 個連續 1,則當即填入一個 0。
接收端對幀中的比特流進行掃描。每當發現 5 個連續1時,就把這 5 個連續 1 後的一個 0 刪除。
以太網
DIX Ethernet V2 是世界上第一個局域網產品(以太網)的規約。
IEEE 802.3 是第一個 IEEE 的以太網標準。
DIX Ethernet V2 標準與 IEEE 的 802.3 標準只有很小的差異,所以
能夠將 802.3 局域網簡稱爲「以太網」(Ethernet)。
數據鏈路層的兩個子層
IEEE 802 委員會就將局域網的數據鏈路層拆成兩個子層:
邏輯鏈路控制 LLC (Logical Link Control)子層;
媒體接入控制 MAC (Medium Access Control)子層。
因爲 TCP/IP 體系常用的局域網是 DIX Ethernet V2 而不是 802.3 標準中的幾種局域網,所以如今 802 委員會制定的邏輯鏈路控制子層 LLC(即 802.2 標準)的做用已經不大了。故咱們通常不考慮 LLC 子層, 僅考慮 MAC層。
爲了通訊的簡便,以太網採起了兩種重要的措施:
(1) 採用較爲靈活的無鏈接的工做方式
沒必要先創建鏈接就能夠直接發送數據。
對發送的數據幀不進行編號,也不要求對方發回確認。
這樣作的理由是局域網信道的質量很好,因信道質量產生差錯的機率是很小的。
以太網提供的服務是不可靠的交付,即盡最大努力的交付。
當目的站收到有差錯的數據幀時就 丟棄此幀,其餘什麼也不作。差錯的糾正由高層來決定。
(2) 以太網發送的數據都使用曼徹斯特 (Manchester)編碼
CSMA/CD即載波監聽多點接入 / 碰撞檢測 (Carrier Sense Multiple Access with Collision Detection)。
「載波監聽」:用電子技術檢測總線上有沒有其餘計算機發送的數據信號。
「多點接入」:表示許多計算機以多點接入的方式鏈接在一根總線上。
「碰撞檢測」:就是計算機邊發送數據邊檢測信道上的信號電壓大小。
當一個站檢測到的信號電壓擺動值超過必定的門限值時,就認爲總線上至少有兩個站同時在發送數據,代表產生了碰撞。
所謂「碰撞」就是發生了衝突。所以「碰撞檢測」也稱爲「衝突檢測」。
每個正在發送數據的站,一旦發現總線上出現了碰撞,就要當即中止發送,省得繼續浪費網絡資源,而後等待一段隨機時間後再次發送。
爲何要碰撞檢測?
因爲電磁波在總線上的 傳播速率是有限的。
B 若在 A 發送的信息到達 B 以前發送本身的幀 (由於這時 B 的載波監聽檢測不到 A 所發送的信息),則必然要在某個時間和 A 發送的幀發生碰撞。
使用 CSMA/CD 協議的以太網不能進行全雙工通訊而只能進行雙向交替通訊(半雙工通訊)。
每一個站在發送數據以後的一小段時間內,存在着遭遇碰撞的可能性。
這種發送的不肯定性使整個以太網的平均通訊量遠小於以太網的最高數據率。
最早發送數據幀的站,在發送數據幀後至多通過時間 2τ (兩倍的端到端往返時延)就可知道發送的數據幀是否遭受了碰撞。
以太網的端到端往返時延 2τ 稱爲爭用期,或碰撞窗口。
10 Mbit/s 以太網取 51.2 μs 爲爭用期的長度。
對於 10 Mbit/s 以太網,在爭用期內可發送 512 bit,即 64 字節。
由此,以太網規定了 最短有效幀長爲 64 字節,凡長度小於 64 字節的幀都是因爲衝突而異常停止的 無效幀。
k = min[重傳次數, 10]
r = random[0,1,...,(2^k-1)]
時延 = r*2τ(基本退避時間)
當發送數據的站一旦發現發生了碰撞時,便當即中止發送數據;
再繼續發送若干比特的人爲干擾信號(jamming signal),以便讓全部用戶都知道如今已經發生了碰撞。
(1)檢測信道:在發送前,必須先檢測信道。
若檢測到信道忙,則應不停地檢測,一直等待信道轉爲空閒。若檢測到信道空閒,並在 96 比特時間內信道保持空閒(保證了幀間最小間隔),就發送這個幀。
(2)檢測碰撞:
在發送過程當中仍不停地檢測信道,即網絡適配器要邊發送邊監聽。
①發送成功:在爭用期內一直未檢測到碰撞。這個幀確定可以發送成功。
②發送失敗:在爭用期內檢測到碰撞。這時當即中止發送數據,並按規定發送人爲干擾信號。適配器接着就執行指數退避算法,等待 r 倍 512 比特時間後,返回到步驟 (1),繼續檢測信道。但若重傳達 16 次仍不能成功,則中止重傳而向上報錯。
幀間最小間隔
幀間最小間隔爲 9.6 μs,至關於 96 bit 的發送時間。
一個站在檢測到總線開始空閒後,還要等待 9.6 μs 才能再次發送數據。
這樣作是爲了 使剛剛收到數據幀的站的接收緩存來得及清理,作好接收下一幀的準備。
採用雙絞線的以太網採用星形拓撲,在星形的中心則增長了一種可靠性很是高的設備,叫作集線器 (hub)。集線器很像一個多接口的轉發器,工做在物理層。
使用集線器的以太網在邏輯上還是一個總線網,各工做站使用的仍是 CSMA/CD 協議,並共享邏輯上的總線。
在以太網中定義了參數 α,它是以太網單程端到端時延τ與幀的發送時間 T0 之比:
α = τ/T0
爲提升利用率,以太網的參數a的值應當儘量小些。
生產適配器時,6 字節的 MAC 地址已被固化在適配器的 ROM,所以,MAC 地址也叫作硬件地址 (hardware address)或物理地址。
「MAC地址」實際上就是適配器地址或適配器標識符 EUI-48。
48位(6字節)的MAC地址稱爲 MAC-48,它的通用名稱是 EUI-48。
前三個字節由IEEE 的註冊管理機構 RA 負責向廠家分配,稱爲 組織惟一標識符。
後三個字節由廠家自行指派,稱爲 擴展惟一標識符,必須保證生產出的適配器 沒有重複地址。
適配器從網絡上每收到一個 MAC 幀就首先用硬件檢查 MAC 幀中的 MAC 地址。
若是是發往本站的幀則收下,而後再進行其餘的處理。
不然就將此幀丟棄,再也不進行其餘的處理。
經常使用的以太網 MAC 幀格式有兩種標準,最經常使用的 MAC 幀是以太網 V2(DIX Ethernet V2) 的格式。
類型字段用來標誌上一層使用的是什麼協議,以便把收到的 MAC 幀的數據上交給上一層的這個協議。
數據字段的正式名稱是 MAC 客戶數據字段。
數據字段的最小長度(46字節)= 最短有效幀長(64字節) - 首部和尾部(18字節)。
當數據字段的長度小於 46 字節時,應在數據字段的後面加入整數字節的填充字段。
在幀的前面插入(硬件生成)的 8 字節中,第一個字段共 7 個字節,是前同步碼,用來迅速實現 MAC 幀的比特同步。第二個字段 1 個字節是幀開始定界符,表示後面的信息就是 MAC 幀。
集線器工做在物理層,每一個端口至關於一箇中繼器,用於擴展終端數量。
集線器共享帶寬,帶寬爲多個端口所瓜分。碰撞域增大了,但總的吞吐量並未提升。
若是不一樣的碰撞域使用不一樣的數據率,那麼就不能用集線器將它們互連起來。
交換機工做在數據鏈路層,每一個端口至關於一個集線器(即每一個端口是一個獨立的衝突域),原理是根據數據幀頭的MAC地址轉發幀到合適的端口。(即至關於,你們不是都在一個大廣場上喊人,而是能夠根據門牌號找到要找的人)
能同時連通多對接口,使多對主機能同時通訊。
交換機每一個端口獨享帶寬,無碰撞地傳輸數據。
如今,採用以太網 交換機的 星形結構成爲以太網的首選拓撲。
以太網交換機不使用共享總線,沒有碰撞問題,所以不使用 CSMA/CD 協議,而是以全雙工方式工做。但 仍然採用以太網的幀結構。
可在全雙工方式下工做而無衝突發生。在全雙工方式下工做時,不使用 CSMA/CD 協議。
MAC 幀格式仍然是 802.3 標準規定的。
保持最短幀長不變,但將一個網段的最大電纜長度減少到 100 m。
幀間時間間隔從原來的 9.6 μs 改成如今的 0.96 μs。
在半雙工方式下使用 CSMA/CD 協議,全雙工方式不使用 CSMA/CD 協議。