当前位置:文档之家› ppp数据包格式分析

ppp数据包格式分析

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 使用Novell IPX 控制协议(IPXCP)。

PPP 主要由以下几部分组成
封装:一种封装多协议数据报的方法。

PPP 封装提供了不同网络层协议同时在同一链路传输的多路复用技术。

PPP 封装精心设计,能保持对大多数常用硬件的兼容性,克服了SLIP不足之处的一种多用途、点到点协议,它提供的WAN数据链接封装服务类似于LAN所提供的封闭服务。

所以,PPP不仅仅提供帧定界,而且提供协议标识和位级完整性检查服务。

链路控制协议:一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。

网络控制协议:协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议;
配置:使用链路控制协议的简单和自制机制。

该机制也应用于其它控制协议,例如:网络控制协议(NCP)。

为了建立点对点链路通信,PPP 链路的每一端,必须首先发送LCP 包以便设定和测试数据链路。

在链路建立,LCP 所需的可选功能被选定之后,PPP 必须发送NCP 包以便选择和设定一个或更多的网络层协议。

一旦每个被选择的网络层协议都被设定好了,来自每个网络层协议的数据报就能在链路上发送了。

链路将保持通信设定不变,直到有LCP 和NCP 数据包关闭链路,或者是发生一些外部事件的时候(如,休止状态的定时器期满或者网络管理员干涉)。

应用:假设同样是在Windows 98,并且已经创建好“拨号连接”。

那么可以通过下面的方法来设置PPP协议:首先,打开“拨号连接”属性,同样选择“服务器类型”选项卡;然后,选择默认的“PPP:Internet,Windows NT Server,Windows 98”,在高级选项中可以设置该协议其它功能选项;最后,单击“确定”按钮即可。

密码认证协议(PAP)
PAP是PPP 协议集中的一种链路控制协议,主要是通过使用2 次握手提供一种对等结点的建立认证的简单方法,这是建立在初始链路确定的基础上的。

完成链路建立阶段之后,对等结点持续重复发送ID/ 密码给验证者,直至认证得到响应或连接终止。

PAP 并不是一种强有效的认证方法,其密码以文本格式在电路上进行发送,对于窃听、重放或重复尝试和错误攻击没有任何保护。

对等结点控制尝试的时间和频度。

所以即使是更高效的认证方法(如CHAP),其实现都必须在PAP 之前提供有效的协商机制。

该认证方法适用于可以使用明文密码模仿登录远程主机的环境。

在这种情况下,该方法提供了与常规用户登录远程主机相似的安全性。

(如图2)
图2
PAP帧格式
密码认证协议的配置选项格式:
8 16 32 bit
Type Length Authentication-Protocol
Type ―3
Length ―4
Authentication-Protocol ―C023(Hex)
PAP 数据包格式
8 16 32 bit variable
Code Identifier Length Data
Code ―Code 字段为8字节,用于识别PAP 数据包类型。

PAP Code 字段分配如下:
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 的配置选项格式如下:
8 16 32 40 bit
Type Length Authentication-Protocol Algorithm
Type ―3
Length ―5
Authentication-Protocol ―对于CHAP,为C223(Hex)。

Algorithm ―Algorithm 字段为八位字节,表示使用的认证方法。

CHAP 数据包结构如下所示:
8 16 32 bit Variable
Code> Identifier Length Data . . .
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 字段包括一个独立执行的可变信息字段。

相关主题