华为培训 PPP协议和PPP0E协议

上传人:痛*** 文档编号:61114442 上传时间:2022-03-10 格式:DOCX 页数:74 大小:2.03MB
收藏 版权申诉 举报 下载
华为培训 PPP协议和PPP0E协议_第1页
第1页 / 共74页
华为培训 PPP协议和PPP0E协议_第2页
第2页 / 共74页
华为培训 PPP协议和PPP0E协议_第3页
第3页 / 共74页
资源描述:

《华为培训 PPP协议和PPP0E协议》由会员分享,可在线阅读,更多相关《华为培训 PPP协议和PPP0E协议(74页珍藏版)》请在装配图网上搜索。

1、课程 BA000003 PPP协议和PPP0E协议ISSUE1.0Huawei TechnologiesBA000003 PPP协议和PPP0E协议 ISSUE1.0目 录目 录课程说明1课程介绍1课程目标1第1章 概述2第2章 PPP协议8第3章 PPPOE协议48附录 缩略词表74iBA000003 PPP协议和PPP0E协议 ISSUE1.0课程说明课程说明课程介绍本教材为宽带产品工程师培训公共课程。本课程介绍PPP协议和PPPOE协议。课程目标完成本课程学习,学员能够:l 了解SLIP协议的基本原理。l 掌握PPP协议的基本原理。l 掌握LCP协议和NCP协议数据报文的交换过程。l 掌

2、握PPPOE协议的基本原理。1BA000003 PPP协议和PPP0E协议 ISSUE1.0第1章 概述第1章 概述SLIP的全称是Serial Line IP,出现在80年代中期,并被使用在BSD UNIX主机和SUN的工作站上。因为SLIP简单好用,所以后来被大量使用在线路速率从1200bps到19.2Kbps的专用线路和拨号线路上互连主机和路由器,到目前为止仍有大部分UNIX主机保留对该协议的支持。在80年代末90年代初期,被广泛用于家庭中每台有RS232串口的计算机和调制解调器连接到Internet。SLIP的帧格式由IP包加上END字符组成。通过在被发送IP数据报的尾部增加特殊的EN

3、D字符(0xC0 )从而形成一个简单的SLIP的数据帧,而后该帧会被传送到物理层进行发送。为了防止线路噪声被当成数据报的内容在线路上传输,通常发送端在被传送数据报的开始处也传一个END字符。如果线路上的确存在噪声,则该数据报起始位置的END字符将结束这份错误的报文,这样当前正确的数据报文就能正确的传送了,而前一个含有无意义报文的数据帧会在对端的高层被丢弃。END是判断一个SLIP帧是否结束的标志。如果要传送的IP包中正好有一个字符0xc0要传送,为了避免它被当作END字符,要用连续的两个字节0xdb和0xdc来代替它。如果要传送的是0xdb,那么就用连续传输两个字节0xdb和0xdd来代替它。

4、 SLIP只支持IP协议,对IPX等缺乏支持。并且,由于帧格式中没有类型字段,致使如果一条串行线路如果用于SLIP,就不能同时使用其它协议。 SLIP不提供纠错机制,错误只能依靠上层协议实现。 SLIP帧的封装格式非常简单,通信双方无需在数据报发送前协商任何配置参数选项(在PPP协议中需协商配置参数选项),所以双方IP层通信前必需先获知对方的IP地址,才能进行网络层的通信,否则链路层发送的数据帧在被送到对方网络层时将无法进行转发。正是由于上面的诸多缺点,导致了SLIP很快的被后面要讲的PPP协议所替代。71BA000003 PPP协议和PPP0E协议 ISSUE1.0第2章 PPP协议第2章

5、PPP协议PPP协议主要包括三部分:LCP(Link Control Protocol)链路控制协议、NCP(Network Control Protocol)和PPP的扩展协议(如Multilink Protocol)。随着网络技术的不断发展,网络带宽已不再是瓶颈,所以PPP扩展协议的应用也就越来越少,因此往往人们在叙述PPP协议时经常会忘记它的存在。我们在提及PPP协议的报文封装格式时,不可不先提一下HDLC协议。HDLC也是最常用的数据链路层协议,它是从SDLC协议衍进过来的,许多常用的数据链路层协议的封装方式都是基于HDLC的封装格式的,同样PPP协议也不例外,它也采用了HDLC的定界

6、帧格式。以下为对PPP数据帧封装格式的一点说明:每一个PPP数据帧均是以一个标志字节起始和结束的,该字节为0x7E。紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.121地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。但由于PPP协议是被运用在点对点的链路上的特殊性,它不

7、像广播或多点访问的网络一样,因为点对点的链路就可以唯一标示对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。同地址域一样,PPP数据帧的控制域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。就PPP协议本身而言,我们最关心的内容应该是它的协议域和信息域。协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为“1”,高字节的最低位为“0”。如果当发送端

8、发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的,那么接收端会向发送端发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容,1500字节大小等于PPP协议中配置参数选项MRU(Maximum Receive Unit)的缺省值,在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。信息域如果不足1500字节时可被填充,但不是必须的,如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。 说明:MRU表示本端接收到的PPP数据帧的数据域的最大值。通常情况下

