第七章 PPP协议4学时.docx
- 文档编号:8069670
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:50
- 大小:610.07KB
第七章 PPP协议4学时.docx
《第七章 PPP协议4学时.docx》由会员分享,可在线阅读,更多相关《第七章 PPP协议4学时.docx(50页珍藏版)》请在冰豆网上搜索。
第七章PPP协议4学时
章节名称:
第七章PPP协议
(4学时180分钟)
一、教学目的及要求:
1、了解PPP协议的主要功能;2、掌握PPP协议的组件功能;3、掌握PPP链路的建立过程;4、掌握PPP协议的可选配置参数。
二、教学重点及难点:
重点:
PPP协议链路建立过程。
难点:
LCP和LNP数据包的格式。
三、教学手段:
板书与多媒体课件演示相结合。
四、教学方法:
课堂讲解、演示、提问。
五、作业:
六、参考资料:
《光纤通信》杨祥林第一章,《光纤通信》刘增基第一章。
七、教学内容与教学设计
教学内容
教学设计
备注
7.1PPP协议的基本概念
7.2PPP协议的组件
7.3PPP链路的建立过程
7.4LCP的可选配置参数
开场白
明确本节课要学习的内容。
5分钟
7.1PPP协议的基本概念
一、PPP协议出现的背景
在提及PPP协议时,我们首先需要了解SLIP(SerialLineInternetProtocol)协议。
虽然它现在已被淡忘,但它也有过辉煌的日子。
它曾经主宰了Internet半边江山,人们不仅可以通过在计算机上安装该协议实现浏览Internet的梦想,而且还可以互连许多网络设备(如路由器与路由器的互连、路由器与主机的互连和主机与主机的互连)。
特别是计算机技术的发展,人们开始渐渐认识到使用SLIP协议已不能满足日益增长的网络需求,如何在串行点对点的链路上封装IPX、AppleTalk等网络层的协议呢?
这给网络专家提出了新的挑战,也为PPP协议的出现提供了契机,PPP由于自身的诸多的优点已成为目前被广泛使用的数据链路层协议
1、SLIP协议的基本概念
SLIP协议出现在80年代中期,并被使用在BSDUNIX主机和SUN的工作站上,因为SLIP简单好用,所以后来被大量使用在线路速率从1200bps到19.2Kbps的专用线路、拨号线路上互连主机和路由器,到目前为止仍有大部分UNIX主机保留对该协议的支持。
在80年代末90年代初期,被广泛用于家庭中每台有RS232串口的计算机和调制解调器连接到Internet。
SLIP是一种在点对点的串行链路上封装IP数据报的简单协议,它并非是Internet的标准协议。
2、SLIP协议的封装格式
SLIP协议的封装格式必需遵循以下几条原则:
通过在被发送IP数据报的尾部增加特殊的END字符(0xC0)从而形成一个简单的SLIP的数据帧,而后该帧会被传送到物理层进行发送。
为了防止线路噪声被当成数据报的内容在线路上传输,通常发送端在被传送数据报的开始处也传一个END字符。
如果线路上的确存在噪声,则该数据报起始位置的END字符将结束噪声引起的错误报文,这样当前正确的数据报文就能正确的传送了,而前一个含有无意义报文的数据帧会在对端的高层被丢弃。
当被传送的IP数据报文中含有END字符时,则需要对该字符进行转义(就是使用其它字符来表示),可使用连续传输的两个字节来代替它(如0xdb和0xdc)。
如果当被转义后的字符也包含在数据报中,则也需要对其进行同样的操作,直至不出现歧义为止。
从上图可以看出SLIP帧的封装格式非常简单,通信双方无需在数据报发送前协商任何配置参数选项(在PPP协议中需协商配置参数选项),所以双方IP层通信前必需先获知对方的IP地址,才能进行网络层的通信,否则链路层发送的数据帧在被送到对方网络层时将无法进行转发。
由于数据帧中也没有类似于以太网、HDLC和PPP等数据链路层协议中定义的协议域字段,因此SLIP仅支持一种网络层协议(IP协议)同一时刻在串行链路上发送。
SLIP协议没有在数据帧的尾部加上CRC校验和,如果由于线路噪声的干扰影响传送数据包的内容是无法在对端的数据链路层中发现的,必须交由上层的应用软件来处理。
正是由于上面的诸多缺点,导致了SLIP很快的被后面要讲的PPP协议所替代。
二、PPP协议简介
PPP提供了一种在点对点的链路上封装多协议数据报(IP、IPX和AppleTalk)的标准方法。
它不仅能支持IP地址的动态分配和管理;同步(面向位的同步数据块的传送)或异步(起始位+数据位+奇偶校验位+停止位)物理层的传输;网络层协议的复用;链路的配置、质量检测和纠错;而且还支持多种配置参数选项的协商。
PPP协议主要包括三部分:
LCP(LinkControlProtocol)链路控制协议、NCP(NetworkControlProtocol)和PPP的扩展协议(如MultilinkProtocol)。
随着网络技术的不断发展,网络带宽已不再是瓶颈,所以PPP扩展协议的应用也就越来越少,因此往往人们在叙述PPP协议时经常会忘记它的存在。
另外,大部分网络教材上会将PPP的认证也作为PPP协议的一个主要部分,实际上这是一个错误概念的引导。
PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点线路的两端需要进行认证时才需配置。
当然在实际应用中这个过程是不可忽略的,例如我们使用计算机上网时,需要通过PPP协议与NAS设备互连,在整个协议的协商过程中,我们需要输入用户名和密码。
因此当别人说PPP协议主要包括LCP、认证和NCP协议三个部分时,你不要认为他的说法有误,而只是不够准确罢了。
讲解
板书
课件演示
10分钟
7.2PPP协议的组件
首先简单介绍一下PPP协议的三组件:
PPP协议的封装方式、LCP协议的协商过程和NCP协议的协商过程,然后再结合具体的LCP和NCP数据报的封装格式和两个阶段实际数据报文的交换过程,进一步理解PPP的LCP和NCP协商阶段的具体内容。
一、PPP协议的封装
我们知道ISO参考模型共分七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
通常我们会依据协议所完成的功能将它与这七层进行对照,PPP协议就属于数据链路层协议。
我们在提及PPP协议的报文封装格式时,不能不先提一下HDLC协议。
HDLC也是最常用的数据链路层协议,它是从SDLC协议衍进过来的,许多常用的数据链路层协议的封装方式都是基于HDLC的封装格式的。
同样PPP协议也不例外,它也采用了HDLC的定界帧格式。
下图为PPP数据帧的封装格式:
以下为对PPP数据帧封装格式的一点说明:
(1)每一个PPP数据帧均是以一个标志字节起始和结束的,该字节为0x7E。
(2)紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。
我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。
当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.21地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。
例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC。
但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络一样,因为点对点的链路就可以唯一标识对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。
(3)同地址域一样,PPP数据帧的控制域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。
就PPP协议本身而言,我们最关心的内容应该是它的协议域和信息域。
协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。
协议域的内容必须依据ISO3309的地址扩展机制所给出的规定。
该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为"1",高字节的最低位为"0"。
如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的,那么接收端会向发送端发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。
(4)信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容。
1500字节大小等于PPP协议中配置参数选项MRU(MaximumReceiveUnit)的缺省值,在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。
信息域如果不足1500字节时可被填充,但不是必须的,如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。
我们通常在通信设备的配置过程中,遇到最多的也是MTU(MaximumTransmitUnit)。
对于一个设备而言,它网络的各个层次均使用MTU和MRU两个值,一般情况下设备的MRU会比MTU稍大几个字节,但这需根据各厂商的设备而定。
(5)CRC校验域主要是对PPP数据帧传输的正确性进行检测的,当然在数据帧中引入了一些传输的保证机制是好的,但可以反过来说,同样我们会引入更多的开销,这样可能会增加应用层交互的延迟,对于这个字节的使用我们可以参考一下X.25协议和FR协议就知道了。
二、LCP协议
为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。
详细内容后面讲述。
三、NCP协议
PPP的网络控制协议根据不同的网络层协议可提供一族网络控制协议,常用的有提供给TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网络控制协议等,但最为常用的是IPCP协议,当点对点的两端进行NCP参数配置协商时,主要是用来获得通信双方的网络层地址。
详细内容后面讲述。
讲解
板书
课件演示
15分钟
7.3PPP链路的建立过程
一、PPP的状态转移
数据通信设备的两端如果希望通过PPP协议建立点对点的通信,无论哪一端的设备都需发送LCP数据报文来配置链路(测试链路)。
一旦LCP的配置参数选项协商完后,通信的双方就会根据LCP配置请求报文中所协商的认证配置参数选项来决定链路两端设备所采用的认证方式。
协议缺省情况下双方是不进行认证的,而直接进入到NCP配置参数选项的协商,直至所经历的几个配置过程全部完成后,点对点的双方就可以开始通过已建立好的链路进行网络层数据报文的传送了,整个链路就处于可用状态。
只有当任何一端收到LCP或NCP的链路关闭报文时(一般而言协议是不要求NCP有关闭链路的能力的,因此通过情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的),物理层无法检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,从而终止PPP会话。
以下为PPP协议整个链路过程需经历阶段的状态转移图:
在点对点链路的配置、维护和终止过程中,PPP需经历以下几个阶段:
(1)链路不可用阶段:
有时也称为物理层不可用阶段,PPP链路都需从这个阶段开始和结束。
当通信双方的两端检测到物理线路激活(通常是检测到链路上有载波信号)时,就会从当前这个阶段跃迁至下一个阶段(即链路建立阶段)。
先简单提一下链路建立阶段,在这个阶段主要是通过LCP协议进行链路参数的配置,LCP在此阶段的状态机也会根据不同的事件发生变化。
当处于在链路不可用阶段时,LCP的状态机是处于initial(初始化状态)或starting(准备启动状态),一旦检测到物理线路可用,则LCP的状态机就要发生改变。
当然链路被断开后也同样会返回到这个阶段,往往在实际过程中这个阶段所停留的时间是很短的,仅仅是检测到对方设备的存在。
(2)链路建立阶段:
也是PPP协议最关键和最复杂的阶段。
该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。
当完成数据报文的交换后,则会继续向下一个阶段跃迁,该下一个阶段既可是验证阶段,也可是网络层协议阶段,下一阶段的选择是依据链路两端的设备配置的(通常是由用户来配置,但对NAS或BAS设备的PPP模块缺省就需要支持PAP或CHAP中的一种认证方式)。
在此阶段LCP的状态机会发生两次改变,前面我们说了当链路处于不可用阶段时,此时LCP的状态机处于initial或starting。
当检测到链路可用时,则物理层会向链路层发送一个UP事件,链路层收到该事件后,会将LCP的状态机从当前状态改变为Request-Sent(请求发送状态),此时的状态机LCP会进行相应的动作,也即是开始发送Config-Request报文来配置数据链路。
无论哪一端接收到了Config-Ack报文时,LCP的状态机又要发生改变,从当前状态改变为opened状态,进入Opened状态后收到Config-Ack报文的一方则完成了当前阶段,应该向下一个阶段跃迁。
同理可知,另一端也是一样的,但须注意的一点是在链路配置阶段双方是链路配置操作过程是相互独立的。
如果在该阶段收到了非LCP数据报文,则会的将这些报文丢弃。
在实际配置当中在该阶段可能会遇到很多情况,在LCP协议章节中会详细介绍可能遇到的情况。
(3)验证阶段:
多数情况下的链路两端设备是需要经过认证后才进入到网络层协议阶段,缺省情况下链路两端的设备是不进行认证的。
在该阶段支持PAP和CHAP两种认证方式,验证方式的选择是依据在链路建立阶段双方进行协商的结果。
然而,链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。
在这个阶段仅支持链路控制协议、验证协议和质量检测数据报文,其它的数据报文都会被丢弃。
如果在这个阶段再次收到了Config-Request报文,则又会返回到链路建立阶段。
(4)网络层协议阶段:
一旦PPP完成了前面几个阶段,每种网络层协议(IP、IPX和AppleTalk)会通过各自相应的网络控制协议进行配置,每个NCP协议可在任何时间打开和关闭。
当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层的数据包报文了。
如果在这个阶段收到了Config-Request报文,则又会返回到链路建立阶段。
(5)网络终止阶段:
PPP能在任何时候终止链路。
当载波丢失、授权失败、链路质量检测失败和管理员人为关闭链路等情况均会导致链路终止。
链路建立阶段可能通过交换LCP的链路终止报文来关闭链路,当链路关闭时,链路层会通知网络层做相应的操作,而且也会通过物理层强制关断链路。
对于NCP协议,它是没有也没有必要去关闭PPP链路的。
讲解
板书
课件演示
15分钟
二、LCP协议
1、LCP数据报文的封装方式
LCP数据报文是在链路建立阶段被交换的,它作为PPP的净载荷被封装在PPP数据帧的信息域中,此时PPP数据帧的协议域固定填充0xC021,但在链路建立阶段的整个过程中信息域的内容是在变化的,它包括很多种类型的报文,所以这些报文也要通过相应的字段来区分。
LCP数据报文的一般封装方式如下图所示:
(1)代码域的长度为一个字节,主要是用来标识LCP数据报文的类型的。
在链路建立阶段时,接收方收到LCP数据报文的代码域无法识别时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。
根据RFC的规定,到目前为止LCP共包括以下几种类型的数据报文:
(2)标识域也是一个字节,其目的是用来匹配请求和响应报文。
一般而言在进入链路建立阶段时,通信双方无论哪一端都会连续发送几个配置请求报文(Config-Request报文),而这几个请求报文的数据域可能是完全一样的,而仅仅是它们的标志域不同罢了。
通常一个配置请求报文的ID是从0x01开始逐步加1的,当对端接收到该配置请求报文后,无论使用何种报文(回应报文可能是Config-Ack、Config-Nak和Config-Reject三种报文中的一种)来回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致,当通信设备收到回应后就可以将该回应与发送时的进行比较来决定下一步的操作。
(3)长度域的内容=总字节数据(代码域+标识域+长度域+数据域)。
长度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。
(4)数据域的内容依据不同LCP数据报文的内容也是不一样的。
2、LCP数据报文的分类
在前一小节我们可以看到,一共包括12种LCP数据报文,我们依据各报文的的功能又将其具体细化为以下三类:
链路配置报文,主要用来建立和配置一条链路的。
链路终止报文,主要用来终止一条链路的。
链路维护报文,主要用来维护和调试链路的。
3、LCP的链路配置报文
链路配置报文与其它两类报文有着明显的区别,它主要是用来协商链路的配置参数选项的,因此这种报文的数据域还要携带许多配置参数选项的,而另外两类报文中部分报文的格式会稍有不同(请参见RFC1661),上图表明了数据配置选项的报文格式。
链路配置报文主要包括Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文。
当通信双方需要建立链路时,无论哪一方都需要发送Config-Request报文并携带每一端自已所希望协商的配置参数选项,下表为一些可选的配置参数选项。
这个表格内的内容并不完全,可能还有新定义的配置选项未列在其中,如有兴趣可参照相关的文档说明。
当接收方收到Config-Request报文时,会在剩下的三种类型的报文中选择一种来响应对方的请求报文,到底选择哪种报文来响应对方需依据以下两个条件:
(1)不能完全识别配置参数选项的类型域,我们知道一个Config-Request报文中会同时携带多个配置参数选项,而对于一个支持PPP协议的通信设备也不一定会支持上表中所有列出的配置选项,即使支持,也可能在实际应用中关闭掉某些选项功能。
例如:
当使用PPP协议通信的一端可能将一些无用的配置选项都关闭了,而仅支持0x01和0x03两个配置参数选项,因此当对方发送的Config-Request报文中含有0x04配置选项时,对于本端而言这个配置参数选项就无法识别,也即是不支持这个配置参数选项的协商。
(2)如果能支持完全识别配置参数选项,但接收端也可能不认可Config-Request报文中配置参数选项数据域中的内容。
例如:
当一端发送魔术字配置参数选项中的魔术字为全0,而对端认为应该为其它值,这种情况就属于不支持配置参数选项中的内容。
依据上面的两个条件,我们就可以明确在回应对方配置请求报文时,采用何种报文回应。
(1)当接收Config-Request报文的一端能识别发送过来的所有配置参数选项且认可所有配置参数选项数据域的内容时,接收端将会给对端回一个Config-Ack报文并将配置请求报文中的配置参数选项原封不动的放置在Config-Ack报文的数据域内(根据协议的规定,不可改变配置参数选项的顺序)。
当配置请求报文的发送端收到Config-Ack报后,则会从当前阶段进入到下一个阶段。
假设点对点通信的一端发送了一个Config-Request报文,报文内容如下
下面结合LCP报文格式说明报文的具体内容。
注意:
说明中省略了FCS字段。
当对端正确接收到了该报文后,应该发送一个Config-Ack报文,报文内容如下:
(2)当接收Config-Request报文的一端能识别发送端所发送过来的所有配置参数选项,但对部分配置参数选项数据域中的内容不认可时,接收端将会给对端回应一个Config-Nak报文,该报文中只携带不认可的配置参数选项,而这些配置参数选项的数据内容为本端希望的值。
然而当接收端收到Config-Nak报文后,会重新发送Config-Request报文,而这个Config-Request报文与上一次所发送的Config-Request报文区别在于那些被对端不认可的配置参数选项的内容被填写到刚刚协商完后再次发送的Config-Request报文中(Config-Nak报文发送回来的那些配置参数选项)。
假设还是刚才的Config-Request报文:
该数据报文中有下划线的配置参数选项的内容为对端不认可的。
当对端正确接收到了该报文后,发现类型域为0x02的配置参数选项可识别,但该配置参数选项数据域的内容不认可,应发送一个Config-Nak报文且该报文中将携带希望的配置参数选项内容,报文内容如下:
当发端收到该报文后会重新发送一个Config-Request报文,报文内容如下:
(3)当接收Config-Request报文的一端不能识别所有的发送端发送过来的配置参数选项时,此时接收端将会向对端回一个Config-Reject报文,该报文中的数据域只携带那些不能识别的配置参数选项(当配置参数选项的类型域不识别时)。
当对端接收到Config-Reject报文后,同样会再次发送一个Config-Request报文,这个配置请求报文与上一次发送的区别在于将不可识别的那些配置参数选项给删除了。
假设还是刚才的Config-Request报文:
下划线所表示的配置参数选项为对端不可识别的。
当对端正确接收到了该报文后,发现类型域为0x02的配置参数选项不识别,应该回应一个Config-Reject报文,报文内容如下:
对端正确地接收到报文后,会重新发送一个Config-Request报文。
这时我们能看到,类型域为02的配置选项在下一次的请求报文中被删除了。
所以我们能够看出,链路配置阶段也可能要经过几次协商后才能完成,但这与点对点两端的设备有着密切的联系。
对于PPP的两个端点而言,两者是独立完成各自的配置参数选项的协商过程的。
具体的配置参数选项待后续的章节中讲解。
讲解
板书
课件演示
45分钟
4、LCP的链路终止报文
链路终止报文分为Terminate-Request和Terminate-Reply两种报文。
LCP报文中提供了一种机制来关闭一个点对点的连接,想要关断链路的一端会持续发送Terminate-Request报文,直到收到一个Terminate-Reply为止。
接收端一旦收到了一个Terminate-Request报文后,必须回应一个Terminate-Reply报文,同时等待对端先将链路断开后,再完成本端的所有断开的操作。
LCP的链路终止报文的数据域与链路配置报文的数据域不一样,链路终止报文中无需携带各配置参数选项。
对于链路终止报文也同样需要ID一致,当接收到Terminate-Reply报文才会做链路终止操作。
5、LCP的链路维护报文
除上述两种报文类型以外,剩余的所有报文类型均归属链路维护报文。
(1)当接收端发现LCP报文的代码域是一个不合法的值时,将会向发送端回应一个Code-Reject报文,在回应报文中会将所拒绝报文的内容附加上。
假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:
有下划线的部分表示这个代码域在标准中未定义,从而无法识别。
当对端正确接收到了该报文后,发现LCP数据报文的代码域为0x0E时,应该发送一个Code-Reject报文,报文内容如下:
(2)当接收端发现所接收到的数据帧的协议域是一个不合法的值时,将会向发送端回应一个Protocol-Reject报文,发送端收到该拒绝报文后将停止发送该种协议类型的数据报文了。
Protocol-Reject报文只能在LCP的状态机处于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 PPP协议4学时 第七 PPP 协议 学时