PPP協議鏈路操作的軟件實現
發布時間:2008/6/5 0:00:00 訪問次數:1460
ppp(point-to-point protocol,點到點協議)是為在同等單元之間傳輸數據包這樣的簡單鏈路設計的鏈路層協議。這種鏈路提供全雙工操作,并按照順序傳遞數據包。設計目的主要是用來通過撥號或專線方式建立點對點連接發送數據,使其成為各種主機、網橋和路由器之間簡單連接的一種共同的解決方案。
ppp協議分為3個組成部分:
(1)一個將ip數據報封裝到串行鏈路的方法。ppp封裝提供了不同網絡層協議同時通過統一鏈路的多路技術,使其保有對常用支持硬件的兼容性。
(2)一個用來建立、配置和測試數據鏈路連接的鏈路控制協議lcp(link control protoco1)。通信的雙方可通過lcp包協商一些選項。
(3)一套網絡控制協議(network control protoco1)。ncp是一族協議,負責解決物理連接上運行什么網絡協議,以及解決上層網絡協議發生的問題。他支持不同的網絡層協議,如ip,osi的網絡層,deccnet,以及appletalk等。
ppp幀封裝格式如下:
ppp幀以標志字符01111110開始和結束,地址字段長度為1b,內容為標準廣播地址1111111l,控制字段為00000011。協議字段長度為2b,其值代表其后的數據字段所屬的網絡層協議。數據字段包含協議字段中指定的協議的數據報,長度為0~1 500b。crc字段為整個幀的循環冗余校驗碼,用來檢測傳輸中可能出現的數據錯誤。
對應ppp協議的3個部分,ppp數據幀封裝也分為:ip數據報封裝、lcp控制數據封裝、ncp控制數據封裝。當ppp幀的協議字段為0x0021時,信息字段就是ip數據報;當協議字段為0xc021時,信息字段是lcp控制數據;當協議字段為0x8021,信息字段是ncp控制數據。
2 鏈路建立和狀態機
2.1 ppp鏈路建立的概述
一次完整的ppp回話過程包括4個階段:鏈路建立階段、認證階段、網絡層控制協議階段和鏈路終止階段。本文討論和實現的是鏈路建立階段。
鏈路建立過程如下:請求建立鏈接的一端用i。cp配置信息包(configure packets)建立連接。對端收到配置信息包以后,如果認為收到的配置請求及協商選項可以接受,將發送配置成功信息包(configure-ack packet),當一個配置成功信息包被發送且被接收,就完成了鏈路建立。在lcp建立完成以后,如果收到lcp配置請求包(lcp configure-request),鏈路將從網絡層協議階段或者認證階段返回到鏈路建立階段。
通常線路兩端要對如下的內容進行協商,這些內容包含在lcp配置請求包中:
(1)maximum-receive-unit(最大-接收-單元)
(2)authentication-protocol(鑒定-協議)
(3)quality-protocol(質量-協議)
(4)magic-number
(5)protocol-field-compression(協議-域-壓縮)
(6)address-and-control-field-compression(地址-和-控制-域-壓縮)
2.2 有限狀態機模型
ppp協議的lcp層的連接及協商過程比較復雜,通常使用狀態機模型來解釋ppp狀態的詳細變遷情況。
狀態機是一種記錄下給定時刻狀態的設備,并根據輸入,對每個給定的改變,改變其狀態或引發一個動作。有限態自動機由事件、動作和狀態轉換定義,通過狀態機可以詳細解釋ppp協議中lcp鏈路建立的狀態轉換過程。lcp操作的狀態機可以分為以下的要素: 狀態 狀態(當前狀態和下一狀態)以及狀態轉換,是狀態機的基本概念。他指明狀態機當前時刻在做什么,處于什么情況。在lcp的鏈路連接狀態機中,共有10種狀態:initial,starting,closed,stopped,closing,stopping,req-sent,ack-received,ack--sent,opened。
事件 自動機里的狀態轉換是由事件引起的。在鏈路連接協商時,本端從線路的對端發送過來的lcp包和自己的狀態,判斷將要發生的事件,并結合當前的狀態判斷系統的下一狀態。在i.cp的鏈路建立過程中,事件種類較多,大概可以分為以下幾類:
①網絡狀態事件,表明i.cp或者ncp的狀態變化,包括up,down,open,close。
②超時計時器事件,與超時計時器有關的事件,包括to+,to一。
③s/t數據包事件,包括rcr+,rcr一,rca,rcn,rtr。rta,ruc,rxj+,rxj一,rxr。
動作 自動機中的動作由事件引起,所以,每個事件都對應了相應的動作。例如,有些動作表明了不同類型的lcp包的傳輸和(或)restar timer的啟動和停止。
狀態跳轉表 在ppp的鏈路操作中,每個狀態,在經過特定的事件后,會轉變成新的狀態,并有可能有相應的事件。這些關系比較復雜,可以用狀態跳轉表來表示。
3 軟件實現
3.1 軟件原理
ppp鏈路的建立、協商和握手的過程是需要建立連接的雙方來完成的。每一方根據對端發送的lcp包的類型,做出相
ppp(point-to-point protocol,點到點協議)是為在同等單元之間傳輸數據包這樣的簡單鏈路設計的鏈路層協議。這種鏈路提供全雙工操作,并按照順序傳遞數據包。設計目的主要是用來通過撥號或專線方式建立點對點連接發送數據,使其成為各種主機、網橋和路由器之間簡單連接的一種共同的解決方案。
ppp協議分為3個組成部分:
(1)一個將ip數據報封裝到串行鏈路的方法。ppp封裝提供了不同網絡層協議同時通過統一鏈路的多路技術,使其保有對常用支持硬件的兼容性。
(2)一個用來建立、配置和測試數據鏈路連接的鏈路控制協議lcp(link control protoco1)。通信的雙方可通過lcp包協商一些選項。
(3)一套網絡控制協議(network control protoco1)。ncp是一族協議,負責解決物理連接上運行什么網絡協議,以及解決上層網絡協議發生的問題。他支持不同的網絡層協議,如ip,osi的網絡層,deccnet,以及appletalk等。
ppp幀封裝格式如下:
ppp幀以標志字符01111110開始和結束,地址字段長度為1b,內容為標準廣播地址1111111l,控制字段為00000011。協議字段長度為2b,其值代表其后的數據字段所屬的網絡層協議。數據字段包含協議字段中指定的協議的數據報,長度為0~1 500b。crc字段為整個幀的循環冗余校驗碼,用來檢測傳輸中可能出現的數據錯誤。
對應ppp協議的3個部分,ppp數據幀封裝也分為:ip數據報封裝、lcp控制數據封裝、ncp控制數據封裝。當ppp幀的協議字段為0x0021時,信息字段就是ip數據報;當協議字段為0xc021時,信息字段是lcp控制數據;當協議字段為0x8021,信息字段是ncp控制數據。
2 鏈路建立和狀態機
2.1 ppp鏈路建立的概述
一次完整的ppp回話過程包括4個階段:鏈路建立階段、認證階段、網絡層控制協議階段和鏈路終止階段。本文討論和實現的是鏈路建立階段。
鏈路建立過程如下:請求建立鏈接的一端用i。cp配置信息包(configure packets)建立連接。對端收到配置信息包以后,如果認為收到的配置請求及協商選項可以接受,將發送配置成功信息包(configure-ack packet),當一個配置成功信息包被發送且被接收,就完成了鏈路建立。在lcp建立完成以后,如果收到lcp配置請求包(lcp configure-request),鏈路將從網絡層協議階段或者認證階段返回到鏈路建立階段。
通常線路兩端要對如下的內容進行協商,這些內容包含在lcp配置請求包中:
(1)maximum-receive-unit(最大-接收-單元)
(2)authentication-protocol(鑒定-協議)
(3)quality-protocol(質量-協議)
(4)magic-number
(5)protocol-field-compression(協議-域-壓縮)
(6)address-and-control-field-compression(地址-和-控制-域-壓縮)
2.2 有限狀態機模型
ppp協議的lcp層的連接及協商過程比較復雜,通常使用狀態機模型來解釋ppp狀態的詳細變遷情況。
狀態機是一種記錄下給定時刻狀態的設備,并根據輸入,對每個給定的改變,改變其狀態或引發一個動作。有限態自動機由事件、動作和狀態轉換定義,通過狀態機可以詳細解釋ppp協議中lcp鏈路建立的狀態轉換過程。lcp操作的狀態機可以分為以下的要素: 狀態 狀態(當前狀態和下一狀態)以及狀態轉換,是狀態機的基本概念。他指明狀態機當前時刻在做什么,處于什么情況。在lcp的鏈路連接狀態機中,共有10種狀態:initial,starting,closed,stopped,closing,stopping,req-sent,ack-received,ack--sent,opened。
事件 自動機里的狀態轉換是由事件引起的。在鏈路連接協商時,本端從線路的對端發送過來的lcp包和自己的狀態,判斷將要發生的事件,并結合當前的狀態判斷系統的下一狀態。在i.cp的鏈路建立過程中,事件種類較多,大概可以分為以下幾類:
①網絡狀態事件,表明i.cp或者ncp的狀態變化,包括up,down,open,close。
②超時計時器事件,與超時計時器有關的事件,包括to+,to一。
③s/t數據包事件,包括rcr+,rcr一,rca,rcn,rtr。rta,ruc,rxj+,rxj一,rxr。
動作 自動機中的動作由事件引起,所以,每個事件都對應了相應的動作。例如,有些動作表明了不同類型的lcp包的傳輸和(或)restar timer的啟動和停止。
狀態跳轉表 在ppp的鏈路操作中,每個狀態,在經過特定的事件后,會轉變成新的狀態,并有可能有相應的事件。這些關系比較復雜,可以用狀態跳轉表來表示。
3 軟件實現
3.1 軟件原理
ppp鏈路的建立、協商和握手的過程是需要建立連接的雙方來完成的。每一方根據對端發送的lcp包的類型,做出相