9、这个参数选项使用默认值(1500字节),因此在Config-Request报文中双方都不会携带这个配置参数选项。 当在某些特殊应用中,可能会使用到小于1500字节或大于1500字节的情况,这时在Config-Request报文就会携带要协商的MRU配置参数选项值。CRC校验域主要是对PPP数据帧传输的正确性进行检测的,当然在数据帧中引入了一些传输的保证机制是好的,但可以反过来说,同样我们会引入更多的开销,这样可能会增加应用层交互的延迟。 为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链

10、路环路、一些链路的错误;终止一条链路。PPP的网络控制协议根据不同的网络层协议可提供一族网络控制协议(NCP),常用的有提供给TCP/IP网络使用的IPCP网络控制协议;提供给SPX/IPX网络使用的IPXCP网络控制协议等。最为常用的是IPCP协议,当点对点的两端进行NCP参数配置协商时,主要是用来通信双方的网络层地址。 数据通信设备(在本文中指路由器)的两端如果希望通过PPP协议建立点对点的通信,无论哪一端的设备都需发送LCP数据报文来配置链路(测试链路)。一旦LCP的配置参数选项协商完后,通信的双方就会根据LCP配置请求报文中所协商的认证配置参数选项来决定链路两端设备所采用的认证方式。协

11、议缺省情况下双方是不进行认证的,而直接进入到NCP配置参数选项的协商,直至所经历的几个配置过程全部完成后,点对点的双方就可以开始通过已建立好的链路进行网络层数据报文的传送了,整个链路就处于可用状态。只有当任何一端收到LCP或NCP的链路关闭报文时(一般而言协议是不要求NCP有关闭链路的能力的,因此通常情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的);物理层无法检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,从而终止PPP会话。以下是PPP协议整个链路过程需经历阶段的状态转移图说明:在点对点链路的配置、维护和终止过程中,PPP需经历以下几个阶段:链路不可用阶段。

12、有时也称为物理层不可用阶段,PPP链路都需从这个阶段开始和结束。当通信双方的两端检测到物理线路激活(通常是检测到链路上有载波信号)时,就会从当前这个阶段跃迁至下一个阶段(即链路建立阶段)。先简单提一下链路建立阶段,在这个阶段主要是通过LCP协议进行链路参数的配置,LCP在此阶段的状态机也会根据不同的事件发生变化。当处于在链路不可用阶段时,LCP的状态机是处于initial(初始化状态)或starting(准备启动状态),一旦检测到物理线路可用,则LCP的状态机就要发生改变。当然链路被断开后也同样会返回到这个阶段,往往在实际过程中这个阶段所停留的时间是很短的,仅仅是检测到对方设备的存在。链路建立

13、阶段。是PPP协议最关键和最复杂的阶段。该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。当完成数据报文的交换后,则会继续向下一个阶段跃迁,该下一个阶段既可是验证阶段,也可是网络层协议阶段,下一阶段的选择是依据链路两端的设备配置的(通常是由用户来配置,但对NAS或BAS设备的PPP模块缺省就需要支持PAP或CHAP中的一种认证方式)。在此阶段LCP的状态机会发生两次改变,前面我们说了当链路处于不可用阶段时,此时LCP的状态机处于initial或starting,当检测到链路可用时,则物理层会向链路层发送一个UP事件,链路层收到该事件后,会将LCP的状态机从当

14、前状态改变为Request-Sent(请求发送状态),根据此时的状态机LCP会进行相应的动作,也即是开始发送Config-Request报文来配置数据链路,无论哪一端接收到了Config-Ack报文时,LCP的状态机又要发生改变,从当前状态改变为opened状态,进入Opened状态后收到Config-Ack报文的一方则完成了当前阶段,应该向下一个阶段跃迁。同理可知,另一端也是一样的,但须注意的一点是在链路配置阶段双方是链路配置操作过程是相互独立的。如果在该阶段收到了非LCP数据报文,则会将这些报文丢弃。验证阶段。多数情况下的链路两端设备是需要经过认证后才进入到网络层协议阶段,缺省情况下链路两

15、端的设备是不进行认证的。在该阶段支持PAP和CHAP两种认证方式,验证方式的选择是依据在链路建立阶段双方进行协商的结果。然而,链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。在这个阶段仅支持链路控制协议、验证协议和质量检测数据报文,其它的数据报文都会被丢弃。如果在这个阶段再次收到了Config-Request报文,则又会返回到链路建立阶段。网络层协议阶段。一旦PPP完成了前面几个阶段,每种网络层协议(IP、IPX和AppleTalk)会通过各自相应的网络控制协议进行配置,每个NCP协议可在任何时间打开和关闭。当一个NCP的状态机变成Opened状态时,

