新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > 點對點通信協(xié)議PPPoE模塊的設計

點對點通信協(xié)議PPPoE模塊的設計

作者: 時間:2010-09-15 來源:網絡 收藏

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

本文引用地址:http://www.butianyuan.cn/article/157103.htm

  1 PPPoE協(xié)議框架

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

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

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

  


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

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

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

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

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

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

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

  

  

  2 PPPoE協(xié)議分析

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

  1)發(fā)現階段

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

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

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

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


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