PPP

點對點協議(Point to Point Protocol)

點對點協議(PPP)為在點對點連接上傳輸多協議數據包提供了一個標準方法。PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP-IP 協議集中它是一種用來同步調製連接的數據鏈路層協議(OSI 模式中的第二層),替代了原來非標準的第二層協議,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協議,包括 DECnet 和 Novell 的 Internet 網包交換(IPX)。

簡介


PPP:點對點協議
(PPP:Point to Point Protocol)
PPP(點到點協議)是為在同等單元之間傳輸數據包這樣的簡單鏈路設計的鏈路層協議。這種鏈路提供全雙工操作,並按照順序傳遞數據包。設計目的主要是用來通過撥號或專線方式建立點對點連接發送數據,使其成為各種主機、網橋和路由器之間簡單連接的一種共通的解決方案。
點對點協議(PPP)為在點對點連接上傳輸多協議數據包提供了一個標準方法。PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP-IP 協議集中它是一種用來同步調製連接的數據鏈路層協議(OSI 模式中的第二層),替代了原來非標準的第二層協議,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協議,包括 DECnet和 Novell的Internet 網包交換(IPX)。

功能


(1)PPP具有動態分配IP地址的能力,允許在連接時刻協商IP地址;
(2)PPP支持多種網路協議,比如TCP/IP、NetBEUI、NWLINK等;
(3)PPP具有錯誤檢測以及糾錯能力,支持數據壓縮;
(4)PPP具有身份驗證功能。
(5) PPP可以用於多種類型的物理介質上,包括串口線、電話線、行動電話和光纖(例如SDH),PPP也用於Internet接入。

幀格式


PPP的幀格式
7EFF03協議信息FCS7E
位元組1112<=150021
PPP採用7EH作為一幀的開始和結束標誌(F);其中地址域(A)和控制域(C)取固定值(A=FFH,C=03H) ;協議域(兩個位元組)取0021H表示IP分組,取8021H表示網路控制數據,取C021H表示鏈路控制數據;幀校驗域(FCS)也為兩個位元組,它用於對信息域的校驗。若信息域中出現7EH,則轉換為(7DH,5EH)兩個字元。當信息域出現7DH時,則轉換為(7DH,5DH)。當信息流中出現ASCII碼的控制字元(即小於20H),即在該字元前加入一個7DH字元。

部分組成


封裝:一種封裝多協議數據報的方法。PPP 封裝提供了不同網路層協議同時在同一鏈路傳輸的多路復用技術。PPP 封裝精心設計,能保持對大多數常用硬體的兼容性,克服了SLIP不足之處的一種多用途、點到點協議,它提供的WAN數據鏈接封裝服務類似於LAN所提供的封閉服務。所以,PPP不僅僅提供幀定界,而且提供協議標識和位級完整性檢查服務。
鏈路控制協議:一種擴展鏈路控制協議,用於建立、配置、測試和管理數據鏈路連接。
網路控制協議:協商該鏈路上所傳輸的數據包格式與類型,建立、配置不同的網路層協議;
配置:使用鏈路控制協議的簡單和自製機制。該機制也應用於其它控制協議,例如:網路控制協議(NCP)。
為了建立點對點鏈路通信,PPP 鏈路的每一端,必須首先發送 LCP 包以便設定和測試數據鏈路。在鏈路建立,LCP 所需的可選功能被選定之後,PPP 必須發送 NCP 包以便選擇和設定一個或更多的網路層協議。一旦每個被選擇的網路層協議都被設定好了,來自每個網路層協議的數據報就能在鏈路上發送了。
鏈路將保持通信設定不變,直到有 LCP 和 NCP 數據包關閉鏈路,或者是發生一些外部事件的時候(如,休止狀態的定時器期滿或者網路管理員干涉)。
應 用:假設同樣是在Windows 98,並且已經創建好“撥號連接”。那麼可以通過下面的方法來設置PPP協議:首先,打開“撥號連接”屬性,同樣選擇“伺服器類型”選項卡;然後,選擇默認的“PPP:Internet,Windows NT Server,Windows 98”,在高級選項中可以設置該協議其它功能選項;最後,單擊“確定”按鈕即可。

