PPP[點對點協定]

PPP[點對點協定]

點對點協定(PPP)為在點對點連線上傳輸多協定數據包提供了一個標準方法。PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協定。在 TCP-IP 協定集中它是一種用來同步調製連線的數據鏈路層協定(OSI 模式中的第二層),替代了原來非標準的第二層協定,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協定,包括 DECnet 和 Novell 的 Internet 網包交換(IPX)。

基本信息

概述

為了建立點對點鏈路通信,PPP 鏈路的每一端,必須首先傳送 LCP 包以便設定和測試數據鏈路。在鏈路建立,

(圖)PPP[點對點協定] PPP[點對點協定]

LCP 所需的可選功能被選定之後,PPP 必須傳送 NCP 包以便選擇和設定一個或更多的網路層協定。一旦每個被選擇的網路層協定都被設定好了,來自每個網路層協定的數據報就能在鏈路上傳送了。鏈路將保持通信設定不變,直到有 LCP 和 NCP 數據包關閉鏈路,或者是發生一些外部事件的時候。PPP是為在同等單元之間傳輸數據包這樣的簡單的鏈路而設計的。這種鏈路提供全雙工操作,並按照順序傳遞數據包。(人們)有意讓PPP為基於各種主機網橋路由器的簡單連線提供一種共通的解決方案。

主要組成

PPP[點對點協定] PPP

封裝:一種封裝多協定數據報的方法。PPP 封裝提供了不同網路層協定同時在同一鏈路傳輸的多路復用技術。PPP 封裝精心設計,能保持對大多數常用硬體的兼容性。
鏈路控制協定:PPP 提供的 LCP 功能全面,適用於大多數環境。LCP 用於就封裝格式選項自動達成一致,處理數據包大小限制,探測環路鏈路和其他普通的配置錯誤,以及終止鏈路。LCP 提供的其他可選功能有:認證鏈路中對等單元的身份,決定鏈路功能正常或鏈路失敗情況。
網路控制協定:一種擴展鏈路控制協定,用於建立、配置、測試和管理數據鏈路連線
配置:使用鏈路控制協定的簡單

和自製機制。該機制也套用於其它控制協定,例如:網路控制協定( NCP)。
為了建立點對點鏈路通信,PPP 鏈路的每一端,必須首先傳送 LCP 包以便設定和測試數據鏈路。在鏈路建立,LCP 所需的可選功能被選定之後,PPP 必須傳送 NCP 包以便選擇和設定一個或更多的網路層協定。一旦每個被選擇的網路層協定
PPP[點對點協定] PPP
都被設定好了,來自每個網路層協定的數據報就能在鏈路上傳送了。
鏈路將保持通信設定不變,直到有 LCP 和 NCP 數據包關閉鏈路,或者是發生一些外部事件的時候(如,休止狀態的定時器期滿或者網路管理員干涉)。

套用:假設同樣是在Windows 98,並且已經創建好“撥號連線”。那么可以通過下面的方法來設定PPP協定:首先,打開“撥號連線”屬性,同樣選擇“伺服器類型”選項卡;然後,選擇默認的“PPP:Internet,Windows NT Server,Windows 98”,在高級選項中可以設定該協定其它功能選項;最後,單擊“確定”按鈕即可。

協定規範

PPP[點對點協定] PPP
一、介紹:
PPP是為在同等單元之間傳輸數據包這樣的簡單的鏈路而設計的。這種鏈路提供全雙工操作,並按照順序傳遞數據包。(人們)有意讓PPP為基於各種主機、網橋和路由器的簡單連線提供一種共通的解決方案。
二、 封裝
PPP封裝提供了不同網路層協定同時通過統一鏈路的多路技術。精心的設計PPP封裝,使其保有對常用支持硬體的兼容性。當使用默認的類 HDLC幀(HDLC-likeframing)時,僅需要8個額外的位元組,就可以形成封裝。在頻寬需要付費時,封裝和幀可以減少到2或4個位元組。為了支持高速的執行,默認的封裝只使用簡單的欄位,多路分解只需要對其中的一個欄位進行檢驗。默認的頭和信息欄位落在32-bit邊界上,尾位元組可以被填補到任意的邊界。

鏈路建立

PPP協定中提供了一整套方案來解決鏈路建立、維護、拆除、上層協定協商、認證等問題。PPP協定包含這樣幾個部分:鏈路控制協定LCP(Link Control Protocol);網路控制協定NCP(Network Control Protocol);認證協定,最常用的包括口令驗證協定PAP(Password Authentication Protocol)和挑戰握手驗證協定CHAP(Challenge-Handshake Authentication Protocol)。LCP負責創建,維護或終止一次物理連線。NCP是一族協定,負責解決物理連線上運行什麼網路協定,以及解決上層網路協定發生的問題。

下面介紹PPP鏈路建立的過程: 

PPP[點對點協定] PPP

