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