首先简单介绍一下PPP协议的三组件:PPP协议的封装方式、LCP协议的协商过程和NCP协议的协商过程,然后再结合具体的LCP和NCP数据报的封装格式和两个阶段实际数据报文的交换过程,进一步理解PPP的LCP和NCP协商阶段的具体内容。下图为PPP数据帧的封装格式:
以下为对PPP数据帧封装格式的一点说明:
每一个PPP数据帧均是以一个标志字节起始和结束的,该字节为0x7E。紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.121地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络一样,因为点对点的链路就可以唯一标示对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。
同地址域一样,PPP数据帧的控制域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。
就PPP协议本身而言,我们最关心的内容应该是它的协议域和信息域。协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为"1",高字节的最低位为"0"。如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的,那么接收端会向发送端发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。协议域的具体取值如下表所示:
协议域类型 说明 ISO标准 0x0*** - 0x3*** 信息域中承载的是网络层的数据报文 0x4*** - 0x7*** 信息域中承载的是与NCP无关的低整流量 0x8*** - 0xb*** 信息域中承载的是网络控制协议(NCP)的数据报文 0xc*** - 0xf*** 信息域中承载的是链路控制协议(LCP)的数据报文 最典型的几种取值 0xc021 信息域中承载的是链路控制协议(LCP)的数据报文 0xc023 信息域中承载的是PAP协议的认证报文 0xc223 信息域中承载的是CHAP协议的认证报文 0x8021 信息域中承载的是网络控制协议(NCP)的数据报文 0x0021 信息域中承载的是IP数据报文
信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容(在图2-1中并未表示,因为它属于信息域的一部分),1500字节大小等于PPP协议中配置参数选项MRU(Maximum Receive Unit)的缺省值,在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。信息域如果不足1500字节时可被填充,但不是必须的,如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。我们通常在通信设备的配置过程中,遇到最多的也是MTU(Maximum Transmit Unit)。对于一个设备而言,它网络的层次均使用MTU和MRU两个值,一般情况下设备的MRU会比MTU稍大几个字节,但这需根据各厂商的设备而定。
CRC校验域主要是对PPP数据帧传输的正确性进行检测的,当然在数据帧中引入了一些传输的保证机制是好的,但可以反过来说,同样我们会引入更多的开销,这样可能会增加应用层交互的延迟,对于这个字节的使用我们可以参考一下X.25协议和FR协议就知道了。
数据通信设备(在本文中指路由器)的两端如果希望通过PPP协议建立点对点的通信,无论哪一端的设备都需发送LCP数据报文来配置链路(测试链路)。一旦LCP的配置参数选项协商完后,通信的双方就会根据LCP配置请求报文中所协商的认证配置参数选项来决定链路两端设备所采用的认证方式。协议缺省情况下双方是不进行认证的,而直接进入到NCP配置参数选项的协商,直至所经历的几个配置过程全部完成后,点对点的双方就可以开始通过已建立好的链路进行网络层数据报文的传送了,整个链路就处于可用状态。只有当任何一端收到LCP或NCP的链路关闭报文时(一般而言协议是不要求NCP有关闭链路的能力的,因此通过情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的);物理层无论检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,从而终止PPP会话。以下为PPP协议整个链路过程需经历阶段的状态转移图:
在点对点链路的配置、维护和终止过程中,PPP需经历以下几个阶段:
链路不可用阶段,有时也称为物理层不可用阶段,PPP链路都需从这个阶段开始和结束。当通信双方的两端检测到物理线路激活(通常时检测到链路上有载波信号)时,就会从当前这个阶段跃迁至下一个阶段(即链路建立阶段)。先简单提一下链路建立阶段,在这个阶段主要是通过LCP协议进行链路参数的配置,LCP在此阶段的状态机也会根据不同的事件发生变化。当处于在链路不可用阶段时,LCP的状态机是处于initial(初始化状态)或starting(准备启动状态),一旦检测到物理线路可用,则LCP的状态机就要发生改变。当然链路被断开后也同样会返回到这个阶段,往往在实际过程中这个阶段所停留的时间是很短的,仅仅是检测到对方设备的存在。
链路建立阶段,也是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协议章节中会详细介绍可能遇到的情况,但最好结合一些troubleshooting案例能更好的帮助理解。
验证阶段,多数情况下的链路两端设备是需要经过认证后才进入到网络层协议阶段,缺省情况下链路两端的设备是不进行认证的。在该阶段支持PAP和CHAP两种认证方式,验证方式的选择是依据在链路建立阶段双方进行协商的结果。然而,链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。在这个阶段仅支持链路控制协议、验证协议和质量检测数据报文,其它的数据报文都会被丢弃。如果在这个阶段再次收到了Config-Request报文,则又会返回到链路建立阶段。
网络层协议阶段,一旦PPP完成了前面几个阶段,每种网络层协议(IP、IPX和AppleTalk)会通过各自相应的网络控制协议进行配置,每个NCP协议可在任何时间打开和关闭。当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层的数据包报文了。如果在个阶段收到了Config-Request报文,则又会返回到链路建立阶段。
网络终止阶段,PPP能在任何时候终止链路。当载波丢失、授权失败、链路质量检测失败和管理员人为关闭链路等情况均会导致链路终止。链路建立阶段可能通过交换LCP的链路终止报文来关闭链路,当链路关闭时,链路层会通知网络层做相应的操作,而且也会通过物理层强制关断链路。对于NCP协议,它是没有也没有必要去关闭PPP链路的。
|
PPPOE全称Point to Point Protocol over Ethernet,意思是基于以太网的点对点协议。这个协议基于两个广泛接受的标准即:局域网Ethernet和PPP点对点拨号协议。实质是以太网和拨号网络之间的一个中继协议,继承了以太网的快速和PPP拨号的简单,用户验证,IP分配等优势。对于宽带计时上网用户比其他协议更具有优势。
PPPoA(PPP over ATM)协议采用PPPoA的接入技术,由PC终端直接发起PPP呼叫,用户侧ATM25网卡在收到上层的PPP包后,根据RFC2364封装标准对PPP包进行AAL5层封装处理形成ATM信元流。ATM信元透过ADSL Modem传送到网络侧的宽带接入服务器上,完成授权、认证、分配IP地址和计费等一系列PPP接入过程。
PPPoE是在以太网络中转播PPP帧信息的技术。通常PPP(point-to-point protocol)是用来通过电话线路及ISDN拨号接驳到ISP时使用。该协议具有用户认证及通知IP地址的功能。在ADSL中,PPPoE用来接驳ADSL Modem与家庭中的个人电脑或者路由器。
ADSL采用的是PPPoE.
PPPoA是将PPP直接封装适配到ATM应用层,而PPPoE是将PPP包经以太协议封装后再适配到ATM。一般PPPoA用于路由方式,认证过程一般由Modem完成,而PPPoE一般工作于桥接方式,由用户PC发出PPPoE请求。
阅读(2514) | 评论(0) | 转发(0) |