工作流程


話流程
話流程
當用戶撥號接入 ISP 時,路由器的數據機對撥號做出確認,並建立一條物理連接(底層up)。PC 機向路由器發送一系列的 LCP 分組(封裝成多個 PPP 幀)。
這些分組及其響應選擇一些 PPP 參數,和進行網路層配置(此前如有PAP或CHAP驗證先要通過驗證),NCP 給新接入的 PC機分配一個臨時的 IP 地址,使 PC 機成為網際網路上的一個主機。
通信完畢時,NCP 釋放網路層連接,收回原來分配出去的 IP 地址。接著,LCP 釋放數據鏈路層連接。最後釋放的是物理層的連接。

和HDLC的區別


最主要的區別
PPP是面向字元的,HDLC是面向位的。

特點


PPP協議是一種點——點串列通信協議。PPP具有處理錯誤檢測、支持多個協議、允許在連接時刻協商IP地址、允許身份認證等功能,還有其他。PPP提供了3類功能:成幀;鏈路控制協議LCP;網路控制協議NCP。PPP是面向字元類型的協議。
PPP協議的幀格式
標誌欄位地址欄位控制欄位協議信息部 分FCS標誌欄位

應用範圍


PPP是一種多協議成幀機制,它適合於數據機、HDLC位序列線路、SONET和其它的物理層上使用。它支持錯誤檢測、選項協商、頭部壓縮以及使用HDLC類型幀格式(可選)的可靠傳輸。
PPP提供了三類功能:
1 成幀:他可以毫無歧義的分割出一幀的起始和結束。
2 鏈路控制:有一個稱為LCP的鏈路控制協議,支持同步和非同步線路,也支持面向位元組的和面向位的編碼方式,可用於啟動路線、測試線路、協商參數、以及關閉線路。
3 網路控制:具有協商網路層選項的方法,並且協商方法與使用的網路層協議獨立。

兩種認證方式


一種是PAP,一種是CHAP。相對來說PAP的認證方式安全性沒有CHAP高。PAP在傳輸password是明文的,而CHAP在傳輸過程中不傳輸密碼,取代密碼的是hash(哈希值)。PAP認證是通過兩次握手實現的,而CHAP則是通過3次握手實現的。PAP認證是被叫提出連接請求,主叫響應。而CHAP則是主叫發出請求,被叫回復一個數據包,這個包裡面有主叫發送的隨機的哈希值,主叫在資料庫中確認無誤后發送一個連接成功的數據包連接

常見問題


1)什麼是LCP?
鏈路控制協議(LCP) LCP 建立點對點鏈路,是 PPP 中實際工作的部分。LCP 位於物理層的上方,負責建立、配置和測試數據鏈路連接。LCP 還負責協商和設置 WAN 數據鏈路上的控制選項,這些選項由 NCP 處理。
2)NCP是什麼?
PPP允許多個網路協議共用一個鏈路,網路控制協議 (NCP) 負責連接PPP(第二層)和網路協議 (第三層)。對於所使用的每個網路層協議,PPP 都分別使用獨立的 NCP來連接。例如,IP 使用 IP 控制協議 (IPCP),IPX 使用 Novell IPX 控制協議 (IPXCP)。

配置方法


基本配置

1,啟用ppp
RouterTest#config terminal
Enter configuration commands,one per line. End with CNTL/Z.
RouterTest(config)#interface serial 0/0
RouterTest(config-if)#encapsulation ppp
RouterTest(config-if)#
2,地址配置命令
RouterTest(config-if)#ip address 10.1.1.1 255.255.255.0
PAP配置實例
Router(config)#hostname RouterA
RouterA(config)#RouterB password itsasecret
RouterA(config)#interface Async 0
RouterA(config-if)#encapsulation ppp
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0
RouterA(config-if)#dialer-map ip 10.0.0.2 name RouterB 5551234
RouterA(config-if)#username RouterA password itsasecret2
Router(config)#hostname RouterB
RouterB (config)#RouterA password itsasecret
RouterB (config)#interface Async 0
RouterB (config-if)#encapsulation ppp
RouterB (config-if)#ip address 10.0.0.2 255.255.255.0
RouterB (config-if)#dialer-map ip 10.0.0.1 name RouterA 5551234
RouterB (config-if)#username RouterB password itsasecret2

