网络协议与分析_第1页
网络协议与分析_第2页
网络协议与分析_第3页
网络协议与分析_第4页
网络协议与分析_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PPP的帧:名称字节数描述标记1标记出帧的头或尾地址1广播地址控制1控制字协议2数据报文中使用所使用的协 议信息不定长(0或更多)数据报文冗余填充不定长(0或更多)可选的冗余填充帧检验序列(FCS)2 (或 4)错误检验网络协议的三要素是语法、语义与时序语法、语义与时序是网络协议组成的三要素。其中,语法是指用户数据与控制信息的结构和格式;语义,即需要发出何种控制信息,以及完成的动作与做出的:响应;时序是对实践实现顺序的详细的说明。他们之间的关系是bai :相互的关系du更是并列的关系,语法,语意与时序,三个协议是不 可缺少的,缺少任何一个都无法形成网络协议。协议是一个规则术语,用于描述进程之间

2、的信息交换。在计算机网络中,两个通信实体位于 不同的地理位置,其上的两个进程彼此通信。它们需要协调它们的行动,并通过交换信息实 现同步,而交换信息必须按照先前商定的程序进行。语义:指定通信各方相互“什么,也就是说,确定协议元素的类型,例如指定通信各方希望 发送什么控制信息,它们执行什么操作,以及它们返回什么响应。语法:指定通信双方如何交谈,即确定协议元素的格式,如数据和控制信息的格式。时序:规定了信息交流的次序。网络及协议:1 .简介PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型 中的网络层报文而设计的,它改进了之前的一个点对点协议-SLIP协议-只

3、能同时运行一个 网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。这 种连接提供了同时的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供 了一种广泛的解决办法,方便地将多种多样不同的值作为最大接收单元的值。填充域在传输中,信息域可能会由附加任意数目的字节填充至最大接收单元长度。这由每个协议负 责将信息域和填充域区分开来。PPP协议概览标准的HDLC封装只支持高层的IP协议,不支持其他高层协议。思科对标准帧协议进 行了改进,增加了协议域字段,来支持多种网络层协议。思科改进的HDLC可用于在思科的设备之间进行点到点连接。当连接非思科的设备 时,PPP是比

4、较可行的,因为所有厂家实现的PPP都是相同的。PPP协议和大多数硬件兼容,且PPP协议能够承载多种三层协议的数据。PPP是一种数据链路层协议,遵循HDLC (高级数据链路控制协议)族的一般报文 格式。PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI 模型中的网络层报文而设计的,它改进了之前的一个点对点协议-SLIP协议-只能同时运行 一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。PPP 协议主要包括三部分:LCP (Link Control Protocol)链路控制协议、NCP (Network Control Pr

5、otocol)网络控制协议和PPP的扩展协议(如Multilink Protocol)。PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点线路 的两端需要进行认证时才需配置。LCP是PPP协议的一个子集。为了能适应复杂多变的网络环境,PPP协议提供了一种链路控 制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不 同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。网络控制协议(NCP)根据不同的网络层协议可提供一族网络控制协议,常用的有提供给 TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网

6、络控制协议 等,但最为常用的是IPCP协议。当点对点的两端进行NCP参数配置协商时,主要是用来获 得通信双方的网络层地址。PPP协议格式上图中PPP的flag字段恒为0 x7f,地址(adress)字段恒为Oxff,控制(control)字段恒为0 x03. 协议(protocol)字段表示PPP报文中封装的payload (data字段)的类型,如果为0 x0021, 则表示PPP封装的IP报文,0 x002B表示IPX报文,0 x0029表示AppleTalk报文,这几种都 属于PPP的数据报文;如果为0 xC021则表示PPP的LCP报文(用来协商连接),如果为 0 x8021则表示PP

7、P的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文。0 xc023表示PAP协议认证报文,0 xc223表示CHAP协议认证报文。紧接在起始标志字节后的一个字节是地址域,该字节为0 xFF。我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进 行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的 MAC地址、X.21地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址 等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信 的话,首先发送端需获知对端的MAC地址。但由于PPP协议

8、是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络那样, 需要标识通信的对方。因为点对点的链路就可以唯一标识对方,因此使用PPP协议互连的 通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规 定将该字节填充为全1的广播地址。PPP协议状态机PPP协议状态机如下图所示:1、在上图的链接建立阶段,PPP使用LCP报文来协商连接(一种发送配置请求,然后接收 响应的简单“握手”过程,不做过多介绍,感兴趣可以去细读RFC1661),该阶段主要是发送 一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。协商中双方 获得当前点对点连接的状态配置等,之

9、后的“鉴别”阶段使用哪种鉴别方式也在这个协商中确 定下来。2、鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入 “网络”阶段。鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点 对点连接安全,防止非法终端接入点对点链路的功能。链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟 验证过程。常用的鉴别认证方式有CHAP和PAP方式。CHAP方式的原理是:由一端定期发起挑战“challenge”,收到“challenge”的一端将收到的“challenge”报文中的密钥 使用之前双发协商好的一种算法加密后再把结果发回发起端,

