文章目錄
- 1 數據鏈路基本概念和問題
- 1.1 基本概念
- 1.2 基本問題
- (1)封裝成幀
- (2)透明傳輸
- (3)差錯控制
- 2.數據鏈路層協議
- 2.1 點對點 PPP協議
- 2.1.1 需要實現的
- 2.1.2 PPP組成
- 2.1.3 幀格式
- 2.1.4 工作流程
- 2.2 廣播 CSMA/CD協議
- 2.2.1 協議要點
- 2.3 集線器,交換器
- 集線器
- MAC地址
- MAC幀格式
- 3 擴展以太網
- 3.1 物理層擴展方式
- 3.2 數據鏈路層擴展方式
- 3.2.1 交換機的自學功能
- 3.3 虛擬局域網
- 4 高速以太網
- 4.1 100BASE-T
- 4.2 吉比特以太網
內容筆記來源于謝希任老師《計算機網絡》
重點
理解MAC地址
理解交換機
理解VLAN
理解高速以太網
數據鏈路是計算機網絡的底層
1 數據鏈路基本概念和問題
1.1 基本概念
鏈路 或者叫物理鏈路 是一段點到點的物理線段(有線或者無線)中間沒有任何其他交換結點
一條鏈路只是一條通路的組成部分
數據鏈路 或者叫數據鏈路 在鏈路的基礎上加上控制協議和實現協議的軟件和硬件
? 現在最常用的是使用適配器(網卡)來實現這些協議的硬件和軟件,一般的適配器都包括了數據鏈路層和物理層的功能
? 數據鏈路使用的信道主要有以下兩種類型
- 點對點信道,使用PPP協議
- 廣播信道,使用CSMA/CD協議
1.2 基本問題
對于數據鏈路層而言,以下三個問題很重要
(1)封裝成幀
我們知道,互聯網上傳輸數據都以分組(即IP數據報)為傳輸單位進行傳輸,所以到了底層數據鏈路層也得保證不混淆不同的IP報
所以封裝成幀就是在網絡層的IP數據報上加上首部和尾部,構成幀
那么首部和尾部有什么作用呢?
最重要的
- 我們首部和尾部的重要作用就是進行幀定界,通俗來講就是 區分一個幀和另一個幀(核心目的就是為了不讓IP數據報混淆)
- 首部和尾部包含一些控制信息
所以綜合來看,一個幀包括的內容有,我們要傳輸的數據,和首部尾部
那么為了提高傳輸效率,要盡可能使得傳輸數據部分長度大于首部尾部的長度,但每一種數據鏈路協議都規定了數據部分的長度上限——稱為最大傳輸單元MTU
數據鏈路層傳送的是幀 幀是傳輸數據的單位
解決方式 用控制字符進行
(2)透明傳輸
傳播的數據部分出現控制字段,如開始和結束
如果不做處理的話,會導致接收方誤以為提前結束,這個數據部分的EOS應該不被接收方看見
即應該被認為是透明的,所以叫他為透明傳輸
實現的方式是怎樣的呢?
解決方式 通過字節填充解決.數據中出現控制字符的時候,前面加入一個轉義字符“ESC” 十六進制編碼1B
可能問題
就是IP層交付的數據和DL數據鏈路層實際傳輸的數據不一樣
(3)差錯控制
在傳輸過程中不可能一點都不出錯,如0變成1,1變成0,這就叫做比特差錯。對于差錯我們的解決方式是
目前采用較多的是循環冗余檢測方法CRC
發送端
原始數據M,進行n位冗余碼,商定一個除數P(位數n+1),
1 原始數據M后面加n個零做被除數D
2 D除以P得到的余數(該余數又叫幀檢驗序列FCS)加在M后面
接收端
得到的信息除以除數P,余數為0,接受,否則丟棄
注意我們上面講到的是比特差錯,CRC僅能排查比特差錯
實際上除了比特差錯,還有其他差錯,就是幀丟失,幀重復和幀失序
其中我們要注意的是僅僅排除比特差錯是不夠的,實現了無比特差錯的傳輸叫做無差錯傳輸
但是只有排除了所有錯誤,如幀丟失,幀重復和幀失序之后才能叫做可靠傳輸,即發送什么就收到什么
這些排除錯誤的方法(幀編號,確認和重傳機制)是往往是更高層來實現的
2.數據鏈路層協議
2.1 點對點 PPP協議
使用最多的是點對點協議PPP
我們前面反復提到互聯網用戶如果想要連入互聯網,必須連接到某個ISP,其中我們的PPP協議廣泛應用于本地計算機和ISP的數據鏈路層的通信
2.1.1 需要實現的
PPP協議需要實現的一些功能
那么除了我們剛才講到的 封裝成幀,透明傳輸,差錯檢測這些基本問題,還實現了簡單高效,支持多種網絡層協議,支持多種類型鏈路,檢測連接狀態,數據壓縮算法的協商
2.1.2 PPP組成
一個將IP數據報封裝到串行鏈路的方法,是同步還是異步
一個鏈路控制協議LCP(建立,配置,和測試數據鏈路的連接
一套網絡控制協議NCP(支持多種網絡層協議)
2.1.3 幀格式
開始結束字段 F=0x7E 1字節
地址字段 A=0xFF 因為是點對點,所以設置就維持不變 1字節
控制字段 C=0x03 1字節
開始結束和地址字段,控制字段實際上沒有攜帶什么信息。他是最初設計的時候考慮之后可能會用到,但目前為止也沒有用到
協議字段 不同值代表不同協議 2字節
如0x0021時,是IP數據報,若為0xC021 ,則為LCP數據報
信息字段 要傳輸的IP數據報或,鏈路控制數據,網絡控制數據等
檢驗字段 FCS
對于透明傳輸問題
異步傳輸方法是——字節填充法
? 當信息字段中出現和標志字段一樣的比特(0x7E)組合時,在前面添加轉義字符0x7D,同時把0x7E變為0x5E傳輸。整體變為(0x7D,0x5E)傳輸
? 當信息字段出現轉義符(0x7D)的時候,在前面再添加一個轉義字符0x7D,同時把0x7D變為0x5D傳輸。整體變為(0x7D,0x5D)傳輸
? 當信息中出現ASCLL控制碼時候,也同理
同步傳輸方法是——零比特填充法
發送端,先掃描整個信息字段(往往硬件實現)只要發現有5個連續的1,則立即填入一個0,因此經過這種比特的填充后,信息字段就不會出現6個1 的情況
接收端,首先找到標志字段F確定邊界,然后用硬件對內部比特流掃描去掉0
2.1.4 工作流程
建立工作狀態
- 用戶撥號接入ISP后,建立了一條從用戶個人電腦到ISP的物理連接
- 用戶個人電腦向ISP發送一系列的鏈路控制協議LCP分組(封裝成多個PPP幀),以便建立LCP連接。這些分組及其響應選擇了一些將要選擇的PPP參數
- 進行網絡層配置,NCP給新接入的用戶分配一個臨時IP,正式接入互聯網
通信完畢
- NCP釋放網絡層連接,收回去分配出去的IP
- LCP釋放數據鏈路層連接
- 釋放物理層連接
2.2 廣播 CSMA/CD協議
接下來重點討論局域網部分的一對多通信,其中以太網可以看成是一種實現局域網通信的技術標準(目前逐漸大家把它當作局域網的同義詞。以太網的拓撲結構有環形的,星形的等等。局域網主要用雙絞線,速率更高
開始之前,先探討一個問題——我們本地的計算機是怎么連到局域網的?
其中一個關鍵部件是適配器(網卡)
適配器是什么
適配器
網絡接口板子又稱作通信適配器或者網卡
他的核心作用如下
適配器的功能
? 進行串行并行轉換
? 對數據進行緩存
? 在計算機的操作系統安裝設備驅動程序
? 實現以太網協議
計算機通過適配器和局域網進行通信
好的,我們已經了解了連接到局域網的關鍵設備,適配器
接下來一個重要問題就是,多用戶如何共享信道資源,一般兩種方式
-
靜態劃分信道——頻分復用,時分復用,碼分復用等代價價高, 不適合于這個局域網
-
動態媒體接入控制——又稱為多點接入,信道并非在用戶通信時固定分配給用戶,這里又分為兩類
-
隨機接入:即所有用戶可以隨機地發送信息,如果恰巧有兩個用戶在同一時刻發送信息,那么在共享媒體上就要發生碰撞,使得用戶的發送都失敗。因此,必須有解決碰撞的網絡協議
-
受控接入:用戶不能隨機的發送信息,而必須服從一定的控制,這類的典型代表有分散控制令牌環局域網和集中控制的多點線路探詢,或輪詢
由于局域網信道質量比較高(距離短),所以設計的時候要盡可能的簡單
為此,局域網采取了如下的措施
-
以太網提供的是無連接(不必先建立連接就可以直接發送數據)的不可靠(對發送的數據幀不進行編號,不要求確認)服務,以太網采用CSMA/CD協議,意味著載波監聽多點接入\碰撞檢測
-
以太網的數據采用曼徹斯特編碼
2.2.1 協議要點
半雙工通信
多點接入 表示計算機以多點的方式連接在一根總線上
載波監聽 每一個站點在發送數據前先檢測一下總線上有沒有其他計算機在發送數據
載波監聽的問題
監聽到空閑的其實并不一定是空閑的哦!所以需要碰撞檢測
以太網端到端往返時延的兩倍2t稱為爭用期或碰撞窗口,如果這段時間還沒有檢測到碰撞,這次發送就不會碰撞,當發送碰撞后,還會發送強化碰撞,即人為發送干擾信息,保證所有用戶都知道已經發生了碰撞
碰撞檢測 檢測到碰撞后立即停止發送,繼續發送人為干擾信號(以便讓所有用戶知道發生了碰撞)等待一段隨機時間后發送。
那么這個隨機時間如何計算呢? 隨機時間計算
1 基本退避時間為爭用期2t (以太網取51.2us為爭用期)
2 從整數集合 [ 0 , 1 , 2 , . . . , ( 2 k ? 1 ) ] [0,1,2,...,(2^k-1)] [0,1,2,...,(2k?1)]中隨機取出一個數記為r,k=min[重傳次數,10]
3 重傳時延就是r倍的基本退避時間
4 如果重傳16次依然不能成功時丟棄幀,向高層報告
由于以太網取51.2us為爭用期,對于10Mbit/s的網絡而言,這期間可以發送512比特(64字節),如果發生沖突一定是在64節內,這會導致檢測到沖突停止發送從而數據小于64節所以64字節為最短有效幀長
還有幀間最小間隔即96幀,方便剛剛收到數據幀的站接收緩存清理,做好接受下一幀的準備
總結來看
該協議的要點:
1 準備發送:適配器從網絡層獲得一個分組,加上以太網的首部和尾部組成以太網幀。放入適配器的緩存中,發送之前檢測信道
2 檢測信道:若檢測信道忙,則不停檢測,一直等待信道轉為空閑,且超過96幀后,發送過程中繼續監測信道,如果超過爭用期后還是未檢測到碰撞,就認為發送成功,否則立刻停止發送,然后利用指數退避算法再次發送
接下來我們探討一下局域網的信道利用率
參數a
T 0 = L / C T_0=L/C T0?=L/C L是幀長 C是數據發送速率,T0是幀發送時間
a = t / T 0 a=t/T_0 a=t/T0? 參數a等于以太網單端時延與幀的發送時間T_0的比
a接近0的時候,表示一發生碰撞就會被檢測出來,信道利用率很高
a越大,爭用期所占比例增大,發生一次碰撞就浪費許多資源
當數據率一定時候,以太網的連線長度受到限制,否則t數值就會太大,以太網幀長不能太短,否則會導致T0值太小,a太大
理想信道利用率

上面式子告訴我們 a a a要遠小于,才能提高這個利用率
2.3 集線器,交換器
使用接線器比起剛剛的無源的總線結構更靠譜一些
集線器
星形拓撲結構,中心叫集線器,目前使用雙絞線或光纖
一個集線器有許多個端口
集線器工作在物理層,僅僅簡單地做轉發,不進行碰撞檢測
前面我們講到適配器,那么局域網的各個電腦如何區分要發送的目的地呢
就是通過適配器的MAC地址,他是固化在適配的ROM中,全球唯一
MAC地址
MAC地址又叫做硬件地址,物理地址
通常表示為48位, 6字節
表示的時候用12個16進制數,每2個16進制數之間用冒號隔開,如08:00:20:0A:8C:6D
地址段前三個字節由IEEE的注冊管理機構RA向廠家分配,后三個字節由廠家自行分配
IEEE規定地址字段的第一字節的最低位為I/G位
I/G=0時候,地址字段表示一個單站地址
I/G=1時候,地址字段表示一個組地址,用來廣播
當48位都為1時候,為廣播地址,只能作為目的地址
IEEE規定地址字段的第一字節的最低第二位為G/L位
G/L位=0時候,是全球管理
IG/L位=1時候,是本地管理
當48位都為1時候,為廣播地址,只能作為目的地址
MAC幀格式
常用以太網V2格式
源地址目標地址 上面講到的MAC地址
類型 上一層使用的什么協議
數據字段
? 最小長度=64-18字節的頭尾=46
? 最長1500
檢測字段FCS
前同步碼 8個字節,前7個實現MAC幀同步,第8個幀開始定界符
幀間最小間隔 9.6us
總結:
互聯網=通過路由協議聯通的N個局域網。
局域網=以太網+TCP/IP協議。
以太網=基于廣播(MAC尋址)和碰撞檢測機制 CSMA/CD 的網絡。
( 以太網是一種計算機局域網技術
3 擴展以太網
我們知道,以太網的兩臺主機距離不能太遠,但是往往比如校園內,一些主機的距離可能蠻遠的
要實現這樣距離較遠的通信,我們就需要擴展以太網
所以我們要搞清楚拓展的核心目的
那么拓展主要有兩種方式,物理層上擴展,和數據鏈路層擴展
3.1 物理層擴展方式
-
很早之前拓展是通過接轉發器
-
而現在拓展的簡單方法就是使用光纖,用到光纖調制解調器,能夠到達幾公里的范圍
-
還有一種方式就是多個集線器,連接成覆蓋更大范圍的多級星型結構
比如一個學校有三個學院,每個學院配備一個集線器,最后再通過一個主干集線器連接在一起
多級集線器的優點是,可以跨院通信,同時擴大了范圍,缺點是碰撞域變大了(三個獨立的碰撞域合成了一個),同時沒有緩存功能,不同學院必須使用相同的以太網技術
3.2 數據鏈路層擴展方式
擴展方式主要通過交換機,交換機工作在數據鏈路層
特點
- 交換機實質是一個多端口的網橋,通常有十幾個或者更多個端口,全雙工工作方式
- 具有存儲器,能夠進行幀緩存
- 即插即用,避免人為配置,通過內部幀交換表實現,要了解交換機更新交換表的自學算法
- 用戶獨占信道,增大了交換機總容量
- 有多種速率端口
3.2.1 交換機的自學功能
交換表組成: MAC地址,端口,寫入時間
如果交換表內沒有自己要發送的對方的地址,則進行廣播通知每一個主機,其他主機收到后看看是否是要發送給自己,不是的話則過濾掉,是的話則接收,同時將對應的信息加入交換表。如果有的話則直接一對一發送
3.3 虛擬局域網
當前面的擴展方式進行很多的擴展的時候,就會遇到一些問題
首先一整個以太網是一個廣播域,那么以太網上經常就會出現大量廣播幀,浪費資源
其次,不利于信息的安全
所以提出虛擬局域網,核心思想是把一個較大的局域網分割為很多較小的局域網,每一個局域網是一個廣播域
實現方式是在MAC幀的基礎上嵌入了VLAN標簽,一個虛擬局域網可以跨越多個交換機
4 高速以太網
4.1 100BASE-T
是在雙絞線上傳輸100Mbit/s的系帶信號的星形拓撲結構,比之前的100Mbit/s快了很多
4.2 吉比特以太網
即傳輸速率是1Gbit/s
之前我們講到大多通過電話線等方式接入互聯網
但實際現在更多的是通過以太網進行寬帶接入,比如我們現在只要登錄校園網就可以訪問外網了
拓展
了解一下網速單位
Mbps是Mb/s 而不是MB/S”。
運營商說的1M寬帶的M是指Mb/s,也就是Mbps,運營商為什么喜歡說這個呢?數據傳輸大多是以“位”(bit,又名“比特”)為單位的,數據的傳輸以及運營商在流量收費的時候都是按照比特來計算的
所以比如運營商說1M帶寬,那么也就意味著是1Mb/s,也就是0.125MB/s
我自己實際測試了網速
如圖是300M-500M帶寬
那么也就意味著是37.5MB/s到62.5MB/s