RFC1661??PPP协议中文版

文章出处:Linux 宝库 作者:未知 发布时间:2006-09-21
  文章摘要:
    PPP为基于点对点连接的多协议自寻址数据包的传输提供了一个标准方*。PPP包含以下三个成分:
    1. 压缩多协议自寻址数据包的方*。
    2. 用于建立、设定和测试数据链路连接的LCP。
    3. 一族用于建立、设定不同网络层协议的NCP。
    本文档定义了PPP的组织和方*,以及PPP封装,与之一起定义的还有:扩展选项协商机制,他使得(人们)可以就丰富的设定参数进行磋商,同时还提供额外的管理功能。PPP链路控制协议(LCP)九是用这种机制描述的。
  
  正文:
  RFC1661——PPP协议中文版  
  1 介绍
    PPP是为在同等单元之间传输数据包这样的简单的链路而设计的。这种链路提供全双工*作,并按照顺序传递数据包。(人们)有意让PPP为基于各种主机、网桥和路由器的简单连接提供一种共通的解决方案。
    封装:
    PPP封装提供了不同网络层协议同时通过统一链路的多路技术。(人们)精心的设计PPP封装,使其保有对常用支持硬件的兼容性。
    当使用默认的类HDLC帧(HDLC-like framing)时,仅需要8个额外的字节,就可以形成封装。在带宽需要付费时,封装和帧可以减少到2或4个字节。
    为了支持高速的执行,默认的封装只使用简单的字段,多路分解只需要对其中的一个字段进行检验。默认的头和信息字段落在32-bit边界上,尾字节可以被填补到任意的边界。
    链路控制协议(LCP):
    为了在一个很宽广的环境内能足够方便的使用,PPP提供了LCP。LCP用于就封装格式选项自动的达成一致,处理数据包大小的变化,探测looped-back链路和其他普通的配置错误,以及终止链路。提供的其他可选设备有:对链路中同等单元标识的认证,和当链路功能正常或链路失败时的决定。
    网络控制协议:
    点对点连接可能和当前的一族网络协议产生许多问题。例如,基于电路交换的点对点连接(比如拨号模式服务),分配和管理IP地址,即使在LAN环境中,也非常困难。这些问题由一族网络控制协议(NCP)来处理,每一个协议管理着各自的网络层协议的特殊需求。
    配置:
    (人们)有意使PPP链路很容易配置。通过设计,标准的默认值处理全部的配置。执行者可以对默认配置进行改进,它被自动的通知给其同等单元而无需*作员的干涉。最终,*作员可以明确的为链路设定选项,以便其正常工作。
  1-1 要求说明书
    在本文档中,用以下几个词来表示说明书的要求,这些词一般以大写字体书写。
    MUST--要求;MUST NOT--禁止;SHOULD--推荐;MAY--可选。
  1-2 术语
    本文档中,频繁使用以下术语:
    datagram -- 在网络层中的传输单元(例如IP)。一个datagram可能被压缩成一个或几个packets,在数据链路层中传输。
    frame -- 在数据链路层中的传输单元。 一个frame包括一个头和/或尾字节,后面跟有几个单元的数据。
    packet -- 封装的基本单元,它穿越网络层和数据链路层的分解面。通常一个packet映射成一个frame,但也有例外:即当数据链路层执行拆分或将几个packet合成一个frame的时候。
    peer -- 点对点链路的另一端。
    silently discard
    -- 丢弃packet而不进行进一步的处理。执行(这个动作)应该提供记录错误,包括丢弃packet的内容,的容量,并且应该在一个统计计数器中记录这一事件。
  
  2 PPP封装
  
    PPP封装用于消除多协议datagrams的歧义。封装需要帧同步以确定封装的开始和结束。提供帧同步的方*在参考文档中。
    PPP封装的概要如下所示。字段的传输从左到右。
    
    协议字段:
    协议字段由一个或两个字节组成。它的值标识着压缩在packet的信息字段里的datagram。字段中最有意义位(最高位)被首先传输。
    该字段结构与ISO 3309地址字段扩充机制相一致。该字段必须是奇数:最轻意义字节的最轻意义位(最低位)必须等于1。另外,字段必须被赋值,以便最有意义字节的最轻意义位为0。收到的不符合这些规则的frames,必须被视为带有不被承认的协议。
    在范围"0***"到"3***"内的协议字段,标识着特殊packets的网络层协议。在范围"8***" 到"b***"内的协议字段,标识着packets属于联合的(相关的)网络控制协议(NCP)。在范围"4***"到"7***"内的协议字段,用于没有相关NCP的低通信量协议。在范围"c***"到"f***"内的协议字段,标识着使用链路层控制协议(例如LCP)的packets。
    到目前为止,协议字段的值在最近的"Assigned Numbers" RFC [2]里有详细的说明。本说明书保留以下的值:
    Value (in hex)     Protocol Name
    0001          Padding Protocol填料协议
    0003 to 001f      reserved (transparency inefficient)保留(透明度效率低的)
    007d          reserved (Control Escape)保留(控制逃逸)
    00cf          reserved (PPP NLPID)保留(PPP NLPID)
    00ff          reserved (compression inefficient)保留(压缩效率低的)
    8001 to 801f      unused(未使用)
    807d          unused(未使用)
    80cf          unused(未使用)
    80ff          unused(未使用)
    c021          Link Control Protocol链路控制协议
    c023          Password Authentication Protocol密码认证协议
    c025          Link Quality Report链路品质报告
    c223          Challenge Handshake Authentication Protocol挑战-认证握手协议
    新的协议的开发者必须从the Internet Assigned Numbers Authority (IANA), at IANA@isi.edu.处获得号码。
    信息字段:
    信息字段是0或更多的字节。对于在协议字段里指定的协议,信息字段包含datagram。
    信息字段的最大长度,包含填料但不包含协议字段,术语叫做最大接收单元(MRU),默认值是1500字节。若经过协商同意,也可以使用其它的值作为MRU。
    填料:
    在传输的时候,信息字段会被填充若干字节以达到MRU。每个协议负责根据实际信息的大小确定填料的字节数。
  
  3 PPP链路*作
  
  3-1 概述
    为了通过点对点链路建立通信,PPP链路的每一端,必须首先发送LCP packets以便设定和测试数据链路。在链路建立之后,peer才可以被认证。
    然后,PPP必须发送NCP packets以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的datagrams就能在连路上发送了。
  链路将保持通信设定不变,直到外在的LCP和NCP关闭链路,或者是发生一些外部事件的时候(休止状态的定时器期满或者网络管理员干涉)。
  3-2 阶段划分框图
    
  
    在设定、维持和终止点对点链路的过程里,PPP链路经过几个清楚的阶段,如框图所示。这张图并没有给出所有的状态转换。
  3-3 链路死亡(物理连接不存在)
    链路一定开始并结束于这个阶段。当一个外部事件(例如载波侦听或网络管理员设定)指出物理层已经准备就绪时,PPP将进入链路建立阶段。
    在这个阶段,LCP自动机器将处于初始状态,向链路建立阶段的转换将给LCP自动机器一个UP事件信号。
  执行笔记:
    典型的,在与调制解调器断开之后,链路将自动返回这一阶段。在用硬件实现的链路里,这一阶段相当的短--仅够侦测设备的存在。
  3-4 链路建立阶段
    LCP用于交换配置信息包(Configure packets),建立连接。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入了LCP开启状态。
    所有的配置选项都假定使用默认值,除非被配置交换所改变。
    有一点要注意:只有不依赖于特别的网络层协议的配置选项才倍LCP配置。在网络层协议阶段,个别的网络层协议的配置由个别的网络控制协议(NCP)来处理。
    在这个阶段接收的任何非LCP packets必须被silently discarded(静静的丢弃)。
    收到LCP Configure-Request(LCP配置要求)能使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。
  3-5 认证阶段
    在一些链路上,在允许网络层协议packets交换之前,链路的一端可能需要peer去认证它。
    默认的,认证是不需要强制执行的。如果一次执行希望peer根据某一特定的认证协议来认证,那么它必须在链路建立阶段要求使用那个认证协议。
    应该尽可能在链路建立后立即进行认证。而,链路质量检查可以同时发生。在一次执行中,禁止因为交换链路质量检查packets而不确定地将认证向后推迟这一做*。
    在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
    在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。
    执行笔记:
    一次执行中,仅仅是因为超时或者没有应答就造成认证的失败是不应该的。认证应该允许某种再传输,只有在若干次的认证尝试失败以后,不得已的时候,才进入链路终止阶段。
    在执行中,哪一方拒绝了另一方的认证,哪一方就要负责开始链路终止阶段。
  3-6 网络层协议阶段
    一旦PPP完成了前面的阶段,每一个网络层协议(例如IP,IPX,或