10、这种算法应该是结果唯一(不 同输入必得到不同输出)且不可逆(由输出无法得到输入)的,发起端也使用该算法计算后 验证结果是否正确来为对端授权认证。一个常用的方案实例是:发起端发送随机长度及内容的字符串加上自己的用户名作为“密钥” 发送出来,接受到“challenge”的一方将收到的字符串和与对方用户名相对应的本端用户的密 码使用MD5算法计算后发回,然后发起端将收到的计算结果和本端MD5计算该随机字符 串加自己密码的结果相对照,如果双发一致,则认证成功。PAP方式简单很多,原理:直接由被验证方将自己的用户名和密码明文方式发送给对端,由对端对用户名和密码验证来 决定是否认证成功。所以,比较而言,C

11、HAP是一种相对更安全一些的验证方式。需要注意的是,PPP两端双方向的鉴权方式可以不同,即A端为B端鉴权时使用PAP方式 (B发送自己的用户名和密码给请A认证),而同时B端使用CHAP方式为A端鉴权(B向A发起CHAP挑战),是完全可以的。3、如果鉴别阶段成功,则PPP状态机进入“网络”阶段。这个阶段主要是使用NCP报文来协 商将PPP封装怎样的网络层的问题。NCP报文及协商流程和LCP极为相似,就不过多介绍 了。4、经过网络阶段后,PPP状态机进入。PEN打开状态,在这个状态下,PPP链路上的三层 数据报文即可正常通信了。5、一旦任何一端收到LCP或NCP的链路关闭报文(一般而言协议是不要求

12、NCP有关闭链 路的能力的,因此通常情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段 发出的)、授权失败、链路质量检测失败、物理层无法检测到载波、管理人员对该链路进行 关闭操作,都会将该条链路终止,从而终止PPP会话。LCP协议LCP是Link Control Protocol链路控制协议)的简称,它是PPP协议的一个子集。为了能适应 复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能 用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路 的错误;终止一条链路。此外还提供协商封装格式的可选选项,具体包括以下内容:验证-验

13、证过程要求主叫方输入身份信息,让被叫方验证是否建立这个呼叫。压缩减少帧中的数据量从而提高效率。差错检测用Quality选项来检测链路质量,进行差错检测。多连接-多链路捆绑,在一条链路负载达到一定数值的情况下,启用第二条链路。多 条链路间可实现负载均衡。 PPP回拨-允许路由器作为回叫服务器。客户端发起初始的呼叫并请求回叫。初始呼叫 被终止,回叫服务器根据配置回叫客户端。这种机制增强了安全性。LCP协议格式LCP位于物理层之上,负责设备之间链路的创建、维护和终止LCP数据报文被封装在PPP 信息字段中,该PPP协议字段表示类型为十六进制0 xc021 (链路控制协议)。LCP的协议结构:8bit

14、8bit 16bit 变长codeIndentifier Length Data代码域code :长度为一个字节,主要用来标识LCP数据报文的类型。在链路建立阶段时, 接收方收到LCP数据报文的代码域无法识别时,就会向对端发送一个LCP的代码拒绝报文 (Code-Reject 报文)。Code域包括如下类型:0 x01Configure-Request0 x02Configure-Ack0 x03Configure-Nak0 x04Configure-Reject0 x05Terminate-Request0 x06Terminate-Ack0 x07Code-Reject0 x08Proto

15、col-Reject0 x09Echo-Request0 x0AEcho-Reply0 x0BDiscard-Request0 x0CReserved标识域Indentifier : 一字节,其目的是用来匹配请求和响应报文。一般而言在进入链路建 立阶段时,通信双方无论哪一端都会连续发送几个配置请求报文(Config-Request报文), 而这几个请求报文的数据域Data可能是完全一样的,而仅仅是它们的标识域不同罢了。通 常一个配置请求报文的ID (标识域Indentifier)是从0 x01开始逐步加1的,当对端接收到 该配置请求报文后,无论使用何种报文(回应报文可能是Config-Ack、

16、Config-Nak和Config- Reject 三种报文中的一种)来回应对方,要求回应报文中的ID要与接收报文中的ID 一致, 当通信设备收到回应后就可以将该回应ID与发送时ID的进行比较来决定下一步的操作。长度域Length :两个字节长,表示总字节数(代码域+标志域+长度域+数据域)。长 度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU 的值。数据域Data :内容根据不同的LCP数据报文的内容也是不一样的。LCP报文详解下面说一下LCP包括的几种报文类型,不同的报文在标识域中所填充的内容也不同。LCP报文主要分为:1、链路配置报文,主要用来建立和配置一

17、条链路;2、链路终止报文,主要用来终止一条链路;3、链路维护报文,主要用来维护和调试链路。链路配置报文链路配置报文主要用来建立和配置一条链路,包括:Config-Request、Config-Ack、Config- Nak 和 Config-Reject 四种报文。链路配置报文与其它两类报文有着明显的区别,它主要是用来协商链路的配置参数选项的, 因此这种报文的数据域还要携带许多配置参数选项的,而另外两类报文中部分报文的格式会稍有不同(请参见RFC1661),下图表明了数据配置选项的报文格式:类型域1字节长;长度域1字节,表示当前LCP配置选项的总长度(类型域+长度域+ 数据域)。1、当通信双方

