《計算機網絡自頂向下方法》(4) 鏈路層

鏈路層

鏈路層從網絡層接受下傳的數據報,並沿着鏈路將鏈路層分組幀(frame) 傳遞給下一個結點。

5.2 差錯檢測和糾正技術

奇偶校驗

差錯檢測最簡單的方式是使用單個奇偶校驗位。在偶(奇)校驗方案中,發送方只需包含一個附加的比特,使得初始信息加上一個校驗比特中 1 的總數是偶(奇)數。接收方只需重新計數並比對即可。然而,很顯然,奇偶校驗只能檢測出奇數個比特差錯。

在這裏插入圖片描述

二維奇偶校驗方案中,初始信息被劃分爲 i 行 j 列,對每行每列計算奇偶值,共產生 i+j+1 個校驗比特。這樣,包含差錯比特的行和列的校驗值都將會出現差錯。因此,接收方不僅可以檢測到單個比特差錯,還可以利用存在奇偶校驗差錯的行和列的索引,來實際識別發生差錯的比特,並糾正它。接收方還能夠檢測,一個分組中的兩個比特差錯的任何組合,但不能糾正它。除此之外,校驗比特本身的單個比特差錯也是可檢測和可糾正的。

在這裏插入圖片描述

檢驗和

在檢驗和中,d 比特數據被當作一個 k 比特整數的序列處理。一個簡單檢驗和方法就是將這 k 比特整數累加,並用得到的和作爲差錯檢驗比特。互聯網檢驗和就基於這種方法,見 TCP/UDP 檢驗和字段。

循環冗餘檢測

循環冗餘檢測(CRC)編碼,也叫多項式編碼。考慮 d 比特的數據 D,發送方和接收方首先必須協商一個 r+1 比特模式,稱爲生成多項式 G,G 的最高有效位必須是 1。然後,發送方要選擇 r 個附加比特 R,並將它們附加到 D 上,使得 d+r 比特模式(被解釋爲一個二進制數)用模 2 算術恰好能被 G 整除。接收方用 G 去除接收到的 d+r 比特,如果餘數爲 0,說明出現了差錯,否則數據正確。其中,模 2 算術除法就是用異或(XOR)代替減法的除法。

在這裏插入圖片描述

G 在不同的發送數據間可以通用(由國際標準定義),而 R 必須針對發送的不同數據分別求出。求 R 的方法是 R=remainder(D2r/G)R = remainder(D·2^r/G)

D2rR=nGD·2^r \oplus R = nG --> D2r=nGRD·2^r = nG \oplus R --> R=remainder(D2r/G)R = remainder(D·2^r/G)

在這裏插入圖片描述

採用 CRC,能夠檢測出小於 r+1 比特的差錯,而大於等於 r+1 比特的差錯能以概率 10.5r1-0.5^r 被檢測到。

5.3 多路訪問鏈路和協議

在廣播鏈路中,所有結點都能傳送幀,所以多個結點可能會同時傳輸幀,一個結點可能會同時接收多個幀,這些幀的信號混雜在一起,無法區分,這種情況稱爲碰撞。涉及碰撞的幀都丟失了,在碰撞時間間隔中的廣播信道就被浪費了。因此,需要多路訪問協議來協調結點的傳輸。多路訪問協議主要有三種類型:信道劃分協議、隨機接入協議和輪流協議。

信道劃分協議
  1. 時分多路複用(TDM):TDM 將時間劃分爲時間幀,並進一步劃分每個時間幀爲 N 個時隙,然後把每個時隙分給 N 個結點中的一個,結點將要發送的分組就在被指派的時隙內傳輸。TDM 優點在於,它消除了碰撞而且非常公平,每個結點在每個幀時間內得到了專用的傳輸速率 R/N bps。缺點在於,結點被限制於 R/N bps 的平均速率結點,也必須總是等待它在傳輸序列中的輪次,即使當它是唯一有分組要發送的結點時。

  2. 頻分多路複用(FDM):FDM 將信道劃分爲不同的頻段,每個頻段具有 R/N bps 帶寬,相當於將 R bps 信道劃分爲 N 個較小的 R/N bps 信道。FDM 具有與 TDM 相同的優缺點。

