認識ppp和LCP
對于PPP協(xié)議,可以講解的內(nèi)容非常多。這個協(xié)議的應(yīng)用也非常的廣泛。那么這里我們就重點講解一下LCP的內(nèi)容。首先我們需要來哦接一下ppp協(xié)議的具體架構(gòu)。
一、概述
1、是一個二層協(xié)議,和HDLC、RARP地位一樣
2、PPP架構(gòu):
(1)支持多種上層協(xié)議如IP、IPX、AppleTalk
(2)自身包含兩個協(xié)議:網(wǎng)絡(luò)控制協(xié)議NCP和鏈路控制協(xié)議LCP。LCP用于和底層進行協(xié)商,然后進行鏈路層的認證。接下來進行NCP的協(xié)商,建立和配置網(wǎng)絡(luò)層協(xié)議如IP地址等,用于和三層進行協(xié)商將上層數(shù)據(jù)包封裝進PPP里面。兩個協(xié)議的協(xié)商都是雙向的。鏈路拆除時先拆除NCP,再拆除LCP。
3、LCP
LCP鏈路控制協(xié)議(Link Control Protocol)賦予PPP以多功能性,考慮到包格式、包大小和認證的協(xié)商。它還使PPP具有確定何時線路為失敗、何時正常運行的功能。 LCP用于配置和測試數(shù)據(jù)鏈路,工作方式如下:
第1步 鏈路建立階段―――首先打開連接,然后確定相關(guān)通信參數(shù)(包括MTU、compress type、及鏈路認證類型。鏈路設(shè)置完后確認幀,然后是可選的鏈路質(zhì)量確認階段,LCP確定鏈路質(zhì)量
第2步 可選(必要)的認證階段―――兩種認證方式:質(zhì)詢應(yīng)答握手認證協(xié)議(CHAP)和密碼認證協(xié)議(PAP)。PPP本身不需要認證,cisco路由器異步線路需要認證,建議使用CHAP認證方式。
第3步 網(wǎng)絡(luò)層協(xié)議階段―――LCP引導NCP激活和配置網(wǎng)絡(luò)層協(xié)議。這一階段結(jié)束后即可傳輸數(shù)據(jù)包。
第4步 鏈路終止階段―――LCP指導NCP關(guān)閉layer 3。#p#
二、HDLC和PPP幀格式的比較
1、HDLC幀格式:Flag-address-control-data(payload)-FCS-Flag
Flag:前后各一個字節(jié)
Address:一個字節(jié)。點到點連接,沒有任何意義,值為全1,可以看作是二層的廣播地址
控制信息:一或兩個字節(jié)
負載:1500字節(jié)
FCS:四個字節(jié)
2、PPP幀格式:Flag-Address-Control-Protocol-LCP-FCS-Flag
Flag:前后各一個字節(jié),8個比特,值為01111110,標識幀為PPP的幀.前后各一個標識幀的開始和結(jié)束。
Address:一個字節(jié)。點到點連接,沒有任何意義,值為全1
控制信息:一個字節(jié),值為11000000,意為沒有順序、流量控制、錯誤控制。
Flag/address/控制信息都是固定不變的。
協(xié)議字段:有一個參數(shù)C021表示LCP,C023表示要進行認證并且認證類型為PAP,0223表示要應(yīng)用認證并且認證類型為CHAP,C025表示鏈路質(zhì)量報告LQR
與HDLC不同的是多了2個字節(jié)的協(xié)議字段。協(xié)議字段不同,后面的信息字段類型就不同。如:
0x0021——信息字段是IP數(shù)據(jù)報
0xC021——信息字段是鏈路控制數(shù)據(jù)LCP
0x8021——信息字段是網(wǎng)絡(luò)控制數(shù)據(jù)NCP
0xC023——信息字段是安全性認證PAP
0xC025——信息字段是LQR
0xC223——信息字段是安全性認證CHAP#p#
三、基本配置
1、R2(config-if)#encapsulation ppp
2、peer neighbor-route
(1)R2(config-if)#no peer neighbor-route 干掉路由表里出現(xiàn)的對端接口地址的32位主機路由,在兩端地址在同一網(wǎng)段時適用
(2)默認情況下peer neighbor-route是打開的,路由表里會出現(xiàn)對端接口地址的32位主機路由,所以PPP兩端的地址可以是不同網(wǎng)段的地址,而且可以保證數(shù)據(jù)連通性,這在點到點連接的情況下很常用。
注:點到點連接下可以配置成/31位的IP地址。這種配置地址的方法和借用地址的方法在點到點鏈路上比較常用。
四、PPP LCP 選項
1、認證Authentication
2、回撥Callback:多用在ISDN
3、壓縮Compression
4、多鏈路捆綁Mutilink:增加帶寬增加冗余性增加B信道#p#
五、PPP Authentication
1、條件:LCP子層協(xié)商成功
2、設(shè)備角色:主認證方與被認證方,可以同時成為主認證方和被認證方,即可作雙向認證
3、PAP認證:簡單明文
4、CHAP認證:
(1)被認證方(遠程用戶)向認證方發(fā)起一個認證請求
(2)認證方向被認證方返回一個挑戰(zhàn),格式為01-id-random-主認證方數(shù)據(jù)庫里面的用戶名
01代表challenge;
id是challenge的序列號;
random是隨機產(chǎn)生的一個隨機數(shù)
(3)被認證方拿到用戶名之后在本地數(shù)據(jù)庫或是3A服務(wù)器里面查找對應(yīng)的密碼,然后將這個密碼和上面的挑戰(zhàn)ID和random隨機數(shù)一起作Hash,再向主認證方返回一個響應(yīng)包,格式為02-id-hash-被認證方本地數(shù)據(jù)庫里面的用戶名(和發(fā)過來的一樣)
02代表CHAP的響應(yīng)數(shù)據(jù)包
id:copied from chalenge packet主認證方剛發(fā)過來的那個ID
hash值:密碼加挑戰(zhàn)ID加挑戰(zhàn)隨機數(shù)作hash
用戶名:本地數(shù)據(jù)庫用戶名
(4)主認證方收到挑戰(zhàn)響應(yīng)包之后查找第一次發(fā)出的挑戰(zhàn)信息,同時查找響應(yīng)包里的用戶名在數(shù)據(jù)庫里對應(yīng)的密碼,將得到的密碼和挑戰(zhàn)ID隨機數(shù)一起作Hash,得到的值與被認證方發(fā)送過來的hash值作比較,如相同,則認證成功否則認證失敗。
在這個認證過程中,在網(wǎng)絡(luò)中傳輸?shù)氖翘魬?zhàn)ID、隨機數(shù)與密碼的hash值,并不是密碼本身,這保證了密碼的安全性。同時認證的兩端輸入的數(shù)據(jù)都是挑戰(zhàn)ID、隨機數(shù)與密碼,因而得到的hash值也一樣,保證了認證的有效性。這時注意:兩邊都必須有用戶名,且不需要相同,但數(shù)據(jù)庫中的密碼必須相同。
(5)主認證方向被認證方返回一個認證成功的消息,格式為03-id-"welcome in"
相關(guān)文檔:understanding ppp chap
(6)配置舉例
單向認證舉例:
R1為主認證方,R2為被認證方
R1(config)#int s1/1
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R1(config)#username R2 password cisco 這個用于chap認證中第二三步之間的處理過程,注意必須是password,secret通不過
R2(config)#int s1/0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp authentication chap
R2(config-if)#ppp chap hostname R2 這條命令如果不打的話默認是主機名,是第二步中向主認證方發(fā)送的用戶名
R2(config-if)#ppp chap password cisco 被認證方本地數(shù)據(jù)庫的密碼,如果沒有在全局建立用戶名和密碼那么將會查找接口下的這個默認密碼
雙向認證簡單:
R1(config)#int s1/1
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R1(config)#username R2 password cisco
R1(config-if)#no sh
R2(config)#int s1/0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp authentication chap
R2(config)#username R1 password cisco
R2(config-if)#no sh
注意接口下的默認ppp chap password 只能用于challenge的回復(fù)
可以同時進行chap和pap的認證
R1(config-if)#ppp authentication pap chap 注意這并不是在pap認證失敗再進行chap的認證而是對方不和我進行pap認證那么嘗試用chap進行認證。#p#
六、壓縮
PPP協(xié)議運行在速率十分有限的點到點串行鏈路上。為了提高數(shù)據(jù)發(fā)送效率,可以采用對數(shù)據(jù)進行壓縮后再傳送的方法,我們將其稱為鏈路壓縮。
LCP支持以下一些鏈路壓縮方法:Stac、Predictor、MPPC以及TCP頭部壓縮。不同的方法對CPU及內(nèi)存的需求并不相同。有些需要更多的內(nèi)存(內(nèi)存密集型),有些則需要占用更多的CPU時間(CPU密集型)。壓縮原理和效果也不相同。
A. Stac:Stac壓縮算法基于Lempel-Ziv理論,它通過查找、替換傳送內(nèi)容中的重復(fù)字符串的方法達到壓縮數(shù)據(jù)的目的。使用Stac壓縮算法可以選擇由各種硬件(適配器、模塊等)壓縮或者由軟件進行壓縮,還可以選擇壓縮的比率。Stac壓縮算法需要占用較多的CPU時間。
B. MPPC:MPPC是微軟的壓縮算法實現(xiàn),它也是基于Lempel-Ziv理論,也需要占用較多的CPU時間。
C. Predictor:Predictor—預(yù)測算法通過檢查數(shù)據(jù)的壓縮狀態(tài)(是否已被壓縮過)來決定是否進行壓縮。因為,對數(shù)據(jù)的二次壓縮一般不會有更大的壓縮率。相反,有時經(jīng)過二次壓縮的數(shù)據(jù)反而比一次壓縮后的數(shù)據(jù)更大。Predictor算法需要占用更多的內(nèi)存。
D. TCP頭部壓縮:TCP頭部壓縮基于Van Jacobson算法,該算法通過刪除TCP頭部一些不必要的字節(jié)來實現(xiàn)數(shù)據(jù)壓縮的目的。
R1(config-if)#compress {predictor | stac | mppc} predictor是內(nèi)存密集型的算法,后兩者是CPU密集型的算法
R1(config)#inter async 2
R1(config-if)#ip tcp header-compression
七、多鏈路捆綁
LCP的多鏈路捆綁(MP)選項通過將通信兩端之間的多條通信鏈路捆綁成一條虛擬的鏈路而達到擴充鏈路可用帶寬的目的。
LCP的多鏈路捆綁可以在多種類型的物理接口上實現(xiàn),包括異步串行接口、同步串行接口、ISDN基本速率接口BRI、ISDN主速率接口PRI。 LCP的多鏈路捆綁也支持不同的上層協(xié)議封裝類型,如X.25、ISDN、幀中繼等。
配置:(多個物理接口下)
ppp multilink
multilink-group 2 不需要配置地址
再起虛接口
interface Multilink 2
ip add ...
ppp multilink
multilink-group 2
no peer neighbor-route
no cdp enable
八、回撥
是指當通信一方撥號到另一方后,由另一方斷開撥號連接并進行反向的撥號。
這對于從甲地到乙地的電話費大于從乙地到甲地的電話費的情形。這時,可以由甲方首先發(fā)起到乙方的呼叫連接,當乙方收到甲方的呼叫請求后,斷開乙方的呼叫。然后,從乙方發(fā)起到甲方的回叫。甲方應(yīng)答后,雙方的通信鏈路就建立起來了。
回叫還有更安全的優(yōu)點。因為乙方在回叫之前可以驗證對方是否是合法用戶,或者可以用口令數(shù)據(jù)庫的方法或者可以用檢驗對方電話號碼的方法。
九、NCP
NCP網(wǎng)絡(luò)控制協(xié)議(Network Control Protocol)實際上是一套協(xié)議。每個子協(xié)議都是為處理各自網(wǎng)絡(luò)層協(xié)議所需的錯綜復(fù)雜的配置而設(shè)計的。 當LCP將鏈路建立好了以后,PPP要開始根據(jù)不同用戶的需要,配置上層協(xié)議所需的環(huán)境。PPP使用網(wǎng)絡(luò)控制協(xié)議NCP(Network Control Protocol,NCP)來為上層提供服務(wù)接口。針對上層不同的協(xié)議類型,會使用不同的NCP組件。如對于IP提供IPCP接口,對于IPX提供IPXCP接口,對于APPLETALK提供ATCP接口等。同時對于IP網(wǎng)絡(luò),提供IP地址,子網(wǎng)掩碼和默認網(wǎng)關(guān)等地址的配置。