常用的PPPoE撥號工作過程,你知道多少?

PPoE採用的client/Server模式。在PPPoE協議的標準術語中,運行PPPoE Client程序成為Host,運行PPPoE Server程序稱為AC。大多數家用路由器充當Host,而運營商路由器充當AC。

PPPoE報文格式

如果以太幀的類型字段的值為0x8863或者0x8864,則表明以太幀的負載數據就是一個PPPoE報文。PPPoE報文分為 PPPoE Header和PPPoE Payload兩個部分。在 PPPoE Header中,VER字段(版本字段)的值總是取0x1,Type字段的值也總是取0x1,Code字段是用來表示不同類型的 PPPoE報文的, Length字段用來表示整個 PPPOE報文的長度, Session-ID字段用來區分不同的 PPPOE會話( PPPOE Session)。

常用的PPPoE撥號工作過程,你知道多少?

PPPoE的工作過程

PPPoE撥號連接包括Discovery(發現)和Session(PPP會話)兩個階段。下面將分別介紹這兩個階段。

1、Discovery階段

此階段用來建立連接,當一個用戶主機想開始一個PPPoE會話時,首先必須進行發現階段以識別PPPoE Server的以太網MAC地址,並建立一個PPPoE會話標識(Session ID)。在此階段Host與AC之間會交互4中不同類型的PPPoE報文。

  1. PADI(PPPoE Active Discovery Initiation )報文( PPPoE Header中code字段的值為段的值為0x09)
  2. PADO( PPPOE Active Discovery Offer )報文( PPPoE Header中code字段的值為0x07)
  3. PADR(PPPoE Active Discovery Session-confirmation)報文( PPPoE Header中Code字段的值為0x19)
  4. PADS( PPPoE Active Discovery Session-confirmation)報文( PPPoE Header中Code字段的值為0x65)
常用的PPPoE撥號工作過程,你知道多少?

Discovery階段的基本工作流程

PADI:如果要建立一條PPPoE連接,首先PPPoE客戶端就要以廣播的方式發送一個PADI數據包,PADI數據包包括客戶端請求的服務。

PADO:當PPPoE服務器(BRAS)收到一個PADI包之後,它會判斷自己是否能夠提供服務,如果能夠提供服務的話,就會向客戶端發送PADO數據包來進行回應。PADO數據包包括PPPoE服務器名稱和與PADI數據包中相同的服務名。如果PPPoE服務器不能為PADI提供服務,則不允許用PADO數據包響應。

PADR:由於PADI是以廣播的形式發送出去的,PPPoE客戶端可能收到不止一個PADO數據包,它將審查所有接收到的PADO數據包並根據其中的服務器名或所提供的服務選擇一個PPPoE服務器,並向選中的服務器發送PADR數據包。PADR數據包包括客戶端所請求的服務。

PADS:當PPPoE服務器收到客戶端發送的PADR包時,它就準備開始一個PPPoE會話,它為PPPoE會話創建一個唯一的PPPoE會話ID,並向客戶端發送PADS包作為響應。

當發現階段正常結束後,通信的兩端都獲得會話標識(Session ID)和對方的MAC地址,它們一起唯一定義一個PPPoE會話

2、PPP Session階段

當PPPoE進入PPP會話階段後,客戶端和服務器將進行標準的PPP協商,PPP協商通過後,數據通過PPP封裝發送。PPP報文作為PPPoE幀的淨荷被封裝在以太網幀內,發送到PPPoE鏈路的對端。Session ID必須是Discovery階段確定的ID,且在會話過程中保持不變,MAC地址必須是對端的MAC地址。

常用的PPPoE撥號工作過程,你知道多少?


分享到:


相關文章: