計算機網絡 - 數據鏈路層

數據鏈路層使用的信道主要有如下兩種類型:算法

  • 點對點信道:這種信道使用一對一的點對點通訊方式。
  • 廣播信道:這種信道使用一對多的廣播通訊方式。廣播信道上鍊接的主機不少,所以必須使用專用的共享信道協議來協調這些主機的數據發送。

鏈路(link) 是一條無源的點到點的物理線路段,中間沒有任何其餘的交換結點。
數據鏈路 (data link) 除了物理線路外,還必須有通訊協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。緩存

如今最經常使用的方法是使用 適配器(即網卡)來實現這些協議的硬件和軟件。
計算機經過 適配器局域網進行通訊。

adapter

三個基本問題

封裝成幀

封裝成幀 (framing) 就是在一段數據的先後分別添加首部尾部,而後就構成了一個幀。肯定幀的界限。
封裝成幀網絡

透明傳輸

若是數據中的某個字節的二進制代碼剛好和 SOH 或 EOT 同樣,數據鏈路層就會錯誤地「找到幀的邊界」。
解決方法字節填充 (byte stuffing) 或比特填充 (bit stuffing)。
字節填充:
byte_stuffingdom

比特填充:
bit_stuffing異步

差錯檢測

在傳輸過程當中可能會產生比特差錯: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 的惟一方法。接口

接收端對每一幀進行CRC檢驗

若得出的餘數 R = 0,則斷定這個幀沒有差錯,就接受 (accept)。
若餘數 R != 0,則斷定這個幀有差錯,就丟棄ip

僅用循環冗餘檢驗 CRC 差錯檢測技術只能作到 無差錯接受 (accept)。
要作到「 可靠傳輸」(即發送什麼就收到什麼)就必須再加上 確認和重傳機制
在數據鏈路層使用 CRC 檢驗,可以實現無比特差錯的傳輸,但這還 不是可靠傳輸。這裏介紹的 數據鏈路層協議不是可靠傳輸的協議

點對點協議PPP

對於點對點的鏈路,目前使用得最普遍的數據鏈路層協議是點對點協議 PPP (Point-to-Point Protocol)。
用戶使用撥號電話線接入互聯網時, 用戶計算機ISP 進行通訊時所使用的數據鏈路層協議就是 PPP 協議

PPP幀格式

ppp幀格式

PPP 是面向字節的,全部的 PPP 幀的長度都是整數字節。
標誌字段 F = 0x7E;地址字段 A 只置爲 0xFF;控制字段 C 一般置爲 0x03。
PPP 有一個 2 個字節的協議字段。其值

  • 若爲 0x0021,則信息字段就是 IP 數據報。
  • 若爲 0x8021,則信息字段是網絡控制數據。
  • 若爲 0xC021,則信息字段是 PPP 鏈路控制數據。
  • 若爲 0xC023,則信息字段是鑑別數據。

透明傳輸問題

異步傳輸 - 字符填充

將信息字段中出現的每個 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層

CSMA/CD協議

爲了通訊的簡便,以太網採起了兩種重要的措施:
(1) 採用較爲靈活的無鏈接的工做方式
沒必要先創建鏈接就能夠直接發送數據
對發送的數據幀不進行編號,也不要求對方發回確認

這樣作的理由是局域網信道的質量很好,因信道質量產生差錯的機率是很小的。
以太網提供的服務是不可靠的交付,即盡最大努力的交付。
當目的站收到有差錯的數據幀時就 丟棄此幀,其餘什麼也不作。差錯的糾正由高層來決定。

(2) 以太網發送的數據都使用曼徹斯特 (Manchester)編碼

CSMA/CD協議的含義

CSMA/CD即載波監聽多點接入 / 碰撞檢測 (Carrier Sense Multiple Access with Collision Detection)。
載波監聽」:用電子技術檢測總線上有沒有其餘計算機發送的數據信號。

多點接入」:表示許多計算機以多點接入的方式鏈接在一根總線上。

碰撞檢測」:就是計算機邊發送數據邊檢測信道上的信號電壓大小。
當一個站檢測到的信號電壓擺動值超過必定的門限值時,就認爲總線上至少有兩個站同時在發送數據,代表產生了碰撞。
所謂「碰撞」就是發生了衝突。所以「碰撞檢測」也稱爲「衝突檢測」。

每個正在發送數據的站,一旦發現總線上出現了碰撞,就要當即中止發送,省得繼續浪費網絡資源,而後等待一段隨機時間後再次發送。

爲何要碰撞檢測
因爲電磁波在總線上的 傳播速率是有限的
B 若在 A 發送的信息到達 B 以前發送本身的幀 (由於這時 B 的載波監聽檢測不到 A 所發送的信息),則必然要在某個時間和 A 發送的幀發生碰撞。

CSMA/CD 重要特性

使用 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),以便讓全部用戶都知道如今已經發生了碰撞。

CSMA/CD協議的要點

(1)檢測信道:在發送前,必須先檢測信道。
若檢測到信道忙,則應不停地檢測,一直等待信道轉爲空閒。若檢測到信道空閒,並在 96 比特時間內信道保持空閒(保證了幀間最小間隔),就發送這個幀。
(2)檢測碰撞
在發送過程當中仍不停地檢測信道,即網絡適配器要邊發送邊監聽
①發送成功:在爭用期內一直未檢測到碰撞。這個幀確定可以發送成功。
②發送失敗:在爭用期內檢測到碰撞。這時當即中止發送數據,並按規定發送人爲干擾信號。適配器接着就執行指數退避算法,等待 r 倍 512 比特時間後,返回到步驟 (1),繼續檢測信道。但若重傳達 16 次仍不能成功,則中止重傳而向上報錯。