16、则PPP就可以开始在链路上承载网络层的数据包报文了。如果在个阶段收到了Config-Request报文,则又会返回到链路建立阶段。网络终止阶段,PPP能在任何时候终止链路。当载波丢失、授权失败、链路质量检测失败和管理员人为关闭链路等情况均会导致链路终止。链路建立阶段可能通过交换LCP的链路终止报文来关闭链路,当链路关闭时,链路层会通知网络层做相应的操作,而且也会通过物理层强制关断链路。对于NCP协议,它是没有也没有必要去关闭PPP链路的。 LCP数据报文是在链路建立阶段被交换的,它作为PPP的净载荷被封装在PPP数据帧的信息域中。在链路建立阶段的整个过程中信息域的内容是在变化的,它包括很多种类

17、型的报文,所以这些报文也要通过相应的字段来区分,PPP数据帧的协议域固定填充0xC021。 代码域的长度为一个字节,主要是用来标识LCP数据报文的类型的。在链路建立阶段时,接收方收到LCP数据报文的代码域无法识别时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。 标识域也是一个字节,其目的是用来匹配请求和响应报文。一般而言在进入链路建立阶段时,通信双方无论哪一端都会连续发送几个配置请求报文(Config-Request报文),而这几个请求报文的数据域可能是完全一样的,而仅仅是它们的标识域不同罢了。通常一个配置请求报文的ID是从0x01开始逐步加1的,当对端接收到该配置请

18、求报文后,无论使用何种报文(回应报文可能是Config-Ack、Config-Nak和Config-Reject三种报文中的一种)来回应对方,但必须要求回应报文中的ID(标识域)要与接收报文中的ID一致,当通信设备收到回应后就可以将该回应与发送时的进行比较来决定下一步的操作。 长度域的内容 = 总字节数据(代码域+标志域+长度域+数据域)。长度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。数据域的内容依据不同LCP数据报文的内容也是不一样的。链路配置报文与其它两类报文有着明显的区别,它主要是用来协商链路的配置参数选项的,因此这种报文的数据域还要携带许多配置

19、参数选项的。链路配置报文主要包括Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文。当通信双方需要建立链路时,无论哪一方都需要发送Config-Request报文并携带每一端自已所希望协商的配置参数选项。当接收方收到Config-Request报文时,会在剩下的三种类型的报文中选择一种来响应对方的请求报文,到底选择哪种报文来响应对方需依据以下两个条件:不能完全识别配置参数选项的类型域,我们知道一个Config-Request报文中会同时携带多个配置参数选项,而对于一个支持PPP协议的通信设备也不一定会支持上表中所有列出的配置选项,即使支

20、持,也可能在实际应用中关闭掉某些选项功能。(例如:当使用PPP协议通信的一端可能将一些无用的配置选项都关闭了,而仅支持0x01和0x03两个配置参数选项,因此当对方发送的Config-Request报文中含有0x04配置选项时,对于本端而言这个配置参数选项就无法识别,也即是不支持这个配置参数选项的协商)。如果能支持完全识别配置参数选项,但接收端也可能不认可Config-Request报文中配置参数选项数据域中的内容(例如:当一端发送魔术字配置参数选项中的魔术字为全0,而对端认为应该为其它值,这种情况就属于不支持配置参数选项中的内容)。所以依据上面的两个条件,我们就可以明确在回应对方配置请求报文

21、时,采用何种报文回应。当接收Config-Request报文的一端能识别发送过来的所有配置参数选项且认可所有配置参数选项数据域的内容时,接收端将会给对端回一个Config-Ack报文并将配置请求报文中的配置参数选项原封不动的放置在Config-Ack报文的数据域内(根据协议的规定是不可改变配置参数选项的顺序)。当配置请求报文的发送端收到Config-Ack报后,则会从当前阶段进入到下一个阶段。 当接收Config-Request报文的一端能识别发送端所发送过来的所有配置参数选项,但对部分配置参数选项数据域中的内容不认可时,接收端将会给对端回应一个Config-Nak报文,该报文中只携带不认可的

22、配置参数选项,而这些配置参数选项的数据内容为本端希望的值。然而当接收端收到Config-Nak报文后,会重新发送Config-Request报文,而这个Config-Request报文与上一次所发送的Config-Request报文区别在于那些被对端不认可的配置参数选项的内容被填写到刚刚协商完后再次发送的Config-Request报文中(Config-Nak报文发送回来的那些配置参数选项)。 当接收Config-Request报文的一端不能识别所有的发送端发送过来的配置参数选项时,此时接收端将会向对端回一个Config-Reject报文,该报文中的数据域只携带那些不能识别的配置参数选项(当配

23、置参数选项的类型域不识别时)。当对端接收到Config-Reject报文后,同样会再次发送一个Config-Request报文,这个配置请求报文与上一次发送的区别在于将不可识别的那些配置参数选项给删除了。 链路配置阶段也可能要经过几次协商后才能完成,但这与点对点两端的设备有着密切的联系。对于PPP的两个端点而言,两者是独立完成各自的配置参数选项的协商过程的。链路终止报文分为Terminate-Request和Terminate-Reply两种报文。LCP报文中提供了一种机制来关闭一个点对点的连接,想要关断链路的一端会持续发送Terminate-Request报文,直到收到一个Terminate

