?? ppp中使用hdlc幀.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://www.longen.org/e-k/detaile~k/hdlc.htm -->
<HTML><HEAD><TITLE>PPP中使用HDLC幀</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD width="100%"><FONT face=宋體 size=3>
<P align=justify><STRONG>在PPP中使用HDLC幀</STRONG></P>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#介紹">介紹</A></TD>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#物理層要求">物理層要求</A></TD>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#數據鏈路層">數據鏈路層</A></TD>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#面向字節連接的HDLC幀">面向字節連接的HDLC幀</A></TD></TR>
<TR>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#位同步HDLC幀">位同步HDLC幀</A></TD>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#異步到同步的轉換">異步到同步的轉換</A></TD>
<TD width="25%"><A
href="http://www.longen.org/e-k/detaile~k/hdlc.htm#附加LCP配置選項">附加LCP配置選項</A></TD>
<TD width="25%"></TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=justify>摘要</P>
<P align=justify>點對點協議提供了在點-點連接上傳送多種協議幀的標準方法。下面將介紹使用HDLC幀發送PPP包。</P>
<P align=justify>1. <A name=介紹>介紹</A></P>
<P
align=justify>下面提供的資料說明了在面向字節和位的同步或異步連接上對八位無奇偶校驗數據的幀傳輸。這些連接必須是全雙工的,當然也可以是專用連接或線路交換連接。</P>
<P align=justify>同時,也說明了如何使控制信息如XON/XOFF透明地傳輸和刪除由連接相關軟硬件加入的高級控制信息的方法。</P>
<P
align=justify>一些協議希望提供無差錯的傳輸,一些希望提供一定條件上的差錯檢測,而有些則根本不需要提供差錯控制。PPP協議使用HDLC幀檢測序列進行差錯檢測,這易于硬件實現,軟件實現也可以。</P>
<P align=justify>1.1. 說明</P>
<P align=justify>在本文中,大家應該注意以下用法的意義:</FONT></P>
<TABLE cellSpacing=1 cellPadding=7 width=553 border=1>
<TBODY>
<TR>
<TD vAlign=top width="10%"><FONT face=宋體 size=3>
<P align=justify>必須</FONT></P></TD>
<TD vAlign=top width="90%"><FONT face=宋體 size=3>
<P align=justify>表示一種絕對的需要</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="10%"><FONT face=宋體 size=3>
<P align=justify>嚴禁</FONT></P></TD>
<TD vAlign=top width="90%"><FONT face=宋體 size=3>
<P align=justify>表示絕對不準</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="10%"><FONT face=宋體 size=3>
<P align=justify>應該</FONT></P></TD>
<TD vAlign=top width="90%"><FONT face=宋體 size=3>
<P
align=justify>它相當于一種推薦,可能在一種情況下不需要某種東西,但是在作出不需要決定時一定要小心</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="10%"><FONT face=宋體 size=3>
<P align=justify>可以</FONT></P></TD>
<TD vAlign=top width="90%"><FONT face=宋體 size=3>
<P
align=justify>它表示可選的,它表示您可以選擇它也可以不選擇它。但應該注意,不包括這一功能或選項的系統要和其它包括這一功能和選項的系統一起工作</FONT></P></TD></TR></TBODY></TABLE><FONT
face=宋體 size=3>
<P align=justify>1.2. 名詞</P>
<P align=justify>本文中經常使用以下名詞,希望大家了解:</FONT></P>
<TABLE cellSpacing=1 cellPadding=7 width=553 border=1>
<TBODY>
<TR>
<TD vAlign=top width="12%"><FONT face=宋體 size=3>
<P align=justify>數據報</FONT></P></TD>
<TD vAlign=top width="88%"><FONT face=宋體 size=3>
<P
align=justify>在網絡層(如IP層)傳輸的數據單元。一個數據報可以包括在一個或多個包而在數據鏈路層傳輸</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="12%"><FONT face=宋體 size=3>
<P align=justify>幀</FONT></P></TD>
<TD vAlign=top width="88%"><FONT face=宋體 size=3>
<P align=justify>在數據鏈路層傳輸的數據單元,它以幀頭開始,以幀層結束,中間是數據</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="12%"><FONT face=宋體 size=3>
<P align=justify>包</FONT></P></TD>
<TD vAlign=top width="88%"><FONT face=宋體 size=3>
<P
align=justify>封裝的基本單位,在網絡層和數據鏈路層接口之間傳送。通常,一個包對應一個幀,當然也可以多個包對應一個幀</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="12%"><FONT face=宋體 size=3>
<P align=justify>對方</FONT></P></TD>
<TD vAlign=top width="88%"><FONT face=宋體 size=3>
<P align=justify>點-點連接的另一方</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="12%"><FONT face=宋體 size=3>
<P align=justify>無回應拋棄</FONT></P></TD>
<TD vAlign=top width="88%"><FONT face=宋體 size=3>
<P
align=justify>在系統中不進行任何響應處理就拋棄一個包。但是,系統應該提供記錄錯誤的功能</FONT></P></TD></TR></TBODY></TABLE>
<P><FONT face=宋體 size=3> </P>
<P align=justify>2. <A name=物理層要求>物理層要求</A></P>
<P align=justify>PPP能夠在許多DTE/DCE接口(如EIA RS-232-E,EIA RS-422和CCITT
V.35)工作。對它的唯一限制全雙工的連接,或者是專用連接,或者是線路交換對PPP數據鏈路層幀是透明的,PPP可以工作在異步(啟停),位同步或字節同步模式下。</P>
<P align=justify>接口格式</P>
<P align=justify>PPP代表對物理層的八位接口。對于半八位接口是不支持的。</P>
<P align=justify>傳輸速率</P>
<P align=justify>PPP對傳輸速率沒有特別的要求。</P>
<P align=justify>控制信號</P>
<P
align=justify>PPP不需要使用控制信號。當提供控制信號時,這樣的控制信號可以提供更多的功能,提高效率。因為不需要這些信號,物理層可能與數據鏈路層脫節,也就隱藏了物理傳輸的瞬時細節。這可以被用于蜂窩無線網絡和其它快速交換連接的場合。當在單元之間移動時,具體的系統可以將整個地區看成是一個鏈路,即使傳輸在不同頻率上交換了許多次。這鏈接被認為是和本地區的中心連接在一起的,而不是和單個的接收者在一起。然而,當鏈路轉為到另外不同的管理時,應該重新建立鏈路設置。</P>
<P
align=justify>因為數據通信十分多,一些系統選擇在不忙時與數據層斷開連接,通信再次發生時,再次建立連接,所有這一切對于數據鏈路層都是不可見的。需要健壯性的系統應該避免過多地使用這一方法。在系統關閉后的“一段時間”內,系統應該通知一個關閉事件。對這一段時間的討論還在繼續,這些討論主要基于通信量,呼叫建立時間和安裝的安全性方面。</P>
<P align=justify> </P>
<P align=justify>3. <A name=數據鏈路層>數據鏈路層</A></P>
<P align=justify>PPP使用在ISO 3309-1979
HDLC中規定的幀結構,而第四版3309:1991對在異步方式下使用HDLC進行了一些修改。PPP控制過程使用在ISO 4335-1979
HDLC中描述的“控制”域編碼進行控制。</P>
<P align=justify>3.1. 幀格式</P>
<P align=justify>PPP
HDLC幀結束如下所示。此表未包括為同步而設置的字符和為透明性而設置的字符。傳送時由左向右傳送下圖的內容。</P>
<P align=justify><IMG height=239 alt="ppp1.jpg (14758 bytes)"
src="PPP中使用HDLC幀.files/ppp1.jpg" width=427></P>
<P align=justify>標記序列</P>
<P align=justify>每個幀由一個標記序列開始和結束,標記序列就是二進制的:
01111110(十六進制的0x7e)。所有系統不斷檢測此標記,它用于對幀進行同步。在兩幀之間只需要一個這樣的標記,兩上相繼的標記構成一個空幀,它被無響應拋棄棄,而不產生FCS錯誤。</P>
<P align=justify> </P>
<P align=justify>地址域</P>
<P
align=justify>它是一個字節,包括二進制11111111(十六進制0xff),也就是“所有站”地址。單獨站地址未被指定。“所有站”地址必須能夠識別并被接受。使用其它地址長度和值在以后講。不可識別的地址應該被無回應拋棄。</P>
<P align=justify> </P>
<P align=justify>控制域</P>
<P
align=justify>它是一個字節,包括二進制00000011(十六進制0x03),“未編號信息”(UI)命令和選舉/結果位被設置為零。使用其它地址長度和值在以后講。不可識別的地址應該被無回應拋棄。</P>
<P align=justify> </P>
<P align=justify>幀檢查序列(FCS)域</P>
<P align=justify>此域通常包括兩個字節(16位)。先傳送它的最低位,它指示的是最高系數項。也使用四個字節的FCS,這將在“PPP
LCP擴展”中涉及。此域的是由地址、控制、協議、信息和填充域中的所有位運算得到的,不包括開始和停止位或用于數據透明性而插入的位,也不包括標記序列和FCS域本身。在同步控制字符映射中標記的字節在接收時存在,但在計算FCS時會被拋棄(詳細情況請見附錄)。</P>
<P align=justify>其它的域在去除了上述的域之后就會得到。</P>
<P align=justify>3.2. 標準幀的修改</P>
<P align=justify>通信控制協議允許對標準HDLC幀結構進行修改。但是,修改了的幀應該與標準的幀有所區別。</P>
<P align=justify>地址和控制域壓縮:</P>
<P
align=justify>當使用標準HDLC幀時,地址和控制域包括十六進制數0xff和0x03。當使用其它地址或控制域值時,嚴禁使用地址和控制域壓縮。在傳輸時,壓縮的地址和控制域被省略。在接收時,地址和控制域通過檢查第一個雙字節而解壓。如果這兩個域包括值0xff和0x03,說明這就是地址和控制域,如果不是,說明這兩個域已經被壓縮并未被傳送。</P>
<P
align=justify>在定義上,雙字節的的協議域中的第一個字節不會是0xff。當地址域壓縮啟用并且信息位的第一個字節是0x03時,協議域值不應該是0x00ff,以防發生混淆。</P>
<P align=justify> </P>
<P align=justify>4. <A name=面向字節連接的HDLC幀>面向字節連接的HDLC幀</A></P>
<P align=justify>下面說明一下八位異步面向字節連接的HDLC幀。</P>
<P align=justify>4.1. 標記序列</P>
<P align=justify>標記序列標志幀的開始或結束。字節流在字節到字節的基礎上對01111110進行檢查。</P>
<P align=justify>4.2. 透明性</P>
<P
align=justify>使用了字節填充過程。控制逃逸字節被定義為01111101(也就是十六進制的0x7d)。作為最小實現,發送必須避免使用標記序列和控制逃逸字節。</P>
<P
align=justify>在進行FCS運算后,發送者檢查在兩個標記序列中的幀。每個幀,控制逃逸字節和其它在發送同步控制字符映射中加入的標記都由兩個字節替換,這兩個字節包括控制逃逸字節和原來的字節與0x20異或的和。也就是從右向左第二位取反。</P>
<P
align=justify>接收必須能夠正確處理所有控制逃逸字節。在接收方進行FCS運算前,每個小于0x20的字節都必須檢查一下。如果是在接收ACCM中被標記的,就刪除它(它可以是由中繼通信設備加入的)。所有控制逃逸字節也被刪除,此字節后的數據再和0x20進行異或操作。在標記序列中的數據不進行以上操作。</P>
<P align=justify>下面是一些例子:</P>
<P align=justify>0x7e 變為 0x7d, 0x5e </P>
<P align=justify>0x7d 變為 0x7d, 0x5d </P>
<P align=justify>0x03 變為 0x7d, 0x23 </P>
<P
align=justify>一些帶有軟件流量控制的調制解調器可以中斷DC1和DC3的傳送而忽略第八位(奇偶校驗位)。那么數據就要以以下格式傳送:</P>
<P align=justify>0x11 變為 0x7d, 0x31</P>
<P align=justify>0x13 變為 0x7d, 0x33</P>
<P align=justify>0x91 變為 0x7d, 0xb1</P>
<P align=justify>0x93 變為 0x7d, 0xb3</P>
<P align=justify>4.3. 無效幀</P>
<P
align=justify>發生以下情況時,幀將被無響應拋棄,而不被記為FCS錯誤:幀過短(當使用16位FCS時幀小于4個字節),或才幀以控制逃逸字節結束而其后緊跟一個標記序列,或者其中的字節幀無效(在應該接收到1的地方接收到0)。</P>
<P align=justify>4.4. 時間空隙</P>
<P align=justify>4.4.1. 字節同步</P>
<P align=justify>未提供字節內的時間空隙。標記序列必須在時間幀內的時間空隙傳送。</P>
<P align=justify>4.4.2. 異步</P>
<P
align=justify>字節內時間空隙必須和連續傳送的1一起出現。幀內時間空隙可以看作是擴展的字節時間空隙。這樣做對每一幀可以節省一個字節的時間,降低時延增加帶寬。正是因為標記序列既可以作為幀開始標記也可以作為幀結束標記使這成為可能。在接收幀后,空閑的接收方總會處于幀開始狀態。</P>
<P
align=justify>健壯的傳送方不應該過分使用這一功能,因為降低時延的代價是降低可靠性。線路噪聲可能導致接收方接收到無效字符,但認為它們是幀的一部分。如果發送方在幀開始時不發送一個新的標記序列,下一幀和無效無效字符一起將導致這一幀無效。</P>
<P
align=justify>如果在幀開始時發送時開始標記序列就可以得到比較好的效果。發送方應在“期望時間”結束時發送開始標記序列。“期望時間”的最大值比最慢打字者打字速度快不了多少,大約一秒左右。</P>
<P align=justify>4.5. 傳輸</P>
<P align=justify>4.5.1. 字節同步</P>
<P align=justify>不同的編碼由DTE/DCD負責,這不在本文的討論范圍之內。</P>
<P align=justify>4.5.2. 異步</P>
<P align=justify>所有字節以最低位優先的方式發送,八位數據,一位停止位。不支持七位同步連接。</P>
<P align=justify>5. <A name=位同步HDLC幀>位同步HDLC幀</A></P>
<P align=justify>下面總結以位同步連接使用HDLC幀。</P>
<P align=justify> </P>
<P align=justify>5.1. 標記序列</P>
<P align=justify> </P>
<P
align=justify>標記序列用于幀的開始與結束,,它用于幀同步。二進制流在位的基礎上檢測二進制序列01111110(十六進制0x7e)。</P>
<P
align=justify>不應該使用“共享零模型”標記序列"011111101111110"。不提供此序列時,系統必須保證第一個檢測到的標記序列被立即送到鏈路層。使用共享零模式妨礙位同步異步轉換和位同步字節同步轉換的協同進行。</P>
<P align=justify> </P>
<P align=justify>5.2. 透明性</P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -