⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppp中使用hdlc帧.htm

📁 关于PPP点对点协议的一些详细资料
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!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 + -