1、协议规范 一、介绍: 是为在同等单元之间传输数据包这样的简单的链路而设计的。这种链路提供全双工操作,并按照顺序传递数据包。(人们)有意让为基于各种主机、网桥和路由器的简单连接提供一种共通的解决方案。 二、封装: 封装提供了不同网络层协议同时通过统一链路的多路技术。精心的设计封装,使其保有对常用支持硬件的兼容性。当使用默认的类帧()时,仅需要个额外的字节,就可以形成封装。在带宽需要付费时,封装和帧可以减少到或个字节。为了支持高速的执行,默认的封装只使用简单的字段,多路分解只需要对其中的一个字段进行检验。默认的头和信息字段落在边界上,尾字节可以被填补到任意的边界。 链路操作 一、概
2、述 为了通过点对点链路建立通信,链路的每一端,必须首先发送以便设定和测试数据链路。在链路建立之后,才可以被认证。然后,必须发送以便选择和设定一个或更多的网络层协议。一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的就能在连路上发送了。链路将保持通信设定不变,直到外在的和关闭链路,或者是发生一些外部事件的时候(休止状态的定时器期满或者网络管理员干涉)。 二、阶段划分框图 在设定、维持和终止点对点链路的过程里,链路经过几个清楚的阶段,如框图所示。这张图并没有给出所有的状态转换。 三、链路死亡(物理连接不存在) 链路一定开始并结束于这个阶段。当一个外部事件(例如载波侦听或网络管理
3、员设定)指出物理层已经准备就绪时,将进入链路建立阶段。在这个阶段,自动机器将处于初始状态,向链路建立阶段的转换将给自动机器一个事件信号。 执行记录: 典型的,在与调制解调器断开之后,链路将自动返回这一阶段。在用硬件实现的链路里,这一阶段相当的短仅够侦测设备的存在。 四、链路建立阶段 用于交换配置信息包(),建立连接。一旦一个配置成功信息包()被发送且被接收,就完成了交换,进入了开启状态。所有的配置选项都假定使用默认值,除非被配置交换所改变。有一点要注意:只有不依赖于特别的网络层协议的配置选项才倍配置。在网络层协议阶段,个别的网络层协议的配置由个别的网络控制协议()来处理。在这个阶段接收
4、的任何非必须被(静静的丢弃)。收到(配置要求)能使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。 五、认证阶段 在一些链路上,在允许网络层协议交换之前,链路的一端可能需要去认证它。默认的,认证是不需要强制执行的。如果一次执行希望根据某一特定的认证协议来认证,那么它必须在链路建立阶段要求使用那个认证协议。应该尽可能在链路建立后立即进行认证。而,链路质量检查可以同时发生。在一次执行中,禁止因为交换链路质量检查而不确定地将认证向后推迟这一做法。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。 在这一阶段里,只有链路控制协议、认证协议,和链路
5、质量监视协议的是被允许的。在该阶段里接收到的其他的必须被静静的丢弃。 执行记录: 一次执行中,仅仅是因为超时或者没有应答就造成认证的失败是不应该的。认证应该允许某种再传输,只有在若干次的认证尝试失败以后,不得已的时候,才进入链路终止阶段。在执行中,哪一方拒绝了另一方的认证,哪一方就要负责开始链路终止阶段。 六、网络层协议阶段 一旦完成了前面的阶段,每一个网络层协议(例如,,或)必须被适当的网络控制协议()分别设定。每个可以随时被打开和关闭。 执行记录: 因为一次执行最初可能需要大力浪的时间用于链路质量检测,所以当等待设定的时候,执行应该避免使用固定的。当一个处于状态时,将携带相应的
6、网络层协议。当相应的不处于状态时,任何接收到的被支持的网络层协议都将被静静的丢弃。 执行记录: 当处于状态时,任何不被该执行所支持的协议必须在里返回。只有支持的协议才被静静的丢弃。在这个阶段,链路通信量由,,和网络层协议的任意可能的联合组成。 七、链路终止阶段 可以在任意时间终止链路。引起链路终止的原因很多:载波丢失、认证失败、链路质量失败、空闲周期定时器期满、或者管理员关闭链路。用交换(终止)的方法终止链路。当链路正被关闭时,通知网络层协议,以便他们可以采取正确的行动。交换(终止)之后,执行应该通知物理层断开,以便强制链路终止,尤其当认证失败时。 (终止要求)的发送者,在收到
7、终止允许)后,或者在重启计数器期满后,应该断开连接。收到的一方,应该等待去切断,在发出后,至少也要经过一个(重启时间),才允许断开。应该前进到链路死亡阶段。在该阶段收到的任何非,必须被静静的丢弃。 执行记录: 关闭链路就足够了,不需要每一个发送一个。相反,一个关闭却不足以引起链路的终止,即使那个是当前唯一一个处于状态的。 . 协议简介 接入技术面临一些相互矛盾的目标,既要通过同一个用户前置接入设备连接远程的多个用户主机,又要提供类似拨号一样的接入控制,计费等功能,而且要尽可能地减少用户的配置操作。 的目标就是解决上述问题,年后期问世的以太网上点对点协议()技术是由网络公司、客户
8、端软件开发商公司以及子公司 公司在的基础上联合开发的。通过把最经济的局域网技术-以太网和点对点协议的可扩展性及管理控制功能结合在一起,网络服务提供商和电信运营商便可利用可靠和熟悉的技术来加速部署高速互联网业务。它使服务提供商在通过数字用户线、电缆调制解调器或无线连接等方式,提供支持多用户的宽带接入服务时更加简便易行。同时该技术亦简化了最终用户在选择这些服务时的配置操作。 特点 在标准报文的前面加上以太网的报头,使得提供通过简单桥接接入设备连接远端接入设备,并可以利用以太网的共享性连接多个用户主机,在这个模型下,每个用户主机利用自身的堆栈,用户使用熟悉的界面。接入控制,计费等都
9、可以针对每个用户来进行。 的优点: .�安裝与操作方式类似于以往的拨号网络模式,方便用戶使用。 .�用户处的调制解调器无须任何配置。 .�允许多个用户共享一个高速数据接入链路。 .�适应小型企业和远程办公的要求。 .�终端用户可同时接入多个,这种动态服务选择的功能可以使 容易创建和提供新的业务。 .�兼容现有所有的和。 .�可与有接入结构相融合。 的帧格式 参数取值: : () () () () () :
10、 的实现过程 建立一个以太网上点对点协议会话包括两个阶段:. 发现()阶段 在过程中用户主机以广播方式寻找可以连接的所有接入设备,获得其以太网地址。然后选择需要连接的用户主机并最后获得所要建立的会话的。在过程中节点间是客户端-服务器关系, 一个用户主机(客户端)最终要发现一个接入设备(服务器)。在网络拓朴中,一般有不止一个的接入设备可以通信,阶段允许用户主机发现所有的接入设备,并从中选择一个。当阶段结束时, 用户主机和接入设备之间都获得了可供以太网上建立连接的全部信息。阶段保持无连接状态直到一个会话的建立。一旦连接建立,则用户主机和接入设备都必须为虚
11、拟端口分配资源。 会话阶段 用户主机与在发现阶段确定的接入设备进行协商。这个协商过程与标准的协商并没有任何区别。在会话阶段节点间是对等关系。 发现()阶段详述 典型的发现()阶段共包括个步骤: . 用户主机发出有效发现初始()包。以太网目的地址为广播地址, 字段为, 为。包必须至少包含一个服务名称类型()的标签(标签类型字段为), 向接入设备提出所要求提供的服务。一个完整的(包括头)不能超过字节,以留下充足的预留给设备增加标识。 . 接入设备收到在服务范围内的包后,发送有效发现提供() 包以响应请求。其字段为 ,仍为。包必须包含一个接入设备名称类型()的标签(标签类
12、型字段为)以及一个或多个服务名称类型标签,表明可向用户主机提供的服务种类。 .用户主机在可能收到的多个包中选择一个合适的接入设备,选择的原则是根据中接入设备名称类型标签和服务名称类型标签的内容。然后向所选择的接入设备发送有效发现请求()包。其 字段为,仍为。包必须包一个服务名称类型标签,确定向接入设备请求的服务种类。当一个用户主机在确定时间没有收到,他会重发一个,同时等待两倍的时间。这种过程可以根据需要重复多次。 .接入设备收到包后准备开始会话,它发送一个 有效发现会话确认( )包。其 字段为 , 为接入设备所产生的一个唯一的会话标识号码。作为预留资源,目前不能被使用作。包也必须包
13、含一个服务名称类型的标签确认向用户主机提供的服务。当用户主机收到包确认后,双方就进入会话阶段。如果接入设备不能识别中的服务名称类型的标签,则会回一个包含服务名称错误( ) 标签的 ,其仍然是。如果用户主机在确定时间没收到包,与没收到作同样处理。 还有一种有效发现终止()包,在一个会话建立后它随时可由用户主机或接入设备中任何一方发送,指示会话已终止。包不需要任何标签,其字段为 , 为需要终止的会话的会话标识号码。 安全性 为防止( )攻击,接入设备应该可以使用属性,接入设备应可以根据中的源地址唯一再生成一个值,这样就而已保证的源地址是真正可达,同时限制与这个地址同时连接数量。
14、这个算法细节并没有在中具体描述。虽然在反攻击方面很有效,但它并不能防止所有攻击,在接入设备上也可以采用其他方法来对抗。 常用软件 软件的作用就是连接操作系统的协议和协议,并通过协议连接 :由 开发(现在已经并入 这个有名的设备开发制造公司),自己具备独立的协议,可以不依赖操作系统的拨号网络来提供协议, 具有直接通过网卡和连接的能力,目前是最通用和流行的 软件,并且支持多种操作系统,目前已经提供有,,的版本,并且根据功能的多少又分为、、等多个系列。该软件的系列最流行,已经被多家特大型的采用,例如法国电信,中国电信,在其网站提供有天试用版。 :由 开发(现在已经改为 公司), 它是
15、 协议起草者之一,它在软件中也占有极大的份额,许多特大型也采用它。它通过操作系统的拨号网络来提供协议,所以在使用上和我们使用普通拨号上网非常相似,它只是在后台悄悄地进行着服务。它的网站目前停止了该软件的下载评估,软件只批量卖给 :个人开发的驱动软件,小巧精干,没有自己的界面面板完全只是一个驱动程序,也是依靠操作系统拨号网络来提供协议,由于它是以网络协议组件的形式来工作,所以在使用上,完全和使用老式的一样简单。 :实质就是 ,只是打上了的接入服务部门的商标。 . 帧格式 帧格式和帧格式相似,如图所示。二者主要区别:是面向字符的,而是面向位的 可以看出,帧的前个字段
16、和最后两个字段与的格式是一样的。标志字段为(表示),但地址字段和控制字段都是固定不变的,分别为、。协议不是面向比特的,因而所有的帧长度都是整数个字节。 与不同的是多了个字节的协议字段。协议字段不同,后面的信息字段类型就不同。如: ——信息字段是数据报 ——信息字段是链路控制数据 ——信息字段是网络控制数据 ——信息字段是安全性认证 ——信息字段是 ——信息字段是安全性认证 当信息字段中出现和标志字段一样的比特时,就必须采取一些措施。因协议是面向字符型的,所以它不能采用所使用的零比特插入法,而是使用一种特殊的字符填充。具体的做法是将信息字段中出现的每一个字节转变成字节序列(,)。
17、若信息字段中出现一个的字节,则将其转变成字节序列(,)。若信息字段中出现码的控制字符,则在该字符前面要加入一个字节。这样做的目的是防止这些表面上的码控制字符被错误地解释为控制字符。 . 链路工作过程 当用户拨号接入时,路由器的调制解调器对拨号做出应答,并建立一条物理连接。这时机向路由器发送一系列的分组(封装成多个帧)。这些分组及其响应选择了将要使用的一些参数,接着就进行网络层培植,给新接入的机分配一个临时的地址,这样机就成为上一个主机了。 当用户通信完毕时,释放网络层连接,收回原来分配出去的地址。接着释放数据链路层连接,最后释放的是物理层的连接。 上述过程可用图来描述。 图协议过
18、程状态图 当线路处于静止状态时,并不存在物理层的连接。当检测到调制解调器的载波信号,并建立物理层连接后,线路就进入建立状态,这时开始协商一些选项。协商结束后就进入鉴别状态。若通信的双方鉴别身份成功,则进入网络状态。配置网络蹭,分配地址,然后就进入可进行数据通信的打开状态。数据传输结束后就转到终止状态。载波停止后则回到静止状态。 . 应用举例 路由器和的口均封装协议,采用做认证,在中应建立一个用户,以对端路由器主机名作为用户名,即用户名应为。同时在中应建立一个用户,以对端路由器主机名作为用户名,即用户名应为。所建的这两用户的必须相同。 设置如下: :
19、 . 流程 定义 通过,在一个共享的以太网上的多个主机,可以通过一个或多个简单的桥接入设备,与远程接入集中器进行多个会话。使用这种模型,每个主机使用它自己的协议栈,并且提供给用户一个熟悉的用户接口。接入控制、计费和服务类型能够基于每用户,而不是每站点来处理。包含发现和会话两个阶段,发现阶段是无状态的模式,目的是获得终结端的以太网地址,并建立一个唯一的。发现阶段结束后,就进入标准的会话阶段。 协议基本框架 协议参照。实现帧在上的适配,并提供上的连接。图和图分别是以太网上的协议栈和上的协议栈。 连接示意图 图显示了典型的的连接方式
20、 通信流程 有两个不同的阶段:发现阶段和会话阶段。当一个主机想开始一个会话,它必须首先进行发现阶段以识别对端的以太网地址,并建立一个。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器。发现阶段允许主机发现所有的接入集中器,然后选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立连接的信息。直到会话建立,发现阶段一直保持无状态的状态。一旦会话建立,主机和接入集中器都必须为虚接口分配资源。图显示了通信流程。 发现阶段 发现阶段有四个步骤,当此阶段完成,通信的两端都知道和对端的以太网地址,他们一起唯一定义会话。这些步骤包括:主机广播一个发
21、起分组(),一个或多个接入集中器发送给予分组(),主机发送单播会话请求分组(),选择的接入集中器发送一个确认分组()。当主机接收到确认分组,它可以开始进行会话阶段。当接入集中器发送出确认分组,它可以开始进行会话阶段。 当主机在指定的时间内没有接收到,它应该重新发送它的分组,并且加倍等待时间,这个过程会被重复期望的次数。如果主机正在等待接收,应该使用具有主机重新发送的相似超时机制。在重试指定的次数后,主机应该重新发送分组。 还有一个分组,它可以在会话建立后的任何时候发送,来终止会话。它可以由主机或者接入集中器发送。当接收到一个,不再允许使用这个会话来发送业务。在发送或接收后,即使正常
22、的终止分组也不必发送。对端应该使用协议自身来终止会话,但是当不能使用时,可以使用。 会话阶段 一旦会话开始,数据就可以以任何其它的封装形式发送。所有的以太网帧都是单播的。会话的一定不能改变,并且必须是发现阶段分配的值。 的配置选项 ()建议进行魔数选项协商,不建议进行协议域压缩选项()协商。实现中必须不请求进行任何下面的选项协商,并且必须拒绝这样选项协商的请求:()()() 必须不能大于。 建议接入集中器偶尔向主机发送报文,来决定会话的状态。否则,如果主机没有发送报文就终止了会话,接入集中器将会不能决定会话已经终止了。 当终止,主机和接入集中器必须停止使用
23、这个会话。如果主机希望开始另一个会话,它必须返回到的发现阶段。 . 会话终结 在建立链路之前要进行一系列的协商过程,如图所示。图为建链各阶段图。 建链的具体过程如下: ()协商,协商内容包括除中所定义的选项之外,还要考虑和协议中规定的内容。 ()协商过后就到了阶段,开始或认证。为两次握手认证,口令为明文。认证过程如下:发送用户名同口令到认证方,认证方查看是否有此用户,口令是否正确,然后发送相应的响应。为三次握手认证,口令为密文(密钥)认证由认证方发送一些随机产生的报文,交给被认证,被认证方用自己的口令字用算法进行加密,传回密文,认证方用自己保存的口令字及随机报文用
24、算法加密,比较二者的密文,根据比较结果返回响应的响应。 ()认证成功即进行阶段协商(),在接入中主要是协商(如地址和地址的协商等)。任何阶段的协商失败都将导致链路的拆除。 ()协商成功,则链路建立成功,可以开始传输网络层数据报文。 在会话建立的时候,根据用户属性确定此用户的缺省路由和对应的网络接口,将之绑定在结构上,可以对用户上行数据包实现快速转发,不必让每个包去查找路由表。此方法对下行数据影响相对较小,因为在业务处理板上必须区分每一个会话,这只有通过检查数据包中的目的地址来实现。 . 用户认证和地址分配 当用户和接入服务器之间的建立之后,就可以在上面建立会话。会话的建立分为
25、三个阶段:协商、认证、协商。 对于终结和续传,协商阶段是相同的。认证和协商不同。 协商 协商主要完成某些链路路特性和认证方式的协商,协商成功后,用户根据协商的认证方式向接入服务器发起认证请求,用户认证的方式采用或方式 终结时的认证和地址分配 为两次握手认证,口令为明文。认证过程如下:拨号用户发送用户名和口令到接入服务器,接入服务器通过协议到服务器上去查看是否有此用户,口令是否正确,然后发送相应的响应。 为三次握手认证,口令为密文。拨号用户发送用户名到接入服务器,接入服务器发送一些随机产生的报文,交给被拨号用户,拨号用户用自己的口令用算法进行加
26、密,传回密文,接入服务器用从服务器取得的用户口令及随机报文用算法加密,比较二者的密文,根据比较结果返回认证成功或失败的响应。 接入服务器和服务器之间通过一个共享密钥以密文方式通信。 在认证阶段,如果在用户数据库中为该用户名配置了地址,则服务器将这个地址返回给接入服务器,作为这个用户上网使用的地址。 如果用户在认证阶段还没有获得地址,就需要在阶段协商地址。一般来说,运营商为用户提供接入服务时,应该有一批地址,即地址池,用户上网所需要的地址就来自与此,当用户上网时,从地址池分配一个地址,当用户下网时,这个地址归还到地址池。在运营商开通接入服务时,将地址池配置到接入服务器中,在阶段
27、接入服务器从地址池分配一个空闲的地址给用户,作为用户上网的地址。如果已经没有可用的地址,则协商失败,关闭连接,在用户看来,则是拨号失败,暂时不能为他提供接入服务。 续传时的认证和地址分配 协商结束后,如果经服务器检查这是一个用户,则接入服务器为这个用户建立到的会话,如果没有隧道还要建立隧道。认证分为两种情况:一次认证和两次认证。 一次认证是指只在的服务器上认证一次,信任的服务器。用户的地址可以由的服务器指定,也可以由用户和进行协商获得。 两次认证是指用户需要输入两次用户名和口令,一个是接入的权限验证,一个是进入的权限验证。认证的时候需要的服务器和的服务器共同配合。
28、地址的可以由的服务器指定,也可以由用户和进行协商获得。 协议扩展 为实现对用户更全面的管理,在协议中,至少应该扩展以下属性:用户的接入带宽、用户接入所使用的,如果用户间希望互相通信,需要指明对方的用户名或地址。客户端和服务器端同时支持。 . 层业务接口 层把层业务看成比特同步点到点链路。链路对应一个。必须是全双工点到点的。而且,业务接口必须满足如下要求: 接口格式 层边界提供了一个字节业务接口给层。 传输速率 层对层的传输速率及流量描述参数无任何限制。 控制信号 当连接建立或断开时,层必须提供和事件给层的状态机。 . 多协议封装
29、 提供了两种机制,识别净荷域的协议类型:基于复用方式和封装方式。 当在上传输净荷时: 必须支持“复用”。 必须支持“封装”。l 对必须用指出是“复用”还是“封装”。 若侧端点与侧()端点通过业务互通单元互联,则必须使用封装。 复用 图为复用的示意图 图中各字段说明如下: :净荷字段,最大-个字节。 域:填充域,~字节,用来使的长度为个字节的整数倍,正好能放入信元中。 l :用户用户指示字段,本来该字段用于透明传送用户用户信息。在封装中,该字段不起作用,可以设置为任意值,字节。 l :公共部分指示字段,基本用途是填充尾
30、部,使其长度正好为比特,该字段编码是。 l :长度字段,用于指示净荷字段的字节长度,该字段的最大值是字节。当该字段编码为时,它用于指示接收放执行丢弃功能。 l :对作循环校验。 封装 封装和非协议可以共用同一个。 . 检测和恢复过程 封装方式”迁移有两种:从复用变成封装;从封装变成复用。 “封装”时,包的起始个字节:。“复用”时,包的起始个字节:。当包被收到和被识别时,链路就进入阶段。 一旦进入阶段,且成功地为协商了一个,若收到的帧使用了不同但等效的数据封装,则链路必须对撤掉,应该产生出错消息,进入阶段,且安静地丢掉所有收到的数据包。
31、 . 中配置选项及安全性选项 魔术数():推荐使用 (协议域压缩):不推荐使用 替换():禁止使用 (地址和控制域压缩):禁止使用 (异步“控制字符”映射):禁止使用 (最大接受单元):必须不大于最大的。 链路可能跨过多个物理层,在一个物理层的成帧选项独立于另一个物理层的成帧选项。 当处于状态,建议应用等待。 安全性考虑 :网络业务提供者管理。:类似传统拨号上网。同样的鉴权协议可用于拨号接入。 鼓励使用加强的安全方法:鉴权,加密,层安全业务。 . 协议:关于在点到点链路上进行多协议包传
32、送的建议 .介绍 有三个主要的组成部分: . 在串行链路上封装数据报()的方法。 . 建立,配置和测试数据链路链接()的协议( )。 . 建立和配置不同网络层协议的一组协议()。 为了在点到点链路()上建立通信,链路的一端必须在建立阶段 ()首先发送包()配置数据链路。在链路建立后,在进 入到网络层协议阶段前,提供一个可选择的验证阶段。 默认的,身份验证不是强制的。如果希望进行链路的身份验证,则实现者必须在建立阶 段指明身份验证-协议配置选项。 这些协议主要是为通过交换网()或者拨号线()连接到 网络服务器的主机和路由器服务的,但是也可以被用到专用链路()中。服务
33、 器在为网络层磋商选择选项时可以对连接的主机或路由器进行身份验证。 此文档定义了身份验证协议。链路建立和验证阶段,和验证协议配置选项定义在 协议中[]。 要求说明书 在本文档中,用以下几个词来表示说明书的要求,这些词一般以大写字体书写。 这个词表示在此说明书中是绝对要求的。 这个词组表示在此说明书中是绝对禁止的。 此词表示在此说明书中是推荐的。 此词表示在此说明书中是可选的。 术语 本文档中,频繁使用以下术语: ――验证者: 要求验证的链路端点。验证者说明了在链路建立阶段使用的验证协议。 ――点到点链路的另一端: 正在被验证者验证的一端。 ――静
34、静地丢弃 丢弃而不进行进一步的处理。执行(这个动作)应该提供记录错误,包括丢弃 的内容,的容量,并且应该在一个统计计数器中记录这一事件。 .密码验证协议 密码验证协议()提供了一种简单的方法,可以使对端()使用次握手建立身 份验证。这个方法仅仅在链路初始化时使用。 链路建立阶段完成后,对端不停地发送对给验证者,一直到验证被响应或者 连接终止为止。 不是一个健壮的身份验证方法。密码在电路上是明文发送的,并且对回送或者重复 验证和错误攻击没有保护措施。对端控制着尝试的频率和时间。 包含健壮验证方法(例如,下面描述)的任何实现者必须提供商议优先于的 方法。 这个验证方法最
35、适合用在使用有效的明文密码在远程主机上模拟登陆的地方了。通过这 种用法,飧龇椒ㄏ蚱胀ㄓ没б锹皆冻讨骰峁┝艘恢职踩睦嗨萍侗稹>实现注意:要限制暴露在链路上传输明文密码和避免在整个网络上发送明文密码是 可能的。如果远程主机密码是以单向转换值保存的,并且转换函数的算法是在当地主机上完 成的,则明文密码应该在和远程主机的转换密码比较前在本地转换。 配置选项格式 下面是关于的验证-协议配置选项格式的总结。各个域由左到右传输。 类型 长度 验证-协议 (对于) 数据 没有数据域 包格式 一个包是完全封装在数据链路层帧(协议域是代表)的
36、信息域中的。 下面是包格式的总结。各个域由左到右传输。 ... 代码 代码域是一个字节,代表包的类型。代码分配如下: 标识符 标识符是一个字节,用于匹配请求和响应。 长度 长度域是两个字节,代表包的长度,包括代码域,标识符和数据域。超出长度域指 定的字节被认为是数据链路层的填料,在接收端应该忽略掉。 数据 数据域是零个或多个字节。数据域的格式由代码域决定。 2.2.1A 描述 包用来启动。在验证阶段链路的一端必须传输代码域为(验 证-请求)的包。直到接收到一个有效的响应包或者可选的重试计数器超时,验证-请 求
37、包必须不停地发送。 验证者应该期待对端发送一个包。一旦接收到 包,必须返回某种验证响应(下面描述)。 实现注意:因为包可能会丢失,所以在完成验证阶段后验证者必须 允许重复的包。在验证阶段完成(部分信息可能不同)后,在协议阶段 必须返回相同的响应代码。在另外的阶段接到的任何包必须被静静地处 理掉。 如果包丢失,和验证者终止链路,则包和 包提供一个可选择的方法表示验证失败。 下面是包格式的总结。各个域由左到右传输。 ... ... 代码 。 标识符 标识符是一个字节,用于匹配请求和回应。每次发送一个包,标识 符域必须改变。
38、 域是一个字节,代表域的长度。 域是零个或多个字节,代表被验证端的名字。 域一个字节,代表域的长度。 域是零个或者多个字节,是用来验证的密码。 2.2.2A 描述 如果在接收的包中的对是可识别的和可接受的, 则验证者必须发送一个代码域是()的包。 如果在接收的包中的对是不可识别的和不可接受 的,则验证者必须发送一个代码域是()的包,并且应该终止链路。 下面是包和包格式的总结。各个域由左到右传输。 ... 代码 ; 标识符 标识符域是一个字节,用于匹配请求和回应。此域必须从引起这次回应的 包标识符域复制过来的。
39、 域是一个字节,代表域的长度。 域是零个或者多个字节,并且它的内容依靠于实现者。它是可读的,不得影响 协议的操作。建议在中包含可显示的字符(-)。扩展字符集的机 制是进一步研究的主题。 用于使用次握手周期性的验证对端。在链路建立初始化时这样做,也可以在链 路建立后任何时间重复验证。 在链路建立完成后,验证者向对端发送一个“”信息。对端使用一个 “”函数计算出的值响应这个信息。验证者使用自己计算的值校验响应值。 如果两个值匹配,则验证是承认得,否则连接应该终止。 通过使用递增的标识符和可变得挑战值提供了防止回送攻击的保护。使用重复挑 战目的是任一个攻击的暴露时
40、间。验证者控制着挑战的频率和时间。这种验证方法依靠只有 验证者和对端知道的秘密()。这个秘密()不在链路上传播。这种方法最可能用 的地方是相同的秘密容易访问链路的两端。 实现注意:要求秘密是明文形式的。为了避免在网络的其他链路上发送秘密,建 议在中心服务器上检查和值,而不是在每一个网络访问服务器上检查。另 外,秘密应该以可逆转的加密形式发送到服务器上。 算法要求秘密的长度必须至少一个字节。秘密至少应该和选择好的密码一样大小 和不可猜。比较好的是秘密应该至少是选择的哈希算法的哈希值的长度(对于是个 字节)。这样保证了足够大的范围使得秘密提供了防止穷尽搜索攻击的保护措施。 选择哈
41、希算法使得要想从已知的和值得出秘密的计算是不可 行的。 值应该符合两个标准:唯一性和不可预测性。每一个值应该是唯一 的,因为使用与相同秘密联系的执的副本可以让攻击者利用前一个截获得响应包响 应。由于希望可以使用相同的秘密在不同区域中验证服务器,应该具有全局和暂时 的唯一性。每一个值也应该是不可预测的,否则攻击者欺骗对端响应一个可预测的 未来,然后用这个响应伪装成对端欺骗验证者。尽管象这样的协议不能够防 止实时的窃听攻击,但是使用唯一的和不可预测的可以防止一定范围的能动攻击。 关于唯一性来源和产生分歧概率的讨论包含在配置选项中。 配置选项格式 下面是验证协议使用的配置选项格式
42、的总 结。各个域由左到右传输。 类型 长度 算法 算法域是一个字节,代表所使用的哈希算法。算法域的最新值在最近的 “”[]中有详细说明。当前的值分配如下: (保留) [] 包格式 包封装在数据联络层帧的信息域中,它的协议域是。下面是包格 式的总结。各个域由左到右传输。 ... 代码 代码域是一个字节,代表包的类型。代码分配如下: 标识符 标识符是一个字节,用于匹配和。 长度 长度域是两个字节,代表包的长度,包括和。超出这 个长度的字节应该被认
43、为是链路层的填料,在接收端应该被忽略。 数据 数据域是零个或者多个字节。它的格式由域决定。 3.2.1和 描述 包用来启动。验证者必须发送一个代码域是的包。一直到接收 到有效的响应包或者重试计数器超时,必须不停发送包。 在网络层协议阶段的任一个时间也可以发送包确保连接没有改变。 在验证阶段和网络层协议阶段对端应该期待包。无论何时接到包, 对端必须发送一个代码域是的包。 无论何时验证者接到一个包,则它比较值和自己计算的期待值是否 相同。在比较的基础上,验证者必须发送一个或者包。 实现注意:因为包有可能丢失,验证者必须在完成验证阶段后允许重复的 包。为了防止名字和秘密的泄
44、漏,在验证阶段后,任何具有当前标识符的 包必须返回相同的响应代码。在其他阶段接到的任何包必须被静静地丢掉。 如果包丢失和验证者终止链路,则的包和 包提供了另一种代表验证失败的方法。 下面是和包格式的总结。各个域由左到右传输。 ... ... 代码 标识符 标识符是一个字节,每发送一个包标识符必须改变。包的标识符必 须从引起这个响应的包的标识符复制过来的。 此域是一个字节,代表域的长度。 域是一个或多个字节。最重要的字节先传输。 是一个可变的字节流。上面讲述了唯一性的重要性以及 它和秘密的关系。每次发送包必须
45、改变。的长度依 靠于产生字节所使用的方法,独立于所用的哈希算法。 是在字节流上用单向哈希算法计算得出的,字节流包含,后面是 ,再后面是。的长度依靠于所用的哈希算法(对于 是个字节)。 名字 名字域是一个或多个字节,代表发送包的系统的标识。对这个域的内容没有限制。例如, 它可以是字符串或者是语法中的全局唯一标识。名字不应该是以或者 结尾的。大小由长度域决定。 因为可以验证许多不同的系统,所以名字域的内容可以用作在秘密数据库查询秘 密的关键字。这也可以在每个系统上支持更多的对。 3.2.2和 描述 如果在包中的等于期待的值,则验证者必须发送一个代码域是() 的包。 如
46、果在包中的不等于期待的值,则验证者必须发送一个代码域是 ()的包,并且应该终止链路。 下面是和包格式的总结。各个域由左到右传输。 ... 代码 标识符 标识符是一个字节,用于匹配和。标识符必须从引起这个响应的 包的标识符复制过来的。 域是零个或者多个字节,它的内容依靠实现者。它被设计成可读的,不得影响 协议操作。建议在中包含可显示的字符(-)。扩展字符集的机制 是进一步研究的主题。大小由长度域决定。 安全考虑 安全问题是此备忘录的主要话题。 中的验证协议的交互操作很大程度上依靠于实现者。在文档中通篇使用表
47、明了这点。 例如,一旦验证失败,有些实现者并不终止链路。相反,实现者限制网络层的通信量的 类型构造子网,这样反过来允许用户有机会更新秘密或者发邮件给网络管理员说明问题。 对于验证失败没有重试机制。然而,状态机可以在任何时候重新磋商验证协议,这 样就允许了一个新的重试。建议任何用来为验证失败的计数器在成功验证前或者终止失败的 链路前不要重置。 不要求验证是双向的或者在两个方向使用相同的协议。在任一个方向上使用不同的协议 是完全可以接受的。当然,这依靠于在磋商时指定的协议。 在实践中,在每个服务器上有一个数据库,它联合验证信息的用户名字。不期望使 用多个方法验证特殊的命名用户。这
48、样使用户容易受到攻击。作为代替的,对于每一个命名 用户有一个准确的方法用来验证用户名。如果一个用户在不同的环境下需要使用不同的验证 方法,那么应该采用截然不同的用户名,每一个准确代表一个验证方法。 密码和其他的秘密应该保存在各自的端点以至于对它们的访问尽可能的受到限制。理想 的,只能是为了完成验证而需要访问的过程可以访问秘密。 应该使用一种机制分发秘密,这种机制能够限制处理秘密实体的数目。理想的,没有通 过验证的人不会再得到秘密的内容。使用安全协议[]可以实现这个目标,但是这样的 机制不在这个规范的范围内。 目前正在研究和试验其他的分发机制。安全文档很好的概括了对网络的威胁。






