PPP协议.docx
- 文档编号:25266242
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:16
- 大小:171.58KB
PPP协议.docx
《PPP协议.docx》由会员分享,可在线阅读,更多相关《PPP协议.docx(16页珍藏版)》请在冰豆网上搜索。
PPP协议
Point-to-PointProtocl
PPP协议
2007-11
1.介绍
PPP协议为在同等单元之间传输数据包的简单链路而设计的。
链接提供了全双工的双向操作,并按照顺序传递数据包。
PPP协议意在为各种类型的主机、网桥和路由器提供通用的解决方案。
Ø封装
PPP封装为不同网络层协议同时提供基于相同链接的多路技术。
PPP封装大多数支持的硬件保持兼容而精心设计。
当默认的HDLC链接帧时,PPP封装只有8个附加的字节。
在节省宽带费用方面,封装可以短到2或4个字节。
为了支持高速操作,默认封装使用简单域。
默认的头和信息域以32位为单位,而数据包尾可以任意填充。
Ø链接控制协议
为了有效的适用于各种不同的情况,PPP协议提供了链接控制协议(LinkControlProtocol),简称LCP。
链接控制协议用于自动协商封装格式选项、处理包大小变化的限制、删除回环链接和其他通用杂项配置错误,以及终止链接。
链接控制协议提供在链接中的对端的身份认证,决定链接成功或者失败。
Ø网络控制协议
PPP链接专著于当前网络协议家族的许多恶化的问题。
例如,IP地址的分配和管理,在局域网环境它是一个简单的问题,而在电路交换的点对点链接(如拨号调制解调器服务器)中它则特别的困难。
在PPP协议中这些问题由网络控制协议(NetworkControlProtocol,简称NCP)家族处理,每个管理由各自的网络层协议管理。
网络控制协议在其它的文档中定义。
Ø配置
配置旨在与让PPP链接变得易于配置。
通过设计,标准默认处理所有通用配置。
这个实施能改进默认没有端点干涉的情况下自动配置。
自己配置是在可扩展的协商机制下进行。
链接中的各点描述对另外一端的接收能力和必备条件。
尽管可选的协商机制在链接控制协议(LCP)中描述,但相同的方式也设计用于其它控制协议,尤其是网络控制协议家族。
1.1.要求规格
在这个文档中,几个关键字用于标示规格的要求。
这些关键字是:
ØMUST:
必须。
这个关键字意味着定义一个绝对的要求。
ØMUSTNOT:
必须不。
这个关键字定义意味着绝对不的规格要求。
ØSHOULD:
应该。
这个关键字定义意味着可能在特定的条件存在无效的原因而忽略它,但全部的含义是在选择不同的方法前,必须要明白和仔细地衡量。
ØMAY:
可能。
这个关键字定义意味着这项是个二选一。
1.2.术语
这个文档经常使用以下的术语。
Ødatagram:
数据报文,这个单元传输在网络层(如IP层)。
一个数据报文(datagram)必须封装在一个或者多个链路层数据中传递。
Øframe:
数据帧,这个单元传输在链路层。
一个数据帧包括一个头和/或尾,在其中是一个或多个数据单元。
Øpacket:
数据包,封装的基本单元,它可以传递在网络层和数据链路层。
一个数据包通常映射在数据帧中,除非数据链路层分片或者多个数据包组成一个单数据帧。
Øpeer:
端点,是PPP链接中的另外一端。
Øsilentlydiscard:
丢弃,执行不经过处理的丢弃数据包。
这个执行应该(SHOULD)提供标致错误的能力,包括丢弃的数据包的内容,同时应该(SHOULD)记录这个事件的统计计数。
2.PPP封包
PPP封包用于消除多协议数据报文(datagram)的歧义。
这个封包要求组帧指示封包的开始和结束。
PPP封包的概图如下图1所示。
数据传输从左至右。
图1:
PPP封装
Ø协议域:
1字节或者2字节,它用于识别封包的数据报文中的信息域。
这个域的结构与ISO3309对于地址域的外延机制一致。
所有的协议必须(MUST)是奇数,最后一个字节的最后一位必须是‘1’。
协议域的值0x0000~0x3FFF范围标示特定数据包的网络层协议,0x8000~0xBFFF范围标示为网络控制协议,0xC000~0xFFFF范围标示链路控制协议(如LCP)。
协议域值与对应的协议名如表1所示。
表1:
协议域值与对应的协议名
序号
协议域值
协议名
1
0x0001
PaddingProtocol
2
0x0003~0x001F
reserved(transparencyinefficient)
3
0x007D
reserved(ControlEscape)
4
0x00CF
reserved(PPPNLPID)
5
0x00FF
reserved(compressioninefficient)
6
0x8001~0x801F
unused
7
0x807D
unused
8
0x80CF
unused
9
0x80FF
unused
10
0xC021
LinkControlProtocol
11
0xC023
PasswordAuthenticationProtocol
12
0xC025
LinkQualityReport
13
0xC223
ChallengeHandshakeAuthenticationProtocol
新协议的开发者必须从IANA(InternetAssignedNumbersAuthority)获得协议域的数值。
Ø信息域:
可以是0字节或者多个字节。
信息域包含了数据报文协议域指定的协议。
信息域的最大长度,包括填充,但不包括协议域,成为最大接收单元(MaximumReceiveUnit简称MRU),默认是1500字节。
通过协商,PPP可以使用其它值的MRU。
Ø填充域:
在传输时,信息域可以用任意8位的数据填充以达到MRU值。
每个协议都有区别填充字节的能力,通过真实的信息。
3.PPP链接操作
3.1.概述
为了在点对点链接上建立通信,PPP链接的每端必须发送链接控制协议(LCP)数据包来配置和测试数据链接。
链接建立后,对端可以被识别。
然后,PPP链接必须发送网络控制协议(NCP)数据包来选择和配置1个或者多个网络层协议。
一旦选择的网络层协议被配置,来之每个网络层协议的数据报文就能够在链接上发送。
链接将维持为通信设置的配置,直到LCP或者NCP包关闭链接,或者直到一些外部事件出现(如不激活定时器超时或者网络管理员干预)。
3.2.状态转移图
在PPP链接的配置、维持和终止处理过程中,PPP链接要经过好几个不同的状态,其状态定义如下图2所示。
图2:
PPP链接状态图
3.3.链路静止阶段/LinkDead(物理层没有准备好)
一个连接的开始和结束都要经历这个阶段。
当一个外部事件指示物理层已准备好并可使用时,PPP进入建立连接阶段。
此时,LCP自动机处于初始阶段。
当它向链路建立阶段转换时将给LCP自动机发送一个UP事件信号。
3.4.链接建立阶段/LinkEstablish
LCP用于交换配置信息包、建立连接。
一旦一个配置成功的信息包发送且被接收,就完成了交换,进入LCP开启状态。
所有的配置选项都假定使用默认值,除非在配置交换过程中被改变。
只有那些与特定的网络层协议无关的选项才会被LCP配置。
收到LCP配置数据包将使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。
3.5.认证阶段/Authentication
在某些连接情况下,希望在允许网络层协议交换数据前对等实行认证。
默认情况下,是不要求认证的。
认证要求必须在建立连接阶段提出,然后进入认证阶段。
如果认证失败,将进入连接终止阶段。
在此阶段只对连接协议、认证协议、连接质量测试数据包进行处理。
3.6.网络层协议阶段/Network
一旦PPP完成上述阶段,便进入网络协议阶段。
每一个网络层协议(例如IP、IPX、AppleTalk等)必须有相应的网络控制协议(NCP)单独配置,每个网络控制协议都可以随时打开或关闭。
此阶段,LCP协议自动状态机处于打开状态,接收到的任何不支持的协议数据包都会被返回一个协议拒绝包,而接收到的所有支持的数据包都将被丢弃。
此时,链路上流通的是LCP数据包、NCP数据包以及网络协议数据包。
3.7.终止阶段/Termination
PPP连接可以随时被终止。
LCP通过交换连接终止包来终止连接。
当连接被终止时,PPP会通知物理层采取相应的动作。
只有当物理层断开,连接才会真正被终止。
此阶段,接收到的所有非LCP数据包都将被丢弃。
4.自动协商机制
有限状态自动机器由事件、动作和状态转换定义。
事件包括接收外部命令,如打开、关闭、重新开始定时器溢出,和接收到来之对端的数据包。
动作包括重新开始定时器的开始、来之对端的数据包的传输。
一些类型的数据包——配置应答(Configure-Naks)包和配置拒绝(Configure-Rejects)包,或者代码拒绝(Code-Rejects)包和协议拒绝(Protocol-Rejects)包,或者回环请求(Echo-Requests)包、回环应答(Echo-Replies)包和丢弃请求(Discard-Requests)包,是不被区别的在自动协商时。
它们在后面描述,这些包服务于不同的功能。
然而,他们总也引起同样的转换。
4.1.状态转化表
4.2.状态(States)
4.3.事件(Events)
4.4.动作(Actions)
4.5.回环避免(LoopAvoidance)
4.5.计数器和定时器(CountersandTimers)
5.LCP包格式
有3类的LCP数据包:
Ø用于建立和配置链接的链接配置包:
配置请求、配置应答、配置非应答、配置拒绝。
Ø用于终止链接的连接终止包:
终止请求、终止应答。
Ø用于维持和调试链接的链接维持包:
代码拒绝、协议拒绝、回环请求、回环应答、丢弃请求。
有趣的是,在LCP包中没有版本域。
正确的LCP机能执行总应答不知名的协议和代码,用易于组织的LCP包。
因此,对于别的版本的执行提供了一个确定性的退却机制。
不论配置选项使能,所有的LCP链接配置、链接终止和代码拒绝包(代码从1到7)总是被发送,如果没有配置选项协商。
在特殊情况,配置选项使用默认值。
这确保LCP包总能被确认,即使链接结束被误认为是链接打开。
严格地说,LCP包是打包在PPP的信息域,PPP包的协议域指示协议类型为0xC021(链接控制协议)。
LCP包的格式如下图3所示。
图3:
LCP的帧格式
ØCode:
1字节,用于标示LCP包的类型。
当收到一个代码(Code)域不认识的包时,将发送代码拒绝(Code-Reject)包。
代码定义如下表2所示。
表2:
LCP包的代码域定义
代码(Code)
描述
1
Configure-Request
2
Configure-Ack
3
Configure-Nak
4
Configure-Reject
5
Terminate-Request
6
Terminate-Ack
7
Code-Reject
8
Protocol-Reject
9
Echo-Request
10
Echo-Reply
11
Discard-Request
ØIdentifier:
1字节,目的在于匹配请求和应答。
当接收到一个带无效的标示ID(Identifier)的LCP包时,接收端不做任何处理的丢弃这个包。
ØLength:
2字节,标示LCP包的长度,这个长度包括代码(Code)、标示(Identifier)、长度(Length)和数据。
这个长度不能超过链接的MRU。
长度域指定的长度以外的将被填充字节处理和接收忽略掉填充。
当接收到一个长度域无效的LCP包,接收端将不做任何处理的丢弃。
ØData:
可以为0字节,其字节数由长度域决定。
数据域数据的格式由代码域决定。
5.1.配置请求(Configure-Request)
如果希望打开链接,就得发送配置请求。
它的选项域可以填充任何希望改变默认链接内容。
配置选项将不包括在默认值中。
在接收到配置请求后,必须发送应答。
配置请求LCP包的格式如图4所示
图4:
配置请求LCP包格式
Ø代码域为0x01.
ØIdentifier:
不论选项域是否改变,不论前一个请求的有效应答是否应经收到,标示域必须改变。
对于中继,标示域可以维持不变。
ØOption:
选项域是一个可变长,包含0个或者更多个发送方希望协商的配置选项。
配置选项的各式在后面描述。
5.2.配置应答(Configure-Ack)
如果配置请求中的每个配置选项都是可认识和值都是可接受的,那么接收端必须发送配置应答。
应答配置选项不必以任何方式重新安排或修改。
在配置应答的接收方面,标示ID必须与最后一次传输的配置请求相匹配。
另外,配置应答包中的配置选项必须与最后一次传输的配置请求相匹配。
无效的应答包将被不做任何处理的丢弃。
配置应答LCP包的格式如图5所示
图5:
配置应答LCP包格式
Ø代码域为0x02。
ØIdentifier:
是引起这个应答的配置请求的标示ID的拷贝值。
ØOption:
选项域是一个可变长,包含0个或者更多个发送方承认的配置选项。
所有的配置选项总是被同时应答。
5.3.配置非应答(Configure-Nak)
如果收到的每个配置选项是可认识,但一些值不是可接受的,那么接收端必须发送配置非应答。
应答配置选项域只填充那些来至配置请求不可接受的配置选项。
所有可接收的配置选项在配置非应答中被滤出。
配置选项没有值域(布尔选项),则必须发送配置拒绝作为应答。
每个只允许单个实例的配置选项必须被修改为配置应答方可接收的值。
可以使用默认值,当与请求值不一致时。
配置非应答LCP包的格式如图6所示
图5:
配置非应答LCP包格式
Ø代码域为0x03。
ØIdentifier:
是引起这个应答的配置请求的标示ID的拷贝值。
Option:
选项域是一个可变长,包含0个或者更多个发送方承认的配置选项。
所有的配置选项总是被同时应答。
6.PPP协议帧包
帧格式:
地址字段一般为0xFF,表示广播。
控制字段一般为0x03。
关于数据的转义处理:
当数据中遇到‘0x7E’的数据时,为了保证不与帧头/尾冲突,将‘0x7E’用‘0x7D’和‘0x5E’代替。
当数据中遇到‘0x7D’的数据时,为了保证不与帧头/尾冲突,将‘0x7D’用‘0x7D’和‘0x5D’代替。
当数据中遇到ASCII码控制字时,为了保证不与帧中的控制字冲突,将用‘0x7D’和改值与0x20异或(相同为0,不同为1)。
校验和:
从地址字节到最后一字节有效载荷的CRC校验和。
利用AT指令无线模块连接上了中国移动的GPRS的WAP网关之后,接着是进行PPP连接。
GPRS拨号采用的是点对点协议(PointtoPointProtocol,PPP),该协议是是TCP/IP网络协议包的一个成员。
其主要作用是无线模块通过拨号连接上终端服务器后,由PPP取得一个临时的IP地址,使该设备成为网络上的一个节点。
只要PPP链路顺利建立成功,获得临时的IP地址,则即可在其上嵌入IP等数据包进行数据传送,完成无线模块的无线网络连接。
PPP协议(Point-to-PointProtocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。
这种链路提供全双工操作,并按照顺序传递数据包。
其目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。
PPP协议包含了以下几个部分:
.链路控制协议LCP(LinkControlProtocol):
LCP负责创建,维护或终止一次物理连接;
.网络控制协议NCP(NetworkControlProtocol):
NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题;
.认证协议,PPP协议支持两种验证协议:
口令验证协议PAP(PasswordAuthenticationProtocol)和挑战握手验证协议CHAP(Challenge-HandshakeAuthenticationProtocol)。
验证过程在PPP协议中为可选项,在连接建立后进行连接者身份验证的目的是为了防止有人在XX的情况下成功连接,从而导致泄密。
PAP是一种简单的明文验证方式,安全性较差。
而CHAP是对PAP的改进,是一种加密的验证方式,使用挑战口令以哈希算法对口令进行加密,用三次握手的方法周期性地检验对端的节点,优点在于密钥不在网络中传送,不会被窃听。
本课题中采用的是挑战握手验证协议CHAP.
PPP连接的建立主要经过三个阶段,分别是LCP连接协商、CHAP密码认证以及CP网络层协议配置。
第一阶段:
LCP连接协商
在这个阶段,将对基本的通讯方式进行选择。
链路两端设备通过LCP向对方发送LCP数据报配置请求(Configure-Request),对方同意接收后双方互发LCP数据报配置应答(Configure-Ack)。
一旦一个配置成功信息包(Configure-Ackpacket)被发送且被接收,就完成了交换,进入LCP开启状态。
第二阶段:
CHAP密码认证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。
服务器向用户发PPPCHAP安全性认证挑战,接着用户给服务器送PPPCHAP安全性认证响应,服务器再向用户发送PPPCHAP安全性认证成功。
该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。
在认证完成之前,禁止从认证阶段前进到网络层协议阶段。
如果认证失败,认证者应该跃迁到链路终止阶段。
第三阶段:
NCP网络层协议配置
认证阶段完成之后,PPP将调用在链路创建阶段(阶段一)选定的各种网络控制协议(NCP)。
选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态IP地址。
在这个阶段,先是用户向服务器发送PPPNCP网络控制数据包(网络协议配置,要求服务器提供IP地址和DNS,NBNS信息),接着服务器向用户发送配置请求PPPNCP网络控制数据包(为用户分配IP地址),用户向服务器发送配置应答PPPNCP网络控制数据包(接受所分配的IP地址),最后服务器向用户发送配置应答PPPNCP网络控制数据包(同意用户的IP地址和DNS地址)。
这样,经过三个阶段以后,一条完整的PPP链路就建立起来了,用户即可向服务器
发送IP数据包。
PPP协议为串行链路上传输的数据报定义了一种封装方法,它基于高层数据链路控
制(HDLC)标准,PPP协议帧的格式根据RFC1661协议定义,帧格式如表所示
表4.2
协议字段其值代表其后的数据字段所属的网络层协议(RFC1340定义),如:
0x0021—IPOP协议)
OxC021—LCP(链路控制协议)
0x8021—NCP(网络控制协议)
OxC023—PAP(密码认证协议PasswordAuthenticationProtocol)
OxC025—LQR(链路质量报告LinkQualityReport)
OxC223—CHAP(挑战握手认证协议ChallengeHandshakeAuthenticationProtocol)
PPP帧以标志字段Ox7E开始和结束;信息字段包含协议字段中指定协议的数据报,
长度为<<1500字节;FCS字段为两个字节,是整个帧的循环冗余校验码,用来检测传输
中可能出现的数据错误。
下面对PPP建立的三个阶段:
LCP,CHAP和NCP的帧格式分别进行分析:
(1)LCP协议帧的格式根据RFC1570协议定义,帧格式如表4.3所示[19].
表4.3LCP协议帧格式
其中:
Code—代码,表示不同的PDU:
0x01—Configure-req(4B+所有选项长度)
0x02—Configure-Ack(4B+所有选项长度)
0x03—Configure-Nak(4B+所有选项长度)
004-Configure-Reject(4B+所有选项长度)
0x05—Terminate-req(4B+额外数据)
0x06—Terminate-Ack(4B+额外数据)
007-Code-Reject(4B+Reject帧长)
008-Protocol-Reject(6B+Reject帧长)
0x09—Echo-req(8B+额外数据)
WA-Echo-Reply(8B+额外数据)
OxOB—Discard-req(8B+额外数据)
WC-Identification(8B+额外数据)
OxOD—Time-Remaining(12B+额外数据)
Identifie一标识符,接受和发送的标识符是匹配的
Length—LCP长度,包括代码、标识符、长度、选项和数据
Option选项—协商的内容,格式为(RFC1340定义),如下表所示
(2)CHAP协议帧的格式根据RFC1994协议定义,帧格式如下表所示
Code Identifier Length Data
1B 1B 2B 可变
其中:
Code—代码,表示不同的PDU
0x01challenge质询(合法性)
0x02--response响应
0x03—success成功
0x04—failure失败
Identifie一标识符,质询、响应和成功的标识符是匹配的
Length—CHAP长度,包括代码、标识符、长度和数据
(3)NCP协议帧的格式根据RFC1332协议定义,帧格式下所示:
Code Identifier Length Option Data
1B 1B 2B 可变 可变
其中:
Code—代码,表示不同的PDU
0x01—Configure-req
0x02—Configure-Ack
0x03—Configure-Nak
0x04—Configure-Reject
0x05—Terminate-req
0x06一Terminate-Ack
0x07—Code-Reject
Identifie一标识符,接受和发送的标识符是匹配的
Lengt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PPP 协议