18、需要建立链路时,无论哪一方都需要发送Config-Request报文并携带每一端 自已所希望协商的配置参数选项。下表为可选的配置参数选项:类型值参数选项类型值参数选项0 x00Reserved0 x05Magic-Number0 x01Maximum-Recieve-Unit0 x06CBCP0 x02Async-Control-Character-Map0 x07Protocol-Field-Compress 0 x03Authentication-Protocol0 x08Address-and-Control-Field-Compress0 x04Quality-Protocol0 x0

19、DMultilink-Protocol2、当接收方收到Config-Request报文时,会在剩下的三种类型的报文中选择一种来响应对 方的请求报文,到底选择哪种报文来响应对方需依据以下两个条件:A、能不能完全识别配置参数选项的类型域。我们知道一个Config-Request报文中会同时携 带多个配置参数选项,而对于一个支持PPP协议的通信设备也不一定会支持上表中所有列 出的配置选项,即使支持,也可能在实际应用中关闭掉某些选项功能。(例如:当使用PPP 协议通信的一端可能将一些无用的配置选项都关闭了,而仅支持0 x01和0 x03两个配置参 数选项,因此当对方发送的Config-Request报

20、文中含有0 x04配置选项时,对于本端而言这 个配置参数选项就无法识别,也即是不支持这个配置参数选项的协商)。B、如果能支持完全识别配置参数选项,能不能认可Config-Request报文中配置参数选项数 据域中的内容(例如:当一端发送魔术字配置参数选项中的魔术字为全0,而对端认为应该 为其它值,这种情况就属于不支持配置参数选项中的内容)。所以依据上面的两个条件,我们就可以明确在回应对方配置请求报文时,采用何种报文回应:A、当接收Config-Request报文的一端能识别发送过来的所有配置参数选项且认可所有配置 参数选项数据域的内容时,接收端将会给对端回一个Config-Ack报文,并将配置

21、请求报文 中的配置参数选项原封不动的放置在Config-Ack报文的数据域内(根据协议的规定是不可 改变配置参数选项的顺序)。当配置请求报文的发送端收到Config-Ack报后,则会从当前阶 段进入到下一个阶段。假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:下面结合LCP报文格式说明报文的具体内容。注意:说明中省略了 FCS字段(后面的说明也是如此)。上图02表示LCP配置选项0X02,字符转义。上图05表示LCP配置选项表中的0X05,魔术字。以此类推,蓝色部分都表示LCP配置选 项表中类型值。当对端正确接收到了该报文后,应该发送一个Config-Ack报文,

22、报文内容如下:B、当接收Config-Request报文的一端B能识别发送端A所发送过来的所有配置参数选项, 但对部分配置参数选项数据域中的内容不认可时,接收端B将会给对端A回应一个Config- Nak报文(注意,是能够识别,只是对部分参数内容不认可,所以不是Config-Reject报文)。 该报文中只携带不认可的配置参数选项,而这些配置参数选项的数据内容为本端希望的值。 然后,当A收到Config-Nak报文后,会重新发送Config-Request报文,而这个Config- Request 报文与上一次所发送的Config-Request报文区别在于:那些被对端B不认可的配 置参数选项

23、的内容被填写到刚刚协商完后再次发送的Config-Request报文中(Config-Nak 报文发送回来的那些配置参数选项)。假设还是刚才的Config-Request报文:该数据报文中有下划线的配置参数选项的内容为对端不认可的。当对端B正确接收到了该报文后,发现类型域为0 x02的配置参数选项可识别,但该配置参 数选项数据域的内容不认可,应发送一个Config-Nak报文且该报文中将携带希望的配置参 数选项内容,报文内容如下:当发端A收到该报文后会重新发送一个Config-Request报文,报文内容如下:C、当接收Config-Request报文的一端B不能识别所有的发送端A发送过来的配

24、置参数选 项时,此时接收端B将会向对端A回一个Config-Reject报文,该报文中的数据域只携带那 些不能识别的配置参数选项。当对端A接收到Config-Reject报文后,同样会再次发送一个 Config-Request报文,这个配置请求报文与上一次发送的区别在于将不可识别的那些配置 参数选项给删除了。对于PPP的两个端点而言,两者是独立完成各自的配置参数选项的协商过程的。链路终止报文链路终止报文主要用来终止一条链路,分为Terminate-Request和Terminate-Reply两种报 文。LCP报文中提供了一种机制来关闭一个点对点的连接,想要关断链路的一端A会持续发送 Term

