一、概述
1.1概述
物理層發出去的信號需要通過數據鏈路層才知道是否到達目的地;才知道比特流的分界線
- 鏈路(Link):從一個結點到相鄰結點的一段物理線路,中間沒有任何其他交換結點
- 數據鏈路(Data Link):把實現通信協議的硬件和軟件加到鏈路上,就構成了數據鏈路
- 數據鏈路層以幀為單位傳輸和處理數據
?封裝成幀
數據鏈路層為數據加上幀首和幀尾使之成為幀的過程
- 幀頭和幀尾中含有重要的控制信息
- 幀頭幀尾的作用之一就是幀定界(變成比特傳輸后據此區分每個幀的起始和結束)
- 為了提高幀的傳輸效率,應當使幀的數據部分長度盡可能大
- 考慮到差錯控制等多種因素,每一種數據鏈路層協議都規定了幀的數據部分的長度上限,即最大傳送單元MTU(
Maximum Transfer Unit
)
透明傳輸是指數據鏈路層對上層交付的傳輸數據沒有任何限制,就好像數據鏈路層不存在一樣(即保證接收方接到的數據是完整的數據)
面向字節的物理鏈路使用字節填充(或稱字符填充)的方法實現透明傳輸
幀頭幀尾有標志位用來劃分一個個幀,如果幀內部恰好也出現了標志位,則在第一次掃描時在標志位前面加一個轉義字符幫助區分哪個是真正的幀頭。考慮到轉義字符也可能在幀內部出現,因此在轉義字符前也加轉義字符。接收方接到消息后但凡看到轉義字符開頭就會去掉轉義字符并且對其后一個字符不做特殊處理
?面向比特的物理鏈路使用比特填充的方法實現透明傳輸
零比特填充:在發送前,對幀的數據部分進行掃描,每
5
個連續的比特1
后就插入1
個比特0
,防止其與首部尾部的標志位混淆。接收方接收時將每5
個連續的比特1
后面的0
剔除即可
差錯檢測
實際的通信鏈路都不是理想的,比特在傳輸過程中可能會產生差錯:
1
可能變成0
,0
可能變成1
。這叫比特差錯在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率稱為誤碼率BER(
Big Error Rate
)使用差錯檢測碼(如
Mac
幀尾的FCS
)來檢測數據在傳輸過程中是否產生了比特差錯,是數據鏈路層所要解決的重要問題之一
奇偶校驗
在待發送的數據后面添加
1
位奇偶校驗位,使整個數據(包括所添加的校驗位在內)中"1
"的個數為奇數(奇校驗)或為偶數(偶校驗)?
比如發送數據001
- 若是奇校驗,則在數據后添加
0
,使其成為0001
,1
的個數為奇數。如果傳輸過程中發生了1
位誤碼,則1
的個數會變成偶數,據此判斷是否發生誤碼;但是若發生了2
個誤碼,1
的個數依然為奇數,因此檢查不出來- 若為偶校驗,則在數據后添加
1
,使其成為1001
,1
的個數為偶數,其他情況與奇校驗類似
如果有奇數個位發生誤碼,則奇偶性發生變化,可以檢查出誤碼
如果有偶數個位發生誤碼,則奇偶性不發生變化,不能檢查出誤碼(漏檢)
循環冗余校驗CRC?
收發雙方約定好一個生成多項式
G(x)
-
發送方基于待發送的數據和生成多項式計算出差錯檢測碼【冗余碼】,將其添加到待傳輸數據的后面一起傳輸
-
接收方通過生成多項式來計算收到的數據是否產生了誤碼
- CRC有很好的檢錯能力(漏檢率非常低),雖然計算比較復雜,但非常易于用硬件實現,因此被廣泛應用于數據鏈路層
- 在計算機網絡中通常采用檢錯重傳方式來糾正傳輸中的差錯,或者僅僅是丟棄檢測到差錯的幀,這取決于數據鏈路層向其上層提供的是可靠傳輸服務還是不可靠傳輸服務
可靠傳輸
不可靠傳輸服務:僅僅丟棄有誤碼的幀,其他什么也不做
可靠傳輸:想辦法實現發送端發送什么,接收端就收到什么?
- 一般情況下,有線鏈路的誤碼率比較低,為了減小開銷,并不要求數據鏈路層向上提供可靠傳輸服務。即使出現了誤碼,可靠傳輸的問題由其上層處理
- 無線鏈路易受干擾,誤碼率比較高,因此要求數據鏈路層必須向上層提供可靠傳輸服務
- 比特差錯只是傳輸差錯中的一種,從整個計算機網絡體系結構來看,傳輸差錯還包括分組丟失、分組失序以及分組重復
- 分組丟失、分組失序以及分組重復這些傳輸差錯,一般不會出現在數據鏈路層,而會出現在其上層
- 可靠傳輸服務并不僅局限于數據鏈路層,其他各層均可選擇實現可靠傳輸
- 可靠傳輸的實現比較復雜,開銷也比較大,是否使用可靠傳輸取決于應用需求
?①停止-等待協議SW
接收方收不到數據分組,就不會發送ACK或NAK。如果不采取其他措施,發送方就會一直處于等待接收方ACK或NAK的狀態。
為解決該問題
可以在發送方發送完一個數據分組時啟動一個超時計時器。若到了超時計時器所設置的重傳時間而發送方仍收不到接收方的任何ACK回或NAK,則重傳原來的數據分組,這就叫做超時重傳。一般可將重傳時間選為略大于“從發送方到接收方的平均往返時間”
為了讓接收方能夠判斷所收到的數據分組是否是重復的,需要給數據分組編號。由于停止-等待協議的停等特性,只需1個比特編號就夠了,即編號0和1
為了讓發送方能夠判斷所收到的ACK分組是否是重復的,需要給ACK分組編號,所用比特數量與數據分組編號所用比特數量一樣。數據鏈路層一般不會出現ACK分組遲到的情況,因此在數據鏈路層實現停止-等待協議可以不用給ACK分組編號。
?
②回退N幀協議GBN
相對停止-等待協議多個窗口的概念
接收窗口尺寸只能等于1
,因此接收方只能按序接收正確到達的數據分組?
- 接收端返回
ACK n
表示發送過來的分組x<=n的都收到了
③選擇重傳協議SR
與回退
N
幀相比,接收窗口允許多個,且發送窗口最大情況有所變化
- 發送窗口接收到
ACK
幀的部分不會超時重傳
1.2PPP協議
數據鏈路層協議,用于規定幀格式
透明傳輸?
①字節填充法
面向字節的異步鏈路采用插入轉義字符的字節填充法
- 如
PPP
幀的標志字段取值為7E(16進制)
,如果數據中出現7E
則需要在數據前插入轉義字符7D(16
進制),并將原來的7E減20(16
進制),所以7E
在數據中最終會變成7D5E
- 如果數據中有轉義字符7D怎么辦呢?可以在轉義字符
7D
前再加一個轉義字符7D
,并將數據的7D
減20(16進制)
,于是轉義字符7D
在數據中最終會變成7D5D
- 數據中出現的每一個
ASCII
碼控制字符【數值小于20(16進制)的字符】,則在該字符前插入一個7D,同時將該字符的編碼加上20(16進制)- 接收方只需要反變換即可恢復出原來的幀的數據部分
?②比特填充法
面向比特的同步鏈路采用插入比特0的比特填充法
- 發送方:對幀的數據部分進行掃描(一般由硬件實現)。只要發現5個連續的比特1,則立即填充1個比特0
- 接收方:對幀的數據部分進行掃描(一般由硬件實現)。只要發現5個連續的比特1,就把其后的1個比特0刪除
?PPP的差錯檢測
1.3媒體接入層
共享信道要著重考慮的一個問題就是如何協調多個發送和接收站點對一個共享傳輸媒體的占用,即媒體接入控制MAC(
Medium Access Control
)?
復用(Multiplexing)就是通過一條物理線路同時傳輸多路用戶的信號。
當網絡中傳輸媒體的傳輸容量大于多條單一信道的總通信量時,可利用復用技術在一條物理線路上建立多條通信信道來充分利用傳輸媒體的帶寬
靜態劃分信道
①頻分復用FDM
將傳輸線路的頻帶資源劃分成多個子頻帶,形成多個子信道。各子信道之間留出隔離頻帶,以免造成子信道間干擾。當多個信號輸入一個多路復用器時,這個復用器將每一個信號調制到不同頻率的載波上,接收端由相應的分用器通過濾波將各路信號分隔開,將合成的復用信號恢復成原始的多路信號
②時分復用TDM
將時間劃分為一個個時隙,將帶寬資源按照時隙輪流分配給不同的用戶,每對用戶只在所分配時隙里使用線路傳輸數據。
時分復用技術將時間劃分為一段段等長的時分復用幀,每一個時分復用的用戶在每一個時分復用幀中占用固定序號的時隙。每個用戶所占的時隙是周期性出現的,其周期就是時分復用幀的長度
③波分復用WDM
波分復用其實就是光的頻分復用。經過光調制,分別將光載波變換到不同波長。這些光波經過光復用器就可以在一根光纖中傳輸。到達終點后用光分用器將不同波長的光進行還原得到信息
光信號傳輸一段距離后會衰減,對衰減的光信號必須進行放大才能繼續傳輸
?④碼分復用CDM
碼分復用
CDM
(最初用于軍事通信)是另一種共享信道的方法。實際上,由于該技術主要用于多址接入,人們更常用的名詞是碼分多址CDMA
CDM
的每一個用戶可以在同樣的時間使用同樣的頻帶進行通信,由于各用戶使用經過特殊挑選的不同碼型,因此各用戶之間不會造成干擾
在CDMA
中,每一個比特時間再劃分為m
個短的間隔,稱為碼片。通常m
的值是64
或128
使用CDMA
的每一個站被指派一個唯一的m bit
碼片序列
- 一個站如果要發送比特
1
,則發送它自己的m bit
碼片序列 - 一個站如果要發送比特0,則發送它自己的
m bit
碼片序列二進制反碼
?
復用與多址的區別
復用是將單一媒體的頻帶資源劃分成很多子信道,這些子信道之間相互獨立,互不干擾。從媒體的整體頻帶資源上看,每個子信道只占用該媒體頻帶資源的一部分
多址(更確切地應該稱為多點接入)處理的是動態分配信道給用戶。這在用戶僅僅暫時性地占用信道的應用中是必須的,而所有的移動通信系統基本上都屬于這種情況。相反,在信道永久地分配給用戶的應用中,多址是不需要的(對于無線廣播或電視廣播站就是這樣)?
頻分復用FDM
和時分復用TDM
可用于多點接入,相應名詞是頻分多址FDMA和時分多址TDMA。從某種程度上,FDMA、TDMA、CDMA可以分別看作是FDM、TDM、CDM的應用?
動態接入控制
隨機接入
多個主機連接到一根總線上,當信息同一時間傳送相遇時就會發生碰撞。
如何協調各主機的工作,使信息避免碰撞是很重要的
載波監聽多址接入/碰撞檢測(CSMA/CD)【不用于無線網絡】
96
比特時間是指發送96
比特所需要的時間,也稱為幀間最小間隔。其作用是是接收方可以檢測出一個幀的結束,同時也使得其他站點都能有機會平等競爭信道并發送幀
?
退避算法
當幀發送碰撞后會停止發送,隔一段時間后再次發送,而具體隔多少時間再發送需要根據退避算法得出?
極限信道利用率
載波監聽多點接入/碰撞避免(CSMA/CA)【用于無線網絡】
802.11
無線局域網使用CSMA/CA
協議,在CSMA
的基礎上增加了一個碰撞避免CA功能,而不再實現碰撞檢測功能由于不可能避免所有的碰撞,并且無線信道誤碼率較高,
802.11
標準還使用了數據鏈路層確認機制(停止-等待協議)來保證數據被正確接收
在無線局域網中,仍然可以使用載波監聽多址接入CSMA,即在發送幀之前先對傳輸媒體進行載波監聽。若發現有其他站在發送幀,就推遲發送以避免碰撞
在無線局域網中,不能使用碰撞檢測CD,原因如下:
由于無線信道的傳輸條件特殊,其信號強度的動態范圍非常大,無線網卡上接收到的信號強度往往會遠遠小于發送信號的強度(可能差百萬倍)。如果要在無線網卡上實現碰撞檢測
CD
,對硬件的要求特別高。即使能夠在硬件上實現無線局域網的碰撞檢測功能,但由于無線電波傳播的特殊性(存在隱蔽站的問題),進行碰撞檢測的意義也不大(如下)。而有線網絡中信號會隨著總線到達各個地方,不會出現隱蔽站
1.4MAC地址、IP地址和ARP協議???????
MAC地址
MAC
地址是以太網的MAC
子層所使用的的地址
- 只有一條路徑的信道不需要地址,因為沒得選
- 當多個主機連接在同一個廣播信道上,要想實現兩個主機之間的通信,則每個主機都必須有一個唯一的標識,即一個數據鏈路層地址
- 在每個主機發送的幀中必須攜帶標識發送主機和接收主機的地址。由于這類地址是用于媒體接入控制MAC(Media Access Control),因此這類地址被稱為
MAC地址
- MAC地址一般被固化在網卡(網絡適配器)的電可擦可編程只讀存儲器
EEPROM
中,因此MAC
地址也被稱為硬件地址MAC
地址有時也被稱為物理地址。但是MAC
地址不屬于物理層而是屬于數據鏈路層- MAC地址是對網絡上各接口的唯一標識,而不是對網絡上各設備的唯一標識
?
單播地址、廣播地址與多播地址???????
- 單播MAC地址即明確的目的MAC地址。將此地址填入幀的目的地址欄中,接收到該幀的主機將此地址與自身
MAC
地址進行匹配,若相同則接收,不同則丟棄- 廣播MAC地址為
FF-FF-FF-FF-FF-FF
,將此地址填入幀的目的地址欄中,接收到該幀的主機檢索該地址發現是廣播地址,因此接收該幀- MAC地址中第一字節后4比特為(1,3,5,7,9,B,D,F)時,MAC地址是多播地址。將此地址填入幀的目的地址欄中,接收到該幀的主機將此多播地址與自己多播組列表中的地址進行逐一配對,如果有匹配的項,則接收,否則丟棄
IP地址
IP
地址是TCP/IP
體系結構的網際層所使用的的地址
IP
地址是Internet
上的主機和路由器所使用的的地址,由兩部分信息構成
- 網絡編號:標識因特網上數以百萬計的網絡
- 主機編號:標識同一網絡上不同主機(或路由器各接口)
MAC地址不具備區分不同網絡的功能,而IP地址可以通過網絡號做到
如果只是一個單獨網絡,不接入因特網,則使用MAC地址就足夠了(這不是一般用戶的應用方式)
如果主機所在的網絡要接入因特網,則IP地址和MAC地址都需要使用???????
- 數據報轉發過程中源IP地址和目的IP地址保持不變
- 數據包轉發過程中源MAC地址和目的MAC地址(由ARP協議獲得)逐個鏈路改變
- 路由器上有路由表,記錄了要到目的IP地址,先要走哪些路(即下一跳位置)。所以
H1
起初只帶有目的IP
地址,查詢路由表后路由器指路,從而知道下一步該往哪里走,從而不斷轉發直至到達目的地。
ARP協議
地址解析協議
ARP
屬于TCP/IP
體系結構的網際層,其作用是已知設備所分配到的IP
地址,使用ARP
協議可以通過該IP地址獲取到設備的MAC
地址
- 數據的發送需要經過鏈路,僅僅知道IP地址是無法在數據鏈路層實現傳輸的,因此我們需要得到
IP
地址與MAC
地址的對應關系,即地址解析。- 每臺主機都會有一個ARP高速緩存表,記錄有IP地址與MAC地址的對應關系
- 初始
ARP
高速緩存表為空,假設此時B
知道C
的IP
地址,準備發送信息,但是由于不知道C
的MAC
地址,因此無法封裝數據幀,所以此時會廣播一個ARP請求報文(封裝在MAC幀中,目的地址為廣播地址FF-FF-FF-FF-FF-FF
),內容如下:- ARP高速緩存條目有靜態與動態兩種類型
- 動態代表是通過廣播自動獲取的條目,生命周期默認為兩分鐘
- 靜態是手工設置的條目,不同操作系統下的生命周期不同。
- ARP協議只能在一段鏈路或一個網絡上使用
1.5?集線器與交換機
集線器
集線器
HUB
的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。
- 使用集線器的以太網在邏輯上仍是一個總線網,各站共享總線資源,使用的還是
CSMA/CD
協議- 集線器只工作在物理層,它的每個接口僅簡單地轉發比特,不進行碰撞檢測(由各站網卡檢測)
- 集線器一般都有少量的容錯能力和網絡管理功能。例如,若網絡中某個網卡出了故障,不停地發送幀。此時,集線器可以檢測到這個問題,在內部斷開與出故障網卡的連線,使整個以太網仍然能正常工作
- 集線器是半雙工模式,收發不能同時進行,收到幀后會廣播到除本身接口外的各個接口。
?交換機
交換機是一種負責轉發信號的網絡設備,可以為接入交換機的任意兩個網絡節點提供獨享的電信號通路
以太網交換機通常由多個接口,每個接口都可以直接與一臺主機或另一個以太網交換機相連。一般都工作在全雙工方式
以太網交換機具有并行性,能同時連通多對接口,使多對主機能同時通信,無碰撞(不使用
CSMA/CD
協議)以太網交換機一般都具有多種速率的接口
以太網交換機工作在數據鏈路層(也包括物理層),它收到幀后,在幀交換表中查找幀的目的MAC地址所對應的接口號,然后通過該接口轉發幀
以太網交換機是一種即插即用的設備,其內部的幀交換表是通過自學習算法自動地逐漸建立起來的
幀的兩種轉發方式
- 存儲轉發
- 直通交換:采用基于硬件的交叉矩陣(交換時延非常小,但不檢查是否有差錯)
MAC地址表中的每條記錄都有自己的有效時間,到期自動刪除。這是因為MAC地址與交換機接口的對應關系并不是永久性的
STP生成樹協議
STP
可以在增加冗余鏈路來提高網絡可靠性的同時又避免網絡環路帶來的各種問題?
生成樹原理
- 不論交換機之間采用怎樣的物理連接,交換機都能夠自動計算并構建一個邏輯上沒有環路的網絡,其邏輯拓撲結構必須是樹型的(無邏輯環路)???????
- 最終生成樹的邏輯拓撲要確保連通整個網絡
- 當首次連接交換機或網絡物理拓撲發生變化時(有可能是人為改變或故障),交換機都將進行生成樹重新計算
?
VLAN虛擬局域網
一種將局域網內的設備劃分成與物理位置無關的邏輯組的技術,這些邏輯組具有某些共同的需求,每個
VLAN
就是一個獨立的廣播域?
隨著交換式以太網規模的擴大,廣播域相應擴大,而巨大的廣播域會帶來很多弊端???????
廣播風暴
如數臺交換機連接了數臺主機,當主機
A
要向主機B
發送數據幀,此時各交換機的MAC
表均為空,因此幀每到一個交換機就會進行泛洪,由于網絡巨大,因此泛洪的范圍也巨大難以管理和維護
潛在的安全風險???????
交換機端口類型
缺省VLAN ID
華為交換機上叫
PVID
,每個端口有且只有一個PVID。默認情況下端口的PVID
都為1
(即端口屬于VLAN 1
)?
端口上接收時總希望能夠打上標簽,發送出去時候總希望能去除標簽
①Access端口
Access
端口一般用于終端設備與交換機之間???????注意:交換機與路由器連接的接口也需要使用
access
接口。這是因為路由器中的消息也不帶VLAN
標簽,就像終端一樣,保證路由器的數據能夠進入交換機領域,數據由路由器進入交換機是會被打上默認標簽,接著猜按照交換機間VLAN
的規則行走。簡單理解就是把路由器當作終端?
交換機初始端口類型是Access
Access端口只能屬于一個VLAN
Access
端口的PVID值與端口所屬VLAN的ID相同(默認為1
)
②Trunk端口
Trunk
端口一般用于交換機之間或交換機與路由器之間的互連Trunk
端口可以屬于多個VLAN
- 用戶可以設置
Trunk
端口的PVID
值,默認情況下,Trunk
端口PVID
值為1
③Hybrid端口
Hybrid
端口既可以用于交換機之間或交換機與路由器之間的互連(同Trunk
端口),也可用于交換機與用戶計算機之間的互連(同Access
端口)Hybrid
端口可以屬于多個VLAN
(同Trunk
端口)- 用戶可以設置
Hybrid
端口的PVID
值。默認情況下,Hybrid端口的PVID值為1
???????
?