前言
其實前面一堆講的物理層的概念,會感覺特別的難理解,因為這是一個非常強大的計算機網絡體系的底層知識,沒有關系!我們大致了解一下就行了。
一、數據鏈路層概述
這是百度的簡介
看圖:理解一下,數據鏈路層之間的運輸、數據鏈路層之間的信道
鏈路:一條點到點的物理線路段,中間沒有任何其他的交換結點,通俗的將,就是一根線,其中不經過任何東西,這樣的就是鏈路,一條鏈路只是一條通路的一個組成部分
數據鏈路:除了物理線路外,還必須有通信協議來控制這些數據的傳輸。若把實現這些協議的硬件和軟件加到鏈路上,就構成了數據鏈路。 通俗講,就是經過了一些交換機呀,什么的。
最終到達目的地,所有路段就是數據鏈路,而數據鏈路中就包含了多段鏈路。
適配器:也就是網卡,就是用來實現數據鏈路上一些協議。
幀:數據鏈路層上傳送的就是幀
二、數據鏈路層的三個問題
封裝成幀、透明傳輸、差錯控制
講解如何封裝幀,封裝完后幀的傳輸問題、傳輸到達目的地,如何檢驗該段幀是否完整
2.1、封裝成幀
數據鏈路層就是在ip數據報的前面和末尾加了一個首部和尾部來代表ip數據包的開始和結束,首部和尾部都是由8位二進制數表示的,可以一樣也可以不一樣。
2.2、透明傳輸
有一個這樣的問題, 在ip數據包中如果有一個跟幀尾部一樣的8位二進制數,則會提前結束接受數據包,這樣數據就被破壞了。出現了如下圖這樣的問題:
解決:通過在特殊字符前面增加一個轉義字符 ESC, 就可以解決上面所遇到的問題,在接收端,將數據包中所有ESC的字符刪除,
遇到兩個ESC的,就刪除第一個,這樣一開始傳輸的時候有ESC轉義字符,接受完就沒了,所以說的是透明傳輸
2.3、差錯檢測
問題:傳輸過程中可能會產生比特差錯:1 可能會變成 0 而 0 也可能變成 1。在一段時間內,傳輸錯誤的比特占所傳輸比特總數的比率稱為誤碼率 BER (Bit Error Rate)。
為了檢測傳送的幀中ip數據包是否完整,是否沒有被損壞,所以需要差錯檢測
解決:循環冗余檢測CRC,截個圖,把概念性的文字截下來,看到這個人都暈了,其實很簡單。
按照下圖中的7步走,理解一下,然后再看上面的文字,就理解了
檢測:
若得出的余數 R = 0,則判定這個幀沒有差錯,就接受(accept)。
三、可靠傳輸
3.1、停止等待協議
停止等待就是每發送完一個分組就停止發送,等待對方的確認。在收到確認后再發送下一個分組。
超時重傳:解決上面如果數據分組或確認分組丟失時,發送方將會一直等待接收方的確認分組的問題,設置一個超時計時器,
若到了超時計時器所設置的重傳時間,而發送方仍收不到接收方的任何確認分組,則會重傳原來的分組。
重復分組:如果只使用超時重傳來解決,不用發送確認分組,那么會出現重復分組的問題,就是當接收方收到分組后,發回確認分組時,確認分組丟失,
那么會觸發超時重傳,則接收方會收到兩個重復的分組,這里需要注意的是,是確認分組丟失。第一次發送的分組已經正確接收了。
3.2、停止等待算法
畫圖分析一下:
3.2、退回N步協議
其實跟停止等待協議差不多,只是使用的是流水線傳輸方式,發送方不間斷的發送分組,每次發送的分組大小有限制,如果不限制,可能會使接收方或網絡來不及處理這些分組,
導致分組的丟失,所以每次發送的分組大小可能是5,6或者更多。這種限制就是回退N步協議。
回退N步協議:利用發送窗口來限制發送方連續發送分組的個數。要是發送窗口為1就是我們上面所討論的停止等待協議。
退回等待是怎么工作:
這個就是回退N步協議,根據這個原理圖,也能看出,為什么叫回退N步協議了,在哪里出錯了,就必須回退到哪里全部重傳,為了解決這個,又有了選擇重傳協議
3.3、選擇重傳協議
改進回退N布協議, 方式都是一樣, 在接受方必須逐一確認, 但是出現錯誤,只需要重傳出現錯誤的那一個分組,不用全部重傳,這里的全部,指的是在出現錯誤的分組之后的所有分組,前提是在同一個發送窗口中。
總結:不可靠的鏈路上,通過各種協議,就能達到可靠傳輸,來保證數據的准確性
四、兩種信道下的數據鏈路層
點對點信道的數據鏈路層、 廣播信道的數據鏈路層
4.1、點對點協議
概述:現在全世界使用的最多的數據鏈路層協議就是點對點協議PPP(Point to Point Protocol),我們大多數用戶使用的撥號電話線接入因特網時,一般使用的就是PPP協議
1)PPP協議的特點
· 簡單:接收方每接收一個幀,就進行CRC檢驗,檢驗正確,就收下,否則就丟棄,它是不可靠傳輸,所以這就是簡單的原因
封裝成幀:前一章已經講過
多種網絡層協議:數據鏈路層的上一層就是網絡層,所以它同時支持多種網絡層協議的運行
多種類型鏈路:比如,串行的、並行的,(串行:一個比特一個比特發送,只需要一條線路,並行:一次性傳輸n個比特,所以需要n條線路,所以叫並行)同步的、異步的(同步:以穩定的比特流
的形式傳輸 異步:以字節為獨立的傳輸單位,字節跟字節之間的時間間隔不確定,但字節中的每個比特仍是同步的。),低速或高速、電或光,等不同類型的鏈路都能支持
差錯檢測:就是用CRC來檢驗
透明傳輸
檢測連接狀態:檢測點跟點之間的連接狀態,也就是在PC機和ISP之間的線路。
最大傳送單位:PPP協議幀有最大的傳送單元,發送的分組不能超過這個最大長度
網絡層地址協商:使通信的兩個網絡層實體能夠通過協商知道或能夠配置彼此的網絡層地址,通俗的講,就是在分配IP地址時,就現需要這個協商才能解決
2)PPP協議的組成
2.1)數據鏈路層可以用於異步串行或同步串行介質,通俗講也就是可以適應多種性質的鏈路,有這種介質存在
2.2)使用LCP(鏈路控制協議)建立並維護數據鏈路連接, 也就是上面講的一些維護鏈路連接、檢測連接狀態等功能,就是用它來實現的
2.3)網絡控制協議(NCP)允許點到點連接上使用多種網絡層協議,也就是因為跟網絡層連接在一起,所以需要支持上一層的多種協議,這樣才能完成一系列的功能,比如,網絡層地址協商。
3)PPP協議幀格式
4)PPP協議幀傳輸時透明輸出問題
4.1)字節填充:
使用的是字節傳輸,也就是異步,所有的PPP幀的長度都是整數字節,所以會出現IP數據包中有字節跟開始結束標志字節相同的問題
解決: 標志字段 F = 0x7E
IP數據包中出現0x7E字節 : 轉變為 0x7D、0x5E
IP數據包中出現0x7D:0x7D、0x5D
IP數據包中出現ASCII碼的控制字符,則在該控制字符前面加0x7D
4.2)零比特填充方法
使用的是比特流傳輸(一連串的比特連續傳送),也就是同步,PPP協議就采用零比特填充方法來實現透明傳輸。
5)PPP協議的工作流程
鏈路靜止、鏈路建立、鑒別、網絡層協議、鏈路打開、鏈路終止 大概流程圖就是下面這個圖這樣:
六步的具體實現細節(驗證了PPP協議的三個組成部分):
1)鏈路靜止到鏈路建立:用戶撥號接通ISP撥號服務器后,就創建了PC機到ISP服務器的物理連接,這里面的細節就歸咎於物理層的功勞了,
創建了一條怎么樣的信道,通過什么傳送數據,都是物理層需要做的事情。
2)鏈路建立到鑒別:建立了物理連接后,PPP中LCP(鏈路控制協議)就需要做事了,LCP協商一些配置選項(鏈路上的最大幀長,所使用的鑒別協議,或者不使用PPP幀中的地址和控制字段),
如何跟ISP協商這些呢,就是通過發送LCP的配置請求幀,而ISP也可以發送幾種響應,配置確認幀:所有選項都接受 配置否認幀:所有選項都理解但不能接受 配置拒絕幀:有的選項無法
識別或不能接受,需要協商。 通過一系列的協商后,此過程就結束了,就到了鑒別狀態,如果協商失敗,就直接回到鏈路靜止狀態。
3)鑒別到網絡層協議:這里到達網絡層協議之間做的事情就是鑒別身份,這里感覺還沒學習到,大概就是鑒別一些用戶的身份信息,比如交錢了沒有等等吧,猜的。這一階段可以去查查,估計之后
會遇得到。給出參考答案:只允許傳送LCP協議的分組、鑒別協議的分組以及檢測鏈路質量的分組。若使用口令鑒別協議PAP(Password Authentication Protocol),則需要發起通信的一方發送身份標識符和口令。
系統可運行用戶重試若干次。如果需要有更好的安全性,則可使用更加復雜的口令握手鑒別協議CHAP(Challenge-Handshake Authentication Protocol)。若鑒別身份失敗,則轉到鏈路終止狀態(Link Dead)。
若鑒別成功,則進入網絡層協議狀態(Network-Layer Protocol)。
4)網絡層協議到鏈路打開:前面已經經過了PPP協議的前兩層,接下來就是NCP(網絡控制協議)做事的時候了,這一階段就是給PC機分配一個IP地址和對鏈路層進行網絡層協議的設置,讓鏈路層能支持網絡層的工作
5)鏈路打開到鏈路終止:進行傳輸數據,如果傳輸完成,就發送終止請求分組,收到終止確認分組后,就到了終止狀態,
6)鏈路終止到鏈路靜止:當物理層沒有載波時,就到靜止狀態
4.2、廣播信道的數據鏈路層
講解廣播信道的知識,就必須要提到以太網,但是現在大多數人已經把以太網就當成局域網了,現在來說清楚以太網和局域網的區別
1)以太網和局域網的區別
以太網是通信協議標准,該標准定義了在局域網(LAN)中采用的電纜類型和信號處理方法,比如有CSMA/CD協議,這個協議后面會講到。
局域網:在較小范圍內組建的網絡,通過交換器什么的連接各個PC機,比如一個實驗室,一棟樓,一個校園內,這都市局域網,拿網線將兩台計算機連在一起,這也能算是局域網,
所以:以太網是一種局域網,而局域網卻不一定是以太網,大多數局域網就是采用了以太網的這個標准,所以很多人就將局域網默認為以太網,這種說法是有點偏差的。
在局域網中,就采用的是廣播信道
廣播信道:就是一台PC機發送數據給另一台PC機,在同一個局域網中的計算機都能接收到該數據,這就像廣播一樣,所以這種就叫做廣播信道。