三、數據鏈路層


內容摘要:

  • 數據鏈路層協議有很多,但有三個基本問題是共同的:封裝成幀透明傳輸差錯檢測
  • 數據鏈路層主要分兩種:
    • 點對點信道:使用PPP協議
    • 廣播信道:使用CSMA/CD協議
  • 使用廣播信道的數據鏈路層——局域網
  • 使用廣播信道的以太網——以太網在局域網里占有絕對優勢,幾乎成了局域網的同義詞
  • 適配器、轉發器、集線器、網橋、以太網交換機
  • 點對點和廣播信道的結合——使用以太網進行寬帶接入

需要先知道的一些名詞和概念:

  • 鏈路:兩點之間的物理線路(可以是有線也可以是無線)
  • 數據鏈路:鏈路+協議
  • 網絡適配器:通過其中的軟件和硬件來實現數據鏈路上的協議。一般的適配器都包括了物理層和數據鏈路層的功能

路由器在轉發分組時使用的協議棧只有下面三層。(不一定,當路由器之間交換路由信息時,根據所使用的路由協議的不同,也可能需要使用運輸層協議,見4.5節)

數據鏈路層的三個基本問題

  1. 封裝成幀

    發送端對IP數據報添加首部尾部封裝成幀

    首部+尾部的作用就是幀定界,指明從哪到哪是一個完整的幀。接收端根據幀定界符丟棄不完整幀

    幀的構成:首部+尾部+IP數據報(幀的數據部分)

    各種數據鏈路層協議都對幀的首部和幀的尾部格式有明確的規定,還都規定了各自的最大傳送單元 MTU(幀數據部分的最大長度)

  2. 透明傳輸

    透明表示一個實際存在的事物看起來卻好像不存在一樣(例如玻璃)

    ASCLL碼7位編碼,一共128個不同的編碼,可打印的95個,不可打印的33個

    SOH(00000001)和EOT(00000100)是幀的首尾定界符,都占有8bit,而ASCLL碼7bit。

    當幀是用文本文件(ASCLL碼)組成的時候,不管從鍵盤上輸入什么字符,都會通過這個數據鏈路層,仿佛是透明的一樣。

    但是圖像文件等不保證不會出現SOH和EOT所以可能會出現阻礙(數據傳輸錯誤),解決辦法是加轉義字符ESC(00011011),這種方法稱為“字節填充”或“字符填充

    img

  3. 差錯檢測

    傳輸差錯:①幀丟失②幀重復③幀失序

    比特差錯:現實通信鏈路中,比特在傳輸時會出現,0變1,1變0。

    可靠傳輸:發送端發送什么,在接收端就收到什么,就是沒有傳輸差錯比特差錯的情況

    解決比特差錯:CRC

    目前數據鏈路層廣泛使用了--循環冗余檢驗CRC的檢錯技術
    數據M=101001(6位,即k=6),在M后面加n位“冗余碼”,然后構成一個幀發出去,一共(k+n)位。

    • 發送端n位冗余碼這么得出:
      1.用二進制“模2運算”,進行2^n乘M的運算(這個乘法運算的結果這相當於在M后面加n個0)得到(k+n)位的數
      2.用這個數除以(模2運算)收發雙方實現約定的長度為(n+1)位的除數P假定P=1101,得出余數R=001。
      3.這個余數R就作為“冗余碼”拼接在數據M的后面發送出去。
      這種為了進行檢錯而添加的冗余碼常稱為“幀檢測序列FCS”。
      因此加上FCS后發送的幀是101001001(2^n * M + FCS),共(k+n)位
      循環冗余校驗CRC和幀檢測序列FCS不是一個概念。CRC是一種檢錯方法,FCS是添加在數據后面的冗余碼。
    • 在接收端對幀進行CRC檢驗:
      1.把收到的每一幀都除以同樣的除數P(模2運算),然后檢查得到的余數R

    如果傳輸過程中沒差錯R=0,如果出錯了R仍然=0的概率是非常小的(通過概率計算得出)。
    R=0則判定,幀沒錯,接受;R≠0則判定,幀出錯,丟棄。
    在數據鏈路層發送端FCS的生成和接收端的CRC檢驗都是通過硬件完成,速度非常快。

    CRC能做到非常以接近1的概率去保證接收到的數據無比特差錯,可以近似的當作“凡是接收端數據鏈路層接受的幀均無差錯”(因為有差錯的全被丟了,這可不沒差錯了么。那丟了的一段數據怎么辦?這個爛攤子全交給傳輸層了)

    img

過去OSI的觀點是:必須讓數據鏈路層向上提供可靠傳輸。因此在CRC基礎上加上了幀編號、確認、重傳機制。但是現在通信質量已經大大提高了,因此互聯網就采用了區別對待:

對於通信質量好的“有線傳輸鏈路”,不要求數據鏈路層向上提供“可靠傳輸”的服務,把可靠傳輸交給運輸層
對於通信質量較差的“無線傳輸鏈路”,數據鏈路層向上提供“可靠傳輸”

