PPPoE

電腦網路協定

PPPoE(英語:Point-to-Point Protocol over Ethernet),以太網上的點對點協議,是將點對點協議(PPP)封裝在以太網(Ethernet)框架中的一種網絡隧道協議。由於協議中集成PPP協議,所以實現出傳統以太網不能提供的身份驗證加密以及壓縮等功能,也可用於纜線數據機(cable modem)和數位用戶線路(DSL)等以以太網協議向用戶提供接入服務的協議體系。 本質上,它是一個允許在以太網廣播域中的兩個以太網接口間建立點對點隧道的協議。

Linux系統常用的PPPOE為例,支持PPP接口上面的IPIPv6IPX網絡層協議。

它使用傳統的基於PPP的軟件來管理一個不是使用串行線路而是使用類似於以太網的有向分組網絡的連接。這種有登陸和口令的標準連接,方便了接入供應商的記費。並且,連接的另一端僅當PPPoE連接接通時才分配IP地址,所以允許IP地址的動態復用。

PPPoE是由UUNET、Redback Networks和RouterWare所開發的。發表於RFC 2516說明中。

PPPoE的階段

PPPoE分為兩個階段:

PPPoE發現

由於傳統的PPP連接是建立在串行鏈路或撥號時建立的ATM虛電路連接上的,所有的PPP訊框都可以確保通過電纜到達對端。但是以太網是多路存取的,每一個節點都可以相互訪問。以太幀包含目的節點的物理地址(MAC地址),這使得該幀可以到達預期的目的節點。 因此,為了在以太網上建立連接而交換PPP控制報文之前,兩個端點都必須知道對端的MAC地址,這樣才可以在控制報文中攜帶MAC地址。PPPoE發現階段做的就是這件事。除此之外,在此階段還將建立一個會話ID,以供後面交換報文使用。

PPP會話

一旦連接的雙方知道了對端的MAC地址,會話就建立了。

PPPoE發現階段(PPPoED)

儘管傳統的PPP是點對點協議,但是由於多個主機可以通過一個單獨的物理連接連接到一個服務提供者,因此PPPoE本身就是一個客戶端-服務器的關係。 發現過程包含四個步驟。主機作為客戶端,ISP端的訪問集中器作為服務器。這四步在下面詳述。最後一步第五步是關閉一個現存會話的方法。

客戶端到服務器:Initiation(PADI)

PADI為PPPoE Active Discovery Initiation的縮寫。[1]
如果一個用戶想要使用DSL撥號連入Internet,那麼他的計算機必須首先在其ISP的網絡服務提供點(POP)找到DSL訪問集中器(DSL-AC)。在以太網上通訊只能通過MAC地址。由於計算機不知道DSL-AC的MAC地址,於是就在以太網上廣播一個PADI報文。這個報文中包含發送者的MAC地址。

PADI報文示例:

Frame 1 (44 bytes on wire, 44 bytes captured)
Ethernet II, Src: 00:50:da:42:d7:df, Dst: ff:ff:ff:ff:ff:ff
PPP-over-Ethernet Discovery
  Version: 1
  Type 1
  Code Active Discovery Initiation (PADI)
  Session ID: 0000
  Payload Length: 24
PPPoE Tags
  Tag: Service-Name
  Tag: Host-Uniq
    Binary Data: (16 bytes)

Src.(=source)包含發送計算機的MAC地址。
Dst.(=destination)為以太網廣播地址。
PADI報文可能被一個以上的DSL-AC接收。 只有可以提供「服務名稱」(Service-Name)的DSL-AC設備才應該回復。

服務器到客戶端:Offer (PADO)

PADO為PPPoE Active Discovery Offer的縮寫。[2]
一旦用戶計算機發送了PADI報文,DSL-AC就會使用PADI中提供的MAC地址回復一個PADO報文。PADO報文中包含了DSL-AC的MAC地址、名稱以及服務名。如果多於一個POP的DSL-AC回復了PADO報文,用戶計算機就使用提供的名稱和服務來從中選擇一個。

PADO報文示例:

Frame 2 (60 bytes on wire, 60 bytes captured)
Ethernet II, Src: 00:0e:40:7b:f3:8a, Dst: 00:50:da:42:d7:df
PPP-over-Ethernet Discovery
  Version: 1
  Type 1
  Code Active Discovery Offer (PADO)
  Session ID: 0000
  Payload Length: 36
PPPoE Tags
  Tag: AC-Name
    String Data: IpzbrOOl
  Tag: Host-Uniq
    Binary Data: (16 bytes)

AC-Name ->字符串數據包含了AC名稱,這裡為「Ipzbr001」(萊比錫的Arcor DSL-AC)
Src.包含了DSL-AC的MAC地址。
DSL-AC的MAC地址還包含了了DSL-AC的製造商信息(這裡為北電網絡)。

客戶端到服務器:Request(PADR)

PADR為PPPoE Active Discovery Request的縮寫。[3]
當用戶計算機收到一個來自DSL-AC的可接受的PADO報文後,就會發送一個PADR報文給DSL-AC,用來確認接受發送PADO報文的DSL-AC所提供的PPPoE連接。

服務器到客戶端:Session-confirmation(PADS)

PADS為PPPoE Active Discovery Session-confirmation的縮寫。[4]
上面的PADR報文由DSL-AC的PADS報文進行確認,並在其中攜帶一個會話ID。用戶計算機與此DSL-AC的連接現在就完整建立了。

任何一方:Termination(PADT)

PADT為PPPoE Active Discovery Termination的縮寫。[5]
這個報文終結用戶計算機與POP的的連接,可由用戶計算機或DSL-AC任意一方發送。

使用時的缺點

  1. 使用Internet前,需先透過PPPoE進行撥接,而非電腦開機後立即上網。
  2. 部分ISP會對PPPoE的連線用戶採取定時斷線,以節省營運成本及IP位址的佔用,故對於需長時間掛網的使用者較不利。但也有部份ISP為提供用戶選擇PPPoE可發配非固定IP或固定IP的服務。
  3. 目前Windows XP之後的WindowsMac OS XLinux等操作系統等皆已內建PPPoE的撥接功能,更早期的操作系統需另行安裝PPPoE的撥接程式,如Enternet 300、RAS PPPoE等。

參考資料

  1. ^ RFC 2516 - The PPPoE Active Discovery Initiation (PADI) packet. [2013-02-16]. (原始內容存檔於2018-02-02). 
  2. ^ RFC 2516 - The PPPoE Active Discovery Offer (PADO) packet. [2013-02-16]. (原始內容存檔於2018-02-02). 
  3. ^ RFC 2516 - The PPPoE Active Discovery Request (PADR) packet. [2013-02-16]. (原始內容存檔於2018-02-02). 
  4. ^ RFC 2516 - The PPPoE Active Discovery Session-confirmation (PADS) packet. [2013-02-16]. (原始內容存檔於2018-02-02). 
  5. ^ RFC 2516 - The PPPoE Active Discovery Terminate (PADT) packet. [2013-02-16]. (原始內容存檔於2018-02-02). 

外部連結