產(chǎn)品分類+
什么是PPP 協(xié)議?PPP 協(xié)議詳解
1 點(diǎn)對(duì)點(diǎn)協(xié)議PPP(Point-to-Point Protocol)
PPP(Point-to-Point Protocol),鏈路層協(xié)議。PPP是為了在點(diǎn)對(duì)點(diǎn)物理鏈路(例如RS232串口鏈路、電話ISDN線路等)上傳輸OSI模型中的網(wǎng)絡(luò)層報(bào)文而設(shè)計(jì)的,它改進(jìn)了之前的一個(gè)點(diǎn)對(duì)點(diǎn)協(xié)議-SLIP協(xié)議–只能同時(shí)運(yùn)行一個(gè)網(wǎng)絡(luò)協(xié)議、無(wú)容錯(cuò)控制、無(wú)授權(quán)等許多缺陷,PPP是現(xiàn)在最流行的點(diǎn)對(duì)點(diǎn)鏈路控制協(xié)議。這種連接提供了同時(shí)的雙向的全雙工操作,并且假定數(shù)據(jù)包是按順序投遞的。PPP連接提供了一種廣泛的解決辦法,方便地將多種多樣不同的值作為最大接收單元的值。
幀格式與HDLC相似,不同的是PPP是面向字符,HDLC是面向位的。PPP屬于廣域網(wǎng)范疇,MAC是局域網(wǎng)范疇,按實(shí)際情況和環(huán)境就選用不同的協(xié)議,PPP支持的網(wǎng)絡(luò)結(jié)構(gòu)只能是點(diǎn)對(duì)點(diǎn),MAC支持多點(diǎn)對(duì)多點(diǎn)。 這類廣域網(wǎng)協(xié)議,其幀的結(jié)構(gòu)與以太網(wǎng)的完全不同,當(dāng)然,PPPOE除外,因?yàn)镻PPOE是基于以太網(wǎng)上的,而其它的如PPP,F(xiàn)R,X.25等卻并不是。 PPP協(xié)議是目前廣域網(wǎng)上應(yīng)用最廣泛的協(xié)議之一,它的優(yōu)點(diǎn)在于簡(jiǎn)單、具備用戶驗(yàn)證能力、可以解決IP分配等。

1.1 PPP協(xié)議功能
(1) 簡(jiǎn)單:在同一條物理鏈路上進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸,對(duì)數(shù)據(jù)鏈路層的幀不進(jìn)行糾錯(cuò),不需要序號(hào),不需要流量控制。
(2) 封裝成幀:加入幀界定符。
(3) 透明性:字節(jié)填充法。
(4) 多種網(wǎng)絡(luò)層協(xié)議:在同一條物理鏈路上同時(shí)支持多種網(wǎng)絡(luò)層協(xié)議(如IP和IPX等)的運(yùn)行。
(5) 多種鏈路類型:PPP必須能夠在多種類型的鏈路上運(yùn)行,例如串行或并行鏈路。
(6) 差錯(cuò)檢測(cè):接收方收到一個(gè)幀后進(jìn)行CRC檢驗(yàn),若正確就收下這個(gè)幀,反之則丟棄。
(7) 檢測(cè)連接狀態(tài):自動(dòng)檢測(cè)鏈路是否處于正常工作狀態(tài)。
1.2 PPP協(xié)議組成
(1) 提供一個(gè)將IP數(shù)據(jù)報(bào)封裝到串行鏈路的方法。IP數(shù)據(jù)報(bào)在PPP幀中就是信息部分,長(zhǎng)度受最大傳送單元MTU的限制。PPP支持異步鏈路(無(wú)奇偶校驗(yàn)的8比特?cái)?shù)據(jù))和面向比特的同步鏈路。
(2) 鏈路控制協(xié)議LCP(Link Control Protocol)
當(dāng)線路不再需要時(shí),挑出這些線路,測(cè)試它們,商議選擇,并仔細(xì)地再次釋放鏈路控制協(xié)議。
(3) 一套網(wǎng)絡(luò)控制協(xié)議NCP(Network Control Protocol)
其中每一個(gè)協(xié)議支持不同的網(wǎng)絡(luò)層協(xié)議,如IP、OSI的網(wǎng)絡(luò)層等。
(4) 認(rèn)證協(xié)議
最常用的包括口令驗(yàn)證協(xié)議PAP(Password Authentication Protocol)和挑戰(zhàn)握手驗(yàn)證協(xié)議CHAP(Challenge-Handshake Authentication Protocol)。
1.3 PPP幀格式

