《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 點(diǎn)對點(diǎn)通信協(xié)議PPPoE模塊的設(shè)計
點(diǎn)對點(diǎn)通信協(xié)議PPPoE模塊的設(shè)計
電子發(fā)燒友
摘要: 點(diǎn)對點(diǎn)通信協(xié)議PPPoE模塊的設(shè)計,目前,實(shí)現(xiàn)PPPoE協(xié)議的軟件有多種,且多數(shù)都是應(yīng)用于PC機(jī)。該類軟件的作用主要是操作系統(tǒng)的撥號(P
Abstract:
Key words :

目前,實(shí)現(xiàn)PPPoE協(xié)議的軟件有多種,且多數(shù)都是應(yīng)用于PC機(jī)。該類軟件的作用主要是操作系統(tǒng)的撥號(PPP)協(xié)議與以太網(wǎng)協(xié)議建立連接,通過PPPoE協(xié)議與ISP連接,獲得Internet連接服務(wù)。而本考到嵌入式系統(tǒng)的特點(diǎn),直接在網(wǎng)絡(luò)協(xié)議數(shù)據(jù)鏈路層實(shí)現(xiàn)PPPoE協(xié)議。這樣做省去了鏈路層的PPP包到PPPoE包的轉(zhuǎn)換,提高了效率,并且具有良好的可移植性。

1 PPPoE協(xié)議框架

PPPoE協(xié)議共包括兩個階段,即PPPoE的媽現(xiàn)階段(PPPoE Discovery Stage)和PPPoE的會話階段(PPPoE Session Stage)。本文著重介紹PPPoE發(fā)現(xiàn)階段。對于PPPoE會話階段,可以看成與PPP的會話過程基本一樣,當(dāng)然兩者在數(shù)據(jù)的封裝上還是有區(qū)別的。PPPoE并不需要PPP協(xié)議中的起始位標(biāo)志、地址位、控制位和結(jié)束標(biāo)志,也不需要PPP協(xié)議中規(guī)定的數(shù)據(jù)轉(zhuǎn)譯和CRC校驗,但要在PPP的數(shù)據(jù)報文前封裝PPPoE的報文頭。無論是哪一個階段的數(shù)據(jù)報文最終會被封裝成以太網(wǎng)幀傳送。

如果主機(jī)要開始一個PPPoE會話,它首先會在網(wǎng)絡(luò)上發(fā)送一個廣播,通過廣播尋找一個訪問集中器AC(Access Concentration)。當(dāng)網(wǎng)絡(luò)上存在多個訪問集中器時,主機(jī)根據(jù)訪問集中器所能提供的服務(wù)或用戶預(yù)先配置的信息進(jìn)行相應(yīng)的選擇。訪問集中器選定后,主機(jī)開始與所選擇的訪問集中器建立一個PPPoE會話進(jìn)程。在這一過程中,訪問集中器會為每一個PPPoE會話分配一個惟一的進(jìn)程ID,會話建立后就開始了PPPoE的會話階段。在這個階段,已建立好點(diǎn)對點(diǎn)(邏輯點(diǎn)對點(diǎn))連接的雙方采用PPP協(xié)議交換數(shù)據(jù)報文,從而完成一系列PPP的過程,最終將在這個點(diǎn)對點(diǎn)的邏輯通道上進(jìn)行網(wǎng)絡(luò)層數(shù)據(jù)包的傳送。

PPPoE可以理解為在以太網(wǎng)上跑PPP數(shù)據(jù),因此,其幀格式與以太幀格式一致,如圖1所示。通過類型域字段的內(nèi)容,數(shù)據(jù)包的接收方可以識別以太網(wǎng)的數(shù)據(jù)域中承載的是什么協(xié)議的數(shù)據(jù)報文。PPPoE的兩大階段,也正是通過以太網(wǎng)的類型域進(jìn)行區(qū)分的。這個域的值,在發(fā)現(xiàn)階段為0x8863,而在會話階段為0x8864。

PPPoE幀的載荷字承載PPPoE數(shù)據(jù)報文,報文格式如圖2所示,其中各字段的含義如下:

1)版本字段(ver)標(biāo)志著協(xié)議版本信息,為4bits,目前協(xié)議規(guī)定其值為0x1。

2)類型字段(type),4bits,標(biāo)志類型信息,值為0x1。

3)編碼字段(code),單個字節(jié),在不同階段具有不同取值,本文稍候詳細(xì)分析。

