了解PPP狀態(tài),掌握PPP協(xié)議
在我們學(xué)習(xí)網(wǎng)絡(luò)協(xié)議的過(guò)程中,定聽(tīng)說(shuō)過(guò)點(diǎn)對(duì)點(diǎn)協(xié)議,也就是PPP協(xié)議。那么這個(gè)協(xié)議有什么特點(diǎn)呢?這里我們就來(lái)了解一下PPP協(xié)議以及PPP狀態(tài)。PPP是一種數(shù)據(jù)鏈路層協(xié)議,遵循HDLC(高級(jí)數(shù)據(jù)鏈路控制協(xié)議)族的一般報(bào)文格式。
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é)議.
上圖中PPP的flag字段恒為0×7f,地址(adress)字段恒為0xff,控制(control)字段恒為0×03.協(xié)議(protocol)字段表示PPP報(bào)文中封裝的payload(data字段)的類(lèi)型,如果為0×0021,則表示PPP封裝的IP報(bào)文,0×002B表示IPX報(bào)文,0×0029表示AppleTalk報(bào)文,這幾種都屬于PPP的數(shù)據(jù)報(bào)文;如果為0×8021則表示PPP的LCP報(bào)文(用來(lái)協(xié)商連接),如果為0xC021則屬于PPP的NCP報(bào)文(用來(lái)協(xié)商封裝的三層協(xié)議),這些屬于PPP的控制報(bào)文.
PPP協(xié)議狀態(tài)機(jī)如下圖所示:
在上圖的鏈接建立階段(建立),PPP使用LCP報(bào)文來(lái)協(xié)商連接(一種發(fā)送配置請(qǐng)求,然后接收響應(yīng)的簡(jiǎn)單"握手"過(guò)程,不做過(guò)多介紹,感興趣可以去細(xì)讀RFC1661),協(xié)商中雙方獲得當(dāng)前點(diǎn)對(duì)點(diǎn)連接的狀態(tài)配置等,之后的"鑒別"階段使用哪種鑒別方式也在這個(gè)協(xié)商中確定下來(lái).
鑒別階段是可選的,如果鏈接協(xié)商階段并沒(méi)有設(shè)置鑒別方式,則將忽略本階段直接進(jìn)入"網(wǎng)絡(luò)"階段.鑒別階段使用鏈接協(xié)商階段確定下來(lái)的鑒別方式來(lái)為連接授權(quán),以起到保證點(diǎn)對(duì)點(diǎn)連接安全,防止非法終端接入點(diǎn)對(duì)點(diǎn)鏈路的功能.常用的鑒別認(rèn)證方式有CHAP和PAP方式.
CHAP方式的原理是由一端定期發(fā)起挑戰(zhàn)"challenge",收到"challenge"的一端將收到的"challenge"報(bào)文中的密鑰使用之前雙發(fā)協(xié)商好的一種算法加密后再把結(jié)果發(fā)回發(fā)起端,這種算法應(yīng)該是結(jié)果唯一(不同輸入必得到不同輸出)且不可逆(由輸出無(wú)法得到輸入)的,發(fā)起端也使用該算法計(jì)算后驗(yàn)證結(jié)果是否正確來(lái)為對(duì)端授權(quán)認(rèn)證.一個(gè)常用的方案實(shí)例是:發(fā)起端發(fā)送隨機(jī)長(zhǎng)度及內(nèi)容的字符串加上自己的用戶名作為"密鑰"發(fā)送出來(lái),接受到"challenge"的一方將收到的字符串和與對(duì)方用戶名相對(duì)應(yīng)的本端用戶的密碼使用MD5算法計(jì)算后發(fā)回,然后發(fā)起端將收到的計(jì)算結(jié)果和本端MD5計(jì)算該隨機(jī)字符串加自己密碼的結(jié)果相對(duì)照,如果雙發(fā)一致,則認(rèn)證成功.
另一種認(rèn)證方式PAP方式相比就簡(jiǎn)單很多,直接由被驗(yàn)證方將自己的用戶名和密碼明文方式發(fā)送給對(duì)端,由對(duì)端對(duì)用戶名和密碼驗(yàn)證來(lái)決定是否認(rèn)證成功.所以,比較而言,CHAP是一種相對(duì)更安全一些的驗(yàn)證方式.
需要注意的是,PPP兩端雙方向的鑒權(quán)方式可以不同,即A端為B端鑒權(quán)時(shí)使用PAP方式(B發(fā)送自己的用戶名和密碼給請(qǐng)A認(rèn)證),而同時(shí)B端使用CHAP方式為A端鑒權(quán)(B向A發(fā)起CHAP挑戰(zhàn)),是完全可以的.
如果鑒別階段成功,則PPP狀態(tài)機(jī)進(jìn)入"網(wǎng)絡(luò)"階段.這個(gè)階段主要是使用NCP報(bào)文來(lái)協(xié)商將PPP封裝怎樣的網(wǎng)絡(luò)層的問(wèn)題.NCP報(bào)文及協(xié)商流程和LCP極為相似,就不過(guò)多介紹了.
經(jīng)過(guò)網(wǎng)絡(luò)階段后,PPP狀態(tài)機(jī)進(jìn)入OPEN打開(kāi)狀態(tài),在這個(gè)狀態(tài)下,PPP鏈路上的三層數(shù)據(jù)報(bào)文即可正常通信了.