(1) 首部
字段
長(zhǎng)度
說(shuō)明
F
1字節(jié)
標(biāo)志字段F,固定為0x7E,標(biāo)志一個(gè)幀的開(kāi)始或結(jié)束。連續(xù)2個(gè)幀之間只需要一個(gè)標(biāo)志字段,如果出現(xiàn)連續(xù)兩個(gè)標(biāo)志字段,表示這是一個(gè)空幀。
A
1字節(jié)
地址字段A是固定不變的,為0xFF。
C
1字節(jié)
控制字段C是固定不變的,為 0x03。
協(xié)議
2字節(jié)
協(xié)議字段不同,后面信息部分表示的數(shù)據(jù)類型不同。
0x0021——信息字段是IP數(shù)據(jù)報(bào)
0xC021——信息字段是鏈路控制數(shù)據(jù)LCP
0x8021——信息字段是網(wǎng)絡(luò)控制數(shù)據(jù)NCP
0xC023——信息字段是安全性認(rèn)證PAP
0xC025——信息字段是LQR
0xC223——信息字段是安全性認(rèn)證CHAP
(2) 信息部分
長(zhǎng)度不超過(guò)1500字節(jié) 。
(3) 字節(jié)填充法
(a) 當(dāng)信息字段中出現(xiàn)0x7E時(shí),將每一個(gè)0x7E字節(jié)轉(zhuǎn)變成2字節(jié)序列(0x7D,0x5E)。
(b) 若信息字段中出現(xiàn)一個(gè)0x7D的字節(jié),則將其轉(zhuǎn)變成2字節(jié)序列(0x7D,0x5D)。
(c) 若信息字段中出現(xiàn)ASCII碼的控制字符(即數(shù)值小于0X20的字符),則該字符前面需要加入一個(gè)0x7D字節(jié),同時(shí)將該字符的編碼加以改變(+20)。例如,出現(xiàn)0x03,就要把它轉(zhuǎn)為2字節(jié)序列(0x7D,0x23)
(4) 0比特填充法
PPP協(xié)議用在SONET/SDH鏈路時(shí),使用同步傳輸(一連串的比特連續(xù)傳送),此時(shí)使用0比特填充法。
(a) 在發(fā)送端掃描整個(gè)信息字段,當(dāng)有5個(gè)1連續(xù)出現(xiàn)時(shí),立即填入一個(gè)0,保證信息字段中不會(huì)出現(xiàn)6個(gè)連續(xù)1。
(b) 在接收端刪除連續(xù)5個(gè)1后面的0。