實踐證明:這么做可以提高通信效率

點對點協議PPP

PPP協議的特點

PPP協議應滿足的需求:

  1. 差錯檢測:PPP協議必須檢測出差錯幀並丟棄

  2. 封裝成幀:PPP協議必須規定特殊字符作為幀定界符

  3. 透明性:PPP協議必須保證透明性

  4. 簡單:這樣可以使協議實現的時候不容易出差錯,進而不同的設備廠家生產的協議設備的互操作性提高了

  5. 多種網絡層協議:PPP必須能夠在同一條物理鏈路上同時支持多種網絡層協議

  6. 多種類型鏈路:必須能在多種鏈路上運行。例如:串行的(一次發送一個比特)或並行的(一次並行發送多個比特),同步的或異步的,低速的或高速的,電的或光的點對點鏈路

    PPPoE這是PPP協議能適應多種類型鏈路的一個例子。PPPoE是為寬帶上網的主機使用的鏈路層協議。見3.5.4節

  7. 檢測連接狀態:當出現故障的鏈路隔了一段時間后又重新恢復正常工作時,就特別需要這種檢測功能

  8. 最大傳送單元:PPP協議必須對每一種類型的點對點鏈路設置MTU的標准默認值(1500字節)。這樣做是為了促進各種實現之間的互操作性。如果高層協議發送的分組長超過MTU,PPP就要丟掉這個幀,並且返回差錯。

  9. 網絡地址協商:PPP協議必須提供一種機制使通信的兩個網絡層的實體能協商知道彼此網絡地址。這對撥號連接的鏈路特別重要,因為即使建立了鏈路層連接不知道網絡地址,則還是不能保證網絡層可以傳送分組

  10. 數據壓縮協商

PPP協議有三個部分組成:

  1. 一個將IP數據報封裝到串行鏈路的方法。PPP支持異步鏈路(無奇偶校驗的8比特數據)和面向比特的同步鏈路。信息部分還得有MTU的限制
  2. 一個用來建立、配置和測試數據鏈路連接的 鏈路控制協議LCP。通信的雙方可以協商一些選項。RFC 1661中定義了11種類型的LCP分組
  3. 一套 網絡控制協議NCP,其中每一個協議支持不同的網絡層協議,如IP、OSI網絡層、DECnet、AppleTalk等

PPP協議幀格式:

img

  • 格式

    ①首尾的是標志字段F(flag):標識着開始和結束,F = 0x7E(01111110),連續兩幀之間只用一個標志字段

    ②A和C是預留的字段,但是直到現在還沒有用到

    ③協議字段:當值為0x0021時,PPP幀的信息字段就是IP數據報;當0xC021,則是LCP的數據

    ④信息字段:長度不超過1500字節

    ⑤FCS:是使用CRC的幀檢測序列FCS

  • 字節填充:

    當信息字段中出現和標志字段一樣的比特(0x7E)組合時,就必須采取一些措施使這種形式上和標志字段一樣的組合不出現在信息字段中。

    當PPP使用異步傳輸時(逐個字符地傳送),轉義字符為0x7D(即01111101),並使用字節填充,以下為填充方法。

    ①出現的每一個0x7E字節轉變為2字節序列(0x7D,0x5E)

    ②出現0x7D的字節(即和轉義字符一樣的比特組合)轉變為2字節序列(0x7D,0x5D)

    ③若出現ASCLL碼的控制字符(即數值小於0x20的字符),則在其前面加入0x7D,同時將該字符的編碼加以改變。例如出現0x03,那么就轉為(0x7D,0x23)

  • 零比特填充:PPP協議用在SONET/SDH鏈路時,是使用同步傳輸(一連串的比特連續傳送),而不是異步傳輸(逐個字符地傳送)這時PPP采用零比特填充來實現透明傳輸

    ①在發送端先掃描整個信息字段(通常用硬件實現,但也可以用軟件實現,只是會慢些)。只要發現有5個連續1,就立即填入一個0,保證不會出現6個連續的1。

    ②接收端收到一個幀時先找到標志字段F以確定一個幀邊界,再對其中的比特流進行掃描,每發現5個連續1,就把5個連續1后的0刪除,還原成原來的比特流

    例1:當出現0111 1110時轉為0111 1101 0。例二:當出現的數據恰好是0111 1101時也是填入一個0得到0111 1100 1。所以不會零比特填充不會出現錯誤

    img

PPP協議工作狀態

PPP鏈路一開始是怎樣初始化的?

當用戶撥號接入ISP后,就建立了一條從用戶PC到ISP的物理連接。這時, 用戶電腦向ISP發送一系列的鏈路控制協議LCP分組(封裝成多個PPP幀),以便建立LCP連接。這些分組及響應選擇了將要使用的一些PPP參數,接着還要進行網絡層配置,網絡控制協議NCP給新接入的用戶個人電腦分配了一個臨時IP地址。這樣用戶電腦就成為互聯網上的一個有IP地址的主機了。
當用戶通信完畢時,NCP釋放網絡連接,收回IP地址,接着LCP釋放數據鏈路層連接。最后釋放的是物理層的連接.