4)會話ID字段(session id)由兩個字節(jié)組成,在發(fā)現(xiàn)階段,取值為0x0000,在后續(xù)的整個PPPoE會話過程中取值為發(fā)現(xiàn)階段所獲得的由AC分配的惟一值。

5)長度字段(length)由兩個字節(jié)組成,指示payload字段的長度,取值可以是0~1500。

6)凈載荷字荷(payload),該字段存放PPPoE協(xié)議幀所承載的數(shù)據(jù),在發(fā)現(xiàn)階段承載零個或多個TAG結(jié)構(gòu),在會話階段承載PPP協(xié)議數(shù)據(jù)。但不是簡單的PPP封裝,因為并不需要PPP協(xié)議中的起始位標(biāo)志、地址位、控制位和結(jié)束標(biāo)志,也不需要PPP協(xié)議中規(guī)定的數(shù)據(jù)轉(zhuǎn)譯和CRC校驗。TAG結(jié)構(gòu)如圖3所示。

2 PPPoE協(xié)議分析

PPPoE協(xié)議分為發(fā)現(xiàn)(Discovery)階段和會話(Session)階段。發(fā)現(xiàn)階段是一個無狀態(tài)的階段,該階段主要選擇訪問集中器,確定所要建立的PPP會話標(biāo)識符Session ID,同時獲得對方點(diǎn)到點(diǎn)的連接信息;PPP會話階段執(zhí)行標(biāo)準(zhǔn)的PPP過程。

1)發(fā)現(xiàn)階段

一個典型的發(fā)現(xiàn)階段分為四個步驟,當(dāng)整個發(fā)現(xiàn)階段結(jié)束后,通信雙方分別獲取對方的MAC地址,并且共用一個Session ID,這兩個參數(shù)共同確定一個PPPoE會話。

第一步,發(fā)送PADI(PPPoE Active Discovery Initiation)幀。在PPPoE的以太幀結(jié)構(gòu)中,編碼域的值為0x09,會話ID域的值設(shè)為0x0000。在這個步驟中,以太網(wǎng)目的地址為廣播并且在包中必須包含一個確切的服務(wù)名。

第二步,接收PADO(PPPoE Active Discovery Offer)幀。這一過程就是當(dāng)ISP的PPPoE訪問集中器收到PADI幀后,若能夠滿足PADI提出的服務(wù)請求,可以發(fā)送PADO幀回應(yīng)。PADO幀中的目的地址為發(fā)送PADI幀的客戶端的MAC地址,源地址為響應(yīng)PADO幀的服務(wù)器地址。編碼域的值為0x07,會話ID域的值也設(shè)為0x0000。PADO幀還要包括PADI幀所提出的服務(wù)項。

第三步,發(fā)送PADR(PPPoE Active Discovery Request)幀。由于PADI包是廣播式的,故主機(jī)可能收到多個PADO響應(yīng)幀。主機(jī)在可能收到的多個PADO幀中根據(jù)訪問集中器的名稱標(biāo)簽或能提供的服務(wù)標(biāo)簽選擇一個合適的訪問集中器,然后向所選擇的訪問集中器發(fā)送PPPoE有效發(fā)現(xiàn)請求(PADR)幀。其編碼域為0x19,Session ID域仍為0x0000,PADR幀必須包含一個服務(wù)名稱類型標(biāo)簽,確定向接入服務(wù)請求的服務(wù)種類。

第四步,接收PADS(PPPoE Active Discovery Sessionconfirmation)幀。訪問集中器收到PADR幀后開始PPP會話,它發(fā)送一個PPPoE有效發(fā)現(xiàn)會話確認(rèn)(PADS)幀。其編碼域為0x65,會話ID域此時為接入服務(wù)器所產(chǎn)生的惟一PPPoE會話標(biāo)識號碼。PADS幀也必須包含一個訪問集中器名稱類型的標(biāo)簽,確認(rèn)向主機(jī)提供的服務(wù)。當(dāng)主機(jī)收到PADS幀確認(rèn)后,雙方進(jìn)入PPP會話階段。若訪問集中器不能提供PADR中的服務(wù)名稱標(biāo)簽所定義的服務(wù),它必須回復(fù)PADS幀,此幀必須包含標(biāo)簽類型Sevice-Name-Error的標(biāo)簽,此時SESSION_ID必須為0x0000。

在完成上述步驟后,雙方進(jìn)入會話階段。會話建立后,會話雙方任何一方都可以通過發(fā)送PADT(PPPoE active discover terminate)幀終止會話。PADT幀中的編碼字段值為0xA7,SEEION_ID字幀為在發(fā)現(xiàn)階段結(jié)束之后得到的會話ID值,以太幀類型字段還是0x8863。發(fā)送PADT后則該次PPPoE過程結(jié)束。