幀間最小間隔
幀間最小間隔爲 9.6 μs,至關於 96 bit 的發送時間。
一個站在檢測到總線開始空閒後,還要等待 9.6 μs 才能再次發送數據。
這樣作是爲了 使剛剛收到數據幀的站的接收緩存來得及清理,作好接收下一幀的準備。

以太網的物理層基礎 -- 使用集線器星形拓撲

採用雙絞線的以太網採用星形拓撲,在星形的中心則增長了一種可靠性很是高的設備,叫作集線器 (hub)。集線器很像一個多接口的轉發器,工做在物理層
使用集線器的以太網在邏輯上還是一個總線網,各工做站使用的仍是 CSMA/CD 協議,並共享邏輯上的總線。

以太網的信道利用率 -- 以α參數表示

在以太網中定義了參數 α,它是以太網單程端到端時延τ幀的發送時間 T0 之比:
α = τ/T0
爲提升利用率,以太網的參數a的值應當儘量小些。

  • 當數據率必定時,以太網的連線的長度受到限制,不然  的數值會太大。
  • 以太網的幀長不能過短,不然 T0 的值會過小,使 α 值太大。

以太網的MAC層

MAC地址

生產適配器時,6 字節的 MAC 地址已被固化在適配器的 ROM,所以,MAC 地址也叫作硬件地址 (hardware address)或物理地址
「MAC地址」實際上就是適配器地址適配器標識符 EUI-48

48位(6字節)的MAC地址稱爲 MAC-48,它的通用名稱是 EUI-48。
前三個字節由IEEE 的註冊管理機構 RA 負責向廠家分配,稱爲 組織惟一標識符
後三個字節由廠家自行指派,稱爲 擴展惟一標識符,必須保證生產出的適配器 沒有重複地址

適配器從網絡上每收到一個 MAC 幀就首先用硬件檢查 MAC 幀中的 MAC 地址
若是是發往本站的幀收下,而後再進行其餘的處理。
不然就將此幀丟棄,再也不進行其餘的處理。

MAC幀格式:

經常使用的以太網 MAC 幀格式有兩種標準,最經常使用的 MAC 幀是以太網 V2(DIX Ethernet V2) 的格式。
mac幀格式

類型字段用來標誌上一層使用的是什麼協議,以便把收到的 MAC 幀的數據上交給上一層的這個協議。
數據字段的正式名稱是 MAC 客戶數據字段
數據字段的最小長度(46字節)= 最短有效幀長(64字節) - 首部和尾部(18字節)。

當數據字段的長度小於 46 字節時,應在數據字段的後面加入整數字節的填充字段。

在幀的前面插入(硬件生成)的 8 字節中,第一個字段共 7 個字節,是前同步碼,用來迅速實現 MAC 幀的比特同步。第二個字段 1 個字節是幀開始定界符,表示後面的信息就是 MAC 幀。

擴展的以太網

物理層擴展以太網 --- 使用集線器擴展

集線器工做在物理層,每一個端口至關於一箇中繼器,用於擴展終端數量。
集線器共享帶寬,帶寬爲多個端口所瓜分。碰撞域增大了,但總的吞吐量並未提升
若是不一樣的碰撞域使用不一樣的數據率,那麼就不能用集線器將它們互連起來。

數據鏈路層擴展以太網 --- 使用交換機擴展

交換機工做在數據鏈路層,每一個端口至關於一個集線器(即每一個端口是一個獨立的衝突域),原理是根據數據幀頭的MAC地址轉發幀到合適的端口。(即至關於,你們不是都在一個大廣場上喊人,而是能夠根據門牌號找到要找的人)

能同時連通多對接口,使多對主機能同時通訊
交換機每一個端口獨享帶寬,無碰撞地傳輸數據。

如今,採用以太網 交換機星形結構成爲以太網的首選拓撲。
以太網交換機不使用共享總線,沒有碰撞問題,所以不使用 CSMA/CD 協議,而是以全雙工方式工做。但 仍然採用以太網的幀結構

交換機經過自學習算法處理收到的幀和創建交換表

  • A 先向 B 發送一幀,從接口1 進入到交換機。
  • 交換機收到幀後,先查找交換表,沒有查到應從哪一個接口轉發這個幀。
  • 交換機把這個幀的源地址 A 和接口 1 寫入交換表中,並向除接口1之外的全部的接口廣播這個幀
  • C 和 D 將丟棄這個幀,由於目的地址不對。只 B 才收下這個目的地址正確的幀。這也稱爲過濾
  • B 經過接口3A 發送一幀。
  • 交換機查找交換表,發現交換表中的 MAC 地址有 A。代表要發送給A的幀(即目的地址爲 A 的幀)應從接口1轉發。因而就把這個幀傳送到接口 1 轉發給 A。顯然,如今已經沒有必要再廣播收到的幀。
  • 交換表這時新增長的項目 (B, 3),代表從此若有發送給 B 的幀,就應當從接口 3 轉發出去。

高速以太網

100BASE-T以太網

可在全雙工方式下工做而無衝突發生。在全雙工方式下工做時,不使用 CSMA/CD 協議
MAC 幀格式仍然是 802.3 標準規定的
保持最短幀長不變,但將一個網段的最大電纜長度減少到 100 m。
幀間時間間隔從原來的 9.6 μs 改成如今的 0.96 μs。

吉比特以太網

在半雙工方式下使用 CSMA/CD 協議,全雙工方式不使用 CSMA/CD 協議。

相關文章
相關標籤/搜索