2009年12月23日 星期三

PPP over Ethernet (PPPoE) 二

PPP 協定的階層式架構

PPP 協定使用階層式的架構,可使用「同步實體媒介」、「非同步實體媒介」、「整合服務數位網路(ISDN )」。PPP 協定主要運作於OSI 網路七層中的第二層,亦即Data Link Layer (資料連結層)。 PPP 協定中的階層式架構主要分成兩層,上層為NCP(Network Control Protocol ),下層為LCP(Link Control Protocol )。上層的NCP 主要工作是負責認證等等的工作,並且與OSI 網路架構的第三層協同運作。也因為NCP 的緣故,PPP 協定才能與各種不同的網路協定整合。而下層的LCP 則是負責建立資料連結的連線,PPP 協定提供不少種類的設定給LCP ,以便建立資料連結的連線,主要用於協調點對點的網路連線以及檢查網路封包訊框等等設定。

如果要可以完成點對點的通訊PPP協定必須先發送一個LCP的封包來設定與測試data link。在網路建立以後才可以進行認證。認證結束後PPP必須發送NCP的封包以便選擇與設定一個或多個network-layer protocol。一但網路協定被設定完成後,由網路層協定來的datagrame 就可以被發送直到外在的LCP和NCP關閉網路或是發生一些外部事件的時候(休止狀態的定時期到期或是網路管理員的干涉等)

Phase Diagram



1.Link Dead phase
link 一定開始與結束在這個階段。當一個外部事件(例如載波監聽或是網路管理員設定)指出物理層已經就緒時,PPP將會進入link 的階段。在這個階段LCP automaton 會在初始在狀態,當物理層準就緒,則PPP會進入link 建立階段。在這個階段轉向建立階段時它會給LCP automaton 一個UP的訊號 。

2.Link Establishment phase
在LCP用於建立連接,通過交換配置包((Configurepackets)。一但一個配置成功訊息封包(Configure-Ackpacket)被發送且被接收,就完成了交換,並進入LCP OPENED的狀態。在這個階段鍾收到非LCP的packet都必須被丟棄。當收到LCP Configure-Request可以使network-layer 階段或Authentication階段返回Link Establishment階段。

3.Authentication phase
如果配置了驗證(遠端驗證本地或本地驗證遠端)就進入Authenticate階段,開始CHAP或PAP驗證。如果驗證失敗則會到Link Termination phase。在該階段 Link control protocol ,authentication protocol , link quality monitoring.


4.Network-layer phase
一旦完成前面的階段,每一個網路協定(例如IP,IPX,AppleTalk)必須分開配置通過適當的網絡控制協議(NCP)。每個NCP可以隨時被打開或者關閉。


5.Link Termination phase
PPP 可以在任一的時間終止連結。引起的原因有很多:載波丟失,認證失敗,, Link quality failure,管理員關閉link。LCP用交換Terminate(终止)packets的方式來终止link。當link正被關閉的時候,PPP通知網路成協定,以便他們可以慘取正確的行動。交换 Terminate(终止)packets之後應該通知物理層斷開,以強制终止link,尤其當認證失敗的時候。在該階段只有Loss of carrier, Authentication failure, Link quality failure, Administrative clossing是被允許。其他類型的封包則要被丟棄。




PPP SESSION 大致可以分為下面幾個階段
Link Control Protocol (LCP) :主要負責低層線路控制與連線等過程
Authenticate : ex: PAP or CHAP
Network Control Protocol (NCP):主要負責上層資料的封裝過程以及配置不同的網路曾協議 (Ex:TCP/IP,NoVell IPX,AppleTake)


Host與AC必須要相互發送LCP Request給對方,已完成最大傳輸大小以及採用何種方式來進行認證


LCP Packet Formats


Code


Link Configuration packets
1.Configure-Request
Code:0x01 ,Identifier ,Length,Options

2.Configure-Ack
Code:0x02,Length,options
Identifier: copy of the Identifier field of the Configure-Request

3.Configure-Nak
Code:0x03 ,Length,Options
Identifier: copy of the Identifier field of the Configure-Request

4.Configure-Reject
Code:0x04 ,Length,Options
Identifier: copy of the Identifier field of the Configure-Request

Link Termination packets
5.Terminate-Request
Code:0x05, Identifier ,Length ,Options

6.Terminate-Ack
Code:0x06 ,Length ,Options
Identifier: copy of the Identifier field of the Terminate-Request

Link Maintenance packets
6.Code-Reject, Protocol-Reject
code:0x07 ,0x80
Identifier: changed of each code-reject(protocol-reject)

7.Echo-Request, Echo-Reply
Code:0x09 ,0x10
Identifier: changed whenever the content of the Data field changes

8.Discard-Request
Code:0x11
Identifier: changed for each Discard-Request sent

1. 網路連線建立階段
在建立連現階段時他會協商最大可以傳輸的單位和驗證的方式

2.認證確認階段

一旦網路連線建立,而且認證協定被決定之後,就代表連線的雙方可進入認證確認的階段。而認證確認的階段可有可無,不一定需要這個階段也可以完成PPP 協定的連線。PPP 協定支援兩種認證協定:PAP 協定和CHAP 協定。

PAP 認證協定

PAP 認證協定是一種雙向握手(Two way handshake )協定,透過雙向握手的流程讓遠端的電腦或網路設備進行辨識(Identity )認證的工作。

CHAP 認證協定

另外一種PPP 連線的認證協定是CHAP 認證協定。CHAP 認證協定採用的運作流程是3-way handshake ,如果使用CHAP 認證協定,當PPP 連線建立階段完成之後,AC就會發送所謂的Challenge 封包給遠端的網路設備,接著遠端的網路設備會透過One way hash 的方式,針對傳送過來的Challenge 值和密碼計算出一個特定的值,然後將這個特定的值傳回給原本發送的AC 。這裡所使用的One way hash 方式一般都採用MD5(Message Digest 5 )演算法。接下來,AC根據已知的計算方式再次計算出hash 值,然後比對自己所計算的hash 值和收到的hash 值是否相同。如果兩個計算出來的hash 值相同,代表這個認證已經通過,否則就會立刻中斷目前這個PPP 連線。


3.IPCP 協商階段
IPCP 必須要在PPP在Network-Layer Protocol 階段以及LCP 在 opened狀態才可以進行傳遞

Host 和AC 最IP服務階段的一些要求需要多次進行協商,已決定收方都能夠接受的約定.例如IP位置以及使用階段所使用的IP壓所協定等等.雙方協定是透過option所帶的參數來進行商,給個option都是一個需要協商的問題.最後雙方都需要等待對方回覆configure-Ack.

IPCP大致與LCP封包格式相同除了下面幾項
IP control protocol :0x8021
Code field: 1-7(Configure-Request, Configure-Ack,Configure-Nak, Configure-Reject,
Terminate-Request, Terminate-Ack Code-Reject)
option type


封包類型
1.Configure_Request
Code:0x01,Identifier,Length,Data

2.Configure_Ack
Code:0x02,Length,Data
Identifier: copy of the Identifier field of the Configure-Request

3.Configure_Nak
Code:0x03,Length,Data
Identifier: copy of the Identifier field of the Configure-Request

4.Configure_Reject
Code:0x04,Length,Data
Identifier: copy of the Identifier field of the Configure-Request

當達成協議後就可以進入datagream 傳輸階段,及IP階段.用戶與AC之間的通訊開始使用對方的IP位置而不是MAC位置

沒有留言:

張貼留言