在這裏插入圖片描述

  1. 碼分多址(CDMA):CDMA 爲每個結點分配一個不同的編碼,結點用各自的編碼對數據進行編碼,接收方再用相同的編碼進行解碼,就能夠使得信道能夠同時傳輸多個數據。具體討論見後。
隨機接入協議

在隨機接入協議中,一個傳輸結點總是以信道的全部速率(R bps)進行發送。當有碰撞時,涉及碰撞的每個結點反覆地重發它的幀,到該幀無碰撞地通過爲止。但是當一個結點經歷一次碰撞時,它不必立即重發該幀。相反,它在重發該幀之前等待一個隨機時延。涉及碰撞的每個結點獨立地選擇隨機時延,因此,這些結點之一所選擇的時延,可能充分小於其他碰撞結點的時延,並因此能夠無碰撞地將它的幀在信道中發出。

最常用的隨機接入協議有 ALOHA 協議和載波偵聽多路訪問協議。

時隙 ALOHA

時隙 ALOHA 是最簡單的隨機接入協議之一,它基於以下假設:

  • 所有幀由 L 比特組成

  • 時間被劃分爲長度爲 L/R 秒的時隙,即一個時隙等於傳輸一幀的時間

  • 結點只在時隙起點開始傳輸幀

  • 結點是同步的,每個結點都知道時隙何時開始

  • 如果在一個時隙中有兩個或多個幀碰撞,則所有結點在該時隙結束之前檢測到該碰撞事件

時隙 ALOHA 下的每個結點的操作非常簡單:

  • 當結點有一個新幀要發送時,它等到下一個時隙開始並在該時隙傳輸整個幀
  • 如果沒有碰撞,該結點成功地傳輸它的幀,從而不需要考慮重傳該幀
  • 如果有碰撞,該結點在時隙結束之前檢測到這次碰撞。該結點在後續的每個時隙中以概率 p 重傳它的幀,直到該幀被無碰撞地傳輸出去

時隙 ALOHA 的優點在於,當只有一個活躍結點時,它能利用全部的帶寬;同時,時隙 ALOHA 是高度分散的。它的缺點在於,一旦有碰撞,時隙就被浪費掉了。唯有剛好只有一個活躍結點的時隙是未被浪費的,這種時隙就叫做成功時隙。衡量協議的效率因此就有:長期運行中成功時隙的份額與總量之比。

成功時隙的概率爲一個結點傳輸而其餘結點不傳輸的概率。一個結點傳輸的概率爲 pp,其餘結點不傳輸的概率爲 (1p)N1(1-p)^{N-1} ,因此,一個結點成功傳輸的概率是 p(1p)N1p(1-p)^{N-1} 。因爲有 N 個結點,只要有一個結點成功傳輸,這個時隙就是成功時隙了,所以成功時隙的概率爲 Np(1p)N1Np(1-p)^{N-1} 。對該式求極限,能夠得到時隙 ALOHA 的最大效率爲 1/e = 0.37。

記 G 爲負載,即傳輸一幀的時間內發送的幀的數量,時隙 ALOHA 的吞吐率 S=G×eGS = G \times e^{-G} 。當 G = 1 時吞吐率有最大值 0.37,與最大效率相符。

純 ALOHA

在純 ALOHA 中,當一幀首次到達,結點立即將該幀完整地傳輸進廣播信道。如果一個傳輸的幀發生了碰撞,這個結點將在完全傳輸完該幀後,以概率 p 重傳該幀。否則,該結點等待一個幀傳輸時間,並再次以概率 p 試圖重傳。重複,直到該結點重傳該幀。

純 ALOHA 的各結點是異步的,所以成功時隙的要求更爲嚴格,即一個成功傳輸的幀,不僅要求在該幀傳輸的時間內沒有其他幀在傳輸,還要求在距離該幀傳輸的時刻前剛好傳輸一幀的時間內沒有其他幀在傳輸。換句話說,在純 ALOHA 下,一個成功傳輸的幀,要求在能夠傳輸兩個幀的時間內,只有它一個幀在傳輸。前面我們知道,一個幀在傳輸一幀的時間內成功的概率爲 p(1p)N1p(1-p)^{N-1} ,那麼,在純 ALOHA 下,一個幀成功的概率爲 p(1p)2(N1)p(1-p)^{2(N-1)},總的概率即 Np(1p)2(N1)Np(1-p)^{2(N-1)},取極限爲 1/(2e) = 0.18,僅爲時隙 ALOHA 的一半。