25、inate-Request报文,直到收到一 Terminate-Reply为止。接收端B旦收到了一个 Terminate-Request报文后,必须回应一 Terminate-Reply报文,同时等待对端A先将链 路断开后,再完成本端的所有断开的操作。LCP的链路终止报文的数据域与链路配置报文的数据域不一样,链路终止报文中无需携带各 配置参数选项。对于链路终止报文也同样需要ID 一致,当接收到Terminate-Reply报文才 会做链路终止操作。链路维护报文除上述两种报文类型以外,剩余的所有报文类型均归属链路维护报文。(1)当接收端发现LCP报文的代码域code是一个不合法的值时,将会向发送

26、端回应一个 Code-Reject报文,在回应报文中会将所拒绝报文的全部内容附加上(注:code只有在LCP 协议头中才存在)。(2)当接收端发现所接收到的PPP数据帧的协议域Protocol是一个不合法的值时,将会向 发送端回应一个Protocol-Reject报文,发送端收到该拒绝报文后将停止发送该种协议类型 的数据报文了(注:Protocol只有在PPP协议头中才存在)。Protocol-Reject报文只能在LCP的状态机处于Opened状态时才可被处理,而在其它状态 接收到该报文将被丢弃。在Protocol-Reject报文的数据域内将携带所拒绝报文的协议类型 和报文内容。(3)Ec

27、ho-Request报文和Echo-Reply报文主要用来检测双向链路上自环的问题,除此之 外还可附带做一些链路质量的测试和其它功能。当LCP状态机处于Opened状态时,如果 接收到了 Echo-Request,就需向对端回送一 Echo-Reply报文。否则在其它LCP状态下, 该类型的报文会被丢弃。这种类型数据报文的长度域后不是直接跟数据域,而是要插入4个字节的Magic-Number (魔术字),该魔术字是在LCP的Config-Request的配置参数选项协商时获得的。魔术字最后说一下魔术字的含义,这是在链路建立过程中比较重要的一个参数,这个参数是在 Config-Request里面

28、被协商的,主要的作用是防止环路,如果在双方不协商魔术字的情况 下,某些LCP的数据报文需要使用魔术字时,那么只能是将魔术字的内容填充为全0 ;反之, 则填充为配置参数选项协商后的结果。魔术字在目前所有的设备当中都是需要进行协商的,它被放在Config-Request的配置选项 参数中进行发送,而且需要由自身的通信设备独立产生,协议为了避免双方可能产生同样的 魔术字,从而导致通信出现不必要的麻烦,因此要求由设备采用一些随机方法产生一个独一 无二的魔术字。一般来说魔术字的选择会采用设备的系列号、网络硬件地址或时钟。双方产 生相同魔术字的可能性不能说是没有的,但应尽量避免,通常这种情况是发产在相同厂

29、商的 设备进行互连时,因为一个厂商所生产的设备产生魔术字的方法是一样的。我们知道魔术字产生的作用是用来帮助检测链路是否存在环路,当接收端 B收到一个 Config-Request报文时,会将此报文与上一次所接收到(应该是上一次发送出)的Config- Request 进行比较,如果两个报文中所含的魔术字不一致的话,表明链路不存在环路。但如 果一致的话,接收端B认为链路可能存在环路,但不一定存在环路,还需进一步确认。此时 接收端B将发送一个Config-Nak报文,并在该报文中携带一个重新产生的魔术字,而且此 时在未接收到任何Config-Request或Config-Nak报文之前,接收端B也

30、不会发送任何的 Config-Request报文。这时我们假设可能会有以下两种情况发生:链路实际不存在环路,而是由于对方A在产生魔术字时与接收端B产生的一致,但实际这 种情况出现的概率是很小的。当Config-Nak被对端A接收到后,A应该发送一个Config- Request 报文(此报文中的魔术字为接收到的Nak报文中的),当B接收到后,与上次的 Config-Request比较,由于接收端B已经在上一次的Nak报文中产生了一不同的魔术字, 此时接收端B收到的Config-Request报文中的魔术字与上次B发出的Config-Request配置 请求报文中不一样,所以接收端B可断定链路不

31、存在环路。链路实际上确实存在环路,一段时间后Config-Nak报文会返回到发送该报文的同一端B。 这时接收端B比较这个Config-Nak报文与上一次发出去的Config-Nak报文一样,因此链 路存在环路的可能性又增大了。我们知道当一端收到了一个Config-Nak报文时,又会发送 一 Config-Request报文(该报文中的魔术字与Config-Nak中的一致),这样又回到了最 初的状态,在这条链路上就会不断的出现Config-Request、Config-Nak报文,因此这样周 而复始下去,接收端就会认为PPP链路存在环路的可能性在不断增加,当达到一定数量级 时,就可认为此链路存在

32、环路。(注意,不是第一次受到相同的魔术字就判断有环路的)但在实际应用中根据不同设备实现PPP协议的方法,我们在链路环路检测时可采用两种方 法。第一种机制就是如上面所述的,这个过程不断地重复,最终可能会给LCP状态机发一个 Down事件,这时可能会使LCP的状态机又回到初始化阶段,又开始新一轮的协商。当然对 于某些设备还会采用第二种机制,就是不产生任何事件去影响当前LCP的状态机,而是停 留在请求发送状态。但这时认为链路有环路的一端设备需要不断的向链路上发送 EchoRequest 报文来检测链路环路是否被解除,当接收端收到Echo-Reply报文时,就认为链路 环路被解除,从而就可能进行后续的