24、-Reply为止。接收端一旦收到了一个Terminate-Request报文后,必须回应一个Terminate-Reply报文,同时等待对端先将链路断开后,再完成本端的所有断开的操作。LCP的链路终止报文的数据域与链路配置报文的数据域不一样,链路终止报文中无需携带各配置参数选项。对于链路终止报文也同样需要ID一致,当接收到Terminate-Reply报文才会做链路终止操作。 魔术字是在LCP的Config-Request报文中被协商的,并且可被一些其它类型的LCP数据报文所使用,如Echo-Request、Echo-Reply报文和Quality-Protocol报文等。对于PPP协议本身它

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

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

27、下两种情况发生:1. 链路实际不存在环路,而是由于对方在产生魔术字时与接收端产生的一致,但实际这种情况出现的概率是很小的。当Config-Nak被对端接收到后,应该发送一个Config-Request报文(此报文中的魔术字为Nak报文中的),当对端接收到后,与上次比较,由于接收端已经在Nak报文中产生了一个不同的魔术字,此时接收端收到的Config-Request报文中的魔术字与上次配置请求报文中不一样,所以接收端可断定链路不存在环路。2. 链路实际上确实存在环路,一段时间后Config-Nak报文会返回到发送该报文的同一端。这时接收端比较这个Config-Nak报文与上一次发出去的一样,因此

28、链路存在环路的可能性又增大了。我们知道当一端收到了一个Config-Nak报文时,又会发送一个Config-Request报文(该报文中的魔术字与Config-Nak中的一致),这样又回到了最初的状态,在这条链路上就会不断的出现Config-Request、Config-Nak报文,因此这样周而复始下去,接收端就会认为PPP链路存在环路的可能性在不断增加,当达到一定数量级时,就可认为此链路存在环路。但在实际应用中根据不同设备实现PPP协议的方法,我们在链路环路检测时可采用两种方法。第一种机制就是如上面所述的,这个过程不断地重复,最终可能会给LCP状态机发一个Down事件,这时可能会使LCP的状

29、态机又回到初始化阶段,又开始新一轮的协商。当然对于某些设备还会采用第二种机制,就是不产生任何事件去影响当前LCP的状态机,而是停留在请求发送状态。但这时认为链路有环路的一端设备需要不断的向链路上发送Echo-Request报文来检测链路环路是否被解除,当接收端收到Echo-Reply报文时,就认为链路环路被解除,从而就可能进行后续的PPP的过程。 PPP协议也提供了可选的认证配置参数选项,缺省情况下点对点通信的两端是不进行认证的。在LCP的Config-Request报文中不可一次携带多种认证配置选项,必须二者择其一(PAP/CHAP)。一般是在PPP设备互连的设备上进行配置的,或设备默认支持

30、一个缺省的认证方式(PAP是大部分设备所默认的认证方式)。当对端收到该配置请求报文后,如果支持配置参数选项中的认证方式,则回应一个Config-Ack报文;否则回应一个Config-Nak报文,并附带上自希望双方采用的认证方式。当对方接收到Config-Ack报文后就可以开始进行认证了,而如果收到得是Config-Nak报文,则根据自身是否支持Config-Nak报文中的认证方式来回应对方,如果支持则回应一个新的Config-Request(并携带上Config-Nak报文中所希望使用的认证协议),否则将回应一个Config-Reject报文,那么双方就无法通过认证,从而不可能建立起PPP链路

31、。PPP支持两种授权协议:PAP(Password Authentication Protocol)和CHAP(Challenge Hand Authentication Protocol)。 我们所知两个设备在使用PAP进行认证之前,应该确认那一方是验证方,那一方是被验证方。实际上对于使用PPP协议互连的两端来说,既可作为认证方,也可作为被认证方。但通常情况下,PAP只使用一个方向上的认证。一般在两端设备使用PAP协议之前,均会设备上进行一些相应的配置,对于MA5200IP接入设备,它默认就作为验证方,但可通过使用命令PAP Authentication PAP/CHAP来更改认证方式,而对

32、于被验证方而言只需设置用户名和密码即可。PAP认证是两次握手,在链路建立阶段,依据设备上的配置情况,如果是使用PAP认证,则验证方在发送Config-Request报文时会携带认证配置参数选项,而对于被验证方而言则是不需要,它只需要收到该配置请求报文后根据自身的情况给对端返回相应的报文。如果点对点的两端设备采用的是PAP双向认证时,也即是它同时也作为验证方,则此时需要在配置请求报文中携带认证配置参数选项。因此,我们可以总结一下,如果对于点对点的两个设备在PPP链路建立的过程中使用的认证方式为PAP的话,那么验证方在其Config-Request报文中必须含有认证配置参数选项,且该认证配置参数选

33、项的数据域为0xC023 。当通信设备的两端在收到对方返回的Config-Ack报文时,就从各自的链路建立阶段进入到认证阶段,那么作为被验证方此时需要向验证方发送PAP认证的请求报文,该请求报文携带了用户名和密码,当验证方收到该认证请求报文后,则会根据报文中的实际内容查找本地的数据库,如果该数据库中有与用户名和密码一致的选项时,则回向对方返回一个认证请求响应,告诉对方认证已通过。反之,如果用户名与密码不符,则向对方返回验证不通过的响应报文。如果双方都配置为验证方,则需要双方的两个单向验证过程都完成后,方可进入到网络层协议阶段,否则在一定次的认证失败后,则会从当前状态返回链路不可用状态。例如:当