2)會話階段

當(dāng)PPPoE會話開始后,PPP數(shù)據(jù)就像普通的PPP數(shù)據(jù)被傳送,這時以太幀的目的地址是單播地址,類型為0x8864,編碼域必須是0x00,SESSION_ID必須是發(fā)現(xiàn)階段建立的SESSION_ID,且在會話過程中不能改變。PPPoE凈載荷是PPP幀,會話過程實(shí)際上也就是實(shí)現(xiàn)PPP協(xié)議的過程,PPP分為三個階段。首先通過LCP完成相關(guān)鏈路控制協(xié)商過程,主要是建立、配置、測試數(shù)據(jù)鏈路,根據(jù)雙方的需求,進(jìn)行鏈路的協(xié)商和配置。PAP密碼認(rèn)證后,通過NCP,針對不同的網(wǎng)絡(luò)層協(xié)議的網(wǎng)絡(luò)控制階段。最后就是IP數(shù)據(jù)的傳輸階段。

3 PPPoE模塊軟件設(shè)計

應(yīng)用于嵌入式系統(tǒng)的PPPoE軟件模塊主要通過系統(tǒng)中的以太網(wǎng)絡(luò)驅(qū)動在鏈路層與訪問集中器建立一個邏輯上點(diǎn)對點(diǎn)的通信鏈路,為上層TCP/IP協(xié)議棧服務(wù)。發(fā)送數(shù)據(jù)時,將上層IP分組封裝成PPPoE協(xié)議幀發(fā)送出去。在接收數(shù)據(jù)時,將接收到的PPPoE協(xié)議幀解析后,交由上層模塊處理,如圖4所示。與訪問集中器建立通信鏈路的過程是軟件設(shè)計的核心部分。

 PPPoE發(fā)現(xiàn)階段流程如圖5所示。發(fā)現(xiàn)階段分為四個過程完成:發(fā)送PADI、接收PADO、發(fā)送PADR和接收PADS。在發(fā)送PADI和PADR時要分別定時和計數(shù),在有限的時間內(nèi)沒有收到響應(yīng),就應(yīng)重新發(fā)送;如果在重復(fù)發(fā)送若干次之后還沒有相應(yīng),說明此時網(wǎng)絡(luò)故障或者網(wǎng)絡(luò)上沒有能夠響應(yīng)請示的服務(wù)器。

PPPoE會話階段是一個標(biāo)準(zhǔn)的PPP協(xié)商過程。整個協(xié)商過程為三部分:LCP Negotiation、PAP Negotiation、IPCP Negotiation。 LCP階段主要通過交換數(shù)據(jù)包與訪問集中器建立和配置鏈路,LCP流程如圖6所示。由于ISP提供商可能會不同,所接收到的LCP_REQ中包含的選項也可能不同,但其中必然包括OPTION3,表示鏈路所用的認(rèn)證協(xié)議(Authentication Protocol)。實(shí)踐中根據(jù)與ISP的PPPoE過程的數(shù)據(jù)包分析,多數(shù)ISP采用PAP(Password Authentication Protocol)認(rèn)證協(xié)議。也有的ISP采用CHAP(Challenge Handshake Authentication Protocol)認(rèn)證協(xié)議,雙方可以通過協(xié)商采用合適的認(rèn)證協(xié)議,本文采用PAP。

PAP協(xié)商過程比較簡單,發(fā)送PAP請求數(shù)據(jù)包,其中包括幀號和密碼,ISP返回確認(rèn)數(shù)據(jù)包,PAP協(xié)商過程結(jié)束。

IPCP階段的目的是獲取ISP方提供的IP地址,流程如圖7所示。所以在IPCP階段的協(xié)商主要針對OPTION3進(jìn)行。PPPoE模塊首先接收服務(wù)器端一個IPCP_REQ,這個IPCP_REQ包括OPTION3(其IP地址值通常無效);接著PPPoE模塊發(fā)送一個IPCP_ACK,ISP方會響應(yīng)一個帶有有效地址的IPCP_NAK;然后PPPoE模塊就以這個地址再發(fā)一個IPCP_REQ,ISP服務(wù)器回應(yīng)IPCP_ACK,IPCP結(jié)束。此時PPPoE模塊得到限服務(wù)器分配的有效I守址,隨后就可以在PPPoE協(xié)議之上傳送IP數(shù)據(jù)包。需要注意的是,在PPP協(xié)商過程結(jié)束后,服務(wù)器為了檢驗接入方鏈路的活動狀態(tài),會定期發(fā)出LCP EchoRequest請求,此時PPPoE模塊需要發(fā)送LCP Echo-ACK作為應(yīng)答。

