PPP協議的5種模式
對于PPP協議來說,它最為有特點的就是5種不同的狀態了。那么對于它的狀態和它的應用方面有什么聯系呢?這里我們就來詳細談一談這方面的知識。現在讓我們來具體了解一下吧。
首先雙方都處于鏈路不可用階段,接著會有一方提出鏈路請求,如果希望通過PPP協議建立點對點的通信,無論哪一端的設備都需發送LCP數據報文來配置鏈路,一旦LCP的配置參數選項協商完后,通信的雙方就會根據LCP配置請求報文中所協商的認證配置參數選項來決定鏈路兩端設備所采用的認證方式。協議缺省情況下雙方是不進行認證的,而直接進入到NCP配置參數選項的協商,直至所經歷的幾個配置過程全部完成后,點對點的雙方就可以開始通過已建立好的鏈路進行網絡層數據報文的傳送了,整個鏈路就處于可用狀態。只有當任何一端收到LCP或NCP的鏈路關閉報文時(一般而言協議是不要求NCP有關閉鏈路的能力的,因此通常情況下關閉鏈路的數據報文是在LCP協商階段或應用程序會話階段發出的);物理層無法檢測到載波或管理人員對該鏈路進行關閉操作,都會將該條鏈路斷開,從而終止PPP會話。
以下是PPP協議整個鏈路過程需經歷階段的狀態轉移說明:在點對點鏈路的配置、維護和終止過程中,PPP需經歷以下幾個階段:
鏈路不可用階段。有時也稱為物理層不可用階段,PPP鏈路都需從這個階段開始和結束。(即使雙方已經有物理連接,但沒有激活PPP,也可以算不可用階段)當通信雙方的兩端檢測到物理線路激活(通常是檢測到鏈路上有載波信號)時,就會從當前這個階段躍遷至下一個階段(即鏈路建立階段)。先簡單提一下鏈路建立階段,在這個階段主要是通過LCP協議(需要在PPP幀的協議域內填充C021)進行鏈路參數的配置,LCP在此階段的狀態機也會根據不同的事件發生變化。當處于在鏈路不可用階段時,LCP的狀態機是處于initial(初始化狀態)或starting(準備啟動狀態),一旦檢測到物理線路可用,則LCP的狀態機就要發生改變。當然鏈路被斷開后也同樣會返回到這個階段,往往在實際過程中這個階段所停留的時間是很短的,僅僅是檢測到對方設備的存在。
鏈路建立階段。是PPP協議最關鍵和最復雜的階段。這是在數據鏈路層進行。該階段主要是發送一些配置報文來配置數據鏈路,這些配置的參數不包括網絡層協議所需的參數。當完成數據報文的交換后,則會繼續向下一個階段躍遷,該下一個階段既可是驗證階段,也可是網絡層協議階段,下一階段的選擇是依據鏈路兩端的設備配置的(通常是由用戶來配置,但對NAS或BAS設備(這些設備主要是用來進行3A:認證、授權和計費)的PPP模塊缺省就需要支持PAP或CHAP中的一種認證方式)。在此階段LCP的狀態機會發生兩次改變,前面我們說了當鏈路處于不可用階段時,此時LCP的狀態機處于initial或starting,當檢測到鏈路可用時,則物理層會向鏈路層發送一個UP事件,鏈路層收到該事件后,會將LCP的狀態機從當前狀態改變為Request-Sent(請求發送狀態),根據此時的狀態機LCP會進行相應的動作,也即是開始發送Config-Request報文來配置數據鏈路,無論哪一端接收到了Config-Ack報文時,LCP的狀態機又要發生改變,從當前狀態改變為opened狀態,進入Opened狀態后收到Config-Ack報文的一方則完成了當前階段,應該向下一個階段躍遷。同理可知,另一端也是一樣的,但須注意的一點是在鏈路配置階段雙方是鏈路配置操作過程是相互獨立的。如果在該階段收到了非LCP數據報文,則會將這些報文丟棄。
驗證階段。多數情況下的鏈路兩端設備是需要經過認證后才進入到網絡層協議階段,缺省情況下鏈路兩端的設備是不進行認證的。在該階段支持PAP和CHAP兩種認證方式,驗證方式的選擇是依據在鏈路建立階段雙方進行協商的結果。(這里想到一個小插曲,記得我去應聘現在的這家公司的時候,面試官問了我PPP驗證階段有幾種認證方式,以前對于PPP也只是一知半解,知道有PAP和CHAP兩種,也知道PAP是2次握手,CHAP是3次握手,但是具體是怎么通訊的,我只記得PAP的,而CHAP怎么也想不起來,很丟臉,呵呵。其實CHAP的C代表Chanllenge的意思,即驗證方會首先發起挑戰:你把密碼告訴我,這是***次握手;然后被驗證方才會將密碼告知驗證方,這是第二次握手;***驗證方反饋驗證結果,這是第三次握手。而PAP則只有后兩次握手,另外PAP的密碼是明文,CHAP的是密文,sao多了,繼續吧,呵呵)然而,鏈路質量的檢測也會在這個階段同時發生,但協議規定不會讓鏈路質量的檢測無限制的延遲驗證過程。在這個階段僅支持鏈路控制協議、驗證協議和質量檢測數據報文,其它的數據報文都會被丟棄。如果在這個階段再次收到了Config-Request報文,則又會返回到鏈路建立階段。(其實有的時候是不需要通過驗證階段,鏈路建立就直接進入網絡層協議階段了)
網絡層協議階段。一旦PPP完成了前面幾個階段,每種網絡層協議(IP、IPX和AppleTalk)會通過各自相應的網絡控制協議進行配置,每個NCP協議可在任何時間打開和關閉。當一個NCP的狀態機變成Opened狀態時,則PPP就可以開始在鏈路上承載網絡層的數據包報文了。如果在個階段收到了Config-Request報文,則又會返回到鏈路建立階段。
網絡終止階段,PPP能在任何時候終止鏈路。當載波丟失、授權失敗、鏈路質量檢測失敗和管理員人為關閉鏈路等情況均會導致鏈路終止。鏈路建立階段可能通過交換LCP的鏈路終止報文來關閉鏈路,當鏈路關閉時,鏈路層會通知網絡層做相應的操作,而且也會通過物理層強制關斷鏈路。對于NCP協議,它是沒有也沒有必要去關閉PPP鏈路的。(PPP協議除了不可用階段,任何一種狀態都可以立即進入網絡終止階段)