34、路由器A(被验证方)收到了路由器B 的Config-Ack报文后,因为是使用PAP认证,所以作为被验证方的路由器A应主动向验证方(路由器B)发送认证请求报文(PAP Authenticate),用户名和密码均为163,报文的内容如下:7E FF 03 C0 23 01 01 00 0C 03 31 36 33 03 31 36 33 7E下划线的前四个字节是用户名,后四个字节是密码。当路由器B收到了该报文后,会向路由器A回应一个PAP Authenticate Ack报文,报文内容如下:7E FF 03 80 21 02 01 00 05 00 7E此时所回应的报文中,并未携带任何数据,如果是

35、认证不通过,则会在返回的报文中指是因何原因无法认证通过,可能是无此用户名或密码不匹配。 与PAP认证比起来,CHAP认证更具有安全性,从前面认证过程的数据包交换过程中不难发现,采用PAP认证时,被验证是采用明文的方式直接将用户名和密码发送给验证方的,而对于PAP认证则不一样。CHAP为三次握手协议,它只在网络上传送用户名而不传送口令,因此安全性比PAP高。在验证一开始,不像PAP一样是由被验证方发送认证请求报文了,而是由验证方向被验证方发送一段随机的报文,并加上自己的主机名,我们通称这个过程叫做挑战。当被验证方收到验证方的验证请求,从中提取出验证方所发送过来的主机名,然后根据该主机名在被验证方

36、设备的后台数据库中去查找相同的用户名的记录,当查找到后就使用该用户名所对应的密钥,然后根据这个密钥、报文ID和验证方发送的随机报文用Md5加密算法生成应答,随后将应答和自己的主机名送回,同样验证方收到被验证方发送回应后,提取被验证方的用户名,然后去查找本地的数据库,当找到与被验证方一致用户名后,根据该用户名所对应的密钥、保留报文ID和随机报文用Md5加密算法生成结果,和刚刚被验证方所返回的应答进行比较,相同则返回Ack,否则返回Nak。例11: 如图4-2所示,当路由器A(被验证方)收到了路由器B 的Challenge报文后,报文内容如下:7E FF 03 C2 23 01 01 00 1C

37、10 FF 41 CF 22 AA 8E F1 B9 99 9A 79 A7 56 78 C4 A7 4d 41 35 32 30 30 417E下划线的前16个字节是验证方随机产生的一段报文,后7个字节是验证方的主机名(MA5200A),而且单个字节10表示随机报文的长度。而此时路由器A会根据用户名所对应的密钥使用报文的ID和该报文的内容生成一个回应报文,报文内容如下:7E FF 03 C2 23 02 01 00 1F 10 18 86 22 FF CE 81 D0 68 FF 80 85 00 A7 E3 85 35 70 70 6B 69 73 73 40 68 75 61 7E我们将

38、这个回应报文与验证方发送的挑战报文进行比较,报文的代码域已由原01改为02,总报文的长度有变化,主要后而一个下划线的内容是被验证方的主机名(ppkisshua),而且此时回应的16个字节的报文已经是经过MD5算法加密过的。当验证方收到了这个回应报文后,会根据报文中被验证方的主机名(ppkisshua)在本地的数据库中去查找密钥,然后再对原发先发送的那段挑战报文进行MD5的算法加密,如果所得的结果与对方刚发过来的16个字节的加密值一样的话,则就会发送一个报文通知被验证方,你的认证已经通过,我们可以进入到下一个阶段了。在实际应用当中,我们很多都是使用PC机来进行拨号这个过程,实际中当验证方发送挑战

39、后,PC机只接收而并不去查本地数据库,而直接使用在拨号对话框中所输入的密码和报文的ID及报报文的内容进行MD5算法加密(这个在PC机采用PPPOE软件拨入到MA5200时就是这样的)。下面来看一下验证通过时,验证方给被验证方所发送的一段报文内容:7E FF 03 C2 23 03 01 00 17 57 65 6C 63 6F 6D 65 20 74 6F20 4D 41 35 32 30 30 41 2E 7E此时所回应的报文的代码域为03,且报文的实际内容是,Welcom to MA5200A。 NCP协议的数据报文是在网络层协议阶段被交换的,在这个阶段所需的一些配置参数选项协商完后,就可

40、以进行网络层的通信,也即是在点对点的链路上可以开始传送网络层的数据报文了。NCP协议主要包括IPCP、IPXCP等,但我们在实际当中最常遇见的也只有IPCP协议了,如果对IPXCP或其它的一些网络控制协议有兴趣,则可参见RFC1552。 IPCP控制协议主要是负责完成IP网络层协议通信所需配置参数的选项协商的。IPCP在运行的过程当中,主要是完成点对点通信设备的两端动态的协商IP地址。我们依据两端设备的配置选项可将IPCP的协商过程分为静态和动态。何为静态,何为动态,这是一个相对的概念,可能不太准确,只作为参考使用。我们在下面会具体描述这两个过程。IPCP的数据的文同LCP的数据报文非常类似,