嵌入式系統(tǒng)程序設(shè)計的特點(diǎn)是面向特定應(yīng)用,由于資源有限,軟件必須去除冗余。本PPPoE模塊應(yīng)用在以太電話中,在程序模塊設(shè)計中針對性地實(shí)現(xiàn)PPPoE協(xié)議的主要功能,盡量使代碼短小精悍,如省略掉了PPPoE發(fā)現(xiàn)階段網(wǎng)絡(luò)上有多個AC的情況,還省略了在會話階段對于LCP OPTION3(認(rèn)證協(xié)議)以外選項的協(xié)商和IPCP PTION3(IP地址)以外的選項的協(xié)商等情況。它些情況,PPPoE模塊需要更多的代碼來處理,而對于以太話機(jī)這種特定的應(yīng)用,有些選項是不必要的。另外,在軟件結(jié)構(gòu)設(shè)計中,采用“超循環(huán)”結(jié)構(gòu)來解決無操作系統(tǒng)問題,可以很好地實(shí)現(xiàn)以太話機(jī)中的任務(wù)調(diào)度功能。在代碼編寫上,采用C和匯編相結(jié)合的方法提高程序效率,同時采用流水操作、Inline、全局變量和共享內(nèi)存等技術(shù)實(shí)現(xiàn)代碼長度和數(shù)據(jù)空間的優(yōu)化。測試表明,實(shí)現(xiàn)PPPoE軟件所需的代碼空間和數(shù)據(jù)空間都比PC機(jī)環(huán)境下PPPoE軟件代碼要小得多。