純 ALOHA 的吞吐率 S=G×e2GS = G \times e^{-2G} ,當 G = 1/2 時有最大值 0.18。

在這裏插入圖片描述

載波偵聽多路訪問

在 ALOHA 協議中,一個結點並不關心在它開始傳輸時是否有其他結點正在傳輸,導致了不必要的碰撞發生。**載波偵聽多路訪問(CSMA)**協議在純 ALOHA 的基礎上,實施載波偵聽,即傳輸前先聽信道。若結點檢測到有其他幀正在信道上傳輸,不同的方案有着不同的行爲:

  • 1-堅持:繼續監聽信道,當聽到信道空閒時,以概率 1 發送數據。這種方法衝突的機率最高。
  • 非堅持:放棄監聽信道,隨機等待一段時間再開始監聽。這種方法衝突的機率低,但降低了網絡的效率。
  • p-堅持:繼續監聽信道,當聽到信道空閒時,以概率 p 發送數據,概率 1-p 不發送數據並等待到下一個時隙繼續嘗試,直到發送成功。這種方法適用於信道有時隙且時隙週期大於等於最大傳播時間,既減少了衝突,又提高了效率。

雖然載波偵聽能夠避免不必要的碰撞,但尚不能杜絕所有碰撞。因爲物理現實的限制,幀在信道中傳輸是有時延的,所以結點不能立即檢測到正在傳輸但尚未到達的幀,就導致了碰撞。信道傳播時延越長,載波偵聽結點不能偵聽到網絡中另一個結點已經開始傳輸的機率就越大。

在這裏插入圖片描述

具有碰撞檢測的載波偵聽多路訪問

在 CSMA 中,即使發生了碰撞,結點仍將繼續傳輸當前幀直到完整地傳輸該幀。然而,發生碰撞後,繼續傳輸碰撞幀顯然是無濟於事的。**具有碰撞檢測的載波偵聽多路訪問(CSMA/CD)**就實施了碰撞檢測,即當一個結點在傳輸時一直偵聽信道,若檢測到碰撞發生,則立即終止傳輸,並等待一段隨機時間,再開始載波偵聽。

在這裏插入圖片描述

假設一個極端狀況:一個網絡內相隔最遠的兩個結點 A、B,A 正在傳輸一個幀,在 A 傳輸的幀無限趨近於 B 的時刻,B 恰好開始傳輸幀,於是,在無限小的時間後,兩個幀發生了碰撞。A 若要檢測到當前幀發生了碰撞,必須在傳輸該幀時檢測到 B 傳輸來的幀信號。若 A 傳輸的幀長度過小,則可能在與 B 碰撞的幀到達之前,就完成了傳輸,A 也就無法得知剛剛傳輸的幀發生了碰撞。因此,結點傳輸的幀需要有一個最小長度,以確保極端條件下也能夠檢測到碰撞。這個最小長度與信道傳播時延有關,在剛剛假設的極端狀況中,我們可以得知,一個網絡中的結點傳輸一幀的時間,必須大於等於比特在網絡中相隔最遠的兩個結點間的信道來回一趟的時間,即 L/R2D/vL/R \ge 2D/v ,其中 L 爲幀的長度,R 爲信道的傳輸速率,D 爲網絡中相隔最遠的兩個結點的距離,v 爲信道的傳播速率。

在 10M 以太網中,最遠兩端數據的往返時間稱爲爭用期,爲 51.2 us,正好發送 512 b,即 64 字節。除去幀的頭部字段長度,也就得到了 46 字節。

輪流協議
  1. 輪詢協議:輪詢協議要求這些結點之一被指定爲主結點,主節點以循環的方式輪詢每個結點,告知其能傳輸的幀的最多數量。輪詢協議消除了碰撞和空時隙,但引入了輪詢時延,和集中式的單結點故障缺陷。
  2. 令牌傳遞協議:一個稱爲令牌的小的特殊幀在結點之間以某種固定的次序進行交換。一個結點接收到令牌時,只有當它有幀要傳輸時纔會持有它,並開始傳輸,否則它將令牌傳遞給下一個結點。

