PPP[點對點協定(Point to Point Protocol)]

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的幀格式
  7E FF 03 協定 信息 FCS 7E
位元組 1 1 1 2 <=1500 2 1

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-查看用戶和伺服器交換的屬性。

熱門詞條

聯絡我們