數據鏈路層:算法
1. 使用點對點信道的數據鏈路層:
緩存
1. 數據鏈路:
網絡
數據鏈路除了物理線路外,還必須有通訊協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。
如今最經常使用的方法是使用適配器(即網卡)來實現這些協議的硬件和軟件。
通常的適配器都包括了數據鏈路層和物理層這兩層的功能。
異步
2. 數據鏈路層傳送的是幀
學習
2. 三個基本問題:
編碼
1. 封裝成幀:spa
封裝成幀就是在一段數據的先後分別添加首部和尾部,而後就構成了一個幀。肯定幀的界限。
首部和尾部的一個重要做用就是進行幀定界。操作系統
數據鏈路層協議規定了所能傳送帶的幀的數據部分長度上限--最大傳送單元MTU。計算機網絡
2. 透明傳輸:blog
發送端的數據鏈路層在數據中出現控制字符「SOH」或「EOT」的前面插入一個轉義字符「ESC」(其十六進制編碼是 1B)。
字節填充或字符填充——接收端的數據鏈路層在將數據送往網絡層以前刪除插入的轉義字符。
若是轉義字符也出現數據當中,那麼應在轉義字符前面插入一個轉義字符。當接收端收到連續的兩個轉義字符時,就刪除其中前面的一個。
3. 差錯檢測:
在傳輸過程當中可能會產生比特差錯:1 可能會變成 0 而 0 也可能變成 1。
在一段時間內,傳輸錯誤的比特佔所傳輸比特總數的比率稱爲誤碼率 BER (Bit Error Rate)。
誤碼率與信噪比有很大的關係。
爲了保證數據傳輸的可靠性,在計算機網絡傳輸數據時,必須採用各類差錯檢測措施。
循環冗餘檢驗的原理:
在數據鏈路層傳送的幀中,普遍使用了循環冗餘檢驗 CRC 的檢錯技術。
在發送端,先把數據劃分爲組。假定每組 k 個比特。
假設待傳送的一組數據 M = 101001(如今 k = 6)。咱們在 M 的後面再添加供差錯檢測用的 n 位冗餘碼一塊兒發送。冗餘碼稱爲幀檢驗序列 FCS (Frame Check Sequence)
注意:
僅用循環冗餘檢驗 CRC 差錯檢測技術只能作到無差錯接受。
「無差錯接受」是指:「凡是接受的幀(即不包括丟棄的幀),咱們都能以很是接近於 1 的機率認爲這些幀在傳輸過程當中沒有產生差錯」。也就是說:「凡是接收端數據鏈路層接受的幀都沒有傳輸差錯」(有差錯的幀就丟棄而不接受)。
要作到「可靠傳輸」(即發送什麼就收到什麼)就必須再加上確認和重傳機制。
由於, CRC確保了無比特差錯,但不保證無傳輸差錯,即幀丟失、幀重複、幀失序,所以,數據鏈路層使用了CRC,也是不可靠傳輸。
3. 點對點協議 PPP:
1. PPP 協議應知足的需求:
簡單(這是首要的要求)、封裝成幀、透明性、多種網絡層協議、多種類型鏈路、差錯檢測、檢測鏈接狀態、最大傳送單元(1500字節)、網絡層地址協商、數據壓縮協商
2. PPP 協議不須要的功能:
糾錯、流量控制、序號、多點線路(只支持點到點)、半雙工或單工鏈路(只支持全雙工)
3. PPP 協議的組成:
一個將 IP 數據報封裝到串行鏈路的方法。
鏈路控制協議 LCP (Link Control Protocol)。
網絡控制協議 NCP (Network Control Protocol)。
4. PPP 協議的幀格式:
PPP 是面向字節的,全部的 PPP 幀的長度都是整數字節。
PPP 有一個 2 個字節的協議字段。
當協議字段爲 0x0021 時,PPP 幀的信息字段就是IP 數據報。
若爲 0xC021, 則信息字段是 PPP 鏈路控制數據。
若爲 0x8021,則表示這是網絡控制數據。
5. 透明傳輸問題:
當 PPP 用在異步傳輸(無奇偶校驗的8比特數據)時,就使用一種特殊的字符填充法。(相似前面的)
PPP 協議用在 SONET/SDH 鏈路時,是使用同步傳輸(一連串的比特連續傳送)。這時 PPP 協議採用零比特填充方法來實現透明傳輸。
即,在發送端,只要發現有 5 個連續 1,則當即填入一個 0。接收端對幀中的比特流進行掃描。每當發現 5 個連續1時,就把這 5 個連續 1 後的一個 0 刪除。從而,避免了出現和「F」相同的8比特組合。
6. 工做狀態:
當用戶撥號接入 ISP 時,路由器的調制解調器對撥號作出確認,並創建一條物理鏈接。
PC 機向路由器發送一系列的 LCP 分組(封裝成多個 PPP 幀)。
這些分組及其響應選擇一些 PPP 參數,和進行網絡層配置,NCP 給新接入的 PC機分配一個臨時的 IP 地址,使 PC 機成爲因特網上的一個主機。
通訊完畢時,NCP 釋放網絡層鏈接,收回原來分配出去的 IP 地址。接着,LCP 釋放數據鏈路層鏈接。最後釋放的是物理層的鏈接。
PPP 協議不是純粹的數據鏈路層協議,還包含了物理層和網絡層的內容。
4. 使用廣播信道的數據鏈路層(局域網--以太網):
1. 適配器:
網絡接口板又稱爲通訊適配器(adapter)或網絡接口卡 NIC (Network Interface Card),或「網卡」。
適配器的重要功能:進行串行/並行轉換、對數據進行緩存、在計算機的操做系統安裝設備驅動程序、實現以太網協議。
2. CSMA/CD協議(用於總線形式的以太網):
1. 爲了通訊的簡便,以太網採起了兩種重要的措施:
(1)採用較爲靈活的無鏈接的工做方式,即沒必要先創建鏈接就能夠直接發送數據。
以太網對發送的數據幀不進行編號,也不要求對方發回確認。(這樣作的理由是局域網信道的質量很好,因信道質量產生差錯的機率是很小的。)
(2)以太網發送的數據都使用曼徹斯特(Manchester)編碼,以提取同步信號。
2. 以太網提供的服務:
以太網提供的服務是不可靠的交付,即盡最大努力的交付。
當目的站收到有差錯的數據幀時就丟棄此幀,其餘什麼也不作。差錯的糾正由高層來決定。
若是高層發現丟失了一些數據而進行重傳,但以太網並不知道這是一個重傳的幀,而是看成一個新的數據幀來發送。
3. 以太網採用簡單的隨機接入,可是有很好的協議來減小衝突發生的機率,即CSMA/CD(Carrier Sense Multiple Access with Collision Detection):
全名是 「載波監聽多點接入/碰撞檢測」。
「多點接入」表示許多計算機以多點接入的方式鏈接在一根總線上。
「載波監聽」是指每個站在發送數據以前先要檢測一下總線上是否有其餘計算機在發送數據,若是有,則暫時不要發送數據,以避免發生碰撞。
總線上並無什麼「載波」。所以, 「載波監聽」就是用電子技術檢測總線上有沒有其餘計算機發送的數據信號。
「碰撞檢測」就是計算機邊發送數據邊檢測信道上的信號電壓大小。
當幾個站同時在總線上發送數據時,總線上的信號電壓擺動值將會增大(互相疊加)。
當一個站檢測到的信號電壓擺動值超過必定的門限值時,就認爲總線上至少有兩個站同時在發送數據,代表產生了碰撞。
所謂「碰撞」就是發生了衝突。所以「碰撞檢測」也稱爲「衝突檢測」。
4. 檢測到碰撞後:
在發生碰撞時,總線上傳輸的信號產生了嚴重的失真,沒法從中恢復出有用的信息來。
每個正在發送數據的站,一旦發現總線上出現了碰撞,就要當即中止發送,省得繼續浪費網絡資源,而後等待一段隨機時間後再次發送。
5. 電磁波在總線上的有限傳播速率的影響:
當某個站監聽到總線是空閒時,也可能總線並不是真正是空閒的。
A 向 B 發出的信息,要通過必定的時間後才能傳送到 B。
B 若在 A 發送的信息到達 B 以前發送本身的幀(由於這時 B 的載波監聽檢測不到 A 所發送的信息),則必然要在某個時間和 A 發送的幀發生碰撞。
碰撞的結果是兩個幀都變得無用。
6. 以上帶來的重要特性:
使用 CSMA/CD 協議的以太網不能進行全雙工通訊而只能進行雙向交替通訊(半雙工通訊)。
每一個站在發送數據以後的一小段時間內,存在着遭遇碰撞的可能性。
這種發送的不肯定性使整個以太網的平均通訊量遠小於以太網的最高數據率。
7. 爭用期:
最早發送數據幀的站,在發送數據幀後至多通過時間 2T(兩倍的端到端往返時延)就可知道發送的數據幀是否遭受了碰撞。(見上圖)
以太網的端到端往返時延 2T 稱爲爭用期,或碰撞窗口。
通過爭用期這段時間尚未檢測到碰撞,才能確定此次發送不會發生碰撞。
8. 二進制指數類型退避算:
爲了減小碰撞的機率,從而提高以太網的總體速率,發生碰撞的站在中止發送數據後,要推遲(退避)一個隨機時間才能再發送數據。
基本退避時間取爲爭用期 2T。
從整數集合[0,1,…, (2^k -1)]中隨機地取出一個數,記爲 r。重傳所需的時延就是 r 倍的基本退避時間。
參數 k 按下面的公式計算:
k = Min[重傳次數, 10]
當 k <= 10 時,參數 k 等於重傳次數。
當重傳達 16 次仍不能成功時即丟棄該幀,並向高層報告。
9. 爭用期的長度:
以太網取 51.2 us 爲爭用期的長度。
對於 10 Mb/s 以太網,在爭用期內可發送512 bit,即 64 字節。
以太網在發送數據時,若前 64 字節沒有發生衝突,則後續的數據就不會發生衝突。
10. 最短有效幀長:
若是發生衝突,就必定是在發送的前 64 字節以內。
因爲一檢測到衝突就當即停止發送,這時已經發送出去的數據必定小於 64 字節。
以太網規定了最短有效幀長爲 64 字節,凡長度小於 64 字節的幀都是因爲衝突而異常停止的無效幀。
11. 強化碰撞:
當發送數據的站一旦發現發生了碰撞時:
當即中止發送數據;
再繼續發送若干比特的人爲干擾信號,以便讓全部用戶都知道如今已經發生了碰撞。
5. 使用廣播信道的以太網:
1. 使用集線器的星形拓撲:
這種以太網採用星形拓撲,在星形的中心則增長了一種可靠性很是高的設備,叫作集線器(hub) 。
集線器是使用電子器件來模擬實際電纜線的工做,所以整個系統仍然像一個傳統的以太網那樣運行。
使用集線器的以太網在邏輯上還是一個總線網,各工做站使用的仍是 CSMA/CD 協議,並共享邏輯上的總線。
集線器很像一個多接口的轉發器,工做在物理層。(只進行比特轉發,不進行碰撞檢測)
2. 以太網的信道利用率:
爭用期長度爲 2T,即端到端傳播時延的兩倍。檢測到碰撞後不發送干擾信號。
幀長爲 L (bit),數據發送速率爲 C (b/s),於是幀的發送時間爲 L/C = T0 (s)。
一個幀從開始發送,經可能發生的碰撞後,將再重傳數次,到發送成功且信道轉爲空閒(即再通過時間 T 使得信道上無信號在傳播)時爲止,是發送一幀所需的平均時間。
要提升以太網的信道利用率,就必須減少 T 與 T0 之比。在以太網中定義了參數 a,它是以太網單程端到端時延 T 與幀的發送時間 T0 之比:
a→0 表示一發生碰撞就當即能夠檢測出來,並當即中止發送,於是信道利用率很高。
a 越大,代表爭用期所佔的比例增大,每發生一次碰撞就浪費許多信道資源,使得信道利用率明顯下降。
由此產生的對以太網參數的要求:
當數據率必定時,以太網的連線的長度受到限制,不然 T 的數值會太大。
以太網的幀長不能過短,不然 T0 的值會過小,使 a 值太大。
信道利用率的最大值 Smax:
在理想化的狀況下,以太網上的各站發送數據都不會產生碰撞(這顯然已經不是 CSMA/CD,而是須要使用一種特殊的調度方法),即總線一旦空閒就有某一個站當即發送數據。
發送一幀佔用線路的時間是 T0 + T,而幀自己的發送時間是 T0。因而咱們可計算出理想狀況下的極限信道利用率 Smax爲:
,只有a遠小於1,才能獲得儘量高的極限信道利用率。
3. 以太網的 MAC 層(48位的MAC地址):
IEEE 的註冊管理機構 RA 負責向廠家分配地址字段的前三個字節(即高位 24 位)。
地址字段中的後三個字節(即低位 24 位)由廠家自行指派,稱爲擴展標識符,必須保證生產出的適配器沒有重複地址。
一個地址塊能夠生成2^24個不一樣的地址。這種 48 位地址稱爲 MAC-48,它的通用名稱是EUI-48。
「MAC地址」實際上就是適配器地址或適配器標識符EUI-48。
4. 以太網 V2 的 MAC 幀格式:
5. 無效的 MAC 幀:
數據字段的長度與長度字段的值不一致;
幀的長度不是整數個字節;
用收到的幀檢驗序列 FCS 查出有差錯;
數據字段的長度不在 46 ~ 1500 字節之間。
有效的 MAC 幀長度爲 64 ~ 1518 字節之間。
對於檢查出的無效 MAC 幀就簡單地丟棄。以太網不負責重傳丟棄的幀。
6. 幀間最小間隔:
幀間最小間隔爲 9.6 us,至關於 96 bit 的發送時間。
一個站在檢測到總線開始空閒後,還要等待 9.6 us 才能再次發送數據。
這樣作是爲了使剛剛收到數據幀的站的接收緩存來得及清理,作好接收下一幀的準備。
6. 拓展的以太網:
1. 在物理層擴展局域網:
使用集線器(轉發器)拓展局域網
優勢:
使原來屬於不一樣碰撞域的局域網上的計算機可以進行跨碰撞域的通訊。
擴大了局域網覆蓋的地理範圍。
缺點:
碰撞域增大了,但總的吞吐量並未提升。
若是不一樣的碰撞域使用不一樣的數據率,那麼就不能用集線器將它們互連起來。
2. 在數據鏈路層擴展局域網:
在數據鏈路層擴展局域網是使用網橋。
網橋工做在數據鏈路層,它根據 MAC 幀的目的地址對收到的幀進行轉發。
網橋具備過濾幀的功能。當網橋收到一個幀時,並非向全部的接口轉發此幀,而是先檢查此幀的目的 MAC 地址,而後再肯定將該幀轉發到哪個接口。
3. 網橋的內部結構:
經過網橋,能夠構造一個更大範圍的以太網,原來的小的以太網,稱爲網段。
網橋經過轉發表來工做。
4. 網橋的優缺點:
優勢:
過濾通訊量、擴大了物理範圍、提升了可靠性、可互連不一樣物理層、不一樣 MAC 子層和不一樣速率(如10 Mb/s 和 100 Mb/s 以太網)的局域網(由於網橋從某種程度上隔離了碰撞域)。
缺點:
存儲轉發增長了時延。
在MAC 子層並無流量控制功能。
具備不一樣 MAC 子層的網段橋接在一塊兒時時延更大。
網橋只適合於用戶數不太多(不超過幾百個)和通訊量不太大的局域網,不然有時還會因傳播過多的廣播信息而產生網絡擁塞。這就是所謂的廣播風暴。
5. 網橋和集線器(或轉發器)不一樣:
集線器在轉發幀時,不對傳輸媒體進行檢測。
網橋在轉發幀以前必須執行 CSMA/CD 算法。若在發送過程當中出現碰撞,就必須中止發送和進行退避。
6. 透明網橋:
「透明」是指局域網上的站點並不知道所發送的幀將通過哪幾個網橋,由於網橋對各站來講是看不見的。
透明網橋是一種即插即用設備,其標準是 IEEE 802.1D。
7. 網橋應當按照如下自學習算法處理收到的幀和創建轉發表:
若從 A 發出的幀從接口 x 進入了某網橋,那麼從這個接口出發沿相反方向必定可把一個幀傳送到 A。
網橋每收到一個幀,就記下其源地址和進入網橋的接口,做爲轉發表中的一個項目。
在創建轉發表時是把幀首部中的源地址寫在「地址」這一欄的下面。
在轉發幀時,則是根據收到的幀首部中的目的地址來轉發的。這時就把在「地址」欄下面已經記下的源地址看成目的地址,而把記下的進入接口看成轉發接口。
以後,有個盲目轉發的過程。
8. 網橋在轉發表中登記如下三個信息:
在網橋的轉發表中寫入的信息除了地址和接口外,還有幀進入該網橋的時間。
這是由於以太網的拓撲可能常常會發生變化,站點也可能會更換適配器(這就改變了站點的地址)。另外,以太網上的工做站並不是老是接通電源的。
把每一個幀到達網橋的時間登記下來,就能夠在轉發表中只保留網絡拓撲的最新狀態信息。這樣就使得網橋中的轉發表能反映當前網絡的最新拓撲狀態。
9. 轉發幀的過程:
查找轉發表中與收到幀的目的地址有無相匹配的項目。
如沒有,則經過全部其餘接口(但進入網橋的接口除外)按進行轉發。
若有,則按轉發表中給出的接口進行轉發。
若轉發表中給出的接口就是該幀進入網橋的接口,則應丟棄這個幀(由於這時不須要通過網橋進行轉發)。
10. 透明網橋使用了生成樹算法:
這是爲了不產生轉發的幀在網絡中不斷地兜圈子。
爲了得出可以反映網絡拓撲發生變化時的生成樹,在生成樹上的根網橋每隔一段時間還要對生成樹的拓撲進行更新。
11. 源路由網橋:
透明網橋容易安裝,但網絡資源的利用不充分。
源路由(source route)網橋在發送幀時將詳細的路由信息放在幀的首部中。
源站以廣播方式向欲通訊的目的站發送一個發現幀,每一個發現幀都記錄所通過的路由。
發現幀到達目的站時就沿各自的路由返回源站。源站在得知這些路由後,從全部可能的路由中選擇出一個最佳路由。凡從該源站向該目的站發送的幀的首部,都必須攜帶源站所肯定的這一路由信息。
12. 多接口網橋——以太網交換機:
交換式集線器常稱爲以太網交換機(switch)或第二層交換機(代表此交換機工做在數據鏈路層)。
以太網交換機一般都有十幾個接口。所以,以太網交換機實質上就是一個多接口的網橋,可見交換機工做在數據鏈路層。
特色:
以太網交換機的每一個接口都直接與主機相連,而且通常都工做在全雙工方式。
交換機能同時連通許多對的接口,使每一對相互通訊的主機都能像獨佔通訊媒體那樣,進行無碰撞地傳輸數據。
以太網交換機因爲使用了專用的交換結構芯片,其交換速率就較高。
獨佔傳輸媒體的帶寬:
對於普通 10 Mb/s 的共享式以太網,若共有 N 個用戶,則每一個用戶佔有的平均帶寬只有總帶寬(10 Mb/s)的 N 分之一。
使用以太網交換機時,雖然在每一個接口到主機的帶寬仍是 10 Mb/s,但因爲一個用戶在通訊時是獨佔而不是和其餘網絡用戶共享傳輸媒體的帶寬,所以對於擁有 N 對接口的交換機的總容量爲 N*10 Mb/s。這正是交換機的最大優勢。
利用以太網交換機能夠很方便地實現虛擬局域網:
虛擬局域網 VLAN 是由一些局域網網段構成的與物理位置無關的邏輯組。這些網段具備某些共同的需求。
每個 VLAN 的幀都有一個明確的標識符,指明發送這個幀的工做站是屬於哪個 VLAN。
虛擬局域網其實只是局域網給用戶提供的一種服務,而並非一種新型局域網。