33、PPP的过程。好了,基本上通过3篇PPP闲谈,我们可以比较彻底的了解PPP协议的工作机制和特点, 其实,会者不难,协议都是人制订的,只有简单易用的协议才会最终保留下来,就像TCP/IP 打败OSI-样。所以,只要静下心来,没有什么高深的。可能这3篇文章里面有部分个人理 解错误的地方,希望大家可以多提意见,大家共同进步。NCP协议NCP协议的数据报文是在网络阶段被交换的,在这个阶段所需的一些配置参数选项协商完 后,就可以进行网络层的通信,也即是在点对点的链路上可以开始传送网络层的数据报文了。NCP协议主要包括IPCP、IPXCP等,但我们在实际当中最常遇见的也只有IPCP协议了,如 果对IPXC

34、P或其它的一些网络控制协议有兴趣,则可参见RFC1552。下面我们主要介绍IPCP。IPCP控制协议IPCP控制协议主要是负责完成IP网络层协议通信所需配置参数的选项协商,负责建立,使 能和中止IP模块IPCP在运行的过程当中,主要是完成点对点通信设备的两端动态的协商 IP地址IPCP包在PPP没有达到网络层协议阶段以前不能进行交换,如果有IPCP包在到达 此阶段前到达会被抛弃。IPCP协议格式代码域1字节长,标识域1字节长,长度域2字节长。类型域1字节长;长度域1字节,表示当前LCP配置选项的总长度(类型域+长度域+ 数据域)。IPCP的数据的报文同LCP的数据报文非常类似,不同之处有两点:

35、1s IPCP是在网络层协议阶段协商配置参数选项,code字段为0 x8021,而LCP协议则是在 链路建立阶段协商配置参数选项的,code字段为0 xC021。2、代码域字段。LCP共包括十几种报文,而IPCP只包括7种报文,但它的报文类型只是 LCP数据报文的一子集(只有LCP代码域从1到7这七种报文:Config-Request, ConfigAck, Config-Nak, Config-Reject, Terminate-Request, Terminate-Ack 和 Code-Reject), 而且实际的数据报文交换过程中链路终止报文一般而言是不在网络协议阶段使用的。IPCP协议

36、类型域的值如下所示:0 x01 IP-Addresses IP地址选项配置0 x02 IP-Compression-Protocol0 x03 IP-Address IP 地址配置IP-Addresses 0 x01 , IP地址选项配置。使用本IP地址选项配置是不好的,这在实现中已 经证明了IP地址配置(0 x03)可以替换这个域,应该使用IP地址配置0 x03。如果接收到的 配置请求中包括IP地址或IP地址选项,此选项不应该在配置请求中包括这个选项。只有因 为IP地址选项而收到配置拒绝时,或接收到的配置未确认中包括IP地址选项作为附加选项 时,才发送这一选项。IP-Compression-

37、Protocol 0 x02,用来提供协商使用指定的压缩协议,默认不使用压缩选项。 选项的格式如下:IP压缩协议域指明要使用的压缩协议,协议编号与PPP协议域中的协议编号相同。目前支持的协议有 Van Jacobson Compressed TCP/IP29,编号为 002D(16 进制)。IP-Address 0 x03, IP地址配置IP-Address用来协商本地使用的IP地址。该选项允许请求 发送者提供自己的IP地址(静态)或请求对方给自己分配IP地址(动态),在后一种情况 下,请求者发送一个全为0的IP地址,对方在一个NAK数据帧中给出请求者的IP地址。我们依据两端设备的配置选项可将

38、IPCP的协商过程分为:“静态和“动态”。我们在下面会具 体描述这两个过程。以下就具体介绍一下IPCP控制协议的静态和动态的两个过程,实际上两者的区分是在于互 连设备IP地址的获取过程。静态协商静态协商,也即是不协商。点对点的通信设备两端在PPP协商之前已配置好了 IP地址,所 以就无须在网络层协议阶段协商IP地址,而双方唯一要做的就是告诉对方自身的IP地址。在IPCP控制协议完成整个配置的过程时,最理想的情况将会看到前述的四种报文,而无其 它报文再被发送。如果当配置请求中所携带的网络层配置参数选项类似于LCP配置参数选项协商过程一样, 可能会有对方不识别的配置参数选项或不被对方所认可的配置参

39、数选项的内容。这样在这个阶段的协商过程中可能还会看到其它的一些报文。在静态协商时,如果IPCP的Config-Request报文中只含有地址配置参数选项时(实际中可 能还会附带其它配置参数选项,这些配置参数选项的协商与LCP阶段的一样,而我们这里 只提到了 IP地址配置参数选项),无论是发送方还是接收方都同时发送Config-Request报 文,其中配置选项中只含有各自的IP地址。当对端收到该报文后,会发送一个Config-Ack报文,这个目的是告诉对端我已经知道了你 的IP地址,对路由器而言会增加一条到对端接口的主机路由。刚进入网络层协议阶段时,IPCP的状态机是initial的,但当完成