PPP鏈路狀態機如圖1所示。一個典型的鏈路建立過程分為三個階段:創建階段、認證階段和網路協商階段。

階段1:創建PPP鏈路

LCP負責創建鏈路。在這個階段,將對基本的通訊方式進行選擇。鏈路兩端設備通過LCP向對方傳送配置信息報文(Configure Packets)。一旦一個配置成功信息包(Configure-Ack packet)被傳送且被接收,就完成了交換,進入了LCP開啟狀態。應當注意,在鏈路創建階段,只是對驗證協定進行選擇,用戶驗證將在第2階段實現。

階段2:用戶驗證

在這個階段,客戶端會將自己的身份傳送給遠端的接入伺服器。該階段使用一種安全驗證方式避免第三方竊取數據或冒充遠程客戶接管與客戶端的連線。在認證完成之前,禁止從認證階段前進到網路層協定階段。如果認證失敗,認證者應該躍遷到鏈路終止階段。在這一階段里,只有鏈路控制協定、認證協定,和鏈路質量監視協定的packets是被允許的。在該階段里接收到的其他的packets必須被靜靜的丟棄。最常用的認證協定有口令驗證協定(PAP)和挑戰握手驗證協定(CHAP)。 認證方式介紹在第三部分中介紹。

階段3:調用網路層協定 
認證階段完成之後,PPP將調用在鏈路創建階段(階段1)選定的各種網路控制協定(NCP)。選定的NCP解決PPP鏈路之上的高層協定問題,例如,在該階段IP控制協定IPCP)可以向撥入用戶分配動態地址。

這樣,經過三個階段以後,一條完整的PPP鏈路就建立起來了。

認證方式

1、口令驗證協定(PAP)

PAP是一種簡單的明文驗證方式。NAS(網路接入伺服器,Network Access server)要求用戶提供用戶名和口令,PAP以明文方式返回用戶信息。很明顯,這種驗證方式的安全性較差,第三方可以很容易的獲取被傳送的用戶名和口令,並利用這些信息與NAS建立連線獲取NAS提供的所有資源。所以,一旦用戶密碼被第三方竊取,PAP無法提供避

(圖)PPP[點對點協定] PPP[點對點協定]

免受到第三方攻擊的保障措施。

2、挑戰-握手驗證協定CHAP

CHAP是一種加密的驗證方式,能夠避免建立連線時傳送用戶的真實密碼。NAS向遠程用戶傳送一個挑戰口令(challenge),其中包括會話ID和一個任意生成的挑戰字串(arbitrary challengestring)。遠程客戶必須使用MD5單向哈希算法(one-way hashing algorithm)返回用戶名和加密的挑戰口令,會話ID以及用戶口令,其中用戶名以非哈希方式傳送。CHAP對PAP進行了改進,不再直接通過鏈路傳送明文口令,而是使用挑戰口令以哈希算法對口令進行加密。因為伺服器端存有客戶的明文口令,所以伺服器可以重複客戶端進行的操作,並將結果與用戶返回的口令進行對照。CHAP為每一次驗證任意生成一個挑戰字串來防止受到再現攻擊(replay attack)。在整個連線過程中,CHAP將不定時的向客戶端重複傳送挑戰口令,從而避免第3方冒充遠程客戶(remote client impersonation)進行攻擊。

在某些連線時,在允許網路層協定數據包交換之前希望對對等實體進行認證。預設時,認證不是必要的。如果套用時希望對等實體使用某些認證協定進行認證,這種要求必須在建立連線階段提出。 認證階段應該緊接在建立連線階段後。然而,可能有連線質量的決定並行出現。套用時絕對不允許連線質量決定數據包的交換使認證有不確定的延遲。認證階段後的網路層協定階段必須等到認證結束後才能開始。如果認證失敗,將轉而進入終止連線階段。僅僅是連線控制協定、認證協定、連線質量監測的數據包才被允許在此階段中出現。所有其它在此階段中接收到的數據包都將被靜默丟棄。 套用時不能簡單的因為逾時或缺少回應就認為認證失敗。應該允許重傳,僅當試圖認證的次數超過一定的限制時才進入終止連線階段。如果對方拒絕認證,己方有權進入終止連線階段。

網層協定

每一個網路層協定(例如IP、IPX、AppleTalk)必須單獨的由相應的網路控制協定(NCP)配置。每一個網路控制協定可以隨時打開或關閉。

套用注意事項:

PPP[點對點協定] PPP

因為可能一開始就會使用需要花費大量時間的連線質量決定,所以當等待對方進行網路控制協定配置時應該避免使用固定的逾時限制。
當一個網路控制協定自動機達到已打開的狀態時,PPP連線上就可以傳送相應的網路層協定數據包。當接收到的任何所支持的 網路層協定數據包時,只要相應的網路控制協定狀態自動機未進入已打開狀態,都將作靜默丟棄處理。