PPPoE協(xié)議是當(dāng)今ADSL寬帶接入Internet的主要技術(shù)之一,而嵌入式技術(shù)是如今IT技術(shù)發(fā)展的熱點(diǎn),廣泛應(yīng)用于信息家電和各種媒體通信終端設(shè)備。本文在對PPPoE協(xié)議深入分析的基礎(chǔ)上,結(jié)合嵌入式系統(tǒng)的特點(diǎn),提出了PPPoE在嵌入式系統(tǒng)上的具體實(shí)現(xiàn)方法,通過運(yùn)用這些優(yōu)化方法,使軟件代碼空間和數(shù)據(jù)空間大大減少。目前該軟件模塊已成功應(yīng)用在筆者自己開發(fā)的以太話機(jī)中。實(shí)際運(yùn)行表明,軟件運(yùn)行穩(wěn)定、互通性好,所實(shí)現(xiàn)的PPPoE協(xié)議軟件具有良好的應(yīng)用價值。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美亚洲一区二区三区| 国产一区二区日韩精品| 亚洲视频在线观看| 欧美视频在线观看一区| 亚洲视频1区2区| 亚洲视频视频在线| 亚洲精选视频在线| 国产精品高潮呻吟久久av黑人| 久久都是精品| 亚洲国产日韩综合一区| 亚洲精品一区二区三区不| 国产精品第2页| 欧美色视频日本高清在线观看| 欧美精品激情blacked18| 亚洲欧美激情诱惑| 久久国产精品一区二区三区| 亚洲三级色网| 亚洲精品视频免费观看| 亚洲日本无吗高清不卡| 国产麻豆精品theporn| 免费成人黄色av| 亚洲素人在线| 久久er精品视频| 欧美在线免费观看| 99精品国产福利在线观看免费| 国产女人精品视频| 国产欧美一区二区精品忘忧草| 欧美承认网站| 亚洲综合视频1区| 亚洲综合精品四区| 香蕉久久a毛片| 亚洲精选中文字幕| 欧美一区日韩一区| 欧美一区二区私人影院日本 | 欧美三级视频在线观看| 亚洲欧洲日本在线| 亚洲黄色在线| 国产美女高潮久久白浆| 国产一区二区0| 亚洲电影av在线| 国产日韩欧美一区| 欧美日韩在线视频首页| 久久久蜜桃一区二区人| 夜色激情一区二区| 久久av免费一区| 亚洲欧洲在线一区| 午夜久久资源| 亚洲视频欧美在线| 性刺激综合网| 亚洲韩日在线| 亚洲线精品一区二区三区八戒| 性娇小13――14欧美| 久久久精品五月天| 亚洲一区国产一区| 亚洲国产精品一区二区第一页| 亚洲伦伦在线| 香港久久久电影| 欧美成人激情视频| 国产精品国产a级| 红桃视频一区| 国产一区二区高清| 亚洲黄色成人| 亚洲欧美日本日韩| 亚洲无限乱码一二三四麻| 性8sex亚洲区入口| 日韩亚洲视频在线| 亚洲精品一区二区三区蜜桃久| 亚洲一区二区三区精品在线观看 | 在线观看亚洲视频啊啊啊啊| 国产毛片精品国产一区二区三区| 好男人免费精品视频| 亚洲精品一区二区三区99| 午夜精品一区二区三区四区| 亚洲美女在线看| 久久精品视频在线免费观看| 欧美日韩18| 欧美日韩国产不卡| 欧美日韩精品| 黄色成人免费网站| 亚洲亚洲精品三区日韩精品在线视频| 一区二区三区高清| 亚洲日本va午夜在线电影 | aa成人免费视频| 久久国产精品久久久| 欧美日本在线观看| 国语自产偷拍精品视频偷| 一区二区三区www| 亚洲精品极品| 99re66热这里只有精品4| 欧美一区二区视频在线观看| 欧美日韩精品在线| 在线精品观看| 久久本道综合色狠狠五月| 亚洲欧洲99久久| 欧美亚洲综合在线| 欧美日韩国产综合视频在线| 狠狠色综合一区二区| 亚洲欧美综合另类中字| 亚洲午夜一二三区视频| 欧美精品激情| 亚洲黄色av一区| 亚洲黄色在线| 久久资源在线| 欧美另类videos死尸| 国产亚洲成人一区| 亚洲自啪免费| 久久国产福利国产秒拍| 亚洲欧美国产制服动漫| 欧美三级欧美一级| 亚洲精品一二区| 99天天综合性| 欧美日本一区二区三区| 亚洲欧洲在线播放| 日韩午夜激情电影| 欧美高清在线观看| 国产精品成人一区二区| 国产亚洲精品久久久久久| 亚洲一区久久久| 亚洲欧美一区在线| 国产精品露脸自拍| 激情亚洲成人| 在线综合欧美| 亚洲无线观看| 国产精品激情| 亚洲欧美日韩成人| 欧美在线亚洲| 欧美精品乱人伦久久久久久 | 亚洲欧美一区二区原创| 国产精品欧美风情| 亚洲性xxxx| 欧美一区二区三区播放老司机| 国产精品手机视频| 伊大人香蕉综合8在线视| 亚洲成人资源| 亚洲一区二区三区在线播放| 欧美日韩中文字幕| 国产免费亚洲高清| 亚洲视频免费| 欧美一区二区三区视频在线观看| 国产精品欧美经典| 亚洲自拍偷拍视频| 久久精品人人做人人综合| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲成人在线视频播放 | 亚洲精品一区二区三区婷婷月 | 最新国产精品拍自在线播放| 你懂的一区二区| 久久精品2019中文字幕| 国产欧美日韩免费| 久久国产视频网站| 亚洲欧洲精品一区二区三区 | 欧美.com| 久久国产99| 欧美一级网站| 国内自拍视频一区二区三区| 91久久夜色精品国产九色| 日韩视频在线一区二区三区| 欧美视频在线观看 亚洲欧| 亚洲一区久久久| 久久婷婷国产综合国色天香| 国产精品国产一区二区| 亚洲欧美日韩一区| 久久综合久色欧美综合狠狠 | 国产精品一区二区在线观看| 欧美在线视频日韩| 欧美激情第一页xxx| 中文久久精品| 久久久久久久高潮| 亚洲区一区二| 欧美在线视屏| 亚洲毛片在线观看.| 久久精品免费电影| 亚洲精品女人| 久久精品国产亚洲精品| 亚洲精品字幕| 久久精品国产视频| 91久久精品一区| 欧美一级片一区| 亚洲国产精品久久久久| 欧美在线看片| 欧美日韩卡一卡二| 欧美一区二区三区免费观看视频| 欧美精品videossex性护士| 亚洲免费一在线| 母乳一区在线观看| 亚洲一区二区视频在线| 欧美激情亚洲精品| 午夜在线精品| 欧美日本亚洲韩国国产| 久久精品视频在线免费观看| 国产精品vvv| 亚洲国产小视频在线观看| 国产精品黄视频| 亚洲人成亚洲人成在线观看| 国产欧美日韩三级| 亚洲在线视频| 久久黄色网页| av不卡在线| 亚洲精品一区二| 国产欧美一区二区精品仙草咪|