PPP協定格式分析
轉載注明位址:http://hi.baidu.com/luv%5Fresplendent/blog/item/f92a6dbf5cb83b0f19d81fd5.html
利用AT指令無線子產品連接配接上了中國移動的GPRS的WAP網關之後,接着是進行PPP連接配接。GPRS撥号采用的是點對點協定(Point to Point Protocol, PPP),該協定是是TCP/IP網絡協定包的一個成員。其主要作用是無線子產品通過撥接上網上終端伺服器後,由PPP取得一個臨時的IP位址,使該裝置成為網絡上的一個節點。隻要PPP鍊路順利建立成功,獲得臨時的IP位址,則即可在其上嵌入IP等資料包進行資料傳送,完成無線子產品的無線網絡連接配接。
PPP協定(Point-to-Point Protocol點到點協定)是為在同等單元之間傳輸資料包這樣的簡單鍊路設計的鍊路層協定。這種鍊路提供全雙工操作,并按照順序傳遞資料包。其目的主要是用來通過撥号或專線方式建立點對點連接配接發送資料,使其成為各種主機、網橋和路由器之間簡單連接配接的一種共通的解決方案。
PPP協定中提供了一整套方案來解決鍊路建立、維護、拆除、上層協定協商、認證等問題。PPP協定包含了以下幾個部分:
.鍊路控制協定LCP (Link Control Protocol):LCP負責建立,維護或終止一次實體連接配接;
.網絡控制協定NCP (Network Control Protocol):NCP是一族協定,負責解決實體連接配接上運作什麼網絡協定,以及解決上層網絡協定發生的問題;
.認證協定,PPP協定支援兩種驗證協定:密碼驗證協定PAP (Password Authentication Protocol)和挑戰握手驗證協定CHAP (Challenge-Handshake Authentication Protocol)。驗證過程在PPP協定中為可選項,在連接配接建立後進行連接配接者身份驗證的目的是為了防止有人在未經授權的情況下成功連接配接,進而導緻洩密。PAP是一種簡單的明文驗證方式,安全性較差。而CHAP是對PAP的改進,是一種加密的驗證方式,使用挑戰密碼以雜湊演算法對密碼進行加密,用三次握手的方法周期性地檢驗對端的節點,優點在于密鑰不在網絡中傳送,不會被竊聽。本課題中采用的是挑戰握手驗證協定CHAP.
PPP連接配接的建立主要經過三個階段,
分别是LCP連接配接協商、CHAP密碼認證以及CP網絡層協定配置。
第一階段:LCP連接配接協商
在這個階段,将對基本的通訊方式進行選擇。鍊路兩端裝置通過LCP向對方發送LCP資料報配置請求(Configure-Request),對方同意接收後雙方互發LCP資料報配置應答(Configure-Ack )。一旦一個配置成功資訊包(Configure-Ack packet)被發送且被接收,就完成了交換,進入LCP開啟狀态。
第二階段:CHAP密碼認證
在這個階段,用戶端會将自己的身份發送給遠端的接入伺服器。伺服器向使用者發PPP CHAP安全性認證挑戰,接着使用者給伺服器送PPP CHAP安全性認證響應,伺服器再向使用者發送 PPP CHAP安全性認證成功。
該階段使用一種安全驗證方式避免第三方竊取資料或冒充遠端客戶接管與用戶端的連接配接。在認證完成之前,禁止從認證階段前進到網絡層協定階段。如果認證失敗,認證者應該躍遷到鍊路終止階段。
第三階段:NCP網絡層協定配置
認證階段完成之後,PPP将調用在鍊路建立階段(階段一)標明的各種網絡控制協定(NCP )。標明的NCP解決PPP鍊路之上的高層協定問題,例如,在該階段IP控制協定(IPCP)可以向撥入使用者配置設定動态IP位址。在這個階段,先是使用者向伺服器發送PPP NCP網絡控制資料包(網絡協定配置,要求伺服器提供IP位址和DNS,NBNS資訊),接着伺服器向使用者發送配置請求PPP NCP網絡控制資料包(為使用者配置設定IP位址),使用者向伺服器發送配置應答PPP NCP網絡控制資料包(接受所配置設定的IP位址),最後伺服器向使用者發送配置應答PPP NCP網絡控制資料包(同意使用者的IP位址和DNS位址)。
這樣,經過三個階段以後,一條完整的PPP鍊路就建立起來了,使用者即可向伺服器
發送IP資料包。
PPP協定為串行鍊路上傳輸的資料報定義了一種封裝方法,它基于高層資料鍊路控
制(HDLC)标準,PPP協定幀的格式根據RFC1661協定定義,幀格式如表所示
表4.2
協定字段其值代表其後的資料字段所屬的網絡層協定(RFC 1340定義),如:
0x0021— IP OP協定)
OxC021— LCP(鍊路控制協定)
0x8021— NCP(網絡控制協定)
OxC023— PAP(密碼認證協定Password Authentication Protocol)
OxC025— LQR(鍊路品質報告Link Quality Report)
OxC223— CHAP(挑戰握手認證協定Challenge Handshake Authentication Protocol)
PPP幀以标志字段Ox7E開始和結束;資訊字段包含協定字段中指定協定的資料報,
長度為<<1500位元組;FCS字段為兩個位元組,是整個幀的循環備援校驗碼,用來檢測傳輸
中可能出現的資料錯誤。
下面對PPP建立的三個階段:LCP, CHAP和NCP的幀格式分别進行分析:
(1) LCP協定幀的格式根據RFC 1570協定定義,幀格式如表4.3所示[19] .
表4.3 LCP協定幀格式
其中:Code—代碼,表示不同的PDU:
0x01— Configure-req (4B+所有選項長度)
0x02— Configure-Ack (4B+所有選項長度)
0x03— Configure-Nak (4B+所有選項長度)
004-Configure-Reject (4B+所有選項長度)
0x05— Terminate-req (4B+額外資料)
0x06— Terminate-Ack (4B+額外資料)
007-Code-Reject (4B+Reject幀長)
008-Protocol-Reject (6B+Reject幀長)
0x09— Echo-req(8B+額外資料)
WA-Echo-Reply (8B+額外資料)
OxOB— Discard-req (8B+額外資料)
WC -Identification (8B+額外資料)
OxOD— Time-Remaining(12B+額外資料)
Identifie一辨別符,接受和發送的辨別符是比對的
Length— LCP長度,包括代碼、辨別符、長度、選項和資料
Option選項—協商的内容,格式為(RFC 1340定義),如下表所示
(2) CHAP協定幀的格式根據RFC 1994協定定義,幀格式如下表所示
Code Identifier Length Data
1B 1B 2B 可變
其中:Code—代碼,表示不同的PDU
0x01 challenge質詢(合法性)
0x02 --response響應
0x03— success成功
0x04— failure失敗
Identifie一辨別符,質詢、響應和成功的辨別符是比對的
Length— CHAP長度,包括代碼、辨別符、長度和資料
(3) NCP協定幀的格式根據RFC1332協定定義,幀格式下所示:
Code Identifier Length Option Data
1B 1B 2B 可變 可變
其中:Code—代碼,表示不同的PDU
0x01— Configure-req
0x02— Configure-Ack
0x03— Configure-Nak
0x04— Configure-Reject
0x05— Terminate-req
0x06一 Terminate-Ack
0x07— Code-Reject
Identifie一辨別符,接受和發送的辨別符是比對的
Length— LCP長度,包括代碼、辨別符、長度、選項和資料
Option選項—協商的内容,格式為(由RFC 1332定義),如表
轉載注明位址:http://hi.baidu.com/luv%5Fresplendent/blog/item/f92a6dbf5cb83b0f19d81fd5.html
下一篇:無線網絡連接配接的資料分析