PPP

PPP

點對點協議
點對點協議(Point to Point Protocol,PPP)為在點對點連接上傳輸多協議數據包提供了一個标準方法。[2]PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP-IP 協議集中它是一種用來同步調制連接的數據鍊路層協議(OSI模式中的第二層),替代了原來非标準的第二層協議,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協議,包括 DECnet 和 Novell 的 Internet 網包交換(IPX)。
  • 中文名:點對點協議
  • 英文名:Point to Point Protocol
  • 适用領域範圍:傳輸數據包
  • 簡稱:ppp
  • 支 持:面向比特的同步鍊接

簡介

點到點協議(Point to Point Protocol,PPP)是為在同等單元之間傳輸數據包這樣的簡單鍊路設計的鍊路層協議。 [1]  這種鍊路提供全雙工操作,并按照順序傳遞數據包。設計目的主要是用來通過撥号或專線方式建立點對點連接發送數據,使其成為各種主機、網橋和路由器之間簡單連接的一種共通的解決方案。PPP具有以下功能:

(1)PPP具有動态分配IP地址的能力,允許在連接時刻協商IP地址;

(2)PPP支持多種網絡協議,比如TCP/IP、NetBEUI、NWLINK等;

(3)PPP具有錯誤檢測能力,但不具備糾錯能力,所以ppp是不可靠傳輸協議;

(4)無重傳的機制,網絡開銷小,速度快。

(5)PPP具有身份驗證功能。

(6) PPP可以用于多種類型的物理介質上,包括串口線、電話線、移動電話和光纖(例如SDH),PPP也用于Internet接入。

幀格式

字段

7E

FF

03

協議

信息

FCS

7E

字節

1

1

1

2

x

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不僅僅提供幀定界,而且提供協議标識和位級完整性檢查服務。

鍊路控制協議(LCP):一種擴展鍊路控制協議,用于建立、配置、測試和管理數據鍊路連接。

網絡控制協議(NCP):協商該鍊路上所傳輸的數據包格式與類型,建立、配置不同的網絡層協議;

配置:使用鍊路控制協議的簡單和自制機制。該機制也應用于其它控制協議,例如:網絡控制協議(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 釋放數據鍊路層連接。最後釋放的是物理層的連接。

特點與認證方式

特點

PPP協議是一種點——點串行通信協議。PPP具有處理錯誤檢測、支持多個協議、允許在連接時刻協商IP地址、允許身份認證等功能,還有其他。PPP提供了3類功能:成幀;鍊路控制協議LCP;網絡控制協議NCP。PPP是面向字符類型的協議。

PPP協議的幀格式

字段名稱表标志字段

地址字段

控制字段

協議

信息部 分

FCS

标志字段

PPP是一種多協議成幀機制,它适合于調制解調器、HDLC位序列線路、SONET和其它的物理層上使用。它支持錯誤檢測、選項協商、頭部壓縮以及使用HDLC類型幀格式(可選)的可靠傳輸。PPP提供了三類功能:

1 成幀:他可以毫無歧義的分割出一幀的起始和結束。

2 鍊路控制:有一個稱為LCP的鍊路控制協議,支持同步和異步線路,也支持面向字節的和面向位的編碼方式,可用于啟動路線、測試線路、協商參數、以及關閉線路。鍊路控制協議LCP 建立點對點鍊路,是 PPP 中實際工作的部分。LCP 位于物理層的上方,負責建立、配置和測試數據鍊路連接。LCP 還負責協商和設置 WAN 數據鍊路上的控制選項,這些選項由 NCP 處理。

3 網絡控制:具有協商網絡層選項的方法,并且協商方法與使用的網絡層協議獨立。PPP允許多個網絡協議共用一個鍊路,網絡控制協議 (NCP) 負責連接PPP(第二層)和網絡協議 (第三層)。對于所使用的每個網絡層協議,PPP 都分别使用獨立的 NCP來連接。例如,IP 使用 IP 控制協議 (IPCP),IPX 使用 Novell IPX 控制協議 (IPXCP)。

認證方式

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

要求

簡單:因IETF在設計因特網體系結構時,把最複雜的部分放在了TCP協議中,網際協議IP相對比較簡單,所以對數據鍊路層的幀,不需要糾錯,不需要序号,也不需要流量控制。簡單為首要要求

簡單的設計還可以是協議在實現時不容易出錯,從而不同廠商在協議的不同實現上互操作性提高了。

封裝成幀:PPP協議必須規定特殊字符作為幀定界符(标志一個幀的開始和結束的字符),以便接收端從收到的比特流中能準确地找出幀的開始和結束位置。

透明性:PPP協議必須保證數據傳輸的透明性。(即如果數據中碰巧出現了和幀界定符一樣的比特組合時要采取有效的措施來解決這個問題)

多種網絡層協議:PPP協議必須能夠在同一條物理鍊路上同時支持多種網絡層協議(例如IP和IPX等)的運行。

當點對點鍊路所連接的是局域網或路由器時,PPP協議必須同時支持在鍊路所連接的局域網或路由器上運行的各種網絡層協議。

多種類型鍊路:除了要支持多種網絡層協議外,PPP還必須能夠在多種類型的鍊路上運行。

差錯檢測:PPP協議必須能夠對接收端收到的幀進行檢測,并立即丢棄有差錯的幀。

檢測連接狀态:PPP協議必須具有一種機制能夠及時自動檢測出鍊路是否處于正常工作狀态。

最大傳送單元: PPP協議必須對每一種類型的點對點鍊路設置最大傳送單元MTU的标準默認值(至少是1500字節),如果高層協議發送的分組過長并超過MTU的數值,PPP就要丢棄這樣的幀,并返回差錯。MTU是數據鍊路層的幀可以載荷的數據部分的最大長度,而不是幀的總長度。

網絡層地址協商:PPP協議必須提供一種機制使通信的兩個網絡層(例如兩個IP層)的實體能夠通過協商知道或能夠配置彼此的網絡層地址。協商的算法應盡可能的簡單,且能在所有的情況下得出協商結果。

數據壓縮協商:PPP協議必須提供一種方法來協商使用數據壓縮算法,但PPP協議并不要求将數據壓縮算法進行标準化。在TCP/IP協議族中,可靠運輸由運輸層的TCP協議負責,因此數據鍊路層的PPP協議不需要進行糾錯,不需要設置序号,也不需要進行流量控制。PPP協議不支持多點線路(即一個主站輪流和鍊路上的多個從站進行通信),而隻支持點對點的鍊路通信,此外PPP協議隻支持全雙工鍊路。

配置方法

基本配置

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

相關詞條

相關搜索

其它詞條