(5) 尾部
FCS:使用CRC的幀校驗(yàn)序列。
2 PPP協(xié)議的工作狀態(tài)
PPP通訊是兩個(gè)端點(diǎn)之間的通訊,每一端必須首先發(fā)送LCP packets數(shù)據(jù)來(lái)設(shè)定和測(cè)試數(shù)據(jù)鏈路,當(dāng)鏈路建立后,peer才可以被認(rèn)證,認(rèn)證完成后,再通過(guò)發(fā)送NCP packets來(lái)選定網(wǎng)絡(luò)層協(xié)議,這些后續(xù)的通訊就可以在網(wǎng)絡(luò)層進(jìn)行了。
具體的過(guò)程如下:
序號(hào)
狀態(tài)
說(shuō)明
1
鏈路靜止?fàn)顟B(tài)
鏈路一定開(kāi)始并結(jié)束于這個(gè)階段。當(dāng)一個(gè)外部事件(例如載波偵聽(tīng)或網(wǎng)絡(luò)管理員設(shè)定)指出物理層已經(jīng)準(zhǔn)備就緒時(shí),PPP將進(jìn)入鏈路建立階段。在這個(gè)階段,LCP自動(dòng)機(jī)器將處于初始狀態(tài),向鏈路建立階段的轉(zhuǎn)換將給LCP自動(dòng)機(jī)器一個(gè)UP事件信號(hào)。
2
鏈路建立狀態(tài)
LCP用于交換配置信息包(Configure packets),建立連接。一旦一個(gè)配置成功信息包(Configure-Ackpacket)被發(fā)送且被接收,就完成了交換,進(jìn)入了LCP開(kāi)啟狀態(tài)。所有的配置選項(xiàng)都假定使用默認(rèn)值,除非被配置交換所改變。有一點(diǎn)要注意:只有不依賴于特別的網(wǎng)絡(luò)層協(xié)議的配置選項(xiàng)才被LCP配置。在網(wǎng)絡(luò)層協(xié)議階段,個(gè)別的網(wǎng)絡(luò)層協(xié)議的配置由個(gè)別的網(wǎng)絡(luò)控制協(xié)議(NCP)來(lái)處理。在這個(gè)階段接收的任何非LCPpackets必須被silentlydiscarded(靜靜的丟棄)。收到LCPConfigure-Request(LCP配置要求)能使鏈路從網(wǎng)絡(luò)層協(xié)議階段或者認(rèn)證階段返回到鏈路建立階段。
3
認(rèn)證階段
在一些鏈路上,在允許網(wǎng)絡(luò)層協(xié)議packets交換之前,鏈路的一端可能需要peer去認(rèn)證它。認(rèn)證是不需要強(qiáng)制執(zhí)行的。如果一次執(zhí)行希望peer根據(jù)某一特定的認(rèn)證協(xié)議來(lái)認(rèn)證,那么它必須在鏈路建立階段要求使用那個(gè)認(rèn)證協(xié)議。應(yīng)該盡可能在鏈路建立后立即進(jìn)行認(rèn)證。鏈路質(zhì)量檢查可以同時(shí)發(fā)生。在認(rèn)證完成之前,禁止從認(rèn)證階段前進(jìn)到網(wǎng)絡(luò)層協(xié)議階段。如果認(rèn)證失敗,認(rèn)證者應(yīng)該躍遷到鏈路終止階段。
在這一階段里,只有鏈路控制協(xié)議、認(rèn)證協(xié)議,和鏈路質(zhì)量監(jiān)視協(xié)議的packets是被允許的。在該階段里接收到的其他的packets必須被靜靜的丟棄。
4
網(wǎng)絡(luò)層協(xié)議階段
一旦PPP完成了前面的階段,每一個(gè)網(wǎng)絡(luò)層協(xié)議(例如IP,IPX,或AppleTalk)必須被適當(dāng)?shù)木W(wǎng)絡(luò)控制協(xié)議(NCP)分別設(shè)定。比如,NCP可以給新接入的PC機(jī)分配一個(gè)臨時(shí)的IP地址,這樣PC機(jī)就成為Internet上一個(gè)主機(jī)了。每個(gè)NCP可以隨時(shí)被打開(kāi)和關(guān)閉。當(dāng)一個(gè)NCP處于Opened狀態(tài)時(shí),PPP將攜帶相應(yīng)的網(wǎng)絡(luò)層協(xié)議packets。當(dāng)相應(yīng)的NCP不處于Opened狀態(tài)時(shí),任何接收到的被支持的網(wǎng)絡(luò)層協(xié)議packets都將被靜靜的丟棄。
5
鏈路終止階段
PPP可以在任意時(shí)間終止鏈路。引起鏈路終止的原因很多:載波丟失、認(rèn)證失敗、鏈路質(zhì)量失敗、空閑周期定時(shí)器期滿、或者管理員關(guān)閉鏈路。LCP用交換Terminate(終止)packets的方法終止鏈路。當(dāng)鏈路正被關(guān)閉時(shí),PPP通知網(wǎng)絡(luò)層協(xié)議,以便他們可以采取正確的行動(dòng)。交換Terminate(終止)packets之后,執(zhí)行應(yīng)該通知物理層斷開(kāi),以便強(qiáng)制鏈路終止,尤其當(dāng)認(rèn)證失敗時(shí)。Terminate-Request(終止-要求)的發(fā)送者,在收到Terminate-Ack(終止-允許)后,或者在重啟計(jì)數(shù)器期滿后,應(yīng)該斷開(kāi)連接。收到Terminate-Request的一方,應(yīng)該等待peer去切斷,在發(fā)出Terminate-Request后,至少也要經(jīng)過(guò)一個(gè)Restarttime(重啟時(shí)間),才允許斷開(kāi)。PPP應(yīng)該前進(jìn)到鏈路死亡階段。在該階段收到的任何非LCPpackets,必須被靜靜的丟棄。