img

  1. 鏈路靜止狀態:PPP鏈路的起始和終止狀態永遠是“鏈路靜止”狀態

  2. 鏈路建立狀態:當用戶撥號接入ISP后,就建立了一條從用戶PC到ISP的物理連接。

    撥號過程:

    當PC通過調制解調器呼叫路由器時(通常是在屏幕上用鼠標點一個連接按鈕),路由器就能檢測到調制解調器發出的載波信號,在雙方建立了物理層連接后,PPP就進入“鏈路建立”狀態,其目的是建立鏈路層LCP連接

  3. LCP配置協商:接着用戶PC向ISP發送一系列LCP分組(封裝成多個PPP幀),開始協商一些配置選項,以便建立LCP連接。這些分組及其響應選擇了一些將要使用的PPP參數。

    協商過程:

    ①發送LCP的配置請求幀,這是個PPP幀,其協議字段設置為LCP對應的代碼,而信息字段包含特定的配置請求。(配置請求即將“要使用的PPP參數”,LCP配置選項包括,鏈路上的最大幀長、所使用的鑒別協議(如果有的話)、不使用PPP幀中的地址和控制字段(A和C)因為這倆字段還沒有意義。)

    ②鏈路另一端可以發送以下響應中的一種:

    • 配置確認幀:所有選項都接受
    • 配置否認幀:所有選項都理解,但不能接受
    • 配置拒絕幀:選項有的無法識別或不能接受,需要協商

    協商之后雙方就建立了LCP鏈路

  4. 接着就進入鑒別狀態,這一狀態只允許傳送LCP協議的分組、鑒別協議的分組、監測鏈路質量的分組

    若使用口令鑒別協議PAP,則需要用戶PC發送身份標識符可口令。

    如需要更好的安全性則可使用更復雜的握手鑒別協議CHAP。

    若鑒別失敗則轉到”鏈路終止“狀態,鑒別成功則進入下一步“網絡層協議”狀態

  5. 網絡層協議狀態:接着還要進行網絡層的配置,網絡控制協議NCP給新接入的用戶PC分配一個臨時的IP地址。這樣用戶就成為因特網上的一個有IP地址的主機了

    PPP鏈路兩端的網絡控制協議NCP根據網絡層的不同協議互相交換特定的網絡控制分組。這個步驟很重要,因為現在的路由器都能同時支持多種網絡層協議。總之PPP協議兩端的網絡層可以運行不同的網絡側協議,但仍然可以使用一個PPP協議進行通信。如果在PPP鏈路上運行的是IP協議,則對PPP鏈路的每一端配置IP協議模塊(如分配IP地址)時就要使用NCP中支持IP的協議——IP控制協議IPCP。IPCP分組也封裝成PPP幀(其中的協議字段為0x8021)。

    在低速鏈路上運行時,雙方還可以協商使用壓縮的TCP和IP首部。

  6. 鏈路打開狀態: 當網絡層配置完成后,鏈路就進入可進行數據通信的“鏈路打開狀態”。可互相發送分組。還可發送回送請求LCP分組和回送回答LCP分組,來檢查鏈路狀態

    數據傳輸結束之后,可以由鏈路的一端發出終止請求LCP分組請求終止鏈路連接,在收到對方發來終止確認LCP分組后,轉到鏈路終止狀態

  7. 鏈路終止狀態:接着LCP釋放數據鏈路層連接

  8. 鏈路靜止狀態:最后釋放物理層連接——調制解調器的載波停止

    PPP鏈路的起始和終止狀態永遠是“鏈路靜止”狀態,這時在PC和ISP之間不存在物理層的連接

從設備之間無鏈路,到先建立物理鏈路,再建立鏈路控制協議LCP鏈路。經過鑒別后再建立網絡控制協議NCP鏈路,才能交換數據。由此可見PPP協議已經不是純粹的數據鏈路層協議,他還包含了物理層和網絡層的內容。

使用廣播信道的數據鏈路層

廣播信道可以進行一對多的通信。下面要討論的局域網使用的就是廣播信道。

局域網的數據鏈路層

局域網可按網絡拓撲進行分類:①星形網②環形網③總線網
總線網以傳統以太網最為著名。局域網經過了四十年的發展,尤其是在快速以太網和吉比特以太網、10吉比特以太網相繼進入市場后,以太網已經在局域網里占據了絕對優勢,幾乎成為了局域網的同義詞。
局域網工作的層次跨越了數據鏈路層和物理層,但由於關於數據鏈路層的技術比較多,所以在數據鏈路層介紹局域網。

img

共享信道要着重考慮的一個問題就是如何使眾多用戶能夠合理而方便的共享通信媒體資源。在技術上有兩種方法:

  1. 靜態划分信道頻分復用、時分復用、波分復用、碼分復用,這種代價較高,不適合局域網

  2. 動態媒體接入控制。其特點是信道並非在用戶通信時固定分配給用戶。

    分為

    隨機接入:所有用戶隨時的發送信息,但是同一時刻兩個用戶一起發送,在共享媒體上就會出現碰撞,導致雙方都發送失敗。

    受控接入:用戶不能隨時發送消息,必須服從一定的控制。典型代表——輪詢

    隨機接入使用較多,受控接入使用較少不用管它。

