0×1.PPP概述
a.HDLC封裝協(xié)議
HDLC是思科路由器串行接口默認(rèn)的封裝協(xié)議帕翻,由于串行線路在遠(yuǎn)距離通信中的優(yōu)勢(shì)可训,遠(yuǎn)距離傳輸數(shù)據(jù)一般都使用串行線路淤堵,而一些計(jì)算機(jī)的內(nèi)部通信一般采用并行通信。標(biāo)準(zhǔn)的HDLC封裝只能支持單協(xié)議柬批,即IP協(xié)議啸澡,思科對(duì)標(biāo)準(zhǔn)的DHLC進(jìn)行了改進(jìn),增加了協(xié)議域字段來(lái)支持多種網(wǎng)絡(luò)層協(xié)議氮帐。雖然改進(jìn)后的DHLC是思科私有的嗅虏,但是現(xiàn)在大多網(wǎng)絡(luò)設(shè)備都能夠使用它。
在"GNS3"中啟動(dòng)一臺(tái)c3640路由器上沐,確保這個(gè)路由器添加了串行接口模塊皮服,然后通過(guò)下面的命令來(lái)查看串行接口默認(rèn)的封裝協(xié)議:
1
R1#
show
interfaces
s0/0
2
3
/可以看到下面這一句輸出
"Encapsulation HDLC"
,說(shuō)明思科路由串口默認(rèn)使用HDLC封裝/
4
Encapsulation HDLC, crc 16,
loopback
not set
思科路由之所以默認(rèn)使用HDLC封裝是因?yàn)槁酚善髦g用同步串行接口連接時(shí),Cisco HDLC封裝要比PPP封裝效率高很多龄广。但是其他網(wǎng)絡(luò)設(shè)備不一定支持思科HDLC硫眯,所以在不同廠商設(shè)備混用的時(shí)候,最好采用PPP作為串口封裝協(xié)議择同。
使用下面這條命令將串行接口的封裝改成PPP:
1
R1#
conf
t
2
/*進(jìn)入s0/0接口更改封裝類型為
ppp
*/
3
R1(config)#
int
s0/0
4
R1(config-if)#
encapsulation
ppp
5
R1(config-if)#
end
6
7
/*再次查看接口信息两入,
"Encapsulation PPP"
表明,接口封裝類型變成了
ppp
*/
8
R1#
show
int
s0/0
9
Encapsulation PPP, LCP Closed, crc 16,
loopback
not set
b.同步和異步串行通信
串行通信分為同步傳輸和異步傳輸奠衔,下面分別介紹這兩種傳輸技術(shù)谆刨。
1)異步傳輸
通常,異步傳輸是以字符為傳輸單位的归斤,每個(gè)字符添加一位起始位和一位停止位痊夭,用來(lái)標(biāo)記一個(gè)字符的開始和結(jié)束。這種傳輸方式每傳輸一個(gè)字符都要附加2-3位脏里,通信效率較低她我。這種傳輸方式發(fā)送方發(fā)出數(shù)據(jù)后,不等對(duì)方發(fā)回響應(yīng)迫横,接著發(fā)送下一個(gè)數(shù)據(jù)包番舆。
2)同步傳輸
通常,同步傳輸是以數(shù)據(jù)塊為傳輸單位矾踱,每個(gè)數(shù)據(jù)塊的頭部和尾部附加一個(gè)特殊的字符或比特序列恨狈,標(biāo)記一個(gè)數(shù)據(jù)塊的開始和結(jié)束,一般還附加效驗(yàn)序列呛讲,以便對(duì)數(shù)據(jù)塊進(jìn)行差錯(cuò)控制禾怠。這種傳輸方式發(fā)送方發(fā)出數(shù)據(jù)后要等待接收方發(fā)回響應(yīng),然后再發(fā)下一個(gè)數(shù)據(jù)包贝搁。路由器的串行接口屬于快速的同步接口吗氏,所以需要在DCE端配置"時(shí)鐘"來(lái)進(jìn)行信號(hào)同步。
在需要配置時(shí)鐘的接口中執(zhí)行下面的命令:
1
R1(config)#
int
s 0/0
2
/*
3
- 其中的64000是比特率雷逆,可以通過(guò)下面這條命令來(lái)查看比特率允許的值弦讽,
4
- R1(config-if)#
clock
rate
?
5
*/
6
R1(config-if)#
clock
rate
64000
7
R1(config-if)#
end
c.PPP特點(diǎn)
PPP是IETF(因特網(wǎng)工程任務(wù)組)推出的點(diǎn)到點(diǎn)類型線路的數(shù)據(jù)鏈路層封裝協(xié)議,PPP支持下面幾類物理接口:
同步串行接口異步串行接口高速串行接口(HSSI)綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)
此外PPP還被廣泛的應(yīng)用在ATM上(PPP over ATM膀哲,簡(jiǎn)稱PPPoA)以及以太網(wǎng)上(PPP over Ethernet往产,簡(jiǎn)稱PPPoE)。
PPP利用下面三個(gè)組件來(lái)解決網(wǎng)際網(wǎng)絡(luò)連接問(wèn)題:
在點(diǎn)對(duì)點(diǎn)鏈路上使用高級(jí)數(shù)據(jù)鏈路控制(HDLC)封裝數(shù)據(jù)等太。PPP幀格式以HDLC幀格式為基礎(chǔ)捂齐,做了少許改動(dòng)。使用LCP(Link Control Protocol缩抡,鏈路控制協(xié)議)來(lái)建立奠宜、設(shè)定和測(cè)試數(shù)據(jù)鏈路連接包颁。使用NCPs(Network Control Protocols,網(wǎng)絡(luò)控制協(xié)議系列)建立和設(shè)定不同的網(wǎng)絡(luò)層協(xié)議压真。
d.PPP分層體系結(jié)構(gòu)
PPP分層體系架構(gòu)是一個(gè)邏輯模型娩嚼,下圖是這一構(gòu)架和OSI參考模型的對(duì)比:
![圖1](https://www.qingsword.com/qing/images/Cisco-CCNA-PPP-1.jpg)
只要是點(diǎn)到點(diǎn)類型的線路都可以運(yùn)行PPP,在數(shù)據(jù)鏈路層PPP通過(guò)LCP協(xié)議進(jìn)行鏈路管理滴肿,相當(dāng)于以太網(wǎng)數(shù)據(jù)鏈路層的MAC子層岳悟,在網(wǎng)絡(luò)層NCP為不同協(xié)議提供服務(wù),相當(dāng)于以太網(wǎng)數(shù)據(jù)鏈路層的LLC子層泼差。
下面是PPP的LCP子層和NCP子層的簡(jiǎn)單介紹:
1)LCP(Link Control Protocol)子層
LCP子層位于物理層之上贵少,除了用來(lái)建立、配置和測(cè)試數(shù)據(jù)鏈路連接外堆缘,還提供下面這些功能滔灶;身份驗(yàn)證:提供了PAP和CHAP驗(yàn)證。壓縮:將需要傳輸?shù)臄?shù)據(jù)先壓縮再傳輸吼肥。支持Stac录平、Predictor、MPPC以及TCP頭部壓縮缀皱。錯(cuò)誤檢測(cè):保證鏈路的質(zhì)量斗这。多鏈路:實(shí)現(xiàn)鏈路的負(fù)載均衡。PPP回?fù)埽嚎梢蕴岣甙踩院凸?jié)約用戶撥號(hào)費(fèi)用啤斗。
2)NCP(Network Control Protocol)子層
當(dāng)LCP將鏈路建立好后表箭,PPP開始根據(jù)不同用戶的需要配置上層協(xié)議所需環(huán)境,NCP被用來(lái)為上層服務(wù)提供服務(wù)接口钮莲,針對(duì)不同的上層協(xié)議NCP提供不同的服務(wù)組件燃逻。
e.PPP會(huì)話建立過(guò)程
PPP從開始發(fā)起呼叫到最終通信完成后釋放鏈路一共要經(jīng)歷下面四個(gè)步驟:
第一步:鏈路的建立和配置協(xié)商,主要由LCP完成臂痕,通信的發(fā)起方發(fā)送LCP幀來(lái)配置和檢測(cè)數(shù)據(jù)鏈路。第二步:鏈路質(zhì)量檢測(cè)(可選)猿涨,屬于LCP的可選功能握童,主要是測(cè)試鏈路的質(zhì)量能否滿足要求。第三步:網(wǎng)絡(luò)層協(xié)議的配置階段,主要是NCP的功能叛赚,通信雙方交換一系列NCP分組來(lái)配置網(wǎng)絡(luò)層澡绩,NCP配置好后雙方的邏輯通信鏈路就建立完成了。第四步:鏈路終止俺附,當(dāng)數(shù)據(jù)傳送完成肥卡,或者一些外部事件發(fā)生的時(shí)候,一方會(huì)發(fā)起斷開連接的請(qǐng)求事镣,這時(shí)步鉴,首先使用NCP來(lái)釋放網(wǎng)絡(luò)層的鏈接,然后使用LCP來(lái)關(guān)閉數(shù)據(jù)鏈路層的鏈接,最后雙方的通信設(shè)備關(guān)閉物理鏈路氛琢。
f.PPP身份驗(yàn)證協(xié)議
PPP有兩種可選的身份驗(yàn)證協(xié)議PAP和CHAP喊递。
1)PAP(Password Authentication Protocol,密碼驗(yàn)證協(xié)議)
這是一種兩次握手協(xié)議阳似,采用明文傳輸方式傳輸用戶口令骚勘,驗(yàn)證步驟如下:
![圖2](https://www.qingsword.com/qing/images/Cisco-CCNA-PPP-2.jpg)
2;)CHAP(Challenge Handshake Authentication Protocol定拟,挑戰(zhàn)握手驗(yàn)證協(xié)議)
這是一種三次握手協(xié)議于微,它只在網(wǎng)絡(luò)上傳輸用戶名,密碼并不在網(wǎng)絡(luò)上傳輸青自,下圖為CHAP驗(yàn)證示意圖:
![圖3](https://www.qingsword.com/qing/images/Cisco-CCNA-PPP-3.jpg)
在PPP鏈路建立階段完成后(R1作為被驗(yàn)證方撥入)株依,驗(yàn)證方R2主動(dòng)發(fā)起驗(yàn)證挑戰(zhàn)"Challenge",挑戰(zhàn)報(bào)文中"01"是序列號(hào)延窜;R2上可能有多個(gè)撥入請(qǐng)求恋腕,"ID"用來(lái)識(shí)別是哪個(gè)撥入者發(fā)起的挑戰(zhàn);"Random"是一個(gè)隨機(jī)數(shù)逆瑞;"R2"是發(fā)起挑戰(zhàn)路由器的名字荠藤。
![圖4](https://www.qingsword.com/qing/images/Cisco-CCNA-PPP-4.jpg)
![圖5](https://www.qingsword.com/qing/images/Cisco-CCNA-PPP-5.jpg)
![圖6](https://www.qingsword.com/qing/images/Cisco-CCNA-PPP-6.jpg)
R2接收到這個(gè)報(bào)文后肛炮,利用報(bào)文中的ID值找到儲(chǔ)存在本地?cái)?shù)據(jù)庫(kù)中的隨機(jī)數(shù)止吐,并且根據(jù)發(fā)送過(guò)來(lái)的報(bào)文中路由器的名稱(R1)找到本地?cái)?shù)據(jù)庫(kù)對(duì)應(yīng)這個(gè)名稱的密碼宝踪,然后利用ID、隨機(jī)數(shù)祟印、R1對(duì)應(yīng)的密碼使用MD5算法生成一個(gè)hash值肴沫,最后用這個(gè)hash值與R1發(fā)送過(guò)來(lái)的hash比較,相同則驗(yàn)證通過(guò)蕴忆,發(fā)回序號(hào)是"03"的確認(rèn)報(bào)文颤芬,如果不相同則驗(yàn)證失敗,發(fā)回序號(hào)是"04"的驗(yàn)證失敗報(bào)文套鹅。
從這個(gè)步驟可以看出站蝠,只要雙方配置相同的驗(yàn)證密碼,即可完成驗(yàn)證卓鹿,并且這個(gè)密碼是不會(huì)在鏈路上傳輸?shù)牧饽В瑐鬏數(shù)闹皇且粋€(gè)隨機(jī)數(shù)、一個(gè)ID值吟孙、路由器的名稱和發(fā)回的hash值澜倦。
0×2.PPP基本配置
a.配置PPP封裝
在GNS3中配置下面這個(gè)簡(jiǎn)單拓?fù)洌?br>
_R1和R2配置:
01
/配置R1串口IP/
02
R1(config)#
int
s 0/0
03
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
04
R1(config-if)#
no
shut
05
R1(config-if)#
end
06
07
/配置R2串口IP/
08
R2(config)#
int
s 0/1
09
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
10
R2(config-if)#
no
shut
11
R2(config-if)#
end
12
13
/在R1上查看接口默認(rèn)封裝協(xié)議/
14
R1#
show
interfaces
s 0/0
15
Serial0/0 is up, line protocol is up
16
/默認(rèn)的串口封裝協(xié)議是HDLC/
17
Encapsulation HDLC, crc 16,
loopback
not set
18
19
/此時(shí)R1和R2雙方互相能夠Ping通/
20
R1#
ping
12.1.1.2
21
!!!!!
22
23
/將R1的串口封裝改成PPP/
24
R1(config)#
int
s 0/0
25
R1(config-if)#
encapsulation
ppp
26
R1(config-if)#
end
27
28
/*
29
- 如果R2的串口沒(méi)有改成PPP,會(huì)出現(xiàn)端口down掉的提示杰妓,查看R1接口,
30
- 發(fā)現(xiàn)S0/0接口的協(xié)議是down的藻治。
31
*/
32
R1#
show
ip
interface
brief
33
Interface IP-Address OK? Method Status Protocol
34
Serial0/0 12.1.1.1 YES manual up down
35
R1#
36
37
/再查看R1的s0/0接口詳細(xì)信息/
38
R1#
show
interfaces
s 0/0
39
Serial0/0 is up, line protocol is down
40
41
Encapsulation PPP, LCP Listen, crc 16,
loopback
not set
42
/可以看到封裝雖然已經(jīng)改成了PPP,但是LCP還處于監(jiān)聽狀態(tài)/
43
44
/此時(shí)R1是
ping
不通R2的巷挥,下面將R2也改成PPP封裝/
45
R2(config)#
int
s 0/1
46
R2(config-if)#
encapsulation
ppp
47
R2(config-if)#
end
48
49
/再次查看R1的s0/0接口詳細(xì)信息/
50
R1#
show
interfaces
s 0/0
51
Serial0/0 is up, line protocol is up
52
53
Encapsulation PPP, LCP Open
54
Open:IPCP, CDPCP, crc 16,
loopback
not set
55
/*
56
- LCP Open 表示鏈路協(xié)商成功桩卵,
57
- Open:IPCP表示NCP也建立成功了。
58
*/
b.配置壓縮
配置壓縮會(huì)影響路由性能增加CPU負(fù)荷倍宾,如果需要傳送的文件已經(jīng)壓縮過(guò)雏节,比如ZIP,RAR等高职,則不建議在路由上開啟壓縮:
01
/在路由串行接口上啟用壓縮功能/
02
R1(config)#
int
s 0/0
03
R1(config-if)#compress ? /查看可用的壓縮類型/
04
lzs lzs compression type
05
mppc MPPC compression type
06
predictor predictor compression type
07
stac stac compression algorithm
08
<cr>
09
R1(config-if)#compress lzs /啟用lzs壓縮/
10
R1(config-if)#
end
c.配置鏈路質(zhì)量監(jiān)控(LQM)
在本文前面的"PPP會(huì)話建立過(guò)程"的第二步中提到了一個(gè)可選的階段"鏈路質(zhì)量檢測(cè)"钩乍,在這個(gè)階段LCP測(cè)試鏈路并決定鏈路的質(zhì)量能否滿足第三層協(xié)議的需要,如果不能滿足怔锌,鏈路將會(huì)關(guān)閉件蚕。可以使用下面的命令來(lái)配置質(zhì)量監(jiān)控:
1
/計(jì)算數(shù)據(jù)包發(fā)送的成功率产禾,鏈路有效要大于80%,否則認(rèn)為鏈路無(wú)效/
2
R1(config)#
int
s 0/0
3
R1(config-if)#
ppp
quality 80
4
R1(config-if)#
end
d.配置鏈路負(fù)載均衡
PPP鏈路負(fù)載均衡(多鏈路PPP牵啦,也叫MP亚情、MPPP、MLP或Multilink)允許包被分段哈雏,在到對(duì)方的多條點(diǎn)對(duì)點(diǎn)線路上被同時(shí)發(fā)送楞件,配置命令如下:
1
R1(config)#
int
s 0/0
2
R1(config-if)#
ppp
multilink
3
R1(config-if)#
end
0×3.PPP驗(yàn)證配置
PPP驗(yàn)證部分使用上面的圖八作為拓?fù)鋱D在GNS3中配置衫生。
a.PAP驗(yàn)證
R1配置:
01
/配置用戶名和密碼,這個(gè)用戶名和密碼要和R2發(fā)送過(guò)來(lái)的一致/
02
R1(config)#
username
ccna_R2
password
ccna_R2_pass
03
R1(config)#
int
s 0/0
04
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
05
R1(config-if)#
no
shut
06
R1(config-if)#
encapsulation
ppp
/使用PPP封裝/
07
R1(config-if)#
ppp
authentication
pap /使用PAP驗(yàn)證/
08
/R1發(fā)給R2的用戶名和密碼土浸,R2上需要配置和R1發(fā)送過(guò)去的這個(gè)用戶名和密碼一致/
09
R1(config-if)#
ppp
pap sent-
username
ccna_R1
password
ccna_R1_pass
10
R1(config-if)#
end
R2配置:
01
/在R2上配置用戶名和密碼罪针,要和R1發(fā)送過(guò)來(lái)的一致/
02
R2(config)#
username
ccna_R1
password
ccna_R1_pass
03
R2(config)#
int
s 0/1
04
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
05
R2(config-if)#
no
shut
06
R2(config-if)#
encapsulation
ppp
07
R2(config-if)#
ppp
authentication
pap
08
/向R1發(fā)送用戶名和密碼/
09
R2(config-if)#
ppp
pap sent-
username
ccna_R2
password
ccna_R2_pass
10
R2(config-if)#
end
配置完成后檢測(cè)R1和R2連通性,發(fā)現(xiàn)可以正常通信黄伊,PAP并不是路由器推薦的驗(yàn)證方式泪酱。
b.CHAP驗(yàn)證
使用CHAP驗(yàn)證配置本文圖八中的拓?fù)洌?br>
R1配置:
01
/*
02
- 配置本地驗(yàn)證的用戶名和密碼,
03
- 用戶名必須是對(duì)端路由器的名稱还最,
04
- 密碼驗(yàn)證雙方要相同墓阀,
05
- 在本文
"PPP身份驗(yàn)證協(xié)議"
中已經(jīng)講解過(guò)原理。
06
*/
07
R1(config)#
username
R2
password
www.qingsword.com
08
R1(config)#
int
s 0/0
09
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
10
R1(config-if)#
no
shut
11
R1(config-if)#
encapsulation
ppp
12
R1(config-if)#
ppp
authentication
chap /使用CHAP驗(yàn)證/
13
R1(config-if)#
end
R2配置:
1
/用戶名是R1的名稱拓轻,密碼和R1相同/
2
R2(config)#
username
R1
password
www.qingsword.com
3
R2(config)#
int
s 0/1
4
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
5
R2(config-if)#
no
shut
6
R2(config-if)#
encapsulation
ppp
7
R2(config-if)#
ppp
authentication
chap
8
R2(config-if)#
end
配置完成后測(cè)試雙方可以通信斯撮。
除此之外,可以使用下面的命令來(lái)查看PPP驗(yàn)證過(guò)程:
01
/調(diào)試
ppp
驗(yàn)證/
02
R1#debug
ppp
authentication
03
PPP
authentication
debugging is on
04
R1#
conf
t
05
R1(config)#
int
s 0/0
06
R1(config-if)#
shut
/關(guān)閉s0/0扶叉,然后再打開/
07
R1(config-if)#
no
shut
08
09
*Mar 1 01:18:25.627: Se0/0 PPP: Session handle[7300007B] Session id[127]
10
*Mar 1 01:18:25.631: Se0/0 PPP: Authorization required
11
/這里省略部分輸出勿锅,可以看到很多類似輸出/