套用注意事項:
只要LCP協定狀態自動機處於已打開的狀態,任何接收到的不支持的協定數據包都將返回協定拒絕包(後面將提到)。所支持的協定數據包都將靜默丟棄。在此階段,連線上流通的包括LCP數據包、NCP數據包和網路層協定數據包。

終止連線

PPP連線可以隨時終止。原因可能是載波丟失、認證失敗、連線質量失敗、逾時計數器溢出,或者網路管理員關閉連線。LCP通過交換連線終止包來終止連線。當連線正在被終止的時候,PPP會通知網路層以便它採取相應的動作。

在交換過終止請求包後,將通知物理層斷開以便使連線真正終止,尤其是在認證失敗的時侯。傳送連線終止請求包的一方應該等待接收到連線終止確認包之後或逾時計數器計滿之後再斷開。收到連線終止確認包的一方應該等待對方首先斷開,並且決不能斷開直到至少有一個逾時計時器在傳送了終止連線確認包之後溢出。然後PPP應該進入連線死亡階段。在此階段所有接收到的非LCP數據包都將被靜默丟棄。

套用注意事項:

PPP[點對點協定] PPP

關閉時使用LCP就已足夠。並不需要每一個NCP都傳送終止連線數據包。相反的,一個NCP協定自動機關閉並不能關閉整個PPP連線,即使這個NCP協定自動機是當前唯一處於已打開狀態。

協定套用

PPP協定是目前廣域網上套用最廣泛的協定之一,它的優點在於簡單、具備用戶驗證能力、可以解決IP分配等。

家庭撥接就是通過PPP在用戶端和運營商的接入伺服器之間建立通信鏈路。 目前,寬頻接入正在成為取代撥接的趨勢,在寬頻接入技術日新月異的今天,PPP也衍生出新的套用。典型的套用是在ADSL(非對稱數據用戶環線,Asymmetrical Digital Subscriber Loop)接入方式當中,PPP與其他的協定共同派生出了符合寬頻接入要求的新的協定,如PPPoE(PPP over Ethernet),pppoa(PPP over ATM)。

PPP[點對點協定] PPP

利用乙太網(Ethernet)資源,在乙太網上運行PPP來進行用戶認證接入的方式稱為PPPoE。PPPoE即保護了用戶方的乙太網資源,又完成了ADSL的接入要求,是目前ADSL接入方式中套用最廣泛的技術標準。

同樣,在ATM(異步傳輸模式,Asynchronous Transfer Mode)網路上運行PPP協定來管理用戶認證的方式稱為PPPoA。它與PPPoE的原理相同,作用相同;不同的是它是在ATM網路上,而PPPoE是在乙太網網路上運行,所以要分別適應ATM標準和乙太網標準。

PPP協定的簡單完整使它得到了廣泛的套用,相信在未來的網路技術發展中,它還可以發揮更大的作用。

安全問題

安全問題是此備忘錄的主要話題。PPP中的驗證協定的互動操作很大程度上依靠於實現者。在文檔中通篇使用SHOULD表明了這點。例如,一旦驗證失敗,有些實現者並不終止鏈路。相反,實現者限制網路層的通信量的類型構造子網,這樣反過來允許用戶有機會更新秘密或者發郵件給網路管理員說明問題。對於驗證失敗沒有重試機制。然而,LCP狀態機可以在任何時候重新磋商驗證協定,這樣就允許了一個新的重試。建議任何用來為驗證失敗的計數器在成

(圖)PPP[點對點協定] PPP[點對點協定]

功驗證前或者終止失敗的鏈路前不要重置。
不要求驗證是雙向的或者在兩個方向使用相同的協定。在任一個方向上使用不同的協定是完全可以接受的。當然,這依靠於在磋商時指定的協定。在實踐中,在每個PPP伺服器上有一個資料庫,它聯合驗證信息的用戶名字。不期望使
用多個方法驗證特殊的命名用戶。這樣使用戶容易受到攻擊。作為代替的,對於每一個命名用戶有一個準確的方法用來驗證用戶名。如果一個用戶在不同的環境下需要使用不同的驗證方法,那么應該採用截然不同的用戶名,每一個準確代表一個驗證方法。密碼和其他的秘密應該保存在各自的端點以至於對它們的訪問儘可能的受到限制。理想的,只能是為了完成驗證而需要訪問的過程可以訪問秘密。
應該使用一種機制分發秘密,這種機制能夠限制處理秘密實體的數目。理想的,沒有通過驗證的人不會再得到秘密的內容。使用SNMP安全協定可以實現這個目標,但是這樣的機制不在這個規範的範圍內。目前正在研究和試驗其他的分發機制。SNMP安全文檔很好的概括了對網路的威脅。

參考資料

[1] 網路大典 http://www.networkdictionary.cn/?q=protocols/ppp.php
[2] 中國協定分析網 http://www.cnpaf.net/Class/PPP/200408/490.html

相關搜尋

熱門詞條

聯絡我們