5.4 交換局域網

鏈路層地址

同 IP 地址一樣,一個適配器(即網絡接口)對應一個鏈路層地址。特殊的,交換機的接口並沒有鏈路層地址,因爲交換機透明地交換分組,而不需要主機或路由器明確地將幀尋址到交換機上。鏈路層地址有不同的稱呼:LAN 地址、物理地址或 MAC 地址

MAC 地址長爲 6 字節,採用十六進制標識法,如 1A-2B-3C-4D-5E-6F。MAC 地址是固定的且全球唯一的(雖然現在用軟件改變 MAC 地址是可能的)。與 IP 地址的層次結構(網絡號+主機號)不同,MAC 地址具有扁平結構,即無論適配器位於何處,地址都不會發生變化(區別於 IP 地址,在移動時,需要連接不同的子網,獲取不同的 IP 地址)。

MAC 地址的廣播地址爲 FF-FF-FF-FF-FF-FF。

地址解析協議

地址解析協議(ARP)執行網絡層與鏈路層之間的轉換。ARP 與 DNS 類似,但不同之處在於,DNS 爲整個因特網服務,ARP 只爲身處的子網服務。

每臺主機或路由器在其內存中具有一個 ARP 表,包含 IP 地址到 MAC 地址的映射關係,以及該映射關係的壽命(TTL,指示從表中刪除該映射的時間,通常爲 20 分鐘)。當主機或路由器需要構造幀時,就需要從 ARP 表中查找相應的映射。若表中沒有所需的映射,主機就要廣播一個 ARP 查詢分組,包括它的 IP 地址和 MAC 地址,以及目的 IP 地址。子網中的其他適配器接收到該幀後,這些適配器之上的 ARP 模塊檢查自己的 IP 地址是否與分組中的目的 IP 地址相匹配。與之匹配的,將單播一個 ARP 響應分組給查詢主機,攜帶有相應的映射。查詢主機接收到響應分組,並更新它的 ARP 表,從而能夠發送剛剛構造的幀。

在子網內發送數據報很簡單,但跨越子網的數據報發送就稍微複雜了些。跨子網的數據報發送,爲其構造的幀中的目的 MAC 地址絕不是目的 IP 地址對應的 MAC 地址,若是如此,就無需網絡層了。假設發送主機知道目的主機的 MAC 地址並將其封裝在數據幀中,子網內的所有適配器發現其 MAC 地址與目的 MAC 地址不匹配,於是,該幀就無法被轉發了。實際上,當要跨越子網時,幀的目的 MAC 地址應該置爲其默認網關的 MAC 地址。默認網關收到該幀,利用路由表選擇轉發的接口,利用 ARP 表找到目的 IP 地址的 MAC 地址(或另一臺路由器的 MAC 地址,交由其繼續轉發),發送該幀。

以太網

在這裏插入圖片描述

  • 數據字段:該字段承載 IP 數據報。以太網的數據字段長度必須在 46 ~ 1500 字節以內,不足 46 字節的將被填充至 46 字節,網絡層使用 IP 數據報首部中的長度字段來去除填充部分。46 字節的最小長度的由來是 CSMA/CD 協議中的公式 L/R2D/vL/R \ge 2D/v ,以太網規定了最遠距離,因此幀的最小長度也被確定了。
  • 目的地址和源地址字段:各 6 字節。
  • 類型字段:2 字節,與 IP 數據報中的協議字段類似,用於指示上層協議,以便多路分解。
  • CRC 字段:4 字節,差錯檢測。
  • 前同步碼字段:8 字節,該同步碼的前 7 字節都是 10101010,最後一個字節是 10101011。用於同步時鐘。

以太網的 CSMA/CD 協議,不同之處,一是碰撞檢測時檢測到其他結點在發送數據,則立即中止發送,併發送一個 48 bit 的堵塞信號(jam signal);二是隨機時間的選取採用二進制指數後退算法。當傳輸一個幀時,在該幀經歷了一連串的 n 次碰撞後,結點隨機地從 {0, 1, 2, …, 2^n - 1} 中選擇一個 K 值。因此,一個幀經歷的碰撞越多,K 選擇的範圍越大。對於以太網,一個結點選擇的實際時間量是 512K 比特時間(即發送 512 比特進入以太網所需時間量的 K 倍),n 的最大值在 10 以內。