40、了上述的整个过程后,IPCP 的状态机改变为Opened,双方也就可以开始网络层数据网的传送了。IPCP协议中并未规定点对点两端的IP地址必须在同一网段。当一端接收到Config-Request 报文后,它从报文的配置参数选项中可获知对端的IP地址,但并不与本端的IP地址进行比 较。我们也知道,一般而言点对点的两端应该是在一个网段。但如果双方的地址不在一个网 段,也无条件向对方回应Config-Ack报文。因此说点对点通信的两端如果是手动设置每一端的IP地址时,无须双方地址在同一网段。例:假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项 地的过程),发送方设

41、置IP地址为192.168.0.1,接收方设置IP地址为192.168.0.2,发送方 发送Config-Request报文内容如下:在这个例子中我们能看见明显的改变之处在于PPP协议域字段由原先的0 xC021(LCP)改 变为0 x8021(NCP中的IPCP),下划线的部分表示本端的IP地址(192.168.0.1)。当对端正确接收到了该报文后,应该回应一个Config-Ack报文,报文内容如下:同样的接收方给发送方也发送一个Config-Request报文内容如下,但此时报文中IP地址配 置参数选项的值为本端的IP地址(192.168.0.2):发送方回应一个Config-Ack报文给

42、接收方,报文内容如下:动态协商动态协商是一端配置为动态获取IP地址,另一端通过手动方式配置IP地址,且允许给对端 分配IP地址。这个过程实际上可与窄带拨号上网的过程相一致,如果我们想用计算机上网,均会安装一个 拨号适配器,而且计算机中的拨号网络适配器是采用动态获取IP地址的方式。这个例子与上一个例子相似,也就是在IPCP的Config-Request报文中只携带IP地址的配 置参数选项。如果是配置参数选项中含有其它配置参数选项,则可能会遇到其它的一些情况 (如不识别配置参数选项的代码域或不认可配置参数选项的内容,但对于这些情况的处理方 法和LCP配置参数选项的处理方法一致)。在这种情况下,发送

43、方连续发送了两次Config-Request报文,才能完成发送方的协商过程。 而接收方仍然只需要发送一次Config-Request即可完成本端的协商过程。由于发送方没有配置IP地址(而是动态获取IP地址),所以在IPCP的Config-Request报文 的IP地址配置参数配置选项中的IP地址填充全0 (也即是0.0.0.0),当接收方收到该配置请 求报文后会检测IP地址的内容,如果发送为全0,则认为对端的这个IP地址不是我所希望 的值,这样就回应一个Config-Nak报文,并将希望分配给对方的IP地址填充到Config-Nak 报文内。这时当接收方收到Config-Nak报文后,就会重新

44、发送一Config-Request报文, 这个报文中的IP地址配置选项为对方在Nak报文中所提供的。接收方IP地址的配置过程与静态时的一样,只需发送一个Config-Request报文即可,当收 到发送方的Config-Ack报文,就表示接收方的IP地址配置完成。例:假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项 地的过程),发送方没有配置IP地址,而接收方配置了 IP地址为192.168.0.2,接收方可给 发送方分配IP地址(192.168.0.1),发送方发送给接收方的Config-Request报文内容如下:有下划线的部分表示本端的IP地址。当接收

45、方端正确接收到了该报文后,应该回应一个 Config-Nak报文,报文内容如下:当发送方正确收到该报文后,重新发送一个Config-Request报文,报文内容如下:接收方再次收到发送方的一 Config-Request报文,此时将回应一 Config-Ack报文,报 文内容如下:同样的接收方给发送方也发送一个Config-Request报文,报文内容如下:发送方回应一个Config-Ack报文给接收方,报文内容如下:PPP连接操作3.1概述为了在点到点连接中建立通信,PPP连接的每一端都必须首先发送LCP数据 包来配置和测试数据连接。在连接建立后,对等实体还有可能需要认证。然后,PPP必须发

46、送NCP数据包来选择一种或多种网络层协议来配置。一旦 被选中的网络层协议被配置好后,该网络层的数据报就可以在链路上传送了。链路将保持可配置的状态直到有LCP数据包和NCP数据包终止连接,或者由 其他外部事件发生时(例如非活动时钟计时已满或网络管理人员的干涉)。3.2状态图在配置维持和终止点到点连接的过程中,PPP连接经历了几个不同的阶段,这 些阶段由以下简化的状态图说明: TOC o 1-5 h z + + +| |连接| |已打开| |成功/无|死亡|建立|认证|- +| | | | | | |+ + + |A | | |失败|失败| |+ + + | | | + | + |断开| | |正