下面我們從傳統以太網開始介紹

以太網的兩個標准、MAC的由來和發展

由於有關廠商在商業上競爭太激烈,IEEE 802委員會未能形成一個統一的、最佳的局域網標准,而是被迫制定了幾個不同的局域網標准,如(令牌總線網,令牌環網等)。為了使數據鏈路層能更好的適應多種局域網標准,委員會把局域網的數據鏈路層拆成兩個子層,①邏輯鏈路控制LLC子層②媒體輸入控制MAC子層。與接入傳輸媒體有關的內容都放在MAC子層,而LLC子層則與傳輸媒體無關,不管采用何種傳輸媒體和MAC子層的局域網 對LLC子層來說都是透明的

img

然而最后以太網取得了壟斷地位,幾乎成了局域網代名詞,因此LLC子層已經消失了,很多廠商生產的適配器上僅裝有MAC協議。

適配器

  • 計算機與外界局域網的連接是通過適配器。

  • 適配器是一塊插在電腦上的網絡接口卡NIC,簡稱 網卡(由於現在主板上都嵌入適配器了,不再單獨使用網卡了,所以用適配器這個更准確的術語)

  • 適配器的內容雖然放在數據鏈路層中講授,但是適配器所實現的功能卻包含了”數據鏈路層“和”物理層“這兩層次的功能。現在芯片集成度很高,以致很難把一個適配器的功能嚴格按照層次關系精確划分開

  • 適配器上裝有處理器和存儲器

  • 適配器與局域網的通信以串行的方式進行。但是適配器和主板上的I/O總線以並行傳輸方式進行。因此適配器的一個重要功能是:數據串行和並行的轉換。

    img

  • 轉換就需要處理器。因為要並行轉串行(快轉慢),所以需要存儲器對數據進行緩存。

  • 適配器有個驅動程序,會告訴它應該從內存的什么位置把多長的數據塊發送到局域網,應該把局域網傳過來的數據塊放到內存的什么位置。

  • 適配器還要實現以太網協議

  • 適配器的工作不會使用計算機的CPU。①當適配器收到不正確的幀就丟掉,不再進行其他處理,這樣做不浪費計算機CPU資源。②收到正確的幀時,就會使用中斷來通知該計算機並交付協議棧中的網絡層。③當計算機要發送IP數據報時,就由協議棧把IP數據報向下交給適配器,組裝成幀后發送到局域網。

  • MAC地址就在適配器中。

CSMA/CD協議

以太網為了在廣播信道中實現一對一的通信,使用了MAC地址作為每個適配器的唯一標識,發送數據幀時在首部填入目的MAC地址。現在的電子技術很容易做到:僅當數據幀中的目的地址與適配器ROM中存放的硬件地址一致時,該適配器才能接收這個數據幀。

為了通信簡便,以太網采用了兩種方式。

  1. 以太網使用工作起來非常簡單的無連接方式。而且以太網通信質量好。因此,以太網提供的服務就是盡最大努力的交付,即不可靠的交付。當目的站收到差錯幀就丟掉(比特差錯-使用CRC),傳輸差錯交給高層協議解決。以太網采用最簡單的隨機接入,那么就需要解決碰撞(多人同時發言)的問題,使用的方案是CSMA/CD協議,意思是載波監聽多點接入/碰撞檢測

  2. 以太網使用的是曼徹斯特編碼的信號。

    二進制基帶數字信號通常就是高低壓交替出現的信號。這種信號的最大問題就是一旦出現一長串的連1或連0,接收端就無法從收到的比特流中提取位同步信號。

    曼徹斯特編碼如圖,1就是”前高后低“,0是”前低后高“(也可以反過來),這樣就保證了在每一個碼元正中間出現一次電壓的轉換而接收端就是利用這種電壓的轉換很方便的把同步位信號提取出來。

    曼徹斯特編碼的一個小缺點,從圖中可以知道它所占的頻帶寬度比原始基帶信號增加了一倍。

    img

CSMA/CD協議要點:

  • 多點接入:多個計算機接在一條總線。
  • 載波監聽:多個計算機一直在監聽總線上有沒有其他計算機在發送信息。
  • 碰撞檢測:邊發送邊監聽,如果監聽到有其他站在發送消息,就表明發生了碰撞。任何一個正在發送數據的站,一旦發現總線上出現了碰撞,其適配器就要立即停止發送,然后等待一會再發送。

img

顯然在使用CSMA/CD協議時,一個站不可能同時進行發送和接收(但必須邊發送邊監聽)。因此使用CSMA/CD協議的以太網不可能進行全雙工通信,而只能進行半雙工通信。

