PPP协议和PPP0E协议.ppt
BA000003 PPP协议和PPP0E协议,了解SLIP协议的基本原理 掌握PPP协议的基本原理 掌握LCP协议和NCP协议数据报文的交换过程 掌握PPPOE协议的基本原理,学习目标,PPPOE协议,PPP协议,SLIP协议,内容提要,IP数据报文,+,END字符,=,SLIP数据帧,定义:SLIP是在串行线路上对IP数据报进行封装的简单协议。,SLIP协议的定义,SLIP数据帧格式:,IP,IPX,AppleTalk,路由器A,路由器B,SLIP链路,IP,IPX,AppleTalk,SLIP协议的缺点(一),Noise,Hello,01010101000100011100,Heolo,1,2,3,有误,重传,4,路由器A,路由器B,SLIP协议的缺点(二),路由器A,路由器B,SLIP链路,路由器B的互连IP是多少?,打个电话问问,我的地址是,那你的地址是多少?,还要通过这么原始的方式来获知对方的IP地址,SLIP协议的缺点(三),小节,SLIP是一种仅能在点对点的链路上封装IP数据报的协议,SLIP的帧格式为,IP数据报,c0,SLIP不支持IP地址的协商,PPPOE协议,PPP协议,SLIP协议,内容提要,PPP协议的定义:PPP协议提供了一种标准的方式在点对点的链路上传输多种网络层协议的数据报。,PPP协议与协议栈的对应关系,PPP协议,PPP协议简介,支持点到点的连接,不同于X.25、frame relay等数据链路层协议,具有CHAP、PAP验证协议,更好的保证了网络的安全性。PPP的物理层既支持数据为8位和无奇偶校验的异步模式,还支持面向比特位的同步链接,如frame relay必须为同步电路。PPP有针对不同网络层的网络控制协议,如大家熟知的IPCP,IPXCP。同样类似于SLIP协议,它也允许双方协商是否对报文首部进行压缩。,PPP协议的特点,PPP协议的三组件,多协议数据报的封装方式 PPP协议的链路控制协议LCP PPP协议的网络控制协议NCP,校验,标志,标志,地址,信息域,控制,协议域,1B,1B,2B,缺省1500B,7E,FF,03,1B,2B,1B,7E,PPP的数据帧格式,校验,IP数据报文,0 x0021,校验,LCP数据报文,0 xC021,校验,NCP数据报文,0 x8021,协议域长度为2个字节,主要用来指明信息域中使用的协议类型。该域的结构与ISO3309地址域扩展机制一致。,PPP数据帧所承载的几种常见的报文,LCP报文,可选,由配置决定,PPP状态转移图,信息域,协议域,标识域,代码域,长度域,数据,长度域,类型域,数据,PPP封装格式,LCP数据报文的封装格式,LCP数据报文中配置参数选项的封装格式,0 xC021,LCP协议数据报文的格式,链路配置报文用来建立和配置一条链路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文 链路终止报文用来终止一条链路,主要包括Terminate-Request和Terminate-Reply报文 链路维护报文用来管理和调试链路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文,LCP协议数据报文的分类,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0A,0 x0B,0 x0C,Configure-Request,Configure-Ack,Configure-Nak,Configure-Reject,Terminate-Request,Terminate-Reply,Code-Reject,Protocol-Reject,Echo-Request,Echo-Reply,Discard-Request,Reserved,LCP协议数据报文的种类,链路配置报文举例,7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E,7E FF 03 C0 21 02 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E,假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:,从报文中可以看出这个配置请求报文包括5个配置参数选项。,当对端正确接收到了该报文后,应该回应一个Config-Ack报文,报文内容如下:,该报文中唯一修改的内容就是代码域(02表示是Config-Ack报文),标识域与原报文中的一样。,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,Maximum-Recive-Unit,Async-Control-Character-Map,Authentication-Protocol,Quality-Protocol,Magic-Number,Address-And-Control-Field-Compression,Reserved,Protocol-Field-Compression,配置参数选项的种类,链路配置报文举例,7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E,7E FF 03 C0 21 02 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E,假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:,从报文中可以看出这个配置请求报文包括5个配置参数选项。,当对端正确接收到了该报文后,应该回应一个Config-Ack报文,报文内容如下:,该报文中唯一修改的内容就是代码域(02表示是Config-Ack报文),标识域与原报文中的一样。,链路配置报文(一),链路配置报文举例,假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E该数据报文中有下划线的配置参数选项的内容为对端不认可的。当对端正确接收到了该报文后,发现类型域为0 x02的配置参数选项可识别,但该配置参数选项数据域的内容不认可,应发送一个Config-Nak报文且该报文中将携带希望的配置参数选项内容,报文内容如下:7E FF 03 C0 21 03 01 00 0A 02 06 00 0E 00 00 7E该报文中返回的值已经被更改,且当发端收到该报文后会重新发送一个Config-Request报文,报文内容如下:7E FF 03 C0 21 01 04 00 17 02 06 00 0E 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E仔细观察是不是新的配置请求报文与老的配置请求的报文ID不一样。,二次交互(1),1,2,Config-Request,Config-Nak,路由器A,路由器B,3,4,Config-Request,Config-Ack,链路配置报文(二),链路配置报文举例,7E FF 03 C0 21 01 01 00 17 02 06 00 0A 00 00 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E,假设点对点通信的一端发送了一个Config-Request报文,报文内容如下:,下划线所表示的配置参数选项为对端不可识别的。当对端正确接收到了该报文后,发现类型域为0 x02的配置参数选项不识 别,应该回应一个Config-Reject报文,报文内容如下:7E FF 03 C0 21 04 01 00 0A 02 06 00 0A 00 00 7E该报文如果被原发送端接收后,又会重新发送一个Config-Request报文,报文内容如下:7E FF 03 C0 21 01 04 00 11 05 06 00 0B 42 CB 07 02 08 02 0D 03 06 7E这时我们能看到,类型域为02的配置选项在下一次的请求报文中被删除了。,二次交互(2),1,2,Config-Request,Config-Reject,路由器A,路由器B,3,4,Config-Request,Config-Ack,链路配置报文(三),多次交互,1,2,Config-Request,Config-Reject,路由器A,路由器B,3,4,Config-Request,Config-Nak,5,6,Config-Request,Config-Ack,链路配置报文(四),链路终止报文,Terminate-Request,Terminate-Reply,PPP封装,Config-Request ID=1 M=1,Config-Request ID=1 M=1,PPP封装,Config-Nak ID=4 M=2,Config-Nak ID=4 M=2,PPP封装,Config-Request ID=2 M=2,Config-Request ID=2 M=2,魔术字(Magic Number),用户名/密码,接收/拒绝,PPP封装,路由器A,路由器B,被验证方,验证方,问题1:如图所示,路由器B作为验证方,而路由器A则作为被验证方,那么如何分别配置两个路由器?,PAP认证(两次握手),回应,接收/拒绝,PPP封装,路由器A,路由器B,挑战,被验证方,验证方,问题2:如图所示,路由器B作为验证方,而路由器A则作为被验证方,那么如何分别配置两个路由器?,CHAP认证(三次握手),IPCP,IPXCP,AppleTalk,NCP协议的分类,点对点通信设备均设置了IP地址,我知道了,我的IP地址是,路由器B,路由器A,我知道了,我的IP地址是,IPCP静态地址协商,点对点通信的一方设置了IP地址,而另一方则通过从对端获取IP地址,这个地址不合法,用这个地址吧,我的IP地址是,路由器B,路由器A,我知道了,我的IP地址是,我的IP地址是,我知道了,IPCP动态地址协商,小节(一),PPP协议的三组件包括PPP协议的封装方式、LCP协议和NCP协议 PPP协议是数据链路层协议,它的数据帧封装格式非常类似于HDLC PPP协议可通过协议域来区分数据域中净载荷的数据类型 PPP协议通过LCP协议完成数据链路的配置和测试 PPP协议通过NCP协议完成点对点通信设备之间网络层通信所需参数的配置,小节(二),魔术字可以在链路配置阶段被协商,数据报文可借助魔术字来检PPP链路是否存在环路 PAP(密码认证协议)认证是二次握手,它是直接在网络上传送明文的用户名和密码,因此这种协议安全性不高 CHAP(挑战性握手认证协议)认证是三次握手,它只在网络上传送验证方和被验证方的主机名,而并不传送密码,因此相比之处CHAP比PAP更安全 PPP协议缺省的MRU是1500,而对于通信的双方可根据实际需要对MRU进行协商,小节(三),PPP协议的状态转移图包括链路不可用阶段、链路建立阶段、认证阶段、网络层协议阶段和链路终止阶段 LCP协议依据报文的功能可分为链路配置报文、链路终止报文和链路维护报文 LCP协议的链路配置报文主要是用来协商一些可选的配置参数选项 LCP协议的链路终止报文主要是用来终止一条PPP链路 LCP协议的链路维护报文主要是用来测试和调试PPP链路 NCP协议主要负责网络层配置参数选项的协商,它包括静态协商和动态协商,PPPOE协议,PPP协议,SLIP协议,内容提要,PPP协议要求进行通信的双方之间是点到点的关系,不适于广播型的以太网和另外一些多点访问型的网络,于是就产生了PPPOE协议(Point-to-Point Protocol Over Ethernet)。它不仅为使用桥接以太网接入的用户提供了一种宽带接入手段,同时还能提供方便的接入控制和计费。每个接入用户均建立一个独一无二PPP的会话,因此会话建立之前必需知道远端访问集中设备的MAC地址,PPPOE协议可通过发现协议来获取到。,PPPOE协议概述,PPPOE协议分为发现阶段和PPP会话阶段。当主机希望开始一个PPPOE会话时,它首先要执行一个发现过程来识别对方的MAC地址,然后建立一个唯一的PPPOE会话ID。PPPOE使用一个发现协议来解决这个问题,它是基于客户/服务器模型的。由于以太网的广播特性,在这个过程中主机(客户)能发现所有的访问集中器(服务器),并选择其中一个,根据所获信息在两者之间建立点对点的连接。当一个PPP会话被建立起来之后,就完成了PPPOE的整个发现阶段。,发现阶段,PPPOE的会话阶段开始后,主机和访问集中器之间就依据PPP协议传送PPP数据,进行PPP的各项协商和数据传输。在这一阶段传输的数据包中必须包含在发现阶段确定的会话标识并保持不变。正常情况下,会话阶段的结束是由PPP协议控制完成的,但在PPPOE中定义了一个PADT 包用来结束会话,主机或者访问集中器可以在PPP会话开始后的任何时候通过发送这个数据包来结束会话。,会话阶段,以太网的帧格式,目的地址,源地址,(6字节),(6字节),帧类型域,=1500字节,净载荷,帧校验,(4字节),以太网帧格式,(2字节),以太网广播地址,PPPOE发现阶段,PPPOE会话阶段,以太网单播地址,主机以太网地址,主机以太网地址,0 x8863,0 x8864,数据区,数据区,数据帧校验,数据帧校验,PPPOE发现阶段以太网帧格式,PPPOE会话阶段以太网帧格式,PPPOE的帧格式(一),版本,类型,代码,会话ID,长度,净载荷,4,4,8,16,16,发现阶段承载一些标记,会话阶段承载PPP数据报文,PPPOE的帧格式(二),TAG,标记类型,16,标记长度,16,标记值,0 x0000,0 x0102,0 x0104,0 x0110,0 x0101,0 x0103,0 x0105,0 x0201,End-of-list,AC-Name,AC-Cookie,Relay-Session-ID,Service-Name,Service-Name-Error,Host-Uniq,Verdor-Specific,0 x0202,0 x0203,AC-System-Error,Generic-Error,PPPOE的帧格式(三),PADI(PPPOE发现初始报文)PADO(PPPOE发现提供报文)PADR(PPPOE发现请求报文)PADS(PPPOE发现会话确认报文)PADT(PPPOE发现终止报文),09,a7,07,65,19,PPPOE发现阶段数据报文分类,以太网,1,2,3,目标地址为广播地址0 xffffffff,源地址为主机的以太网地址。ETHER_TYPE值为0 x8863,码值为0 x09,SESSION-ID为0 x0000。TAG_TYPE:有且仅有一个Service-Name表明主机请求的服务。任何数量的其他TAG_TYPE。PADI报文长度不能超过1484个字节,为Relay-Session-Id TAG留空间。,PADI报文,以太网,1,2,3,目标地址为主机以太网地址。源地址为接入集中器的以太网地址。ETHER_TYPE值为0 x8863,码值为0 x07,SESSION-ID为0 x0000,TAG_TYPE:必须有一个含有接入集中器名字的AC-Name TAG,必须有一个与收到的PADI相同的Service-Name TAG和任意数量的其他Service-Name TAG表明集中器可以提供的服务。,PADO报文,以太网,1,2,3,目标地址为接入集中器的以太网地址,源地址为主机的以太网地址。ETHER_TYPE值为0 x8863,码值为0 x19,SESSION-ID为0 x0000,TAG_TYPE:必须有一个类型为Service-Name的TAG向集中器指明请求的服务,可以有任意数量的其他TAG。,PADR报文,以太网,1,2,3,目标地址为主机的 以太网地址,源地址为接入集中器的以太网地址。ETHER_TYPE值为0 x8863,码值为0 x65,SESSION-ID为集中器指定的唯一的标识一个PPPOE会话的值,TAG_ TYPE:包含一个类型为Service-Name的TAG,表明集中器提供给这个会话的服务,可以包含任意数量的其他TAG。,PADS报文,这个数据包可以在会话建立起来之后的任何时间由主机或集中器发出。目的地址为单一的以太网地址。ETHER_TYPE值为0 x8863,码值为0 xa7,SESSION-ID为要终止的会话的SESSION-ID。不要求有TAG。,PADT报文,PPP净载荷,目的地址,目的地址,源地址,源地址,帧类型=0 x8864,版本=0 x1,类型=0 x1,代码=0 x00,会话ID=0 x1234,长度=0 x?,PPP协议ID=0 xC021,PPPOE协议数据包中承载PPP的LCP报文,一旦PPPOE会话建立起来之后,主机与接入器之间就开始依据PPP协议传送PPP数据,所有的以太网帧都是单一地址的。此时,ETHER_TYPE值为0 x8864,码值为0 x00,SESSION-ID在整个会话过程中保持不变。PPPOE有效负载域里包含一个PPP数据包。,会话阶段的PPPOE数据报文格式,NetXRay抓包结果分析1,NetXRay抓包结果分析2,NetXRay抓包结果分析3,NetXRay抓包结果分析4,NetXRay抓包结果分析5,NetXRay抓包结果分析6,NetXRay抓包结果分析7,小节,PPPOE协议包括PPPOE的发现阶段和PPPOE的会话阶段 PPPOE的数据报文是被承载在以太网的数据域中进行传送的 PPPOE的发现阶段会遇到PADI、PADO、PADR和PADS这四种报文 PPPOE中的PADT报文是用来终止一条会话的 PPPOE在发现阶段时,以太网协议域的值为0 x8863 PPPOE在会话阶段时,以太网协议域的值为0 x8864,