PPP協議
PPP協議是一種在串行鏈路上傳輸IP數據包的一種方法,是一個協議的集合,不是單一的協議,支持建立鏈路的鏈路控制協議LCP以及一系列的NCP
PPP幀格式:
-
標志字段F=0x7E(01111110),定界符
如果0x7E出現在幀內部的話,需要出現問題,所以有兩種解決方案:
- 在異步鏈路上使用字符填充,即把0x7E用0x7D5E替換
- 在同步鏈路上使用位填充,即在連續的5個1之后填充一個0
-
地址字段A:用於指定那個站正在處理,但是PPP只關心一個站,所以設置了0xFF(所有站)
-
控制字段C:用於幀序列和重傳行為,PPP中沒有用,設為固定值0x03
-
協議(指示在信息字段中封裝的數據類型):
- 0x0021時,數據部分是IP數據報。
- 0xC021時,數據部分是LCP數據(鏈路控制協議)。
- 0x8021時,數據部分是NCP(網絡控制協議)數據。
- 0xC023 時,數據部分是PAP數據。
- 0xC025時: LCP中鏈路質量報告LQR
- 0xC223 時,數據部分是CHAP數據
-
數據部分 最大長度不能超過1500字節,1500字節大小等於PPP協議中配置參數選項MRU
-
FCS(校驗): 用於差錯檢測的冗余循環校驗碼
PPP的應用
PPP協議的層次模型
LCP
LCP幀格式:在PPP分組上進行簡單的封裝
-
標識字段:LCP請求幀的發送方提供的序列號,在生成一個回復(ACK,NACK,REJECT)時,這個字段通過復制響應分組請求中包含的值來構造,請求方可通過匹配標識符來識別相應請求的應答
-
代碼字段:給出請求或者響應的操作類型
- 配置請求(0x01):使鏈路兩端開始基本的配置過程,並建立商定的選項
- 配置ACK(0x02):接受一組選項
- 配置NACK(0x03):用建議選項表明部分拒絕
- 配置REJECT(0x04):完全拒絕一個或多個選項
- 終止請求(0x05):在完成后清除一條鏈路
- 終止ACK(0x06)
- 代碼REJECT(0x07):表明前一個分組包含的某些字段值未知
- 協議REJECT(0x08)
- 回送請求(0x09):在一條活躍的鏈路上隨時交換,驗證對方的操作
- 回送應答(0x0A):在一條活躍的鏈路上隨時交換,驗證對方的操作
- 放棄請求(0x0B):用於性能測試,指示對方丟棄沒有響應的分組
- 標識(0x0C):了解對方的系統類型
- 剩余時間(0x0D):指出鏈路保持建立的時間
-
長度字段:LCP分組的字節長度,不能超過最大接收單元(MRU),長度字段是LCP協議的一部分,PPP協議不提供這些字段。
LCP協商過程
PPP認證
PPP的會話建立過程
PAP
認證方式:一端發送明文口令至對等端,由對方認證; 特性:明文傳輸,不安全。
PAP認證過程
PAP包格式
CHAP
CHAP是雙方都把隨機數+密碼通過散列函數來運算,所以網路上只會監看到雜湊函數的種類及隨機數,不會看到密碼,安全性很高.
CHAP認證過程
CHAP包格式
CHAP認證過程報文交換過程
NCP
在LCP完成鏈路建立和認證之后,該鏈路每端都進入網絡狀態,並使用一個或者多個NCP進行網絡層的相關協商。
對於IPv4,NCP被稱為IP控制協議(IPCP) 對於IPv6,NCP被稱為IPV6CP
PPPOE協議
PPP 協議要求進行通信的雙方之間是點到點的關系,不適於廣播型的以太網和另外一些多點訪問型的網絡,於是就產生了PPPOE協議。PPPOE不僅為使用橋接以太網接入的用戶提供了一種寬帶接入手段,同時還能提供方便的接入控制和計費
PPPoE報文
- VER:固定為1;
- TYPE:固定為1;
- CODE:
- 發現階段:
- 0x09 PADI:PPPOE Active Discovery Initiation
- 0x07 PADO:PPPOE Active Discovery Offer
- 0x19 PADR:PPPOE Active Discovery Request
- 0x65 PADS:PAD Session-confirmation
- 0xa7 PADT:PPPOE Active Discovery Terminate
- 會話階段: 0x00 Session ID:PPP會話的唯一標識。
- 發現階段:
以太網幀、PPPOE和PPP直接的封裝關系
PPPOE的兩個階段:
-
發現階段
- 一個主機發現一個接入集中器,發現AC的MAC;
- 確定會話標識Session ID。
報文格式
-
會話階段
- 主機和接入集中器之間依據PPP協議傳送PPP數據,進行PPP的各項協商和數據傳輸。
- 傳輸的數據包中必須包含在發現階段確定的會話標識並保持不變。
報文格式