41、只不过NCP是在网络层协议阶段协商配置参数选项,而LCP协议则是在链路建立阶段协商配置参数选项的。除此之外是两者在所使用报文上的相似之处,我们知道LCP共包括十几种报文,而IPCP也包括多种报文,但它的报文类型只是LCP数据报文的一个子集(只有LCP代码域从1到7这七种报文),而且实际的数据报文交换过程中也仅涉及以下几种:Config-Request、Config-Ack、Config-Nak和Config-Reject(代码域从1到4,而链路终止报文一般而言是不在网络协议阶段使用的,而且也是不需要的)。以下就具体介绍一下IPCP控制协议的静态和动态的两个过程,实际上两者的区分是在于互连设备I

42、P地址的获取过程。静态协商,也即是不协商。点对点的通信设备两端在PPP协商之前已配置好了IP地址,所以就无须在网络层协议阶段协商IP地址,而双方唯一要做的就是告诉对方自身的IP地址。在IPCP控制协议完成整个配置的过程时,最理想的情况将会看到如图所示的四种报文,而无其它报文再被发送。如果当配置请求中所携带的网络层配置参数选项类似于LCP配置参数选项协商过程一样,可能会有对方不识别的配置参数选项或不被对方所认可的配置参数选项的内容。这样在这个阶段的协商过程中可能还会看到其它的一些报文。在静态协商时,如果IPCP的Config-Request报文中只含有地址配置参数选项时(实际中可能还会附带其它配

43、置参数选项,这些配置参数选项的协商与LCP阶段的一样,而我这里只提到了IP地址配置参数选项),无论是发送方还是接收方都同时发送Config-Request报文,其中配置选项中只含有各自的IP地址。当对端收到该报文后,会发送一个Config-Ack报文,这个目的是告诉对端我已经知道了你的IP地址,对路由器而言会增加一条到对端接口的主机路由。 刚进入网络层协议阶段时,IPCP的状态机是initial的,但当完成了上述的整个过程后,IPCP的状态机改变为Opened,双方也就可以开始网络层数据网的传送了。当一端接收到Config-Request报文后,它从报文的配置参数选项中可获知对端的IP地址,但

44、并不与本端的IP地址进行比较。我们也知道,一般而言点对点的两端应该是在一个网段。但如果双方的地址不在一个网段,IPCP协议中并未规定,此时不给对方回应Config-Ack报文,而是无条件的回送。因此说点对点通信的两端如果是手动设置每一端的IP地址时,无须双方地址在同一网段。例8:假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项地的过程),发送方设置IP地址为192.168.0.1,接收方设置IP地址为192.168.0.2,发送方发送给Config-Request报文内容如下:7E FF 03 80 21 01 01 00 0A 03 06 C0 A8 00

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

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

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

48、k报文,并将希望分配给对方的IP地址填充到Config-Nak报文内。这时当接收方收到Config-Nak报文后,就会重新发送一个Config-Request报文,这个报文中的IP地址配置选项为对方在Nak报文中所提供的。接收方IP地址的配置过程与静态时的一样,只需发送一个Config-Request报文即可,当收到发送方的Config-Ack报文,就表示接收方的IP地址配置完成。例9: 假设IPCP在网络层协议阶段开始协商配置参数选项(这里只举协商IP地址的配置参数选项地的过程),发送方没有配置IP地址,而接收方配置了IP地址为192.168.0.2,接收方可给发送方分配IP地址(192.1

49、68.0.1),发送方发送给接收方的Config-Request报文内容如下:7E FF 03 80 21 01 01 00 0A 03 06 00 00 00 00 7E有下划线的部分表示本端的IP地址。当对端正确接收到了该报文后,应该回应一个Config-Nak报文,报文内容如下:7E FF 03 80 21 03 01 00 0A 03 06 C0 A8 00 01 7E当接收方收到该报文后,重新发送一个Config-Request报文,报文内容如下:7E FF 03 80 21 01 02 00 0A 03 06 C0 A8 00 01 7E接收方再次收到发送方的一个Config-Re

50、quest报文,此时将回应一个Config-Ack报文,报文内容如下:7E FF 03 80 21 02 02 00 0A 03 06 C0 A8 00 01 7E请仔细观察一下这些报文在交互过程中,PPP数据帧净载荷内的数据报文的类型域和报文ID。同样的接收方给发送方也发送一个Config-Request报文,报文内容如下:7E FF 03 80 21 01 01 00 0A 03 06 C0 A8 00 02 7E发送方应回送一个Config-Ack给接收方,报文内容如下:7E FF 03 80 21 02 01 00 0A 03 06 C0 A8 00 02 7EBA000003 PPP