以太網上的每一個站在自己發送數據之后的一小段時間內,存在着遭遇碰撞的可能性。這一小段時間是不確定的,它取決於另一個發送數據站到本站的距離。因此以太網不能保證某一段時間內一定能把自己的數據幀成功地發送出去(因為存在產生碰撞的可能)。以太網的這一特點稱為發送的不確定性。如果希望在以太網上發生碰撞的機會很小。必須使整個以太網的平均通信量遠小於以太網的最高數據率。

以太網經過爭用期這段時間還沒有檢測到碰撞,才能肯定這次發送不會發生碰撞。

為了避免一個幀太短還沒等檢測到碰撞,它就已經全發出去了。這樣發送端就沒法終止它的發送了,發送端還會以為它已經發送成功了。所以以太網規定一個幀最短為64字節,如果發送的數據不夠64字節,那么必須填充一些字節。

由以上可知,如果在爭用期(共發送了64字節)沒有發生碰撞,那么后續發送的數據就一定不會發生沖突。換句話說如果發生碰撞,就一定是在發送的前64字節內。由於一檢測到沖突就立即終止發送,這時已經發出的數據一定小於64字節,因此凡長度小於64字節的幀都是由於沖突而異常終止的無效幀。只要收到這種無效幀,就應當立即丟棄。

當發送數據的站一旦發現發生了碰撞時,除了立即停止發送數據外,還要繼續發送32比特或48比特的人為干擾信號,以便讓所有用戶都知道現在已經發生了碰撞。這叫做強化碰撞

image-20210902205528979

以太網還規定了幀間最小間隔為9.6us,相當於96比特時間。這樣做是為了使剛剛吸收到的數據幀的站的接收緩存來得及清理。做好接收下一幀的准備。

根據上述討論,可以把CSMA/CD協議的要點歸納如下:

  1. 准備發送:適配器從網絡層獲得一個分組,加上以太網的首部和尾部,組成以太網幀,放入適配器的緩存中。但在發送之前,必須先檢測信道
  2. 檢測信道:若檢測到信道忙,則應不停檢測,一直等待信道為空閑,若檢測到信道空閑,並在96比特時間內保持空閑(保證了幀間最小間隔),就發送這個幀
  3. 在發送過程中仍不斷檢測信道。發送成功:在爭用期內一直未檢測到碰撞。這個幀肯定能發送成功,發送完畢后,其他什么也不做。然后回到1步。發送失敗:爭用期內檢測到碰撞。立即停止發送數據,並按規定發送人為干擾信號(強化碰撞)。適配器就執行指數退避算法,等待512比特時間后,返回步驟2,繼續檢測信道。但若重傳16次仍不能成功,則停止上傳而向上報錯

以太網每發送完一幀,一定要把已發送的幀暫時保留一下。如果在爭用期內檢測到發生了碰撞,那么還要推遲一下把這個暫時保留的幀重傳一次。

集線器

使用集線器的網絡是星型拓撲,集線器相當於把總線網的各個分支匯集到了一起,在邏輯上還是一個總線網,在上面運行的各個站還是使用CSMA/CD協議。一個集線器有很多接口(8-16個),因此一個集線器很像一個多接口轉發器。集線器工作在物理層,每個接口僅簡單的轉發比特,不進行碰撞檢測

以太網的信道利用率

以太網的信道利用率不能達到100%,因為總會發生碰撞,造成信道損失。因此當數據率一定時,以太網的連線長度受到限制,同時以太網的幀長不能太短。(連線太長會導致爭用期變長。爭用期變長,幀就也得變長,不然幀已經全發出去了,才知道有碰撞,這個幀就白發了)
img

