PPPOE的實(shí)現分為兩個(gè)階段:發(fā)現階段和會(huì )話(huà)階段。
當一個(gè)主機想開(kāi)始一個(gè)PPPOE會(huì )話(huà),它必須首先進(jìn)行發(fā)現階段以識別對端的以太網(wǎng)MAC地址,并建立一個(gè)PPPOE SESSION_ID。
在發(fā)現階段,基于網(wǎng)絡(luò )的拓撲,主機可以發(fā)現多個(gè)接入集中器。發(fā)現階段允許主機發(fā)現所有的接入集中器,然后選擇一個(gè)。
當發(fā)現階段成功完成,主機和選擇的接入集中器利用它們在Ethernet已建好的PPP連接進(jìn)行通信。發(fā)現階段一直保持無(wú)狀態(tài)的狀態(tài),一旦PPP會(huì )話(huà)建立,主機和接入集中器都必須為PPP虛接口分配資源。圖1顯示了PPPOE通信流程。
圖 1 PPPOE通信流程
1. 發(fā)現階段建立連接的過(guò)程
第一步:用戶(hù)端主機發(fā)送一個(gè)PADI幀(PPPOE啟動(dòng)初始化)。這個(gè)幀將通過(guò)以太網(wǎng)進(jìn)行廣播,表示尋找接入集中器;
第二步:一個(gè)或多個(gè)接入集中器回復一個(gè)PADO幀(PPPOE啟動(dòng)響應)。這個(gè)幀將以太網(wǎng)地址發(fā)送給用戶(hù)端主機,表示接入集中器正在響應,是否要建立連接;當主機在指定的時(shí)間內沒(méi)有接收到PADO,它應該重新發(fā)送它的PADI分組,并且加倍等待時(shí)間,這個(gè)過(guò)程會(huì )被重復期望的次數。
第三步:用戶(hù)端主機選擇一個(gè)接入集中器,并發(fā)送單播PADR幀(PPPOE連接請求)給該響應的接入集中器,表示希望建立連接;
第四步:接入集中器發(fā)送PADS幀(PPPOE連接確認),表示可以建立連接并分配連接號。該連接號連同源和目的的以太網(wǎng)地址,將唯一標識一個(gè)PPPOE會(huì )話(huà)。當主機接收到確認分組,它可以開(kāi)始進(jìn)行PPP會(huì )話(huà)階段。當接入集中器發(fā)送出確認分組,它可以開(kāi)始進(jìn)行PPP會(huì )話(huà)階段。
PPPOE還有一個(gè)PADT分組,它可以在會(huì )話(huà)建立后的任何時(shí)候發(fā)送,來(lái)終止PPPOE會(huì )話(huà)。它可以由主機或者接入集中器發(fā)送。當接收到一個(gè)PADT,不再允許使用這個(gè)會(huì )話(huà)來(lái)發(fā)送PPP業(yè)務(wù)。在發(fā)送或接收PADT后,即使正常的PPP終止分組也不必發(fā)送。PPP對端應該使用PPP協(xié)議自身來(lái)終止PPPOE會(huì )話(huà),但是當PPP不能使用時(shí),可以使用PADT。
2. PPP會(huì )話(huà)階段
一旦PPPOE會(huì )話(huà)開(kāi)始,PPP數據就可以以任何其它的PPP封裝形式發(fā)送。會(huì )話(huà)階段具有PPP會(huì )話(huà)的一般性質(zhì),而且還具有如下特點(diǎn):
a.在以太網(wǎng)傳輸的是數據包,而不是一般的數據流;
b.不需要PPP的FCS域,因為以太網(wǎng)的幀已具有自己的CRC;
c.所有的以太網(wǎng)幀都是單播的;
d.PPPOE會(huì )話(huà)的 SESSION_ID一定不能改變,并且必須是發(fā)現階段分配的值。