51、协议和PPP0E协议 ISSUE1.0第3章 PPPOE协议第3章 PPPOE协议随着宽带网络技术的不断发展,以xDSL、CableModem和以太网为主的几种主流宽带接入技术的应用已开展的如火如荼。同时又给各大网络运营商们带来了种种困惑,无论使用哪种接入技术,对于他们而言可盼和可求的是如何有效的管理用户,如何从网络的投资中收取回报,因此对于各种宽带接入技术的收费的问题就变得更加敏感。在传统的以太网模型中,我们是不存在所谓的用户计费的概念,要么用户能设置/获取IP地址上网,要么用户就无法上网。IETF的工程师们在秉承窄带拨号上网的运营思路(使用NAS设备终结用户的PPP数据包),制定出了在以太

52、网上传送PPP数据包的协议(Point To Point Protocol Over Ethernet),这个协议出台后,各网络设备制造商也相继推出自已品牌的宽带接入服务器(BAS),它不仅能支持PPPOE协议数据报文的终结,而且还能支持其它许多协议。如华为公司的MA5200IP接入设备和ISN8850智能多业务交换机。PPPOE协议提供了在广播式的网络(如以太网)中多台主机连接到远端的访问集中器(我们对目前能完成上述功能的设备为宽带接入服务器)上的一种标准。在这种网络模型中,我们不难看出所有用户的主机都需要能独立的初始化自已的PPP协议栈,而且通过PPP协议本身所具有的一些特点,能实现在广播

53、式网络上对用户进行计费和管理。为了能在广播式的网络上建立、维持各主机与访问集中器之间点对点的关系,那么就需要每个主机与访问集中器之间能建立唯一的点到点的会话。PPPOE协议共包括两个阶段,即PPPOE的发现阶段(PPPOE Discovery Stage)和PPPOE的会话阶段(PPPOE Session Stage)。这里我们更注重PPPOE发现阶段的介绍,因为PPPOE的会话阶段和PPP的会话过程基本上是一样的,两者的主要区别在于只是在PPP的数据报文前封装了PPPOE的报文头。无论是哪一个阶段的数据报文最终会被封装成以太网的帧进行传送。当一个主机希望能够开始一个PPPOE会话时,它首先会

54、在广播式的网络(也可能还要跨跃多点访问的网络,如ATM等,从而就形成了PPPOEOA的数据包)上寻找一个访问集中器,当然可能网络上会存在多个访问集中器时,对于主机而言则会根据各访问集中器(AC,Access Concentration)所能提供的服务或用户的预先的一些配置来进行相应的选择。当主机选择完了所需要的访问集中器后,就开始和访问集中器建立一个PPPOE会话进程。在这个过程中访问集中器会为每一个PPPOE会话分配一个唯一的进程ID,会话建立起来后就开始了PPPOE的会话阶段,在这个阶段中已建立好点对点连接的双方(这种点对点的结构与PPP不一样,它是一种逻辑上的点对点关系)就采用PPP协议

55、来交换数据报文,从而完成一系列PPP的过程,最终将在这点对点的逻辑通道上进行网络层数据报的传送。PPPOE的初始化过程是至关重要的,它不仅要在广播式的网络上确定一对一的逻辑关系,而且还要为PPPOE的会话阶段准备一些必要条件,如访问集中器唯一分配的会话ID(Session ID)。在介绍PPPOE的发现阶段之前,首先让我们重温一下以太网帧的封装格式,前面也介绍过了,所有的PPPOE的数据报文均是被封装在以太网的数据域(净载荷区)中传送的。以太网的帧格式对于大多数人来说是并不陌生,而且目前大多数的网络中都在使用以太网2.0版,因此EthernetII就被作为一种事实上的工业标准而广泛使用,如果对

56、以太网不太熟悉或想深入了解的读者,可参考相关局域网技术方面的书籍。以太网目的地址(目的MAC地址)和以太网源地址(源MAC地址),是我们大家最为熟悉的数据链路层地址。它包括单播地址、多播地址和广播地址,而对于PPPOE协议中要使用到单播地址和广播地址。在前面也提到了,对于PPP这样的数据链路层协议而言,二层地址通信双方之间已失去了原有的意义。以太网的类型域也是我们最关心的一个字段,它在1997年以前还一直由施乐公司维护,但后来就交由IEEE802小组维护了。通过这个字段的内容,数据包的接收方可以识别以太网的数据域中承载的是什么协议的数据报文。对于PPPOE的两大阶段,也正是通过以太网的类型域进

57、行区分的。在PPPOE的发现阶段时,以太网的类型域填充0x8863;而在PPPOE的会话阶段时,以太网的类型域填充为0x8864。数据域(净载荷)主要是用来承载类型域中所指示的数据报文,在PPPOE协议中所有的PPPOE数据报文就是被封装在这个域中被传送。校验域,主要用来保证链路层数据帧传送的正确性。PPPOE的数据报文是被封装在以太网帧的数据域内的。简单来说我们可能把PPPOE报文分成两大块,一大块是PPPOE的数据报头,另一块则是PPPOE的净载荷(数据域),对于PPPOE报文数据域中的内容会随着会话过程的进行而不断改变。PPPOE的发现阶段可分为四步,其实这个过程也是PPPOE四种数据报

