PPPoE協議工作原理
PPPoE協議的工作流程包含發現(Discovery)和會話(Session)兩個階段,發現階段是無狀態的,目的是獲得PPPoE終端(在局端的ADSL設備上)的以太網MAC位址,並建立一個唯一的PPPoE SESSION_ID。
發現階段結束後,就進入標準的PPP會話階段。
當一個主機想開始一個PPPoE會話,它必須首先進行發現階段,以識別局端的以太網MAC位址,並建立一個PPPoE SESSION_ID。
PPPoE協議會話的發現和會話兩個階段具體進程如下︰
1. 發現(Discovery)階段
在發現(Discovery)階段中用戶主機以廣播模式尋找所連接的所有接入集線器(或交換機),並獲得其以太網MAC位址。然後選擇需要連接的主機,並確定所要建立的PPP會話識別標號。發現階段有四個步驟,當此階段完成,通信的兩端都知道PPPoE SESSION_ID和對端的以太網位址,他們一起唯一定義PPPoE會話。
這四個步驟如下︰
(1)主機廣播一個發起分組(PADI),分組的到達站址為以太網的廣播位址0xffffffffffff,CODE(代碼)字段值為0x09,SESSION_ID(會話ID)字段值為0x0000。PADI包必須至少包含一個服務名稱類型的標籤(標籤類型字段值為0x0101),向接入集中器提出所要求提供的服務。
(2)接入集中器收到在服務範圍內的PADI包分組,發送PPPoE有效發現提供包(PADO)分組,以附應請求。其中CODE字段值為0x07 ,SESSION_ID字段值仍為0x0000。PADO分組必須包含一個接入集中器名稱類型的標籤(標籤類型字段值為0x0102),以及一個,或多個服務名稱類型標籤,表明可向主機提供的服務種類。
(3)主機在可能收到的多個PADO分組中選擇一個合適的PADO分組,然後向所選擇的接入集中器發送PPPoE有效發現請求分組(PADR)。其中CODE字段為0x19 ,SESSION_ID字段值仍為0x0000。PADR分組必須包含一個服務名稱類型標籤,確定向接入集線器(或交換機)請求的服務種類。當主機在指定的時間內沒有接收到PADO,它應該重新發送它的PADI分組,並且加倍等待時間,這個過程會被重複期望的次數。
(4)接入集中器收到PADR包後準備開始PPP會話,它發送一個PPPoE有效發現會話確認(PADS)分組。其中CODE字段值為0x65 ,SESSION_ID字段值為接入集中器所產生的一個惟一的PPPoE會話標識號碼。PADS分組也必須包含一個接入集中器名稱類型的標籤確認向主機提供的服務。當主機收到PADS包確認後,雙方就進入PPP會話階段。
【注意】如果主機正在等待接收PADS分組,應該使用具有主機重新發送PADR的相似超時機製。在重試指定的次數後,主機應該重新發送PADI分組。
2. PPP會話階段
用戶主機與接入集中器根據在發現階段所協商的PPP會話連接參數進行PPP會話。一旦PPPoE會話開始,PPP數據就可以以任何其它的PPP封裝形式發送。所有的以太網frame都是單播的。PPPoE會話的SESSION_ID一定不能改變,並且必須是發現階段分發的值。
PPPoE還有一個PADT分組,它可以在會話建立後的任何時候發送,來終止PPPoE會話,也就是會話釋放。它可以由主機或者接入集中器發送。當對方接收到一個PADT分組,就不再允許使用這個會話來發送PPP業務。
PADT包不需要任何標籤,其CODE字段值為0xa7 ,SESSION_ID字段值為需要終止的PPP會話的會話標識號碼。在發送或接收PADT後,即使正常的PPP終止分組也不必發送。PPP對端應該使用PPP協議自身來終止PPPoE會話,但是當PPP不能使用時,可以使用PADT。
以上各個階段的會話流程可用圖描述。
PPPoE將PPP frame封裝於以太網frame中,透過電話線傳輸至局端,在局端接入設備中再將以太網frame提取出來,放到以太網上。frame格式並沒有本質區別,但使用模式不同。至於速度,主要差別在於ADSL和電話撥號使用的調製技術的不同。
補充:
局端泛指中華電信、固網等網路。它可應用在P-P或Internet上。
資料來源:
http://ck101.com/forums/archiver/tid-246199.html
有些網址沒記到忘了在哪找的了
留言列表