以太網的MAC層

  1. MAC層的硬件地址

    局域網中(注意不是點對點信道),“硬件地址”又稱為“物理地址”或“MAC地址”(因為這種地址用在MAC幀中)。

    MAC就是為了標識某個系統的一個非常重要的標識符。——“名字指出我們所要尋找的那個唯一資源,地址指出那個資源在何處,路由告訴我們到達何處”。嚴格來講名字應該與系統的所在地無關。就像我們每個人的名字一樣,不隨我們所處地址而改變。但是IEEE 802標准為局域網規定了一種48位全球地址(一般都簡稱為“地址”),是指局域網上的每一台計算機中固化在適配器的ROM中的地址

    主機的MAC地址雖然被稱為“地址”但是它根本不能告訴我這個主機在什么地方。所以嚴格來講,MAC其實就是計算機的唯一身份ID,而IP通常用來指明“地址”。只不過稱呼MAC為地址比較習慣了,盡管不那么嚴謹

    IEEE的注冊管理機構RA是局域網全球地址的法定管理機構,它負責分配地址字段的6個字節中的前3個字節(即高24位),適配器生產廠家向它購買這三個字節構成的這個號(即地址塊),這個號的正式名稱是組織唯一標識符OUI。地址字段中的后三位(即低24位)則由廠家自行指派,稱為擴展標識符。可見一個地址塊可以生產出2²⁴個不同的地址。用這種方式得到的48位地址稱為EUI-48。EUI-48的使用范圍並不局限於局域網的硬件地址,而是可以用於軟件接口。

    IEEE規定地址字段的第一字節的最低位為I/G位,當I/G位為0時,地址字段表示一個單個站地址。當I/G位為1時,表示組地址用來進行多播。因此IEEE只分配地址字段的前三個字節中的23位

    IEEE還考慮到可能有人不願意購買OUI。為此,IEEE把地址字段第一字節的最低第二位規定為G/L位。當G/L位為0時是全球管理(保證全球沒有相同地址),廠商購買的OUI全是屬於全球管理。當G/L位為1時是本地管理,這時用戶可以任意分配網絡上的地址。但應當指出,以太網幾乎不會理會這個G/L位

    適配器有過濾功能,它在網上每收到一個MAC幀就先用硬件檢查MAC幀中的目的地址,是本地的MAC就留下,不是就丟棄。這里的幀包括以下三種:

    1. 單播幀:一對一,收到的幀的MAC地址與本站的硬件地址完全相同
    2. 廣播幀:一對全體,全1的MAC地址
    3. 多播幀:一對多,發送給本局域網上一部分站點的幀

    所有適配器都至少能識別前兩種幀。有的適配器可用編程方法識別多播地址。當操作系統啟動時,它就把適配器初始化,使適配器能夠識別某些多播地址。顯然只有目的地址才能使用廣播地址和多播地址。

    以太網適配器還有一種工作方式——混雜方式。這種適配器只要“聽到”有幀在以太網上傳輸就悄悄的接受下來。這樣是“竊聽”,黑客常用。所以別在有這種適配器的以太網上上網。但是混雜模式有時還非常有用。例如:網絡工作人員用它來監視和分析以太網上的流量,以便找出提高網絡性能的具體措施。有一種很有用的網絡工具叫嗅探器就使用了設置混雜方式的網絡適配器。

  2. MAC幀的格式(有兩種格式標准,這里講使用的最多的V2標准)

    img

    • 源地址、目的地址

    • 類型字段:用來標志上層使用的是什么協議,以便把收到的MAC地址交給這個上層這個協議,例如0x0800就代表IP(圖中假定使用IP地址,實際上使用其他協議也是可以的。)

    • 數據字段:長度在46-1500字節之間

      46字節這樣得出:最小長度64(見上文提到的的CSMA/CD)減去18字節的首部、尾部

      數據字段小於46字節時,MAC子層就會在數據字段后面加入一個整數字節填充字段。

    • 幀檢測序列FCS:用的CRC檢驗

      MAC幀的FCS檢驗范圍不包括前同步碼幀開始定界符當傳輸媒體的誤碼率位1×10﹣⁸,MAC子層可使未檢測到的差錯小於1×10﹣¹⁴

    • MAC幀沒有幀長度字段,怎么來進行幀定界?

      使用曼徹斯特編碼!這種編碼每一個碼元正中間肯定有一次電壓轉換。當發送方把一個以太網幀發送完畢之后,就不再發送其他碼元了。這時發送方網絡適配器的接口上的電壓再也沒變化了。這樣接收方就很容易知道以太網幀的結束位置。在這個位置往前數4字節(FCS字段長度是4字節)。這就是物理層屬性對數據鏈路層造成的影響,由於以太網采用曼徹斯特編碼所以長度字段並無實際意義。

    • 前同步碼+幀開始定界符

      為了接收端迅速實現位同步,從MAC子層下傳到物理層時還需要在幀的前面插入8字節(由硬件生成)。它的前7個字節是前同步碼(1和0交替碼),作用是使接收端調整時鍾頻率實現“位同步”;后1個字節幀開始定界符(10101011)前6位和前同步碼一樣,最后兩個連續的1就是告訴接收端適配器:“MAC幀的信息馬上要來了”。

      在使用SONET/SDH進行同步傳輸時則不需要用前同步碼,因為在同步傳輸時收發雙方的位同步總是一直保持着。

    • 當數據字段的長度小於46字節,MAC子層就會在數據字段后面加入一個整數字節的填充字段,以保證以太網的MAC幀長度不小於64字節。我們應該注意到MAC幀的首部並沒有指出數據字段的長度是多少。在有填充字段的情況下,接收端的MAC子層在剝去首部和尾部后就把數據字段和填充字段一起上交給協議層。現在的問題是:上層協議如何知道填充字段的長度的呢?(IP層應當丟棄沒有用處的填充字段)可見,上層協議必須具有識別有效的數據字段長度的功能。我們知道,IP協議首部有一個“總長度”字段,那用這個長度就可以剪去后面的填充字段了。

    • 無效幀的定義

      幀長度不是整數字節

      收到的幀檢驗序列FCS查出有錯

      收到的幀的MAC客戶數據字段的長度不在46-1500字節之間。考慮到MAC幀首部和尾部的長度共有18字節,可以得出有效的MAC幀長度為64-1518字節。

    還需要注意,以太網上傳送的數據是以幀為單位,各幀之間必須要有一定的間隙。因此接收端只要找到幀開始定界符,其后面連續到達的比特流就都屬於同一個MAC幀。可見以太網不需要使用幀結束定界符,也不需要字節插入來保證透明傳輸。

擴展的以太網

以太網太大會導致信號衰減

在物理層擴展以太網

早期使用轉發器擴展以太網,現在擴展主機和集線器之間的距離的一種辦法就是使用光纖,光纖時延很小帶寬很高,因此很容易使主機和幾公里以外的集線器相連接

img

使用多個集線器,和使用主干集線器把各個集線器連接起來。
優點:形成一個更大的以太網,
缺點:①碰撞域變大了。②不同的系使用不同的以太網技術(比如數據率不同),就不可能用集線器將他們互連起來。例:一個系用10Mb/s的適配器,一個100Mb/s的適配器,那么用集線器連接起來之后大家只能工作在10Mb/s的速率。
img

在數據鏈路層擴展以太網——網橋

擴展以太網更常用的辦法是在數據鏈層進行。最初人們使用的是網橋

網橋和 集線器、轉發器 的區別

https://zhuanlan.zhihu.com/p/350822185

網橋是按存儲轉發方式工作,集線器或轉發器是逐個比特轉發,此外網橋丟棄CRC檢驗有差錯的幀、過長過短的無效幀

網橋:

對收到的MAC幀的目的地址進行轉發和過濾。當網橋收到一個幀時,並不是向所有的接口轉發此幀,而是根據此幀MAC的目的地址,查找網橋中的地址表,然后確定將該幀轉發到哪一個接口,或者丟棄。

網橋的優點

網橋工作在鏈路層的MAC子層,可以使以太網各網段成為隔離開的碰撞域。物理層的轉發器集線器就沒有這個功能;擴大了物理范圍、網絡故障出現時,只影響個別網段。可互聯不同物理層、不同MAC子層和不同速率(如10Mb/s和100Mb/s以太網)的以太網

網橋缺點

由於網橋對接收的幀要先存儲->查找轉發表->執行CSMA/CD算法->轉發,這樣增加了時延;在MAC子層沒有流量控制功能。當網絡上的負荷很重時,網橋中的緩存會溢出,以致幀丟失;網橋只適合於用戶不多的情況(不超過幾百個)和通信量不太大的以太網,否則有時會因傳播過多的廣播信息而產生網絡擁塞。這就是所謂的廣播風暴

源路由網橋

源站廣播發送一個發現幀作為探測用,每個發現幀都記錄所經過的路由。當這些發現幀到達目的站,就沿着各自的路由返回源站。源站在得知這些路由之后,從所有可能的路由中選一個最佳路由。以后凡從這個源站向該目的站發送的幀首部,都必須攜帶源站所確定的這一路由信息。

若兩個以太網之間使用並聯的源路由網橋,則可使通信量平均一些分配給各個網橋。做到負載均衡

1990年問世的交換式集線器,很快就淘汰了網橋。又叫以太網交換機第二層交換機,強調這種交換機工作在數據鏈路層。

以太網交換機:

實質上就是一個多接口網橋,從技術上講網橋的接口數很少,2-4個,以太網交換機通常有十幾個或更多的接口;它與工作在物理層的轉發器集線器有很大的差別;以太網交換機的每個接口都直接與一個單台主機或另一個以太網交換機相連,並且一般都工作在全雙工方式(注意:普通網橋的接口往往是連接到以太網的一個網段);以太網交換機還具有並行性,即能同時連通多對接口,使多對主機能同時通信(網橋一次只能轉發一個幀)。相互通信的主機都是獨占媒體,無碰撞地傳輸數據;其內部的幀交換表是通過自學習算法建立的;以太網交換機使用了專用的交換結構芯片,用硬件轉發,其轉發速率比使用軟件轉發的網橋塊;內部還有存儲器,能在輸出端口繁忙的時候把到來的幀進行緩存;雖然大部分都有緩存進行存儲轉發,但是有直通交換形式的交換機。直通是在收到幀的同時就立即按數據幀的目的MAC地址決定該幀的轉發接口,因而提高了轉發速度。直通的缺點是不檢查差錯就轉發,因此有可能轉發一些無效幀。

以太網交換機種類有很多。例如:”具有第三層特性的第二層交換機“和”多層交換機“。前者具有某些第三層的功能,如數據報的分片和對多播通信量的管理,而后者可根據第三層的IP地址對分組進行過濾。

  • 自學習和轉發幀的一般算法

    ①收到一個幀后先進行自學習。找找轉發表中與收到幀的源地址有無匹配的項目。沒有就在轉發表中增加一個項目(源地址、進入的接口、時間)。如有,則把原有的項目進行更新

    轉發幀。查找轉發表中與收到幀的目的地址有無匹配的項目。沒有,通過所有其他接口(除了進入的接口)進行轉發。有,則按轉發表中給出的接口進行轉發。若轉發表中給出的接口就是該幀進入網橋的接口,那么就丟棄這個幀。

  • 生成樹協議STP:互相連接在一起的網橋在進行彼此通信后,就能找出原來的網絡拓撲的一個子集。這個子集里,整個連通的網絡中不存在回路,在任何兩個站之間只有一條路徑。(避免兜圈子)