58、文的交换的一个过程。当完成这四步后,用户主机与访问集中器双方就能获知对方的MAC地址和唯一的会话ID号,从而进入到下一个阶段(PPPOE的会话阶段)。实际上双方在互相知道了对方的MAC地址后,就已经在广播式的网络上确定了一一的对应关系,为了保证这个连接的有效性,同时使PPPOE协议能更加灵活的运用,因此还加入了会话ID字段,通过这两个条件就可完成确定双方点对点的关系。在这个阶段一开始,由于接入用户并不知道访问集中器的MAC地址,则使用类似于ARP解析的过程的机制来获取访问集中器的MAC地址。首先由接入用户侧发起一个初始化的广播报文,对于访问集中器如果配置了PPPOE的业务时,它会时实检测网络上

59、的数据包,当发现以太网数据帧中所承载的是PPPOE报文时(通过协议域的内容来区分),就会将其交给相应的模块去处理。当收到初始化报文后,访问集中器会向该用户回应一个报文。如果网络上存在很多这样的访问集中器且都收到了用户侧发送的初始化报文时,它们也都会向用户侧会送一个确认报文,如果该用户收到这个报文后,则会依据报文中所携带的内容或本端的一些配置来选择一个唯一的访问集中器进行会话。到此时已完成了前两步了,那么剩下的两步则是协商一些所提供的服务选项和获取PPPOE会话阶段所必须的会话ID值。在这个阶段,所有数据报文是被承载在以太网的数据域中的,而且以太网数据帧的协议域始终为0x8863。PPPOE数据

60、报文的数据区最开始的4位为版本域,协议中给出了明确的规定,这个域的内容填充0x01。紧接在版本域后的4位是类型域,协议中同样规定,这个域的内容填充为0x01。代码域占用1个字节,对于PPPOE 的不同阶段这个域内的内容也是不一样的。会话ID点用2个字节,当访问集中器还未分配唯一的会话ID给用户主机的话,则该域内的内容必须填充为0x0000,一旦主机获取了会话ID后,那么在后续的所有报文中该域必须填充那个唯一的会话ID值。长度域为2个字节,用来指示PPPOE数据报文中净载荷的长度。数据域,有时也称之为净载荷域,在PPPOE的不同阶段该域内的数据内容会有很大的不同。在PPPOE的发现阶段时,该域内

61、会填充一些Tag(标记);而在PPPOE的会话阶段,该域则携带的是PPP的报文。对于发现阶段的PPPOE数据报文而言,它的净载荷可能包含零个或多个Tag(标记),实际上这些标记的意义非常类似于PPP配置参数选项,它同样也是要经过协商的。对于PPPOE协议而言,没有像PPP的配置参数选项那样定义了很多细节,而只是一个初略的定义,因此在实际当中实现这个过程会依据不同厂商的设备有不同。从上图中可以看出,标记的封装格式采用的是大家所熟知的TLV结构,也即是(类型+长度+数据)。标记的类型域为2个字节,下表列出了各种标记类型的含义:标记类型标记说明0x0000表示PPPOE报文数据域中一串标记的结束,为

62、了保证版本的兼容性而保留,在有些报文中有应用。0x0101服务名,主要用来表明网络侧所能提供给用户的一些服务。0x0102访问集中器名,当用户侧接收到了AC的回应的PADO报文时,就可获从所携带的标记中获知访问集中器的名子,而且还可以据此来选择相应的访问集中器。0x0103主机唯一标识,类似于PPP数据报文中的标识域,主要是用来匹配发送和接收端的,因为对于广播式的网络中会同时存在很多个PPPOE的数据报文。0x0104AC-Cookies,主要被用来防止恶意性DOS功击。0x0105销售商的标识符。0x0110中继会话ID,对于PPPOE的数据报文也同样可以像DHCP报文一样被中断到另外的AC

63、上终结,这个字段则是用来维护另一个连接的。0x0201服务名错误,当请求的服务名不被对端所接受时,会在响应的报文中携带这个标记。0x0202访问集中器名出错。0x0203一般性错误。标记的长度域为2个字节,它用来指明标记数据域的长度。标记的数据域中用来放置不同类型标记所对应的相关数据。上图中每一行后面的数字为该报文的代码值。PADI(PPPOE Active Discovery Initiation)是PPPOE发现阶段的第一步,也即是由用户侧首先发送的一个报文。用户主机是以广播的方式发送这个报文,所以该报文所对应的以太网帧的目的地址域应填充为全1,而源地址域填充用户主机的MAC地址。广播包可

64、能会被多个访问集中器接收到,后面会讲到对于接收到PADI报文的访问集中器会使用PADO报文来回应用户主机。我们来看一下PADI报文中几个域的填充情况,前面已强调过版本域和类型域固定填充0x01,因为两个域各占4位,所以合并为1个字节后应为0x11。PADI报文的代码域填充0x09,会话ID填充0x0000。PADI报文必须含一个由用户侧请求的正确服务名标记,当然还可能携带一些其它的标记,而一个完整的PADI报文(包括PPPOE头)不能超过1484个字节,以便能留下足够的空间给中继代理增加一个中继的会话ID标记。例如:PADI 数据报文FF FF FF FF FF FF 00 10 A4 97 C1 D9 88 63 11 09 00 00 00 0C 0

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!