PPP協定 PPPoE PPPoA 非同步傳輸 網路通訊 點對點

源自廣域網點對點直連 PPPoE與PPPoA協定剖析

2017-09-08
本文從PPP協定的角度講起,談論什麼是乙太網路與非同步傳輸網路,介紹何謂PPPoE協定和PPPoA協定,還會詳細說明PPPoE在乙太網路中建立連線的過程、PPPoE承襲了那些PPP協定的主要特性,最後則拿PPPoE與PPPoA做比較。

雖然PPP協定採用PAP認證協定,但事實上,PAP認證協定本身並不是一個很嚴謹的認證協定,因為PAP認證協定會把密碼用純文字的方式,也就是Clear Text來傳送,這也就代表傳送過程中,密碼是不會被加密過的,因此一旦有人攔截到這樣的網路封包,就可以直接看到密碼是什麼了。這樣的運作模式在大部分的網路環境內,是相當不安全的,除了Token Ring網路架構之外。不僅如此,PAP協定針對Playback和Trial-and-error的攻擊方式也沒有任何的保護措施。

CHAP認證協定

另外一種PPP連線的認證協定是CHAP認證協定,CHAP認證協定採用的運作流程是3-Way Handshake,如果使用CHAP認證協定,則當PPP連線建立階段完成之後,Cisco路由器設備(本地端)就會發送所謂的Challenge封包給遠端的網路設備。

接下來,遠端的網路設備會透過One Way Hash的方式,針對傳送過來的Challenge值和密碼,計算出一個特定的值,然後將這個特定的值傳回給原本發送的Cisco路由器設備。這裡所使用的One Way Hash方式,一般而言都是使用MD5(Message Digest 5)演算法。

接著,本地端的Cisco路由器設備會根據已知的計算方式再次計算出Hash值,然後比對自己所計算的Hash值和收到的Hash值是否相同。如果兩個計算出來的Hash值相同,代表這個認證已經通過,否則就會立刻中斷目前這個PPP連線。

CHAP認證協定比較安全的地方

看得出來,CHAP認證協定比PAP認證協定安全許多,因為雙方都會計算出特定的Hash值加以比對,而且並不會把密碼直接用明文的方式來傳送。不僅如此,CHAP認證協定對於Playback的攻擊方式有相對應的保護措施。

Challenge值是很難被預測出是怎樣的值,因為Challenge值是亂數產生的,所以這也同時代表著所計算出來的Hash值也是亂數產生的。此外,Challenge封包是會一直發送,這種作法也可以避免受到攻擊,因為每次發送的Challenge值都是不一樣的。

認識PPPoE協定的工作階段

了解PPP協定之後,接下來就可以介紹PPPoE詳細的連線建立過程。PPPoE協定最初的設計緣由是希望能夠提供一個小型區域網路,並且讓小型區域網路中的每一個設備都能單獨連線到外部的網路。PPPoE協定也成功地為一般使用者提供便宜的解決方案。而PPPoE協定工作分為PPPoE Discovery、PPPoE Session兩個主要階段,以下大致加以說明。

PPPoE Discovery

一般的PPP連線會建立在Serial Link或是透過ATM虛擬線路的撥接(Dial-up)來連線,所以PPP的資料在傳送的時候,都是確定對方是可以到達的,才會發送。

但是,乙太網路的設計是Multi-access,也就是說乙太網路上的每一個節點都可以對任何其他一個節點做存取的動作,所以在乙太網路的封包中會包含目的地端的MAC位址,以便於讓資料封包能夠正確無誤地傳送到達目的地。

如果PPP協定的封包希望在乙太網路的架構上面運作,則乙太網路封包中的目的端以及發送端的MAC位址就必須先行被發現(Discovered),進而被封裝到PPP協定的Control封包(Control Packets)內。而這個動作正是PPPoE Discovery工作階段的重點。另外,PPPoE Discovery還有做到的,就是把這個點對點連線的Session ID建立起來,以便於後續的資料傳送。

這個PPPoE Discovery其實步驟還可以分得更詳細,而詳細的步驟是基於「伺服器端」與「用戶端」角色的交互運作來完成的。有趣的是,有些人可能已經發現,剛才都一直說PPP連線事實上是一個「點對點」的連線,為什麼這裡還可以分伺服器端與用戶端呢?因為即便是在PPP的連線環境內,多個主機依然可以透過一個單一的實體連線連到另外一台用於提供服務的伺服器端。在這樣的情況下,就可以區分伺服器與用戶端,步驟如圖2所示,基本上分為四個步驟。


▲圖2 PPPoE Discovery運作示意圖。

第一步驟:PADI

第一個步驟主要內容為Initiation,PADI是PPPoE Active Discovery Initiation的縮寫。當使用者要連線到網路時,這個用戶端必須先在網路上找到DSL-AC(DSL Access Concentrator)。本文有提到,乙太網路中都是用MAC位址來定位對方,但是這個時候用戶端還不知道DSL-AC的MAC位址是什麼,因此就會在乙太網路內發送一個PADI封包,以廣播的方式送出,以便於找到DSL-AC,而這個封包裡會包含發送端的MAC位址,所謂廣播的方式就是把目的端的MAC位址設定為FF:FF:FF:FF:FF:FF,所以這個步驟主要是從用戶端發到伺服器端。

第二步驟:PADO

PADO是PPPoE Active Discovery Offer的縮寫。一旦DSL-AC收到由用戶端廣播出來的PADI封包,DSL-AC就會去解析這個封包,取出來源端的MAC位址,然後回傳PADO封包。這個封包的目的就是讓用戶端知道DSL-AC的位址,所以封包內容會包含DSL-AC的MAC位址、名稱以及服務等等。所以,這個步驟是由伺服器端傳回到用戶端。

第三步驟:PADR

PADR是PPPoE Active Discovery Request的縮寫,如同其名,這個步驟用於發送Requests。到了這個步驟,就代表用戶端已經知道DSL-AC的位址,可以準備提出需求要做出連線。所以,這個步驟主要是用於確認DSL-AC所提供的PPPoE連線。

第四步驟:PADS

這個步驟等於是DSL-AC給用戶端的最後確認,PADS是PPPoE Active Discovery Session-confirmation的縮寫。此時DSL-AC也會建立一個Session ID,並把這個ID傳回給用戶端,以便於後續PPPoE資料傳輸之用。而若要終止整個PPPoE連線,無論是伺服器端或是用戶端,都可以提出要求來終止連線,這個終止動作稱為PADT(PPPoE Active Discovery Termination)。

PPPoE Session

PPPoE主要的工作階段其實是PPPoE Discovery。等到上面那個步驟完成,代表這個點對點連線的雙方MAC位址都已經被定位,也就是能夠進行資料的傳輸,而PPPoE Session就是表示可以開始傳輸資料了。

PPPoE整合PPP協定的特點

前面提到在PPP協定中的階層式架構,主要分成兩層,上層為NCP,下層為LCP,而LCP又包含以下設定的內容。前面提到過,LCP的主要工作是建立PPP協定的連線以及與連線相關的工作,而在Cisco網路設備內,可能包含的工作就如表1所示。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!