?? ppp協(xié)議規(guī)范.htm
字號:
timer仍舊運行。
<LI>Ack-Sent(Ack-發(fā)送):在Ack-發(fā)送狀態(tài),Configure-Request和Configure-Ack都被發(fā)送了。但沒有接收到Configure-Ack。因為還沒有接收到Configure-Ack,所以Restart
timer仍舊運行。
<LI>Opened(開啟):在開啟狀態(tài),發(fā)送了一個Configure-Ack,也接收了一個Configure-Ack。Restarttimer不運行。當(dāng)進入該狀態(tài)時,執(zhí)行應(yīng)該通知上層,現(xiàn)在Up。相反,當(dāng)離開該裝態(tài)時,執(zhí)行應(yīng)該通知上層,現(xiàn)在Down。
</LI></UL>
<P>4-3 事件</P>
<P>自動機里的狀態(tài)轉(zhuǎn)換和動作是由事件引起的。
<UL>
<LI>Up:當(dāng)?shù)蛯又赋鲆褱?zhǔn)備好攜帶packets時,發(fā)生此事件。典型的,該事件被調(diào)制解調(diào)器處理或呼叫過程,或被一些其他的連接于物理媒體的PPP用于通知LCP,鏈路正進入鏈路建立階段。它也能被LCP用于通知每個NCP,鏈路進入網(wǎng)絡(luò)層協(xié)議階段。即,來自LCP的動作This-Layer-Up觸發(fā)了NCP中的Up事件。
<LI>Down:當(dāng)?shù)蛯又赋霾辉贉?zhǔn)備攜帶packets時,發(fā)生此事件。典型的,該事件被調(diào)制解調(diào)器處理或呼叫過程,或被一些其他的連接于物理媒體的
<BR>PPP用于通知LCP,鏈路正進入鏈路死亡階段。它也能被LCP用于通知每個NCP,鏈路離開網(wǎng)絡(luò)層協(xié)議階段。即,來自LCP的動作This-Layer-Down觸發(fā)了NCP中的Down事件。
<LI>Open:該事件指出鏈路的通信量是可以管理的:即,網(wǎng)絡(luò)管理者(人或程序)指出鏈路允許被Opened。當(dāng)這一事件發(fā)生,且鏈路不處于Opened狀態(tài)時,自動機則試圖給peer發(fā)送配置packets。如果自動機不能開始配置(下層是Down,或者前一個Close事件還沒有結(jié)束),那么
<BR>鏈路的建立將被自動的推遲。當(dāng)收到一個Terminate-Request,或者其他導(dǎo)致鏈路不可用的事件發(fā)生時,自動機將進入一個狀態(tài),在那里鏈路準(zhǔn)備re-open。無需額外的管理干涉。
</LI></UL>
<P>執(zhí)行選項:</P>
<P>經(jīng)驗表明:當(dāng)用戶想就鏈路進行重新談判時,他們將額外的執(zhí)行一條Open命令。這表明新的值將被協(xié)商。既然這不是Open事件的含義,那就暗示著在Opened,
Closing,
Stopping或Stopped狀態(tài),當(dāng)執(zhí)行一條Open用戶命令時,執(zhí)行發(fā)行一個Down事件,緊接著一個Up事件。一定要注意不能有從另一個源發(fā)生的Down事件的干涉。緊接著Up事件的Down事件將引起一次有秩序的鏈路的再協(xié)商(通過先前進到Starting狀態(tài),再進入到Request-Sent狀態(tài))。該再協(xié)商沒有負面影響。</P>
<P>Close:該事件意味著鏈路沒有通信量。即,網(wǎng)絡(luò)管理者(人或程序)指示鏈路不允許被開放。當(dāng)該事件發(fā)生且鏈路不處于Closed狀態(tài)時,自動機試圖終止連接。拒絕重新配置鏈路的嘗試,直到一個新的Open事件發(fā)生。</P>
<P>執(zhí)行記錄:</P>
<P>當(dāng)認證失敗,鏈路應(yīng)該被終止,以防止受到重復(fù)性的攻擊和為其他用戶服務(wù)。這可以通過模仿一個Close事件給LCP,然后緊跟著一個Open事件來完成,既然鏈路在管理上是可被訪問的。一定要注意不能有從另一個源發(fā)生的Down事件的干涉。緊接著Up事件的Down事件將引起一次有秩序的鏈路的再協(xié)商(通過先前進到Closing狀態(tài),再進入到Stopping狀態(tài)),This-Layer-Finished動作能斷開鏈路的連接。在Stopped或Starting狀態(tài),自動機等待下一次連接嘗試。</P>
<P>Timeout (TO+,TO-):該事件表明Restart timer期滿。Restart
timer用于記錄對Configure-Request和Terminate-Request packets的響應(yīng)的時間。TO+事件表明Restart
counter持續(xù)大于零,它觸發(fā)了相應(yīng)的Configure-Request或Terminate-Request
packet的發(fā)送。TO-事件表明Restart counter持續(xù)不大于零,不再需要發(fā)送packets。</P>
<P>Receive-Configure-Request (RCR+,RCR-):當(dāng)收到一個來自peer的Configure-Request
packet時,該事件發(fā)生。Configure-Request
packet表明希望開創(chuàng)一個連接并且可以指定配置選項。RCR+事件表明Configure-Request是可接受的,并且觸發(fā)相應(yīng)的Configure-Ack的傳輸。RCR-事件表明Configure-Request是不可接受的,并且觸發(fā)相應(yīng)的Configure-Nak或Configure-Reject的傳輸。</P>
<P>執(zhí)行記錄:</P>
<P>這些事件可以發(fā)生在已經(jīng)處于Opened狀態(tài)的連接上。該執(zhí)行必須準(zhǔn)備立即再協(xié)商配置選項。</P>
<P>Receive-Configure-Ack (RCA):當(dāng)收到一個來自peer的有效Configure-Ack
packet時,該事件發(fā)生。Configure-Ack packet是對Configure-Request
packet的肯定應(yīng)答。序列之外的或者無效的packet被靜靜的丟棄。</P>
<P>執(zhí)行記錄:</P>
<P>既然在到達Ack-Rcvd或Opened狀態(tài)之前,正確的packet已經(jīng)被收到了,那就絕不可能有另一個這樣的packet的到來。像說明的一樣,所有無效的Ack/Nak/Rej
packets將被靜靜的丟棄,并不影響自動機的(狀態(tài))轉(zhuǎn)換。然而,格式正確的packet不可能通過coincidentally-timed
cross-connection(同步交換連接)到達(目的地)的。它更可能是執(zhí)行出錯的結(jié)果。至少,這種情況應(yīng)該被記錄下來。</P>
<P>Receive-Configure-Nak/Rej
(RCN):當(dāng)收到一個來自peer的有效Configure-Nak或Configure-Reject
packet時,該事件發(fā)生。Configure-Nak或Configure-Reject packet是對Configure-Request
packet的否定應(yīng)答。序列之外的或者無效的packet被靜靜的丟棄。</P>
<P>執(zhí)行記錄:</P>
<P>盡管Configure-Nak和Configure-Reject在自動機中引起相同的狀態(tài)轉(zhuǎn)換,但這些packets對發(fā)送于Configure-Request
packet中的配置選項有著截然不同的影響。</P>
<P>Receive-Terminate-Request (RTR):當(dāng)收到一個Terminate-Request
packet時,該事件發(fā)生。Terminate-Request packet表明希望peer去關(guān)閉連接。</P>
<P>執(zhí)行記錄:該事件于Close事件不同,它需要考慮局域網(wǎng)管理者的Open命令。執(zhí)行必須準(zhǔn)備接收新的沒有網(wǎng)絡(luò)管理者干涉的Configure-Request。</P>
<P>Receive-Terminate-Ack (RTA):</P>
<P>當(dāng)收到一個來自peer的Terminate-Ack packet時,該事件發(fā)生。Terminate-Ack
packet通常是對Terminate-Request packet的響應(yīng)。Terminate-Ack
packet也可以表明peer正處于Closed或Stopped狀態(tài),適應(yīng)于鏈路配置的再同步。</P>
<P>Receive-Unknown-Code (RUC):</P>
<P>當(dāng)收到一個來自peer的un-interpretable(不能說明的)packet時,該事件發(fā)生。發(fā)送一個Code-Reject
packet作為響應(yīng)。</P>
<P>Receive-Code-Reject, Receive-Protocol-Reject
(RXJ+,RXJ-):當(dāng)收到一個來自peer的Code-Reject或Protocol-Reject
packet時,該事件發(fā)生。當(dāng)拒絕值可接受時(例如一個擴充編碼的Code-Reject,或一個NCP的Protocol-Reject,這些在一般操作的范圍內(nèi)),RXJ+事件出現(xiàn)。執(zhí)行必須停止發(fā)送損壞了的packet類型。當(dāng)拒絕值是災(zāi)難性的時候(例如一個Configure-Request的Code-Reject,或一個LCP的Protocol-Reject),RXJ-
事件出現(xiàn)。該事件傳達了一個不可校正的錯誤(導(dǎo)致連接終止)。</P>
<P>Receive-Echo-Request, Receive-Echo-Reply,
Receive-Discard-Request(RXR):當(dāng)收到一個來自peer的Echo-Request,Echo-Reply或Discard-Request
packet時,該事件發(fā)生。Echo-Reply packet是對Echo-Request
packet的響應(yīng)。Echo-Reply或Discard-Request packet沒有響應(yīng)。</P>
<P>4-4 動作</P>
<P>自動機中的動作有事件引起。典型的,動作表明了packets的傳輸,和/或Restarttimer的啟動和停止。
<UL>
<LI>Illegal-Event (-):不合法的事件 </LI></UL>
<P>該動作指出一個在正常執(zhí)行的自動機中不可能出現(xiàn)的事件。執(zhí)行有一個內(nèi)在的錯誤,應(yīng)該把它報告并記錄下來。沒有轉(zhuǎn)換被執(zhí)行,執(zhí)行不應(yīng)該reset or
freeze(重新安排或凍結(jié))。
<UL>
<LI>This-Layer-Up(tlu) </LI></UL>
<P>動作給自動進入打開階段的上邊的層做指示。典型的,該動作被LCP用于對一個NCP發(fā)送向上的事件信號,或者鏈路質(zhì)量協(xié)議,或者可以被一個NCP用于顯示該鏈路可用于它的網(wǎng)絡(luò)層往來。
<UL>
<LI>This-Layer-Down(tld) </LI></UL>
<P>該動作給自動留下打開的階段的上邊的層做指示。典型地,該動作被LCP用于向一個NCP發(fā)送向下的事件,證實協(xié)議,或者可以被一個NCP用于顯示該鏈路對它的網(wǎng)絡(luò)層傳輸不再可用。
<UL>
<LI>This-Layer-Started了(tls) </LI></UL>
<P>該動作對自動進入開始狀態(tài)的更低的層做指示,并且需要更低的層用于該鏈路。當(dāng)更低的層可用的時候,更低的層應(yīng)該用一個向上的事件響應(yīng)。該動作的結(jié)果是高度的依賴動作的執(zhí)行的。
<UL>
<LI>This-Layer-Finished(tlf) </LI></UL>
<P>該動作給自動進入最初,關(guān)閉了或者停止的階段的更低的層做指示,并且,在鏈路上不再需要更低的層。當(dāng)更低的層終止的時候,更低的層應(yīng)該用一個向下的事件應(yīng)答。典型地,該動作可以被LCP用于前進到鏈路死掉的狀態(tài),或者可以被一個NCP用于給當(dāng)沒有其他的NCPs打開時鏈路可以被終止的LCP做指示。該動作的結(jié)果是高度的依賴動作的執(zhí)行的。
<UL>
<LI>Initialize-Restart-Count(irc) </LI></UL>
<P>該動作對Restart計數(shù)器設(shè)置適當(dāng)?shù)闹担∕ax-Terminate 或
Max-Configure)。每次傳輸,包括第一次傳輸,計數(shù)器自減。執(zhí)行記錄:附加的設(shè)置Restart計數(shù)器,當(dāng)使用了重定時返回時,該執(zhí)行必須設(shè)置超時周期到初始值。
<UL>
<LI>Zero-Restart-Count(zrc) </LI></UL>
<P>該動作對Restart計數(shù)器清零。執(zhí)行記錄:該動作允許FSA在進行到要求的最終狀態(tài)之前暫停,允許用peer進行傳輸。附加的清零Restart計數(shù)器,該執(zhí)行必須設(shè)置超時周期到初始值。
<UL>
<LI>Send-Configure-Request(scr) </LI></UL>
<P>一個Configure-Request的包被傳送。這表明要用指定的一套特殊的配置選項打開一個連接。為了防止包丟失,Restart計時器在Configure-Request包被傳送的時候打開。每次一個Configure-Request被發(fā)送的時候,Restart計數(shù)器自減。
<UL>
<LI>Send-Configure-Ack(sca) </LI></UL>
<P>一個Configure-Ack包被傳送。這確認接收了一個帶有一套可接受的配置選項的Configure-Request包。
<UL>
<LI>Send-Configure-Nak(scn) </LI></UL>
<P>一個Configure-Nak或Configure-Reject包被穩(wěn)妥的傳送。否定的響應(yīng)表明一個Configure-Request包帶有一套不可接受的配置選項。Configure-Nak包被用于拒絕一個配置選項值,并提議一個新的,可接受的值。Configure-Reject包被用于拒絕全部的關(guān)于一個配置選項的協(xié)商,典型的因為不被認可或不被滿足。在關(guān)于LCP包格式的章節(jié)對Configure-Nak的使用比Configure-Reject有更充分的描述。
<UL>
<LI>Send-Terminate-Request(str) </LI></UL>
<P>一個Terminate-Request包被傳送。這表示想要關(guān)上連接的愿望。當(dāng)Terminate-Request包被傳送時Restart計時器被開啟,來防止包丟失。每次一個Terminate-Request被發(fā)送的時候,Restart計數(shù)器自減。
<UL>
<LI>Send-Terminate-Ack (sta) </LI></UL>
<P>一個Terminate-Ack包被傳送。這確認Terminate-Request的包的接收,或者以別的方式對于自動同步起作用。
<UL>
<LI>Send-Code-Reject(scj) </LI></UL>
<P>一個Code-Reject包被傳送。這表示未知的種類的包的接收。
<UL>
<LI>Send-Echo-Reply (ser) </LI></UL>
<P>一個Echo-Reply包被傳送。這確認一個Echo-Request包的接收。</P>
<P>4-5 環(huán)躲避(循環(huán)避免)</P>
<P>協(xié)議做避開協(xié)商成環(huán)狀的配置選項的適當(dāng)嘗試。不過,協(xié)議不保證環(huán)將不發(fā)生。和任何協(xié)商一樣,有可能來設(shè)置2個PPP由不收斂的矛盾的方法來執(zhí)行。同樣,也有可能配置收斂的,重要的時間這樣去做的方法。設(shè)備應(yīng)該考慮這些,并且應(yīng)該滿足環(huán)偵測機制或更高水平的超時。</P>
<P>4-6 計數(shù)器和定時器</P>
<P>重啟動定時器</P>
<P>有一個特殊的定時器被自動使用。重啟動定時器被用于計算Configure-Request和Terminate-Request包的傳輸時間。重啟動定時器的滿期產(chǎn)生一個超時事件,并且通信Configure-Request或Terminate-Request包重新傳送。重啟動定時器必須是可配置的,但是應(yīng)該缺省為三(3)秒。</P>
<P>執(zhí)行記錄:重新開始計時器應(yīng)該根據(jù)鏈路的速度。缺省值被指定為低的速度(2,400~9,600
bps),高交換的等待時間鏈路(典型電話線)。更高的速度鏈路或和低交換等待時間的鏈路應(yīng)該相對應(yīng)有更快的再次傳輸時間。代替恒定值,重新開始計時器可以從最初的小的值開始增加到配置的最終值。每一個小于最終值的連續(xù)值應(yīng)該至少是前一個值的兩倍。初始值應(yīng)該對包的大小來說足夠大,用于以線路速率傳輸兩倍的round
trip時間,并且至少附加100毫秒來允許peer來處理響應(yīng)之前的包。一些電路又加了200毫秒的附加遲延。以14,400
bps運作的調(diào)制解調(diào)器的round trip時間范圍中精確到160到600毫秒以上。</P>
<P>Max-Terminate</P>
<P>必須有一個Terminate-Requests的restart計數(shù)器。Max-Terminate顯示Terminate-Request包發(fā)送,但是認為peer不會應(yīng)答的,沒有收到Terminate-Ack的包的個數(shù)。Max-Terminate必須是可配置的,但是應(yīng)該缺省為二(2)秒傳輸。</P>
<P>Max-Configure</P>
<P>推薦為Configure-Requests采用一個類似的計數(shù)器。Max-Configure顯示Configure-Request包發(fā)送,在peer不會應(yīng)答前的,沒有接收到一個有效的Configure-Ack,Configure-Nak
或 Configure-Reject的包的個數(shù)。Max-Configure必須是可配置的,但是應(yīng)該缺省為十(10)次傳輸。</P>
<P>Max-Failure</P>
<P>推薦為Configure-Nak采用一個相關(guān)的計數(shù)器。Max-Failure顯示Configure-Nak包發(fā)送,在假定配置不收斂之前發(fā)Configure-Ack的Configure-Nak包的個數(shù)。任何更進一步的用于peer請求的選項被轉(zhuǎn)換到Configure-Reject包,并且不在附加局部要求選項。Max-Failure必須是可配置的,但是應(yīng)該缺省為五(5)次傳輸。</P>
<P>5 LCP包格式</P>
<P>LCP包有3類:
<OL>
<LI>鏈路配置包,用于建立和配置鏈路(Configure-Request,Configure-Ack,Configure-Nak,和Configure-Reject)。
<LI>鏈路結(jié)束包被用于結(jié)束一個鏈路(Terminate-Request 和 Terminate-Ack)
<LI>鏈路維修包被用于管理和調(diào)試一個鏈路(Code-Reject, Protocol-Reject, Echo-Request,
Echo-Reply, 和 Discard-Request)。 </LI></OL>
<P>為了簡單,LCP包里沒有版本域。一個正確的運作的LCP的執(zhí)行將總是對帶有簡單地可以識別的LCP包的未知協(xié)議和代碼進行響應(yīng)。這樣倘若一個確定性的可靠的機制用于其他版本的執(zhí)行。不管哪個配置選項被允許,所有的LCP鏈路配置,鏈路終止和代碼-拒絕包(代碼1到7)總被發(fā)送,就像沒有配置選項被協(xié)商一樣。特別是,每個配置選項都指定缺省值。這就保證了這樣的LCP包總是可以識別的,甚至當(dāng)1個鏈路的結(jié)束錯誤的相信該鏈路是開著的。</P>
<P>確切的說1個LCP包被封裝在PPP信息域中,該PPP協(xié)議域表示類型為十六進制c021(鏈路控制協(xié)議)。鏈環(huán)控制協(xié)議包格式的摘要如下。域被從左往右傳送。</P>
<P align=center><IMG height=117 alt="PPP-3.bmp (6146 bytes)"
src="PPP協(xié)議規(guī)范.files/ppp-3.gif" width=387></P>
<UL>
<LI>代碼 </LI></UL>
<P>代碼域是一個八位字節(jié),確定LCP包的種類。當(dāng)收到一個帶有未知域的包時,一個Code-Reject包被傳送。LCP代碼域的Up-to-date值在最近的"指定號碼"RFC[2]中被指定。該文檔涉及以下的值:</P>
<P> 1 Configure-Request <BR> 2 Configure-Ack <BR> 3 Configure-Nak
<BR> 4 Configure-Reject <BR> 5 Terminate-Request <BR> 6 Terminate-Ack
<BR> 7 Code-Reject <BR> 8 Protocol-Reject <BR> 9 Echo-Request <BR> 10
Echo-Reply <BR> 11 Discard-Request
<UL>
<LI>標(biāo)識符 </LI></UL>
<P>標(biāo)識符域是一個八位字節(jié),對匹配請求和回復(fù)中有幫助。當(dāng)帶有無效標(biāo)識符域的包被接收時候,該包將不影響自動機制,被靜靜的丟棄。
<UL>
<LI>長度 </LI></UL>
<P>長度域是二個八位字節(jié),指出LCP包的長度,包括代碼,標(biāo)識符,長度和數(shù)據(jù)域。該長度必須不超過鏈路的MRU。長度域以外的字節(jié)被當(dāng)作填料而忽略處理。當(dāng)收到帶有無效標(biāo)識符該包將不影響自動機制,被靜靜的丟棄。
<UL>
<LI>數(shù)據(jù) </LI></UL>
<P>數(shù)據(jù)域是零或多個八位字節(jié),由長度域聲明。數(shù)據(jù)域的格式由代碼域決定。</P>
<P>5-1. Configure-Request</P>
<P>描述</P>
<P>一個執(zhí)行想要打開一個連接必須傳送一個Configure-Request。選項域被填充任何想要的對鏈路默認的改變。配置選項應(yīng)該不被包括到默認值中。Configure-Request的接收上,必須傳送適當(dāng)?shù)拇饛?fù)。下面給出Configure-Request包的格式的摘要。域從左到右傳輸。</P>
<P align=center><IMG height=115 alt="PPP-4.bmp (6042 bytes)"
src="PPP協(xié)議規(guī)范.files/ppp-4.gif" width=389></P>
<P>代碼</P>
<P>1 為Configure-Request</P>
<P>標(biāo)識符</P>
<P>只要選項域改變的內(nèi)容改變,并且只要收到先前請求的有效響應(yīng),標(biāo)識符域必須被變。對重發(fā)來說,標(biāo)識符可以保持不變。</P>
<P>選項</P>
<P>選項域是長度的變量,并包含零個或多個發(fā)送方需要協(xié)商的配置選項的列表。全部配置選項總是被同時協(xié)商。在下一章中對配置選項的格式有更詳細的描寫。</P>
<P>5-2. Configure-Ack</P>
<P>描述</P>
<P>如果Configure-Request中收到的每一個配置選項和全部的值都是能接受的,那么該執(zhí)行必須傳送一個Configure-Ack。該確認配置選項必須不被任何途徑的重命令或更改。Configure-Ack的接收中,標(biāo)識符域必須匹配最后傳送的Configure-Request。另外,Configure-Ack中
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -