一、基本特點
1.PPP協議是計算機網絡體系中第二層(數據鏈路層)的協議
2.PPP幀格式是以HDLC幀格式為基礎,做了很少的改動(區別:PPP是面向字符的,而HDLC是面向位的)
3.PPP協議使用了LCP協議和NCP協議。用LCP(鏈路控制協議)來建立、設定和測試數據鏈路連接。用NCP(網絡控制協議)給不同的網絡層協議建立連接以及配置它們。
二、必備特點與功能
1.簡單
2.封裝成幀
3.差錯控制
5.流量控制
6.接入控制 ===> 實際上就是LCP鏈路控制協議
7.透明性 ===>發送方接受什么數據,接收方就接收什么數據
8.多種網絡層協議 ===> 支持多種上層協議
9.多種類型的鏈路 ===> 可以支持串行、並行等等鏈路層協議
10.檢測連接狀態
11.最大傳送單元
12.網絡層地址協商
13.數據壓縮協商
三、不需要的功能
.糾錯 ===> 能夠查錯就行,不必具備糾錯(改錯)的功能
流量控制 ===> 因為是兩點間的通信,所以不需要進行流量控制來實現負載均衡
·序號
·多點線路
·半雙工或單工鏈路 ===> PPP協議是全雙工
四、PPP協議的組成
1.將IP數據報封裝到串行鏈路的方法
2.鏈路控制協議LCP(Link Control Protocol)
3.網絡控制協議 NCP(Network Control Protocol)
五、PPP幀格式
=======================================================================================================
幀頭、幀尾 ===> 各占1byte; 這兩字段都是7E,也就是說7E是PPP幀的開始與結尾的標志
=======================================================================================================
地址字段(A) ===> 1byte; 該字段尚未被用到(點到點通信,不需要尋址過程),固定為 1111 1111
=======================================================================================================
控制字段(C) ===> 1byte; 該字段尚未被用到,為后續准備,固定值為 0000 0011
=======================================================================================================
協議字段 ===> 2byte; 指明該幀封裝數據類型
協議字段由兩個字節組成。字段中第八位必須是0,最后一位必須為1。若不符合這些規則,則被視為帶有不被承認的協議
在范圍“0x0***“到“0x3***“內的協議字段,標志着特殊數據包的網絡層協議
在范圍“0x8***·到“0xb***”內的協議字段,標志着數據包屬於網絡控制協議(NCP)
在范圍“0x4***“到“0x7***“內的協議字段,用於沒有相關NCP的低通信量協議
在范圍“0xc***“到“0xf***”內的協議字段,標志着使用鏈路層控制協議(LCP)的包
- 0xC021鏈路控制協議LCP(Link control protocol)
- 0xC023密碼認證協議PAP(Password authentication protocol)
- 0xC025鏈路品質報告Link Quality Report
- 0xC223挑戰握手驗證協議CHAP(Challenge handshake authentication protocol)
- 0x8021IP控制協議IPCP(Internet protocol control protocol)
- 0x0021 Internet protocol(IP)
- 0x0001填料協議(Padding Protocol)
- 0x0003~0x001F reserved(transparency inefficient)保留(透明度效率低的)
- 0x007Dreserved(Control Escape)保留(控制逃逸)
- 0x00CF reserved(PPP NLPID)保留(PPP NLPID)
- 0x00FF reserved(compression inefficient)保留(壓縮效率低的)
- 0x8001~0x801F未使用
- 0x807D未使用
- 0x80CF未使用
- 0X8OFF未使用
=======================================================================================================
信息部分 ===> 數據報,長度不固定,不超過1500 byte
=======================================================================================================
FCS ===> 2byte; 使用CRC的幀檢驗序列FCS
=======================================================================================================
六、注意事項
我們知道,PPP協議規定,7E是PPP幀的開始及結尾標記,那么如果數據中出現7E字段,該如何呢?處理方法取決於PPP協議的傳輸類型——異步傳輸 VS 同步傳輸
1.當傳輸類型是異步傳輸時
異步傳輸:按字符傳輸,單位是字符,速率教慢
將轉義符定義為0x7D(即01111101),並使用如下字節填充法:
(1)把信息字段中出現的每一個0x7E字節轉變成為2字節序列(0×7D,0x5E)
(2)若信息字段中出現一個0x7D的字節(即出現了和轉義字符一樣的比特組合),則把0x7D轉變成為2字節序列(0x7D,0x5D)
(3)若信息字段中出現ASCII碼的控制字符(即數值小於0x20的字符),則在該字符前面要加入一個0x7D字節,同時將該字符的編碼加以改變
由於在發送端進行了字節填充,因此在鏈路上傳送的信息字節數就超過了原來的信息字節數。但接收端在收到數據后再進行與發送端字節填充相反的變換,就可以正確地恢復出原來的信息
2.當傳輸類型是同步傳輸時
同步傳輸:按一連串的比特位連續傳輸,單位是幀,速率較快
PPP協議用在SONET/SDH鏈路時,使用同步傳輸方式;在這種情況下,PPP協議采用零比特填充方法來實現透明傳輸:
透明傳輸:指不管所傳數據是什么樣的比特組合,都應當能夠在鏈路上傳送。當所傳數據中的比特組合恰巧與某一個控制信息完全一樣時,就必須采取適當的措施,使接收方不會將這樣的數據誤認為是某種控制信息。這樣才能保證數據鏈路層的傳輸是透明的
在發送端,先掃描整個信息字段(通常用硬件實現,但也可用軟件實現,只是會慢些)。只要發現有5個連續1,則立即填入一個0。接收端在收到一個幀時,先找到標志字段F以確定一個幀的邊界,接着再用硬件對其中的比特流進行掃描。每當發現5個連續1時,就把這5個連續1后的一個0刪除,以還原成原來的信息比特流
六、用途
互聯網用戶都要連接到某個ISP才能接入到互聯網,PPP協議是用戶計算機和ISP進行通信時所使用的數據鏈路層協議