1.簡介
點到點協議是為在兩個對等實體間傳輸數據包建立簡單連接而設計的。這種連接提供了同時
的雙向的全雙工操作,并且假定數據包是按順序投遞的。PPP連接提供了一種廣泛的解決
辦法,方便地將多種多樣不忘的值作為最大接收單元的值。
2.填充域
在傳輸中,信息域可能會由附加任意數目的字節填充至最大接收單元長度。這由每個協議負
責將信息域和填充域區分開來。
3.PPP連接操作
3.1概述
為了在點到點連接中建立通信,PPP連接的每一端都必須首先發送LCP數據包來配置和
測試數據連接。在連接建立后,對等實體還有可能需要認證。 然后,PPP必須發送NC
P數據包來選擇一種或多種網絡層協議來配置。一旦被選中的網絡層協議被配置好后,該網
絡層的數據報就可以在鏈路上傳送了。 鏈路將保持可配置的狀態直到有LCP數據包和N
CP數據包終止連接,或者由
其他外部事件發生時(例如非活動時鐘計時已滿或網絡管理人員的干涉)。
3.2狀態圖
在配置維持和終止點到點連接的過程中,PPP連接經歷了幾個不同的階段,這些階段由以
下簡化的狀態圖說明:
+------+ +-----------+ +--------------+
| | 連接 | | 已打開 | | 成功/無
| 死亡 |------->| 建立 |---------->| 認證 |--+
| | | | | | |
+------+ +-----------+ +--------------+ |
^ | | |
| 失敗 | 失敗 | |
+<--------------+ +----------+ |
| | |
| +-----------+ | +---------+ |
| 斷開 | | | 正在關閉 | | |
+------------| 終止 |<---+<----------| 網絡 |<-+
| | | |
+-----------+ +---------+
3.3連接死亡階段(物理層未準備好)
一個連接的開始和結束都要經歷此階段。當一個外部事件(例如檢測到載波或網絡管理人員
配置)指示物理層已準備好并可以使用時,PPP將進入建立連接階段。 在此階段,LC
P協議自動機(后面將提到)處在初始或正在開始狀態。當進入到建立連接階段后會引發U
P事件通知LCP協議自動機。
應用注意事項:
典型的,一個連接將在調制解調器連接斷開后自動返回到此階段。在使用電話線的連接情況
下,這個階段將相當的短,短到很少有足夠的時間能用儀器檢測到它的存在。
3.4建立連接階段
鏈路控制協議(LCP)通過交換配置數據包建立連接。當LCP協議自動機進入已打開狀
態,并且發送和接收過配置確認數據包時,為建立連接的交換過程才完成。 所有的配置選
項都被假定為缺省值,除非在配置交互的過程中改變。關于LCP
配置選項的進一步討論參見后面的章節。
有一點是非常重要的,就是那些只有與特定網絡層協議無關的選項才能被LCP配置。配置
單獨的網絡層協議是在網絡層協議階段由相應的網絡控制協議來配置。
在此階段接收到的任何非LCP數據包將被靜默丟棄。 接收到LCP配置請求數據包將引
起PPP連接從網絡層協議階段或認證階段返回到建立連接階段。
3.5認證階段
在某些連接時,在允許網絡層協議數據包交換之前希望對對等實體進行認證。 缺省時,認
證不是必要的。如果應用時希望對等實體使用某些認證協議進行認證,這種要求必須在建立
連接階段提出。
認證階段應該緊接在建立連接階段后。然而,可能有連接質量的決定并行出現。應用時絕對
不允許連接質量決定數據包的交換使認證有不確定的延遲。認證階段后的網絡層協議階段必
須等到認證結束后才能開始。如果認證失敗,將轉而進入終止連接階段。僅僅是連接控制協
議、認證協議、連接質量監測的數據包才被允許在此階段中出現。所有其它在此階段中接收
到的數據包都將被靜默丟棄。
應用注意事項:
應用時不能簡單的因為超時或缺少回應就認為認證失敗。應該允許重傳,僅當試圖認證的次
數超過一定的限制時才進入終止連接階段。
如果對方拒絕認證,己方有權進入終止連接階段。
3.6網絡層協議階段
一旦PPP完成了上述階段,每一個網絡層協議(例如IP、IPX、AppleTal
k)必須單獨的由相應的網絡控制協議(NCP)配置。 每一個網絡控制協議可以隨時打
開或關閉。
應用注意事項:
因為可能一開始就會使用需要花費大量時間的連接質量決定,所以當等待對方進行網絡控制
協議配置時應該避免使用固定的超時限制。
當一個網絡控制協議自動機達到已打開的狀態時,PPP連接上就可以傳送相應的網絡層協
議數據包。當接收到的任何所支持的網絡層協議數據包時,只要相應的網絡控制協議狀態自
動機未進入已打開狀態,都將作靜默丟棄處理。
應用注意事項:
只要LCP協議狀態自動機處于已打開的狀態,任何接收到的不支持的協議數據包都將返回
協議拒絕包(后面將提到)。所支持的協議數據包都將靜默丟棄。在此階段,連接上流通的
包括LCP數據包、NCP數據包和網絡層協議數據包。
3.7終止連接階段
PPP連接可以隨時終止。原因可能是載波丟失、認證失敗、連接質量失敗、超時計數器溢
出,或者網絡管理員關閉連接。
LCP通過交換連接終止包來終止連接。當連接正在被終止的時候,PPP會通知網絡層以
便它采取相應的動作。
在交換過終止請求包后,將通知物理層斷開以便使連接真正終止,尤其是在認證失敗的時
侯。發送連接終止請求包的一方應該等待接收到連接終止確認包之后或超時計數器計滿之后
再斷開。收到連接終止確認包的一方應該等待對方首先斷開,并且決不能斷開直到至少有一
個超時計時器在發送了終止連接確認包之后溢出。然后PPP應該進入連接死亡階段。 在
此階段所有接收到的非LCP數據包都將被靜默丟棄。
應用注意事項:
關閉時使用LCP就已足夠。并不需要每一個NCP都發送終止連接數據包。相反的,一個
NCP協議自動機關閉并不能關閉整個PPP連接,即使這個NCP協議自動機是當前唯一
處于已打開狀態。
4. 選項協商自動機
有限狀態自動機由事件、動作、狀態遷移定義。事件包括接收外部命令,諸如打開、關閉、
超時計時器溢出和接收到對方發送過來的數據包。動作包括打開超時計數器和向對方發送數
據包。有些類型的數據包,諸如配置否定包和配置拒絕包,或者編號拒絕包和協議拒絕包,
或者回應請求包、回應回答包和丟棄請求包在自動機的描述中都是不可區分的。正如后面將
要提到的,雖然這些不同類型的數據包會引起相同的狀態遷移,但它們確實起到了不同的作
用。
事件 動作
Up = 低層已連接 tlu = 該層已連接
Down = 低層已斷開 tld = 該層已斷開
Open = 打開連接 tls = 該層已開始連接
Close= 關閉連接 tlf = 該層已關閉連接
TO+ = 超時計時器溢出且超時計數器值大于零 irc = 初始化超時計數器
TO- = 超時計時器溢出且超時計數器值小于零 zrc = 超時計數器清零
RCR+ = 收到正確的配置請求包 scr = 發送配置請求包
RCR- = 收到不正確的配置請求包
RCA = 收到配置確認包 sca = 發送配置確認包
RCN = 收到配置否定包/拒絕包 scn = 發送配置否定包/拒絕包
RTR = 收到終止請求包 str = 發送終止請求包
RTA = 收到終止確認包 sta = 發送終止確認包
RUC = 收到未知編碼包 scj = 發送編碼拒絕包
RXJ+ = 收到編碼拒絕包 (允許的)
或受到協議拒絕包
RXJ- = 收到編碼拒絕包 (糟糕的)
或受到協議拒絕包
RXR = 收到回應請求包 ser = 發送回應回答包
或者收到回應回答包
或者收到丟棄請求包
4.1狀態轉移表
以下就是完整的狀態轉移表。狀態水平列出來的。低層仍然沒有準備好。超時計時器也沒有
運行在此狀態下。
當低層變得可用時,就發送配置請求包。
Closed狀態
在此狀態下,連接有效,但是沒有出現Open事件。超時計時器也沒有運行在此狀態
下。 此時接收到配置請求包后,將發送終止請求包。接收到終止確認包將被靜默丟棄以免
產生循環。
Stopped狀態
此狀態是在Closed狀態發生了Open事件后遷移而來的。當自動機在進行了tlf
動作后或發送了終止請求包后在等待Down事件時就進入此狀態。超時計時器也沒有運行
在此狀態下。 此時接收到配置請求包后,將做出合適的回答。接收到其他類型的包時,就
發送終止確認包。接收到終止確認包將被靜默丟棄以免產生循環。
基本原理:
Stopped狀態是連接終止階段、連接配置失敗和其它自動機的錯誤模式的交匯之
處。 還存在著Down事件(由tlf動作引發)和RCR事件的競爭的情況。當R或拒
絕其它用戶的請求。自從連接被確認為可用時,就可以由一個Down事件和一個緊
接著的Open事件來通知LCP來模擬實現。應該特別注意的是Close事件不能由其
它的原因引發。 此時將觸發一個Down事件,隨即緊接著一個Up事件。這樣做將使得
連接有次序的開始重新協商,自動機由Closing狀態轉移到Stopping狀態,
并且tlf動作將斷開連接。自動機將在Stopped狀態或Starting狀態中等
待下一次連接。
Timeout(TO+,TO-)事件
Timeout事件指示超時計時器溢出。當發送出配置請求包和終止請求包后超時計時器
開始計時。TO+事件指示著超時計數器的值仍然大于零。其中超時計數器每減一,就表明
配置請求包或終止請求包就重傳一次。TO-事件指示著超時計數器的值小于零,再沒有任
何數據包需要重傳了。
Receive-Configure-Request(RCR+,RCR-)事件
RCR事件出現表明接收到了從對方發送來的配置請求包。配置請求包的到來表明對方希望
打開連接并且指定連接選項。配置請求包將在后面有更詳細的描述。
RCR+事件表明對方的配置請求是可以接受的,并且將傳送配置確認包。
RCR-事件表明對方的配置請求是不能接受,并且將傳送相應的配置否定包或配置拒絕
包。
應用注意事項:
這些事件可以在自動機已處于Opened狀態的時候發生。這時必須立即準備好重新協商
選項。
Receive-Configure-Ack(RCA)事件
RCA事件出現表明收到了對方κ褂茫眨鶚錄?魑?卮稹? 這個動作的結果高度依賴于應用
的需要。
This-Layer-Finished(tlf)動作
tlf動作表明低層的協議自動機進入了Intial狀態,Closed狀態,或Sto
pped狀態,并且低層已不再為連接所用。當低層終止時應使用Down事件作為回
答。
典型的,此動作可能會被LCP用來提前進入連接死亡階段,或者被NCP用來通知LCP
當沒有任何NCP被打開時連接可能會終止。
這個動作的結果高度依賴于應用的需要。
Initialize-Restart-Count(irc)動作
irc動作初始化超時計數器為一合適的值(Max-Terminate或Max-Co
nfigure)。每傳送一次數據包,計數器就減一,并且包括第一次。
應用注意事項:
除了設置超時計數器之外,還必須為超時計時器設置超時事件的時間長度。
Zero-Restart-Count(zrc)動作
zrc動作將超時計數器清零。
應用注意事項:
此動作使有限自動狀態機能夠在進入最終所期望的狀態之前停止,允許由對方處理網絡流
量。除了設置超時計數器之外,還必須為超時計時器設置超時事件的時間長度。
Send-Configure-Request(scr)動作
scr動作將發送配置請求包。這表明期望用指定的配置選項打開連接。當配置選項包被發
送時,超時計時器開始計時以防止它被丟失。每當發送一個配置請求包時,超時計數器就減
一。
Send-Configure-Ack(sca)動作
sca動作發送配置確認包。它表明確認了接收到的配置請求包中所有的配置選項。
Send-Configure-Nak(scn)動作
scn動作發送配置否定包或配置拒絕包。它表明否定了接收到的配置請求包中某些的配置
選項。 配置否定包被用于拒絕某一個配置選項值,并且還建議了一個新的可以接受的配置
選項值。而配置拒絕包被用于拒絕所有的配置選項,典型的是因為這些選項不能被識別或被
運用。關于如何使用配置否定包和配置拒絕包將在后面敘述鏈路控制協議數據包格式的章節
中詳細說明。
Send-Terminate-Request(str)動作
str動作發送終止請求包。它表明期望關閉連接。當終止請求包被發送時,超時計時器開
始計時以防止它被丟失。每當發送一個配置請求包時,超時計數器就減一。
Send-Terminate-Ack(sta)動作
sta動作發送終止確認包。它表明確認了接收到的終止請求包或者對雙方的協議自動機起
到同步的作用。
Send-Code-Reject(scj)動作
scj動作發送編碼拒絕包。它表明接收到有不能識別編碼的數據包。
Send-Echo-Reply(ser)動作
ser動作發送回應回答包。它表明確認接收到了回應請求包。
4.6避免循環
協議有效的避免了在協商配置選項時的循環。然而,協議并不能保證這種循環不再出現。在
協商任何選項時,雙方有可能采取了相互矛盾決不相容的配置策略。但是雙方也有可能采取
了可以相容的配置策略,但這時可能需要花費很多時間。應用者要將此記在心中并應應用循
環監測機制和更高層次的超時機制。
4.7計數器和計時器
超時計時器
自動機并沒有運用特殊的計時器。超時計時器被用來監測配置請求包和終止請求包的傳送。
當計時器計滿后將引發一個Timeout事件,并重新發送相應的配置請求包或終止請求
包。超時計時器必須被配置,而且缺省值應該為三秒鐘。
應用注意事項:
超時計時器的設置應該基于連接的速度。缺省值是為低速連接(2400-9600bp
s)、高速交換連接(典型的如電話線)設計的。更高速的連接,或低交換速度連接應該相
應的增加重傳的次數。
取代固定的超時值,超時計時器應該最初設為一個小的值然后再增加達到最終配置值。每一
個小于最終值的成功的值都應該是前一個值的兩倍。初始值應該足夠處理一個數據包,它通
常設置為兩倍于以連接速度在傳送間做一往返的時間還要加上一百毫秒,以允許對方在做作
回應之前能夠處理數據包。
最大終止次數
它是為終止請求包計數的超時計數器所要求的一個值。它表明了在假定對方不能做出回答之
前且未接收到終止確認包時發送終止請求包最大的發送次數。最大終止次數必須被配置,而
且缺省值應該為重傳兩次。
最大配置次數
相似的量被推薦給了配置請求包。它表明在假定對方不能做出回答之前且未接收到配置確認
包、配置否定包或配置拒絕包時發送配置請求包最大的發送次數。最大配置次數必須被配
置,而且缺省值應該為重傳十次。
最大失敗次數
相似的量被推薦給了配置否定包。它表明了在假定未達成一致發送配置確認包之前配置否定
包最大的發送次數。任何由對方配置否定包中所建議的而后又被加入到配置拒絕包中的選項
和本地所期望的選項在協商過程中都不再追加進去。最大配置次數必須被配置,而且缺省值
應該為五次。
5. 鏈路控制協議數據包格式
有三種類型的鏈路控制協議數據包:
1. 連接配置數據包用于建立和配置連接。(配置請求包,配置確認包,配置否定包和配置
拒絕包)。
2. 連接終止數據包用于終止連接(終止請求包和終止確認包)。
3. 連接維護數據包用于管理和調試連接(編碼拒絕包,協議拒絕包,回應請求包,回應回
答包和丟棄請求包)。為了簡化起見,數據鏈路控制協議數據包格式中并沒有版本號域。對
于不能識別的協議和編碼都能以簡單的可識別的鏈路控制協議數據包格式予以回應,因此對
其它的版本提供了一種確定性但效率低的的運行機制。不管什么配置選項被確定為使能,所
有的連接配置包,連接終止包,編碼拒絕包(編碼號1-7)都假定沒有配置選項被協商。
實際上,每一個配置選項都被指定了一個缺省值。這樣做使得諸如鏈路控制協議的數據包總
是能夠識別,即使當連接已結束但仍被錯誤的認為連接是打開的時候。
鏈路控制協議數據包被封裝在PPP幀格式的數據域中,且PPP幀的協議域的值是0xc
021。
鏈路控制協議數據包格式總結如下。按照從左至右的順序被傳送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 數據 ...
+-+-+-+-+
編碼域
編碼域占一個八位字節。它標識這是何種類型的鏈路控制協議數據包。當接收到編碼域不可
識別的數據包時,就發送編碼拒絕數據包。
最新的編碼域的值由最近公布的"Assigned Numbers"RFC文檔說明。與
本文檔相關的有以下的值:
1 配置請求(Configure-Request)
2 配置確認(Configure-Ack)
3 配置否定(Configure-Nak)
4 配置拒絕(Configure-Reject)
5 終止請求(Terminate-Request)
6 終止確認(Terminate-Ack)
7 編碼拒絕(Code-Reject)
8 協議拒絕(Protocol-Reject)
9 回應請求(Echo-Request)
10 回應回答(Echo-Reply)
11 丟棄請求(Discard-Request)
標識域
標識域編碼占一個八位字節,它幫助請求和回答進行匹配。當收到的數據包中的標識域是無
效的,它將被靜默丟棄并且不影響自動機的狀態。
長度域
標識域編碼占兩個八位字節,它標識了鏈路控制協議數據包的長度,包括編碼域,標識域,
數據域等。此長度不能超過連接的最大接收長度。
超過長度域的八位字節被視為填充字節并在接收時忽略。當接收到長度域無效的數據包時,
它將被靜默丟棄并且不影響自動機的狀態。
數據域
數據域有零個或多個八位字節,正如長度域中所指示的長度。數據域中的格式由編碼域中的
值決定。
5.1配置請求
描述
當希望打開一個連接時,必須傳送配置請求包。選項域中由期望改變連接缺省值的配置選項
填充。配置選項不必包含使用缺省值的配置選項。
當接收到了配置請求包時,必須傳送合適的數據包作為回應。
配置請求包的格式總結如下。按照從左至右的順序被傳送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 選項 ...
+-+-+-+-+
編碼
1代表配置請求。
標識
當選項域中的內容改變或當接收到對前一次請求的無效回答時,標識域應做改變。重傳時,
標識域則不應改變。
選項
選項域長度可變,包含有零個或多個希望協商的配置選項的列表。全部的配置選項將同時協
商。選項域的格式將在后面的章節詳細討論。
5.2配置確認
描述
如果對方發送來的配置請求包中的配置選項都是可識別并且可接受,就可以發送配置確認
包。其中已被確認的選項的順序和選項自身都不能以任何方式修改。
接收到的配置確認包中的標識域必須同上一次發送的配置請求包中的標識域匹配。此外,在
配置確認包中選項必須同上一次發送的配置請求包中的選項完全一致。
配置請求包的格式總結如下。按照從左至右的順序被傳送。
0 1 2 用于通知對方己方可以接收更大
的數據包,或者要求對方發送更小的數據包。
它的缺省值是1500字節。如果要求更小的數據包,當連接失去同步時應用仍將按150
0字節接收信息域。
應用注意事項:
此選項說明了應用的能力。對方并沒有要求使用最大的能力。舉例來說,當MRU為204
8字節,而對方沒有被要求發送2048字節大小的數據包。此時對方不需要使用配置否定
包表明它僅僅發送比2048字節小的數據包,因為應用始終要求支持至少
1500字節的數據包。最大接收單元配置選項格式小結如下。按照從左至右的順序被傳
送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 類型 | 長度 | 最大接收單元 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
類型
1
長度
4
最大接收單元
最大接收單元域有兩個八位字節,它指定了信息域和填充域所能接受的最大字節數。它不包
括幀協議域,循環校驗碼和任何因透明傳輸而需要的位或字節。
6.2認證協議
描述
在進行某些連接時可能希望在交換網絡層數據包之前要求對方來認證自己。 這個配置選項
提供了協商用指定的認證協議進行認證的方法。缺省情況下,認證是不需要的。
應用時不能在配置請求包中包含多個認證協議配置選項。相反的,應該首先配置最期望使用
的認證協議。如果被配置否定包所否定,應該在下一次配置請求中配置其次最期望使用使用
的認證協議。
應用發送配置請求包表明它希望對方對自己進行認證。如果對方發送來配置確認包,表示它
同意使用指定的協議進行erkins, D., "Requirements for an Internet
Standard Point-to-Point Protocol", RFC 1547, Carnegie Mellon University,
December 1993.??
點到點協議是為在兩個對等實體間傳輸數據包建立簡單連接而設計的。這種連接提供了同時
的雙向的全雙工操作,并且假定數據包是按順序投遞的。PPP連接提供了一種廣泛的解決
辦法,方便地將多種多樣不忘的值作為最大接收單元的值。
2.填充域
在傳輸中,信息域可能會由附加任意數目的字節填充至最大接收單元長度。這由每個協議負
責將信息域和填充域區分開來。
3.PPP連接操作
3.1概述
為了在點到點連接中建立通信,PPP連接的每一端都必須首先發送LCP數據包來配置和
測試數據連接。在連接建立后,對等實體還有可能需要認證。 然后,PPP必須發送NC
P數據包來選擇一種或多種網絡層協議來配置。一旦被選中的網絡層協議被配置好后,該網
絡層的數據報就可以在鏈路上傳送了。 鏈路將保持可配置的狀態直到有LCP數據包和N
CP數據包終止連接,或者由
其他外部事件發生時(例如非活動時鐘計時已滿或網絡管理人員的干涉)。
3.2狀態圖
在配置維持和終止點到點連接的過程中,PPP連接經歷了幾個不同的階段,這些階段由以
下簡化的狀態圖說明:
+------+ +-----------+ +--------------+
| | 連接 | | 已打開 | | 成功/無
| 死亡 |------->| 建立 |---------->| 認證 |--+
| | | | | | |
+------+ +-----------+ +--------------+ |
^ | | |
| 失敗 | 失敗 | |
+<--------------+ +----------+ |
| | |
| +-----------+ | +---------+ |
| 斷開 | | | 正在關閉 | | |
+------------| 終止 |<---+<----------| 網絡 |<-+
| | | |
+-----------+ +---------+
3.3連接死亡階段(物理層未準備好)
一個連接的開始和結束都要經歷此階段。當一個外部事件(例如檢測到載波或網絡管理人員
配置)指示物理層已準備好并可以使用時,PPP將進入建立連接階段。 在此階段,LC
P協議自動機(后面將提到)處在初始或正在開始狀態。當進入到建立連接階段后會引發U
P事件通知LCP協議自動機。
應用注意事項:
典型的,一個連接將在調制解調器連接斷開后自動返回到此階段。在使用電話線的連接情況
下,這個階段將相當的短,短到很少有足夠的時間能用儀器檢測到它的存在。
3.4建立連接階段
鏈路控制協議(LCP)通過交換配置數據包建立連接。當LCP協議自動機進入已打開狀
態,并且發送和接收過配置確認數據包時,為建立連接的交換過程才完成。 所有的配置選
項都被假定為缺省值,除非在配置交互的過程中改變。關于LCP
配置選項的進一步討論參見后面的章節。
有一點是非常重要的,就是那些只有與特定網絡層協議無關的選項才能被LCP配置。配置
單獨的網絡層協議是在網絡層協議階段由相應的網絡控制協議來配置。
在此階段接收到的任何非LCP數據包將被靜默丟棄。 接收到LCP配置請求數據包將引
起PPP連接從網絡層協議階段或認證階段返回到建立連接階段。
3.5認證階段
在某些連接時,在允許網絡層協議數據包交換之前希望對對等實體進行認證。 缺省時,認
證不是必要的。如果應用時希望對等實體使用某些認證協議進行認證,這種要求必須在建立
連接階段提出。
認證階段應該緊接在建立連接階段后。然而,可能有連接質量的決定并行出現。應用時絕對
不允許連接質量決定數據包的交換使認證有不確定的延遲。認證階段后的網絡層協議階段必
須等到認證結束后才能開始。如果認證失敗,將轉而進入終止連接階段。僅僅是連接控制協
議、認證協議、連接質量監測的數據包才被允許在此階段中出現。所有其它在此階段中接收
到的數據包都將被靜默丟棄。
應用注意事項:
應用時不能簡單的因為超時或缺少回應就認為認證失敗。應該允許重傳,僅當試圖認證的次
數超過一定的限制時才進入終止連接階段。
如果對方拒絕認證,己方有權進入終止連接階段。
3.6網絡層協議階段
一旦PPP完成了上述階段,每一個網絡層協議(例如IP、IPX、AppleTal
k)必須單獨的由相應的網絡控制協議(NCP)配置。 每一個網絡控制協議可以隨時打
開或關閉。
應用注意事項:
因為可能一開始就會使用需要花費大量時間的連接質量決定,所以當等待對方進行網絡控制
協議配置時應該避免使用固定的超時限制。
當一個網絡控制協議自動機達到已打開的狀態時,PPP連接上就可以傳送相應的網絡層協
議數據包。當接收到的任何所支持的網絡層協議數據包時,只要相應的網絡控制協議狀態自
動機未進入已打開狀態,都將作靜默丟棄處理。
應用注意事項:
只要LCP協議狀態自動機處于已打開的狀態,任何接收到的不支持的協議數據包都將返回
協議拒絕包(后面將提到)。所支持的協議數據包都將靜默丟棄。在此階段,連接上流通的
包括LCP數據包、NCP數據包和網絡層協議數據包。
3.7終止連接階段
PPP連接可以隨時終止。原因可能是載波丟失、認證失敗、連接質量失敗、超時計數器溢
出,或者網絡管理員關閉連接。
LCP通過交換連接終止包來終止連接。當連接正在被終止的時候,PPP會通知網絡層以
便它采取相應的動作。
在交換過終止請求包后,將通知物理層斷開以便使連接真正終止,尤其是在認證失敗的時
侯。發送連接終止請求包的一方應該等待接收到連接終止確認包之后或超時計數器計滿之后
再斷開。收到連接終止確認包的一方應該等待對方首先斷開,并且決不能斷開直到至少有一
個超時計時器在發送了終止連接確認包之后溢出。然后PPP應該進入連接死亡階段。 在
此階段所有接收到的非LCP數據包都將被靜默丟棄。
應用注意事項:
關閉時使用LCP就已足夠。并不需要每一個NCP都發送終止連接數據包。相反的,一個
NCP協議自動機關閉并不能關閉整個PPP連接,即使這個NCP協議自動機是當前唯一
處于已打開狀態。
4. 選項協商自動機
有限狀態自動機由事件、動作、狀態遷移定義。事件包括接收外部命令,諸如打開、關閉、
超時計時器溢出和接收到對方發送過來的數據包。動作包括打開超時計數器和向對方發送數
據包。有些類型的數據包,諸如配置否定包和配置拒絕包,或者編號拒絕包和協議拒絕包,
或者回應請求包、回應回答包和丟棄請求包在自動機的描述中都是不可區分的。正如后面將
要提到的,雖然這些不同類型的數據包會引起相同的狀態遷移,但它們確實起到了不同的作
用。
事件 動作
Up = 低層已連接 tlu = 該層已連接
Down = 低層已斷開 tld = 該層已斷開
Open = 打開連接 tls = 該層已開始連接
Close= 關閉連接 tlf = 該層已關閉連接
TO+ = 超時計時器溢出且超時計數器值大于零 irc = 初始化超時計數器
TO- = 超時計時器溢出且超時計數器值小于零 zrc = 超時計數器清零
RCR+ = 收到正確的配置請求包 scr = 發送配置請求包
RCR- = 收到不正確的配置請求包
RCA = 收到配置確認包 sca = 發送配置確認包
RCN = 收到配置否定包/拒絕包 scn = 發送配置否定包/拒絕包
RTR = 收到終止請求包 str = 發送終止請求包
RTA = 收到終止確認包 sta = 發送終止確認包
RUC = 收到未知編碼包 scj = 發送編碼拒絕包
RXJ+ = 收到編碼拒絕包 (允許的)
或受到協議拒絕包
RXJ- = 收到編碼拒絕包 (糟糕的)
或受到協議拒絕包
RXR = 收到回應請求包 ser = 發送回應回答包
或者收到回應回答包
或者收到丟棄請求包
4.1狀態轉移表
以下就是完整的狀態轉移表。狀態水平列出來的。低層仍然沒有準備好。超時計時器也沒有
運行在此狀態下。
當低層變得可用時,就發送配置請求包。
Closed狀態
在此狀態下,連接有效,但是沒有出現Open事件。超時計時器也沒有運行在此狀態
下。 此時接收到配置請求包后,將發送終止請求包。接收到終止確認包將被靜默丟棄以免
產生循環。
Stopped狀態
此狀態是在Closed狀態發生了Open事件后遷移而來的。當自動機在進行了tlf
動作后或發送了終止請求包后在等待Down事件時就進入此狀態。超時計時器也沒有運行
在此狀態下。 此時接收到配置請求包后,將做出合適的回答。接收到其他類型的包時,就
發送終止確認包。接收到終止確認包將被靜默丟棄以免產生循環。
基本原理:
Stopped狀態是連接終止階段、連接配置失敗和其它自動機的錯誤模式的交匯之
處。 還存在著Down事件(由tlf動作引發)和RCR事件的競爭的情況。當R或拒
絕其它用戶的請求。自從連接被確認為可用時,就可以由一個Down事件和一個緊
接著的Open事件來通知LCP來模擬實現。應該特別注意的是Close事件不能由其
它的原因引發。 此時將觸發一個Down事件,隨即緊接著一個Up事件。這樣做將使得
連接有次序的開始重新協商,自動機由Closing狀態轉移到Stopping狀態,
并且tlf動作將斷開連接。自動機將在Stopped狀態或Starting狀態中等
待下一次連接。
Timeout(TO+,TO-)事件
Timeout事件指示超時計時器溢出。當發送出配置請求包和終止請求包后超時計時器
開始計時。TO+事件指示著超時計數器的值仍然大于零。其中超時計數器每減一,就表明
配置請求包或終止請求包就重傳一次。TO-事件指示著超時計數器的值小于零,再沒有任
何數據包需要重傳了。
Receive-Configure-Request(RCR+,RCR-)事件
RCR事件出現表明接收到了從對方發送來的配置請求包。配置請求包的到來表明對方希望
打開連接并且指定連接選項。配置請求包將在后面有更詳細的描述。
RCR+事件表明對方的配置請求是可以接受的,并且將傳送配置確認包。
RCR-事件表明對方的配置請求是不能接受,并且將傳送相應的配置否定包或配置拒絕
包。
應用注意事項:
這些事件可以在自動機已處于Opened狀態的時候發生。這時必須立即準備好重新協商
選項。
Receive-Configure-Ack(RCA)事件
RCA事件出現表明收到了對方κ褂茫眨鶚錄?魑?卮稹? 這個動作的結果高度依賴于應用
的需要。
This-Layer-Finished(tlf)動作
tlf動作表明低層的協議自動機進入了Intial狀態,Closed狀態,或Sto
pped狀態,并且低層已不再為連接所用。當低層終止時應使用Down事件作為回
答。
典型的,此動作可能會被LCP用來提前進入連接死亡階段,或者被NCP用來通知LCP
當沒有任何NCP被打開時連接可能會終止。
這個動作的結果高度依賴于應用的需要。
Initialize-Restart-Count(irc)動作
irc動作初始化超時計數器為一合適的值(Max-Terminate或Max-Co
nfigure)。每傳送一次數據包,計數器就減一,并且包括第一次。
應用注意事項:
除了設置超時計數器之外,還必須為超時計時器設置超時事件的時間長度。
Zero-Restart-Count(zrc)動作
zrc動作將超時計數器清零。
應用注意事項:
此動作使有限自動狀態機能夠在進入最終所期望的狀態之前停止,允許由對方處理網絡流
量。除了設置超時計數器之外,還必須為超時計時器設置超時事件的時間長度。
Send-Configure-Request(scr)動作
scr動作將發送配置請求包。這表明期望用指定的配置選項打開連接。當配置選項包被發
送時,超時計時器開始計時以防止它被丟失。每當發送一個配置請求包時,超時計數器就減
一。
Send-Configure-Ack(sca)動作
sca動作發送配置確認包。它表明確認了接收到的配置請求包中所有的配置選項。
Send-Configure-Nak(scn)動作
scn動作發送配置否定包或配置拒絕包。它表明否定了接收到的配置請求包中某些的配置
選項。 配置否定包被用于拒絕某一個配置選項值,并且還建議了一個新的可以接受的配置
選項值。而配置拒絕包被用于拒絕所有的配置選項,典型的是因為這些選項不能被識別或被
運用。關于如何使用配置否定包和配置拒絕包將在后面敘述鏈路控制協議數據包格式的章節
中詳細說明。
Send-Terminate-Request(str)動作
str動作發送終止請求包。它表明期望關閉連接。當終止請求包被發送時,超時計時器開
始計時以防止它被丟失。每當發送一個配置請求包時,超時計數器就減一。
Send-Terminate-Ack(sta)動作
sta動作發送終止確認包。它表明確認了接收到的終止請求包或者對雙方的協議自動機起
到同步的作用。
Send-Code-Reject(scj)動作
scj動作發送編碼拒絕包。它表明接收到有不能識別編碼的數據包。
Send-Echo-Reply(ser)動作
ser動作發送回應回答包。它表明確認接收到了回應請求包。
4.6避免循環
協議有效的避免了在協商配置選項時的循環。然而,協議并不能保證這種循環不再出現。在
協商任何選項時,雙方有可能采取了相互矛盾決不相容的配置策略。但是雙方也有可能采取
了可以相容的配置策略,但這時可能需要花費很多時間。應用者要將此記在心中并應應用循
環監測機制和更高層次的超時機制。
4.7計數器和計時器
超時計時器
自動機并沒有運用特殊的計時器。超時計時器被用來監測配置請求包和終止請求包的傳送。
當計時器計滿后將引發一個Timeout事件,并重新發送相應的配置請求包或終止請求
包。超時計時器必須被配置,而且缺省值應該為三秒鐘。
應用注意事項:
超時計時器的設置應該基于連接的速度。缺省值是為低速連接(2400-9600bp
s)、高速交換連接(典型的如電話線)設計的。更高速的連接,或低交換速度連接應該相
應的增加重傳的次數。
取代固定的超時值,超時計時器應該最初設為一個小的值然后再增加達到最終配置值。每一
個小于最終值的成功的值都應該是前一個值的兩倍。初始值應該足夠處理一個數據包,它通
常設置為兩倍于以連接速度在傳送間做一往返的時間還要加上一百毫秒,以允許對方在做作
回應之前能夠處理數據包。
最大終止次數
它是為終止請求包計數的超時計數器所要求的一個值。它表明了在假定對方不能做出回答之
前且未接收到終止確認包時發送終止請求包最大的發送次數。最大終止次數必須被配置,而
且缺省值應該為重傳兩次。
最大配置次數
相似的量被推薦給了配置請求包。它表明在假定對方不能做出回答之前且未接收到配置確認
包、配置否定包或配置拒絕包時發送配置請求包最大的發送次數。最大配置次數必須被配
置,而且缺省值應該為重傳十次。
最大失敗次數
相似的量被推薦給了配置否定包。它表明了在假定未達成一致發送配置確認包之前配置否定
包最大的發送次數。任何由對方配置否定包中所建議的而后又被加入到配置拒絕包中的選項
和本地所期望的選項在協商過程中都不再追加進去。最大配置次數必須被配置,而且缺省值
應該為五次。
5. 鏈路控制協議數據包格式
有三種類型的鏈路控制協議數據包:
1. 連接配置數據包用于建立和配置連接。(配置請求包,配置確認包,配置否定包和配置
拒絕包)。
2. 連接終止數據包用于終止連接(終止請求包和終止確認包)。
3. 連接維護數據包用于管理和調試連接(編碼拒絕包,協議拒絕包,回應請求包,回應回
答包和丟棄請求包)。為了簡化起見,數據鏈路控制協議數據包格式中并沒有版本號域。對
于不能識別的協議和編碼都能以簡單的可識別的鏈路控制協議數據包格式予以回應,因此對
其它的版本提供了一種確定性但效率低的的運行機制。不管什么配置選項被確定為使能,所
有的連接配置包,連接終止包,編碼拒絕包(編碼號1-7)都假定沒有配置選項被協商。
實際上,每一個配置選項都被指定了一個缺省值。這樣做使得諸如鏈路控制協議的數據包總
是能夠識別,即使當連接已結束但仍被錯誤的認為連接是打開的時候。
鏈路控制協議數據包被封裝在PPP幀格式的數據域中,且PPP幀的協議域的值是0xc
021。
鏈路控制協議數據包格式總結如下。按照從左至右的順序被傳送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 數據 ...
+-+-+-+-+
編碼域
編碼域占一個八位字節。它標識這是何種類型的鏈路控制協議數據包。當接收到編碼域不可
識別的數據包時,就發送編碼拒絕數據包。
最新的編碼域的值由最近公布的"Assigned Numbers"RFC文檔說明。與
本文檔相關的有以下的值:
1 配置請求(Configure-Request)
2 配置確認(Configure-Ack)
3 配置否定(Configure-Nak)
4 配置拒絕(Configure-Reject)
5 終止請求(Terminate-Request)
6 終止確認(Terminate-Ack)
7 編碼拒絕(Code-Reject)
8 協議拒絕(Protocol-Reject)
9 回應請求(Echo-Request)
10 回應回答(Echo-Reply)
11 丟棄請求(Discard-Request)
標識域
標識域編碼占一個八位字節,它幫助請求和回答進行匹配。當收到的數據包中的標識域是無
效的,它將被靜默丟棄并且不影響自動機的狀態。
長度域
標識域編碼占兩個八位字節,它標識了鏈路控制協議數據包的長度,包括編碼域,標識域,
數據域等。此長度不能超過連接的最大接收長度。
超過長度域的八位字節被視為填充字節并在接收時忽略。當接收到長度域無效的數據包時,
它將被靜默丟棄并且不影響自動機的狀態。
數據域
數據域有零個或多個八位字節,正如長度域中所指示的長度。數據域中的格式由編碼域中的
值決定。
5.1配置請求
描述
當希望打開一個連接時,必須傳送配置請求包。選項域中由期望改變連接缺省值的配置選項
填充。配置選項不必包含使用缺省值的配置選項。
當接收到了配置請求包時,必須傳送合適的數據包作為回應。
配置請求包的格式總結如下。按照從左至右的順序被傳送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 編碼 | 標識 | 長度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 選項 ...
+-+-+-+-+
編碼
1代表配置請求。
標識
當選項域中的內容改變或當接收到對前一次請求的無效回答時,標識域應做改變。重傳時,
標識域則不應改變。
選項
選項域長度可變,包含有零個或多個希望協商的配置選項的列表。全部的配置選項將同時協
商。選項域的格式將在后面的章節詳細討論。
5.2配置確認
描述
如果對方發送來的配置請求包中的配置選項都是可識別并且可接受,就可以發送配置確認
包。其中已被確認的選項的順序和選項自身都不能以任何方式修改。
接收到的配置確認包中的標識域必須同上一次發送的配置請求包中的標識域匹配。此外,在
配置確認包中選項必須同上一次發送的配置請求包中的選項完全一致。
配置請求包的格式總結如下。按照從左至右的順序被傳送。
0 1 2 用于通知對方己方可以接收更大
的數據包,或者要求對方發送更小的數據包。
它的缺省值是1500字節。如果要求更小的數據包,當連接失去同步時應用仍將按150
0字節接收信息域。
應用注意事項:
此選項說明了應用的能力。對方并沒有要求使用最大的能力。舉例來說,當MRU為204
8字節,而對方沒有被要求發送2048字節大小的數據包。此時對方不需要使用配置否定
包表明它僅僅發送比2048字節小的數據包,因為應用始終要求支持至少
1500字節的數據包。最大接收單元配置選項格式小結如下。按照從左至右的順序被傳
送。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 類型 | 長度 | 最大接收單元 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
類型
1
長度
4
最大接收單元
最大接收單元域有兩個八位字節,它指定了信息域和填充域所能接受的最大字節數。它不包
括幀協議域,循環校驗碼和任何因透明傳輸而需要的位或字節。
6.2認證協議
描述
在進行某些連接時可能希望在交換網絡層數據包之前要求對方來認證自己。 這個配置選項
提供了協商用指定的認證協議進行認證的方法。缺省情況下,認證是不需要的。
應用時不能在配置請求包中包含多個認證協議配置選項。相反的,應該首先配置最期望使用
的認證協議。如果被配置否定包所否定,應該在下一次配置請求中配置其次最期望使用使用
的認證協議。
應用發送配置請求包表明它希望對方對自己進行認證。如果對方發送來配置確認包,表示它
同意使用指定的協議進行erkins, D., "Requirements for an Internet
Standard Point-to-Point Protocol", RFC 1547, Carnegie Mellon University,
December 1993.??
評論
查看更多