PPP協議和以太網MAC層結合

兩個以太網之間通過PPP協議(點對點信道)連接。其MAC幀外層還要包上:首部PPP-H和尾部PPP-T
在數據幀離開網橋2時,還要剝去這個PPP-H和PPP-T然后經以太網LAN2到達站點B。
img

虛擬局域網VLAN

利用以太網交換機可以很方便的實現虛擬局域網VLAN。

VLAN是由一些局域網網段構成的與物理位置無關的邏輯組。每一個VLAN的幀都有一個明確的標識符,指明發送這個幀的工作站是屬於哪一個VLAN。虛擬局域網只是局域網提供給用戶的一種服務,並不是一種新型局域網。

例:下圖中

LAN₁:(A₁, A₂, B₁, C₁)、LAN₂:(A₃, B₂, C₂)、LAN₃:(A₄, B₃, C₃)。可以划分為三個虛擬局域網VLAN₁:(A₁, A₂, A₃, A₄)、VLAN₂:(B₁,B₂,B₃)、VLAN₃:(C₁,C₂)。

如果B₁發出廣播,那么只有和B₁在一個VLAN上的B₂,B₃能收到。雖然B₁,B₂,B₃沒有連在同一交換機上。以太網交換機不向虛擬局域網以外的工作站傳送B₁的消息。這樣,虛擬局域網限制了接收廣播信息的工作站數,使得網絡不會因傳播過多的廣播信息(即”廣播風暴“)而引起性能惡化。

img

新的以太網幀格式——802.1Q幀:

1988年新標准定義了以太網的幀格式擴展,以便支持虛擬局域網。虛擬局域網協議允許在以太網的幀格式中插入一個4字節的標識符稱為VLAN標記,用來指明發送該幀的工作站屬於哪一個虛擬局域網。插入VLAN標記得出的幀稱為802.1Q幀。顯然如果還使用舊的以太網幀格式,就無法區分是否划分了虛擬局域網。上圖中標出的幾個粗線鏈路上傳輸的是802.1Q幀。在其他鏈路上傳輸的仍然是普通的以太網幀。由於VLAN的以太網幀的首部增加了4字節,因此以太網的最大幀長從原來的1518字節變為1522字節。

img

高速以太網

1995年:100BASE-T以太網,100Mb/s

1998年:吉比特以太網,1Gb/s

10吉比特和100吉比特

使用以太網進行帶寬接入

以太網接入的一個重要特點就是可以提供雙向的帶寬通信,並且可以根據用戶對寬帶的需求靈活地進行寬帶升級。當城域網和廣域網都采用吉比特以太網或10吉比特以太網時,采用以太網接入可以實現端到端的以太網傳輸,中間不需要進行幀格式的轉換。這就提高了數據的傳輸率且降低了傳輸成本。

然而以太網的幀標准格式中沒有用戶名字段,也沒有讓用戶鍵入密碼來鑒別身份的過程。如果運營商要利用以太網,就必須解決這個問題,於是有人想法子把數據鏈路層的兩個成功協議結合起來,即把PPP協議幀再封裝到以太網中來傳輸——”在以太網上運行PPP“。現在的光纖FTTx都要使用PPPoE的方式進行接入

例如,如果使用光纖到大樓FTTB的方案,就在每個大樓的鏤口安裝一個光網絡的單元ONU(實際上就是一個以太網交換機),然后根據用戶所申請的帶寬,用5類線(銅線)接到用戶家中。如果大樓的用戶太多,那么還可以在每一層再安裝一個100Mbit/s的以太網交換機。各大樓的以太網交換機通過光纜匯接到光節點匯接點(光匯接點一般通過城域網連接到互聯網的主干網)。

使用這種方式介入到互聯網時,在用戶家中不再需要使用任何調制解調器。用戶家中只有一個RJ-45的插口。用戶把自己個人電腦通過5類線連接到牆上的RJ-45插口中,然后在PPPoE彈出的窗口中鍵入在網絡運營商處購買的用戶名(一串數字)和密碼,就可以進行上網了。注意這種以太網帶寬接入時,從用戶家中的個人電腦到戶外的第一個以太網交換機的帶寬是能夠得到保證的。因為這個帶寬時用戶獨占的。但是這個以太網交換機到上一級的交換機的帶寬是許多用戶共享的。這時運營商就要及時擴容,保證用戶利益不被損傷。

順便指出,當用戶使用ADSL進行寬帶上網時,從用戶個人電腦到家中的ADSL調制解調器之間,也是使用RJ-45和5類線(即以太網使用的網線)進行連接的,並且也是使用PPPoE彈出的窗口進行撥號連接的。但是用戶個人電腦發送的以太網幀到了家里的ADSL調制解調器后,就轉換成為ADSL使用的PPP幀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM