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