ppp数据包格式分析.doc
《ppp数据包格式分析.doc》由会员分享,可在线阅读,更多相关《ppp数据包格式分析.doc(4页珍藏版)》请在冰点文库上搜索。
PPP数据包格式分析
PPP简介
点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。
PPP最初设计是为两个对等节点之间的IP流量传输提供一种封装协议。
在TCP-IP协议集中它是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层),替代了原来非标准的第二层协议,即SLIP。
除了IP以外PPP还可以携带其它协议,包括DECnet和Novell的Internet网包交换(IPX)。
PPP是一种数据链路层协议,遵循HDLC(高级数据链路控制协议)族的一般报文格式。
PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。
PPP的帧格式
图1
PPP的帧格式解释
FCS:
帧校验
标志flag:
字段恒为0×7f
地址(adress):
字段恒为0xff
控制(control)字段恒为0×03
协议(protocol):
字段表示PPP报文中封装的payload(data字段)的类型,如果为0×0021,则表示PPP封装的IP报文,0×002B表示IPX报文,0×0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0×8021则表示PPP的LCP报文(用来协商连接),如果为0xC021则属于PPP的NCP报文(用来协商封装的三层协议),这些属于PPP的控制报文。
LCP
链路控制协议(LCP)LCP建立点对点链路,是PPP中实际工作的部分。
LCP位于物理层的上方,负责建立、配置和测试数据链路连接。
LCP还负责协商和设置WAN数据链路上的控制选项,这些选项由NCP处理。
NCP
PPP允许多个网络协议共用一个链路,网络控制协议(NCP)负责连接PPP(第二层)和网络协议(第三层)。
对于所使用的每个网络层协议,PPP都分别使用独立的NCP来连接。
例如,IP使用IP控制协议(IPCP),IPX使用NovellIPX控制协议(IPXCP)。
PPP主要由以下几部分组成
封装:
一种封装多协议数据报的方法。
PPP封装提供了不同网络层协议同时在同一链路传输的多路复用技术。
PPP封装精心设计,能保持对大多数常用硬件的兼容性,克服了SLIP不足之处的一种多用途、点到点协议,它提供的WAN数据链接封装服务类似于LAN所提供的封闭服务。
所以,PPP不仅仅提供帧定界,而且提供协议标识和位级完整性检查服务。
链路控制协议:
一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。
网络控制协议:
协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议;
配置:
使用链路控制协议的简单和自制机制。
该机制也应用于其它控制协议,例如:
网络控制协议(NCP)。
为了建立点对点链路通信,PPP链路的每一端,必须首先发送LCP包以便设定和测试数据链路。
在链路建立,LCP所需的可选功能被选定之后,PPP必须发送NCP包以便选择和设定一个或更多的网络层协议。
一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。
链路将保持通信设定不变,直到有LCP和NCP数据包关闭链路,或者是发生一些外部事件的时候(如,休止状态的定时器期满或者网络管理员干涉)。
应用:
假设同样是在Windows98,并且已经创建好“拨号连接”。
那么可以通过下面的方法来设置PPP协议:
首先,打开“拨号连接”属性,同样选择“服务器类型”选项卡;然后,选择默认的“PPP:
Internet,WindowsNTServer,Windows98”,在高级选项中可以设置该协议其它功能选项;最后,单击“确定”按钮即可。
密码认证协议(PAP)
PAP是PPP协议集中的一种链路控制协议,主要是通过使用2次握手提供一种对等结点的建立认证的简单方法,这是建立在初始链路确定的基础上的。
完成链路建立阶段之后,对等结点持续重复发送ID/密码给验证者,直至认证得到响应或连接终止。
PAP并不是一种强有效的认证方法,其密码以文本格式在电路上进行发送,对于窃听、重放或重复尝试和错误攻击没有任何保护。
对等结点控制尝试的时间和频度。
所以即使是更高效的认证方法(如CHAP),其实现都必须在PAP之前提供有效的协商机制。
该认证方法适用于可以使用明文密码模仿登录远程主机的环境。
在这种情况下,该方法提供了与常规用户登录远程主机相似的安全性。
(如图2)
图2
PAP帧格式
密码认证协议的配置选项格式:
81632bit
TypeLengthAuthentication-Protocol
Type―3
Length―4
Authentication-Protocol―C023(Hex)
PAP数据包格式
81632bitvariable
CodeIdentifierLengthData
Code―Code字段为8字节,用于识别PAP数据包类型。
PAPCode字段分配如下:
1、Authenticate-Request;2、Authenticate-Ack;3、Authenticate-Nak。
Identifier―Identifier字段为8字节,用于匹配Request和Reply。
Length―Length字段为16字节,表示PAP数据包的长,包括Code、Identifier、Length和Data字段。
Length字段外的八位位组用作数据链路层间隙,且在接收方忽略。
Data―Data字段为0或更多字节。
Data字段格式取决于Code字段。
PPP挑战握手认证协议(CHAP)
挑战握手认证协议(CHAP)通过三次握手周期性的校验对端的身份,在初始链路建立时完成,可以在链路建立之后的任何时候重复进行。
1.链路建立阶段结束之后,认证者向对端点发送“challenge”消息。
2.对端点用经过单向哈希函数计算出来的值做应答。
3.认证者根据它自己计算的哈希值来检查应答,如果值匹配,认证得到承认;否则,连接应该终止。
4.经过一定的随机间隔,认证者发送一个新的challenge给端点,重复步骤1到3。
通过递增改变的标识符和可变的询问值,CHAP防止了来自端点的重放攻击,使用重复校验可以限制暴露于单个攻击的时间。
认证者控制验证频度和时间。
(如图3)
图3
CHAP帧格式
CHAP的配置选项格式如下:
8163240bit
TypeLengthAuthentication-ProtocolAlgorithm
Type―3
Length―5
Authentication-Protocol―对于CHAP,为C223(Hex)。
Algorithm―Algorithm字段为八位字节,表示使用的认证方法。
CHAP数据包结构如下所示:
81632bitVariable
Code>IdentifierLengthData...
Code―识别CHAP数据包类型。
CHAP代码具有以下几种:
1、Challenge;2、Response;3、Success;4、Failure。
Identifier―用于匹配Challenges、Responses和Replies信息。
Length―CHAP数据包的长度,包括Code、Identifier、Length和Data字段。
Data―0或更多八位字节。
该字段格式取决于Code字段。
对于Success和Failure,Data字段包括一个独立执行的可变信息字段