CHAP配置實例

Router(config)#hostname RouterA
RouterA(config)#RouterB password itsasecret
RouterA(config)#interface Async 0
RouterA(config-if)dialer in-band
RouterA(config-if)#encapsulation ppp
RouterA(config-if)#ppp authentication chap
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0
RouterA(config-if)#dialer-map ip 10.0.0.2 name RouterB 5551234
RouterA(config-if)#username RouterA password itsasecret2
Router(config)#hostname RouterB
RouterB (config)#RouterA password itsasecret
RouterB (config)#interface Async 0
RouterB(config-if)dialer in-band
RouterB (config-if)#encapsulation ppp
RouterB (config-if)#ppp authentication chap
RouterB (config-if)#ip address 10.0.0.2 255.255.255.0
RouterB (config-if)#dialer-map ip 10.0.0.1 name RouterA 5551234
RouterB (config-if)#username RouterB password itsasecret2

CHAP和PAP

Router(config-if)#ppp authentication chap pap
配置PPP回撥

使用壓縮

cisco支持的壓縮方法:
Predictor:先判斷數據是否已經被壓縮過。如果數據被壓縮過,則立即將其發送出去,而不浪費時間對已經壓縮過的數據進行壓縮。
Stacker:一種基於Lempel-Ziv(LZ)的壓縮演演算法,對每種數據類型,只發送一次有關其在數據流中的位置。接收方根據這些信息重新組織數據流。
MPPC:MPPC協議(RFC2118)讓cisco路由器器能夠與microsoft客戶端交換壓縮后的數據,它使用一種基於LZ的壓縮演演算法
TCP報頭壓縮:也叫Van Jacobson壓縮,只用於壓縮tcp報頭。

配置壓縮

Router(config)#interface serial2
Router(config-if)#compress {predictor|stac|mppc}
Or
Router(config)#interface async
Router(config-if)#ip tcp header-compression
Or
Router(config)#interface async
Router(config-if)#ip tcp header-compression passive
該命令告訴路由器,僅當從對方那裡收到壓縮后的報頭后,才使用tcp報頭壓縮。
多鏈路PPP
通過使用多鏈路PPP,可以將多條連接捆綁成一條虛擬連接。
Router(config-if)#ppp multilink
Router(config-if)#dialer load-threshold load [outbound | inbound | either]
命令dialer load-threshol load指定在什麼情況下將更多的B通道加入到MLP鏈路束中。當所有B通道的總負載超過指定的閥值后,撥號介面(BRI或PRI)將通道加入到多鏈路束中。
同樣,如果總負載低於閥值,將拆除B通道。
參數load是介面的平均負載,其取值為1(沒有負載)到255(滿載)。
參數outbound(默認值)指定計算負載時只考慮出站數據流;參數inbound指定只考慮入站數據流;either指定計算負載時,選擇出站負載和入站負載中較大的那個。

故障排查命令


debug ppp negotiation-確定客戶端是否可以通過PPP協商;這是您檢查地址協商的時候。
debug ppp authentication-確定客戶端是否可以通過驗證。如果您在使用Cisco IOS軟體版本11.2之前的一個版本,請發出debug ppp chap命令。
debug ppp error - 顯示和PPP連接協商與操作相關的協議錯誤以及統計錯誤。
debug aaa authentication-要確定在使用哪個方法進行驗證(應該是RADIUS,除非RADIUS伺服器發生故障),以及用戶是否通過驗證。
debug aaa authorization-要確定在使用哪個方法進行驗證,並且用戶是否通過驗證。
debug aaa accounting-查看發送的記錄。
debug radius-查看用戶和伺服器交換的屬性。