PPPoE
此條目需要精通或熟悉計算機科學的編者參與及協助編輯。 |
PPPoE(英語:Point-to-Point Protocol over Ethernet),乙太網路上的對等協定,是將對等協定(PPP)封裝在乙太網路(Ethernet)框架中的一種網絡隧道協定。由於協定中整合PPP協定,所以實現出傳統乙太網路不能提供的身份驗證、加密以及壓縮等功能,也可用於纜線數據機(cable modem)和數碼用戶線路(DSL)等以乙太網路協定向用戶提供接入服務的協定體系。 本質上,它是一個允許在乙太網路廣播域中的兩個乙太網路介面間建立對等隧道的協定。
以Linux系統常用的PPPOE為例,支援PPP介面上面的IP、IPv6和IPX網路層協定。
它使用傳統的基於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任意一方傳送。
使用時的缺點
- 使用Internet前,需先透過PPPoE進行撥接,而非電腦開機後立即上網。
- 部分ISP會對PPPoE的連線用戶採取定時斷線,以節省營運成本及IP地址的佔用,故對於需長時間掛網的用戶較不利。但也有部份ISP為提供用戶選擇PPPoE可發配非固定IP或固定IP的服務。
- 目前Windows XP之後的Windows,Mac OS X、Linux等作業系統等皆已內建PPPoE的撥接功能,更早期的作業系統需另行安裝PPPoE的撥接程式,如Enternet 300、RAS PPPoE等。
參考資料
- ^ RFC 2516 - The PPPoE Active Discovery Initiation (PADI) packet. [2013-02-16]. (原始內容存檔於2018-02-02).
- ^ RFC 2516 - The PPPoE Active Discovery Offer (PADO) packet. [2013-02-16]. (原始內容存檔於2018-02-02).
- ^ RFC 2516 - The PPPoE Active Discovery Request (PADR) packet. [2013-02-16]. (原始內容存檔於2018-02-02).
- ^ RFC 2516 - The PPPoE Active Discovery Session-confirmation (PADS) packet. [2013-02-16]. (原始內容存檔於2018-02-02).
- ^ RFC 2516 - The PPPoE Active Discovery Terminate (PADT) packet. [2013-02-16]. (原始內容存檔於2018-02-02).
外部連結
- RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE)
- RFC 3817 - Layer 2 Tunneling Protocol (L2TP) Active Discovery Relay for PPP over Ethernet (PPPoE)
- 在 Linux 上撥號上網 (PPPoE)[失效連結]