以太網向網絡層提供的服務是無連接的、不可靠的,類似 UDP。接收方收到一幀時,若該幀未通過 CRC 校驗,則接收方直接丟棄該幀,若通過了,也不會向發送方返送確認。若運輸層協議使用 UDP,則丟棄未通過 CRC 校驗的幀,會使得接收方的應用程序看到數據中的間隙(即缺失了比特);若使用 TCP,接收方的 TCP 發現數據不完整,會引起發送方的 TCP 重傳。

交換機

交換機的運行對主機和路由器是透明的,也即無法感知的。當幀到達交換機時,交換機轉發該幀。交換機接口設有緩存,以應對暫時的超過鏈路容量的幀,避免了碰撞。

過濾是決定一個幀應該轉發到某個接口還是應當將其丟棄的交換機功能。轉發是決定一個幀應該被導向哪個接口,並把該幀移動到那些接口的交換機功能。交換機的過濾和轉發藉助於交換機表完成。交換機表中的一個表項包含:一個 MAC 地址,通向該 MAC 地址的交換機接口,以及表項放置在表中的時間。

交換機利用交換機表進行過濾和轉發,有三種可能的情況:

  • 如果沒有對應於目的地址的表項,交換機廣播該幀。
  • 如果有一個表項對應於目的 MAC 地址,且該表項指示應轉發的接口與將該幀到達的接口一致,說明該幀的源和目的處於同一個子網,交換機通過丟棄該幀執行過濾功能即可。
  • 如果有一個表項對應於目的 MAC 地址,且該表項指示應轉發的接口並非該幀到達的接口,交換機將該幀轉發到表項指示的接口。

交換機是自學習的,交換機表中所有的表項自動地建立,而不需要人爲的配置。自學習過程是:

  1. 交換機表初始爲空。
  2. 對於在每個接口接收到的每個入幀,交換機在表中存儲該幀源地址字段中的 MAC 地址、該幀到達的接口以及當前時間,對應於表項中的三個字段。
  3. 如果在一段時間(稱爲老化期)後,交換機沒有接收到以該地址作爲源地址的幀,就在表中刪除這個地址。

交換機消除了碰撞,並支持連接異質的鏈路,且更利於管理。

交換機與路由器類似,但是根本不同的。交換機是二層設備,路由器是三層設備;交換機是即插即用的,路由器需要人爲配置 IP 地址;交換機具有相對高的分組過濾和轉發速率,路由器處理的時間通常比交換機長;爲了防止廣播幀的循環,交換網絡的活躍拓撲限制爲一棵生成樹,路由器的分組通常不會循環;交換機對廣播風暴不提供任何保護措施,路由器對廣播風暴提供了防火牆保護。

虛擬局域網

支持**虛擬局域網(VLAN)**的交換機允許經一個單一的物理局域網基礎設施定義多個虛擬局域網。在一個 VLAN 內的主機彼此通信,彷彿只有它們與交換機相連。在一個基於端口的 VLAN 中,交換機的端口(接口)由網絡管理員劃分爲組。每個組構成一個 VLAN,在每個 VLAN 中的端口形成一個廣播域(即來自一個端口的廣播流量僅能到達組中的其他端口)。

在這裏插入圖片描述

網絡管理員使用交換機管理軟件聲明一個端口屬於某個給定的 VLAN(其中未聲明的端口屬於一個默認的 VLAN),在交換機中維護一張端口到 VLAN 的映射表;交換機軟件僅在屬於相同 VLAN 的端口之間交付幀。

不同的 VLAN 之間要通信,可以將 VLAN 交換機的一個端口與一臺外部路由器相連,並將該端口配置爲屬於需要通信的多個 VLAN。這樣,邏輯上看起來就像路由器連通了這些 VLAN。當然,通過構建包含一臺 VLAN 交換機和一臺路由器的單一設備,就不需要外部路由器了。

兩臺 VLAN 交換機之間要通信,就需要各自將一個端口配置爲幹線端口並相連。幹線端口屬於所有 VLAN,發送到任何 VLAN 的幀經過幹線鏈路轉發到其他交換機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章