网络协议工程学论文.docx
《网络协议工程学论文.docx》由会员分享,可在线阅读,更多相关《网络协议工程学论文.docx(12页珍藏版)》请在冰豆网上搜索。
网络协议工程学论文
华东理工大学2016—2017学年第_1_学期
《网络协议工程学》课程论文
班级2016计信班学号姓名
开课学院:
信息学院任课教师:
成绩__________
论文题目:
PPP协议
论文摘要:
Internet数据链路层协议主要有两种:
SLIP(串行线路IP协议)和PPP点对点协议,主要用于串行通信的拨号线路,是通过ISP方式连接到Internet的主要协议。
PPP是目前使用最广泛的数据链路层协议,即点对点协议。
对于相当一部分使用电话上网的用户来说来说,PPP是上网的基础。
教师评语:
教师签字:
年月日
PPP
摘要:
Internet数据链路层协议主要有两种:
SLIP(串行线路IP协议)和PPP点对点协议,主要用于串行通信的拨号线路,是通过ISP方式连接到Internet的主要协议。
PPP是目前使用最广泛的数据链路层协议,即点对点协议。
对于相当一部分使用电话上网的用户来说来说,PPP是上网的基础。
1PPP协议简介
PPP协议是数据链路层协议,因此我们应该对数据链路层有简单的了解。
数据链路层在OSI七层模型中位于最底层物理层之上,网络层之下(如图1.1)。
它一方面从物理层的SAP(服务访问点)得到物理层的服务,主要是信号的编码和译码、为进行同步用的前同步码的产生和去除、比特的传输和接收等;另一方面也通过本层的SAP向网络层提供服务,主要是数据链路的建立和释放帧的封装及拆卸、差错控制等。
数据路层主要讨论在数据链路上帧流的传输问题。
这一层协议的内容包括:
帧的格式,帧的类型,比特填充技术,数据链路的建立和终止信息流量控制,差错控制,向物理层报告一个不可恢复的错误等。
这一层协议的目的是保障在相邻的站及节点或节点及节点之间正确地、有次序、有节奏地传输数据帧。
常见的数据链路协议有两类:
一是面向字符的传输控制规程,如基本型传输控制规程(BSC);另一类是面向比特的传输控制规程,如高级数据链路控制规程(HDLC)。
主要是后一类。
用户接入Internet,在传送数据时都需要有数据链路层协议,其中最为广泛的是串行线路网际协议(SLIP)和点对点协议(PPP)。
SLIP(SerialLineInternetProtocol)意为串行线路Internet协议。
它是通过直接连接和用调制解调器连接的TCP/IP。
由于SLIP具有仅支持IP等缺点,主要用于低速(不超过19.2kbit/s)的交互性业务,它并未成为Internet的标准协议。
为了改进SLIP,人们制订了点对点PPP(Point-to-PointProtocol)协议。
PPP协议用于实现及SLIP一样的目的和作用,它在实现其作用的方式上比SLIP要优越得多。
PPP连接协议包括出错检测和纠正,以及分组验证,这是一个安全性特征,它能确保接收的数据分组确实来自于发送者。
这些特性合起来使得通过电话线可以建立更为安全的连接。
PPP是一种被认可的Internet标准协议,所以目前得到最广泛的开发支持。
PPP点到点协议是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。
这种链路提供全双工操作,并按照顺序传递数据包。
设计目的主要是用来通过拨号或专线方式
建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
其功能有以下几点:
(1)PPP具有动态分配IP地址的能力;
(2)PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;
(3)PPP具有错误检测以及纠错能力,支持数据压缩;
(4)PPP具有身份验证功能。
PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。
PPP协议包含这样几个部分:
链路控制协议LCP(LinkControlProtocol);网络控制协议NCP(NetworkControlProtocol);认证协议,最常用的包括口令验证协议PAP(PasswordAuthenticationProtocol)和挑战握手验证协议CHAP(Challenge-HandshakeAuthenticationProtocol)。
LCP负责创建,维护或终止一次物理连接。
NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。
2PPP封装
PPP协议为串行链路上传输的数据报定义了一种封装方法,它基于高层数据链路控制(HDLC)标准。
PPP数据帧的格式如表格所示:
(1)PPP的帧格式前3个字段固定为:
0x7E、0xFF和0x03。
(2)PPP帧的长度都是整数个字节。
(3)若封装在PPP帧中的数据出现字节0x7E,则用2字节序列0x7D、0x5E取代;若出现字节0x7D,则用2字节序列0x7D、0x5D取代;
(4)若信息字段中出现ASCII码的控制字符(即小于0x20的字符),则在该字符前面要加入一个0x7D字节,并且要将该字符转为及0x20进行及操作后的结果。
这样做的目的是防止这些表面上的ASCII码控制符(在这里实际上已不是控制符了)被错误地解释为控制符。
(5)协议字段由两个字节组成。
字段中第八位必须是0,最后一位必须为1。
链路若收到不符合这些规则的帧,必须被视为带有不被承认的协议。
在范围"0x0***"到"0x3***"内的协议字段,标志着特殊数据包的网络层协议。
在范围"0x8***"到"0xb***"内的协议字段,标志着数据包属于网络控制协议(NCP)。
在范围"0x4***"到"0x7***"内的协议字段,用于没有相关NCP的低通信量协议。
在范围"0xc***"到"0xf***"内的协议字段,标志着使用链路层控制协议(LCP)的包。
以下的值作为保留:
0xC021链路控制协议LCP(Linkcontrolprotocol)
0xC023密码认证协议PAP(Passwordauthenticationprotocol)
0xC025链路品质报告LinkQualityReport
0xC223挑战握手验证协议CHAP(Challengehandshakeauthenticationprotocol)
0x8021IP控制协议IPCP(Internetprotocolcontrolprotocol)
0x0021Internetprotocol(IP)
0x0001填料协议(PaddingProtocol)0x0003~0x001Freserved(transparencyinefficient)保留(透明度效率低的)0x007Dreserved(ControlEscape)保留(控制逃逸)
0x00CFreserved(PPPNLPID)保留(PPPNLPID)0x00FFreserved(compressioninefficient)保留(压缩效率低的)0x8001~0x801F未使用
0x807D未使用
0x80CF未使用
0x80FF未使用
(6)FCS字段为整个帧的循环冗余校验码,用来检测传输中可能出现的数据错误。
(计算范围为PPP帧扣去帧头尾标志-7E两个字节的范围)
(7)数据字段是零或更多的字节。
数据字段的最大长度,包含填料但不包含协议字段,术语叫做最大接收单元(MRU),默认值是1500字节。
若经过协商同意,也可以使用其它的值作为MRU。
在传输的时候,信息字段会被填充若干字节以达到MRU。
每个协议负责根据实际信息的大小确定填料的字节数。
(8)即使使用所有的帧头字段,PPP协议帧也只需要8个字节就可以形成封装。
如果在低速链路上或者带宽需要付费的情况下,PPP协议允许只使用最基本的字段,将帧头的开销压缩到2或4个字节的长度,这就是所谓的PPP帧头压缩。
3LCP及NCP
LCP链路控制协议,用于HDLC的上层,用于协商适合于数据链路的选项,如指出链路的一边同意接收的最大数据报大小即最大接收单元(MRU)。
探测链路回路和其它普通的配置错误,以及终止链路。
一个LCP包被封装在PPP数据域中,该PPP协议域表示为0xC021(链路控制协议)。
LCP包的格式如下:
(1)代码
代码域确定LCP包的种类,不同的包有不同的格式。
(2)标识符
标识符域在匹配请求和回复中有用。
当带有无效标识符域的包被接收时候,该包将不影响LCP自动机制,将被静静的丢弃。
(3)长度
长度域指出LCP包的长度,包括代码,标识符,长度和数据域。
该长度必须不超过链路的MRU。
长度域以外的字节被当作填料而忽略处理。
(4)数据
数据域是零或多个八位字节,由长度域声明。
数据域的格式由代码域决定。
NCP指NetworkControlProtocol,即网络控制协议,它管理对NetWare服务器资源的访问。
NCP向NetWare文件共享协议发送过程调用消息,处理NetWare文件和打印资源请求。
NCP用于NetWare服务器和客户机之间传输信息的主要协议。
其及LCP的具体分布结构如下图:
4PPP的两种认证协议
(一)PAP
密码验证协议(PAP)提供了一种简单的方法,可以使链路双方使用2次握手建立身份验证。
在链路建立完成后,链路一端不停地发送用户名/密码对给验证者,一直到验证被响应或者连接被终止为止。
PAP不是一个健壮的身份验证方法。
密码在电路上是明文发送的,并且对回送或者重复验证和错误攻击没有保护措施。
对端控制着尝试的频率和时间。
这个验证方法最适合用在使用有效的明文密码模拟登陆远程主机的情况。
这个方法向普通用户提供了一种相似安全级别登陆远程主机。
但要注意减少在PPP链路上传输明文密码和避免在整个网络上发送明文密码。
·配置选项格式
下面是PAP验证协议配置选项的格式:
·PAP包格式
一个PAP包是完全封装在PPP帧(协议域是0xC023)的信息域中的。
下面是PAP包格式的总结:
代码域代表PAP包的类型。
PAP代码分配如下:
0x01Authenticate-Request(认证请求)
0x02Authenticate-Ack(认证应答)
0x03Authenticate-Nak(认证无应答)
标识符用于匹配请求和响应。
长度域代表PAP包的长度,包括代码域,标识符和数据域。
超出长度域指定的字节被认为是数据链路层的填料,在接收端应该忽略掉。
数据域是零个或多个字节。
数据域的格式由代码域决定。
(二)CHAP
CHAP使用3次握手周期性的验证对端。
在链路建立初始化时这样做,也可以在链路建立后任何时间重复验证。
在链路建立完成后,验证者向对端发送一个“challenge”(挑战)信息。
对端使用“one-way-hash”(单向哈希)函数配合密钥(secret)计算出的值响应这个挑战信息。
验证者使用自己计算的hash值校验响应值。
如果两个值匹配,则验证是成功的,否则连接应该终止。
CHAP通过使用递增的标识符和可变的挑战值防止回送攻击。
使用重复挑战的目的是验证者控制着挑战的频率和时间。
这种验证方法依靠的是只有验证双方知道的秘钥。
秘钥不在链路上传播。
CHAP要求秘钥是明文形式的。
为了避免在网络的其它链路上发送秘钥,建议配置一台中心服务器统一管理秘钥,秘钥应该以可逆转的加密形式发送到服务器,在中心服务器上检查challenge和respone值,而不是在每一个网络访问服务器上检查。
CHAP算法要求秘钥的长度必须至少一个字节。
比较好的秘钥的长度应该至少是选择的哈希算法的哈希值的长度(对于MD5是16个字节)。
这样保证了秘钥足够防止穷尽搜索攻击。
选择单向哈希算法使得要想从已知的challenge和response值得出秘钥的计算是不可行的。
·认证步骤:
1.链路建立阶段结束之后,认证者向对端发送“挑战”消息。
2.对端用经过单向哈希函数计算出来的值做应答。
3.认证者根据它自己的预期哈希值的计算来检查应答,如果值匹配,认证得到承认;否则,连接应该终止。
4.经过一定的随机间隔,认证者发送一个新的挑战给对端,重复1到3。
·配置选项格式
协商CHAP认证协议的配置选项格式如下图所示:
算法域代表所使用的单向哈希算法。
CHAP算法域当前的值分配如下:
0-4unused(保留)
5MD5算法
·CHAP包格式
CHAP数据包封装在PPP数据链路层帧的数据域中,PPP的协议字段指示0xC223,CHAP包格式如下图所示:
代码字段指示CHAP包的类型,分配如下:
1挑战Challenge
2应答Response
3成功Success
4失败Failure
标识符字段辅助匹配挑战、应答和响应。
长度字段指示CHAP包的长度,包括代码、长度和数据字段。
超出长度的字节应该视为数据链路层的填充,接收方应该忽略。
数据字段是零个或多个字节,数据字段格式由代码字段确定。
5PPP链路
在建立、维持和终止PPP链路的过程里,PPP链路经过几个清楚的阶段,如框图所示:
1.链路死亡阶段
链路一定开始并结束于这个阶段。
当一个外部事件(例如载波侦听或网络管理员设定)指出物理层已经准备就绪时,PPP将进入链路建立阶段。
在这个阶段,LCP自动机制将处于初始状态,向链路建立阶段的转换将给LCP自动机制一个UP事件信号。
2.链路建立阶段
LCP用于交换配置信息包(Configurepackets),建立连接。
一旦一个配置成功信息包(Configure-Ackpacket)被发送且被接收,就完成了交换,进入了LCP开启状态。
所有的配置选项都假定使用默认值,除非被配置交换所改变。
LCP只配置不依赖于特别的网络层协议的配置选项。
在网络层协议阶段,个别的网络层协议的配置由个别的网络控制协议(NCP)来处理。
在这个阶段接收的任何非LCP包必须被静静的丢弃。
收到LCPConfigure-Request包能使链路从网络层协议阶段或者认证阶段返回到链路建立阶段。
3.认证阶段
在一些链路上,在允许网络层协议包交换之前,链路的一端可能需要对端去认证它。
这并不是必须的。
如果一次操作希望对端根据某一特定的认证协议来认证,那么它必须在链路建立阶段要求使用那个认证协议。
应该尽可能在链路建立后立即进行认证。
而且,链路质量检查可以同时发生。
在一次操作中,禁止因为交换链路质量检查包而不确定地将认证向后推迟。
在认证完成之前,禁止从认证阶段前进到网络层协议阶段。
如果认证失败,认证者应该跃迁到链路终止阶段。
在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的包是被允许的。
在该阶段里接收到的其他的包必须被静静的丢弃。
一次操作中,仅仅是因为超时或者没有应答就造成认证的失败是不应该的。
认证应该允许再次传输,只有在若干次的认证尝试失败以后,才不得已进入链路终止阶段。
在操作中,哪一方拒绝了另一方的认证,哪一方就要负责开始链路终止阶段。
4.网络层协议阶段
一旦PPP完成了前面的阶段,每一个网络层协议(例如IP,IPX,或AppleTalk)必须被适当的网络控制协议(NCP)分别设定。
每个NCP可以随时被打开和关闭。
因为一次操作最初可能需要浪费大量的时间用于链路质量检测,所以当等待对端设定NCP的时候,操作应该避免使用固定的延时。
当一个NCP处于Opened状态时,PPP将携带相应的网络层协议包。
当相应的NCP不处于Opened状态时,接收到的网络层协议包,只有支持的协议才被静静的丢弃,任何不被支持的协议包必须在Protocol-Reject里返回。
在这个阶段,链路通信量由LCP,NCP,和网络层协议包的任意可能的联合组成。
5.链路终止阶段
PPP可以在任意时间终止链路。
引起链路终止的原因很多:
载波丢失、认证失败、链路质量失败、空闲周期定时器期满、或者管理员关闭链路。
LCP用交换Terminate(终止)包的方法终止链路。
当链路正被关闭时,PPP通知网络层协议,以便他们可以采取正确的行动。
交换Terminate(终止)包之后,操作应该通知物理层断开,以便强制链路终止,尤其当认证失败时。
Terminate-Request包的发送者,在收到Terminate-Ack包后,或者在重启计数器期满后,应该断开连接;收到Terminate-Request的一方,应该等待对端去切断。
在发出Terminate-Request后,至少也要经过一个重启时间,才允许断开。
PPP前进到链路死亡阶段。
在该阶段收到的任何非LCP包,必须被静静的丢弃。
LCP关闭链路就足够了,不需要每一个NCP发送一个Terminate包。
相反,一个NCP关闭却不足以引起PPP链路的终止,即使那个NCP是当前唯一一个处于Opened状态的NCP。
6总结
PPP协议是一组允许来自不同供应商的远程访问软件交互操作的标准协议,启用PPP的连接可以通过任何工业标准PPP服务器网络拨入互联网。
PPP也允许运行的计算机通过远程访问接收来自其他供应商且及PPP标准兼容的远程访问软件的呼叫。
总之,点对点协议应用广泛,未来的前景也一定不错,将会在各个领域发挥其独特的优势。
7参考文献
[1]潘爱民.《计算机网络》.
[2]DouglasE.Comer.《计算机网络及因特网》
[3]DouglasE.Comer.《NetworkSystemsDesignUsingNPs》