47、在关闭| | |+1 终止 | + 1 网络 |- +| | | |+ +3.3连接死亡阶段(物理层未准备好)一个连接的开始和结束都要经历此阶段。当一个外部事件(例如检测到载波或网 络管理人员配置)指示物理层已准备好并可以使用时,PPP将进入建立连接阶段。 在此阶段,LCP协议自动机(后面将提到)处在初始或正在开始状态。当进入 到建立连接阶段后会引发UP事件通知LCP协议自动机。应用注意事项:典型的,一个连接将在调制解调器连接断开后自动返回到此阶段。在使用电话线 的连接情况下,这个阶段将相当的短,短到很少有足够的时间能用仪器检测到它的存在。3.4建立连接阶段链路控制协议(LCP )通过交换配置

48、数据包建立连接。当LCP协议自动机进入已打开状态,并且发送和接收过配置确认数据包时,为建立连接的交换过程才完成。 所有的配置选项都被假定为缺省值,除非在配置交互的过程中改变。关于LCP 配置选项的进一步讨论参见后面的章节。有一点是非常重要的,就是那些只有与特定网络层协议无关的选项才能被LCP 配置。配置单独的网络层协议是在网络层协议阶段由相应的网络控制协议来配置。 在此阶段接收到的任何非LCP数据包将被静默丢弃。接收到LCP配置请求数据包将引起PPP连接从网络层协议阶段或认证阶段返 回到建立连接阶段。3.5认证阶段在某些连接时,在允许网络层协议数据包交换之前希望对对等实体进行认证。缺省时,认证

49、不是必要的。如果应用时希望对等实体使用某些认证协议进行认证 ,这种要求必须在建立连接阶段提出。认证阶段应该紧接在建立连接阶段后。然而,可能有连接质量的决定并行出现。应用时绝对不允许连接质量决定数据包的交换使认证有不确定的延迟。认证阶段后的网络层协议阶段必须等到认证结束后才能开始。如果认证失败,将转而进入 终止连接阶段。仅仅是连接控制协议、认证协议、连接质量监测的数据包才被允许在此阶段中出现。所有 其它在此阶段中接收到的数据包都将被静默丢弃。应用注意事项:应用时不能简单的因为超时或缺少回应就认为认证失败。应该允许重传,仅当试 图认证的次数超过一定的限制时才进入终止连接阶段。如果对方拒绝认证,己方

50、有权进入终止连接阶段。3.6网络层协议阶段一旦PPP完成了上述阶段,每一个网络层协议(例如IP、IPX、 AppleTalk)必须单独的由相应的网络控制协议(NCP)配置。每一个网络控制协议可以随时打开或关闭。应用注意事项:因为可能一开始就会使用需要花费大量时间的连接质量决定,所以当等待对方进 行网络控制协议配置时应该避免使用固定的超时限制。当一个网络控制协议自动机达到已打开的状态时,PPP连接上就可以传送相应的网络层协议数据包。当接收到的任何所支持的网络层协议数据包时,只要相应的网络控 制协议状态自动机未进入已打开状态,都将作静默丢弃处理。应用注意事项:只要LCP协议状态自动机处于已打开的状

51、态,任何接收到的不支持的协议数据 包都将返回协议拒绝包(后面将提到)。所支持的协议数据包都将静默丢弃。在此阶段,连接上流通的包括LCP数据包、NCP数据包和网络层协议数据包。3.7终止连接阶段PPP连接可以随时终止。原因可能是载波丢失、认证失败、连接质量失败、超 时计数器溢出,或者网络管理员关闭连接。LCP通过交换连接终止包来终止连接。当连接正在被终止的时候,PPP会通 知网络层以便它采取相应的动作。在交换过终止请求包后,将通知物理层断开以便使连接真正终止,尤其是在认证失败的时 侯。发送连接终止请求包的一方应该等待接收到连接终止确认包之后或超时计数器计满之 后再断开。收到连接终止确认包的一方应

52、该等待对方首先断开,并且决不能断开直到至少 有一个超时计时器在发送了终止连接确认包之后溢出。然后PPP应该进入连接死亡阶段O在此阶段所有接收到的非LCP数据包都将被静默丢弃。应用注意事项:关闭时使用LCP就已足够。并不需要每一个NCP都发送终止连接数据包。相反的,一个NCP协议自动机关闭并不能关闭整个PPP连接,即使这个NCP协议自动 机是当前唯一处于已打开状态。4.选项协商自动机有限状态自动机由事件、动作、状态迁移定义。事件包括接收外部命令,诸如打开、关闭 、超时计时器溢出和接收到对方发送过来的数据包。动作包括打开超时计数器和向对方发 送数据包。有些类型的数据包,诸如配置否定包和配置拒绝包,

53、或者编号拒绝包和协议拒绝包,或者 回应请求包、回应回答包和丢弃请求包在自动机的描述中都是不可区分的。正如后面将要 提到的,虽然这些不同类型的数据包会引起相同的状态迁移,但它们确实起到了不同的作 用。事件动作Up二低层已连接tlu二该层已连接Down二低层已断开tld二该层已断开Open二打开连接tls二该层已开始连接Close=关闭连接tlf二该层已关闭连接TO+二超时计时器溢出且超时计数器值大于零irc二初始化超时计数器TO-二超时计时器溢出且超时计数器值小于零zrc二超时计数器清零RCR+二收到正确的配置请求包scr二发送配置请求包RCR-二收到不正确的配置请求包RCA二收到配置确认包sc

54、a二发送配置确认包RCN二收到配置否定包/拒绝包scn二发送配置否定包/拒绝包RTR二收到终止请求包str二发送终止请求包RTA二收到终止确认包sta二发送终止确认包RUC二收到未知编码包scj二发送编码拒绝包RXJ+二收到编码拒绝包(允许的)或受到协议拒绝包RXJ-=收到编码拒绝包(糟糕的)或受到协议拒绝包RXR =收到回应请求包ser =发送回应回答包或者收到回应回答包或者收到丢弃请求包4.1状态转移表以下就是完整的状态转移表。状态水平列出来的。低层仍然没有准备好。超时计时器也没有运行在此状态下。当低层变得可用时,就发送配置请求包。Closed状态在此状态下,连接有效,但是没有出现Open

55、事件。超时计时器也没有运行在 此状态下。此时接收到配置请求包后,将发送终止请求包。接收到终止确认包将被静默丢弃 以免产生循环。Stopped 状态此状态是在Closed状态发生了Open事件后迁移而来的。当自动机在进行了 tlf动作后或发送了终止请求包后在等待Down事件时就进入此状态。超时计时 器也没有运行在此状态下。此时接收到配置请求包后,将做出合适的回答。接收到其他类型的包时,就发送 终止确认包。接收到终止确认包将被静默丢弃以免产生循环。基本原理:Stopped状态是连接终止阶段、连接配置失败和其它自动机的错误模式的 交汇之处。还存在着Down事件(由tlf动作引发)和RCR事件的竞争的

56、情况。当R或拒绝其它用户的请求。自从连接被确认为可用时,就可以由一个Down事件和一个紧 接着的Open事件来通知LCP来模拟实现。应该特别注意的是Close事件不能由 其它的原因引发。此时将触发一个Down事件,随即紧接着一个Up事件。这样做将使得连接有次序的开始重新协商,自动机由Closing状态转移到Stopping状态,并且 tlf动作将断开连接。自动机将在Stopped状态或Starting状态中等待 下一次连接。Timeout(TO + ,TO -)事件Timeout事件指示超时计时器溢出。当发送出配置请求包和终止请求包后 超时计时器开始计时。TO+事件指示着超时计数器的值仍然大于

57、零。其中超时计数器每减一,就表明 配置请求包或终止请求包就重传一次。TO-事件指示着超时计数器的值小于零,再没有任何数据包需要重传了。Receive Configure Request(RCR+,RCR )事件 RCR事件出现表明接收到了从对方发送来的配置请求包。配置请求包的到来表 明对方希望打开连接并且指定连接选项。配置请求包将在后面有更详细的描述。 RCR+事件表明对方的配置请求是可以接受的,并且将传送配置确认包。RCR-事件表明对方的配置请求是不能接受,并且将传送相应的配置否定包或 配置拒绝包。应用注意事项:这些事件可以在自动机已处于Opened状态的时候发生。这时必须立即准备 好重新协

58、商选项。Receive-Configure-Ack(RCA)事件RCA事件出现表明收到了对方k褂茫眨鹗录 魑 卮稹?这个动作的结果高度依赖于应用 的需要 口而女。This Layer Finished(tl f)动作tlf动作表明低层的协议自动机进入了Intial状态,Closed状态,或Stopped状态,并且低层已不再为连接所用。当低层终止时应使用Down事 件作为回答。典型的,此动作可能会被LCP用来提前进入连接死亡阶段,或者被NCP用来 通知LCP当没有任何NCP被打开时连接可能会终止。这个动作的结果高度依赖于应用的需要。Initialize-Restart-Count(irc )动作

59、rc动作初始化超时计数器为一合适的值(Max-Terminate或 Max-Configure)。每传送一次数据包,计数器就减一,并且包括第一次。应用注意事项:除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。Zero-Restart-Count(zrc )动作zrc动作将超时计数器清零。应用注意事项:此动作使有限自动状态机能够在进入最终所期望的状态之前停止,允许由对方处 理网络流量。除了设置超时计数器之外,还必须为超时计时器设置超时事件的时间长度。Send-Configure-Request(scr )动作scr动作将发送配置请求包。这表明期望用指定的配置选项打开连接。当配置

60、选项包被发送时,超时计时器开始计时以防止它被丢失。每当发送一个配置请求包时,超 时计数器就减一。Send-Configure-Ack(sca )动作sca动作发送配置确认包。它表明确认了接收到的配置请求包中所有的配置选 项。Send-Configure-Nak(scn)动作sen动作发送配置否定包或配置拒绝包。它表明否定了接收到的配置请求包中 某些的配置选项。配置否定包被用于拒绝某一个配置选项值,并且还建议了一个新的可以接受的配置选项值。而配置拒绝包被用于拒绝所有的配置选项,典型的是因为这些选项不能被识别 或被运用。关于如何使用配置否定包和配置拒绝包将在后面叙述链路控制协议数据包格式 的章节中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论