PPTP 理解以及报文的分析

    首先,先来理解下什么是 PPTP。PPTP将PPP(Point-to-Point Protocol)帧封装进IP数据报中,通过IP网络如Internet或其他企业专用Intranet等发送。PPTP通过PPTP控制连接来创建、维护、终止一条隧道,并使用通用路由封装GRE(Generic Routing Encapsulation)对PPP帧进行封装。封装前,PPP帧的有效载荷即有效传输数据一般会经过加密、压缩或是两者的混合处理。PPTP协议假定在PPTP客户机和PPTP服务器之间有连通且可用的IP网络。因此如果PPTP客户机本身已经是某IP网络的组成部分,那么即可通过该IP网络与PPTP服务器取得连接.MPPE只提供连接加密,而不提供端-端加密。端-端加密属于应用层的加密技术,如果应用中要求实现端-端加密,则可在PPTP隧道建立之后,使用IPSec对两端的IP数据流进行加密处理。基于Internet的PPTP服务器即使用PPTP协议的VPN服务器,它的一个接口在Internet上,另一个接口在Intranet上。

一、    PPTP连接过程与隧道维护

        PPTP控制连接建立在PPTP客户机IP地址和PPTP服务器IP地址之间,PPTP客户机使用动态分配的TCP端口号,而PPTP服务器则使用保留TCP端口号1723。PPTP控制连接携带PPTP呼叫控制和管理信息,用于维护PPTP隧道,其中包括周期性地发送回送请求和回送应答消息,以期检测出客户机与服务器之间可能出现的连接中断。PPTP控制连接数据包包括一个IP报头,一个TCP报头和PPTP控制信息,数据包格式如下。所示的PPTP控制连接数据包还包括数据链路层报头和报尾。

                                                    

PPTP典型连接过程:

TCP连接由PPTP客户机上的一个动态分配的TCP端口到PPTP服务器上的TCP端口1723建立。

                              

二、大致分析下客户端和服务端的报文

start-control-connection-request : 由PPTP客户端发出,请求建立控制连接。PPTP隧道要求在发送任何其他PPTP消息之前,先建立一条控制连接。

start-control-connection-reply:由PPTP服务器发出,回应start-controlconnection-request消息。

outgoing-call-request:由PPTP客户机发出,请求创建PPTP隧道,outgoing-call-request消息包含GRE报头的Call ID,该ID可唯一地标识一条隧道。

outgoing-call-reply:PPTP服务器对outgoing-call-request消息的回应。

echo-request:作为保持连线机制,可由PPTP客户机或服务器任何一方发出,若echo-request了没有应答,则PPTP隧道逐渐终止。

echo-reply:对echo-request的应答。注:PPTP的echo-request和echo-reply的消息与ICMP回送请求和回送应答消息无关。

WAN-Error-Notify:由PPTP服务器向所有VPN客户机发出,指示服务器的PPP接口处于错误状态。

set-link-info:可由PPTP客户机或服务器任何一方发出,设置PPP协商选项。

call-clear-request:由PPTP客户机发出,请求终止隧道。

call-disconnect-notify:PPTP服务器回应call-clear-request,或因其他原因指示必须终止隧道。如果PPTP服务器终止隧道,则发送出call-disconnect-notify消息。

stop-control-connection-request:可由PPTP客户机或服务器任何一方发出,通知对方控制连接将被终止。

stop-control-connection-reply:回应stop-control-connection-request消息。


三、详细分析数据包的内容

1.  Start-control-connection-request

PPTP 理解以及报文的分析_第1张图片

Length :                   该 PPTP 信息的八位总长,包括整个 PPTP 头。

PPTP Message Type : 信息类型。可能值有:1、控制信息;2、管理信息。

Magic Cookie :         Magic Cookie 以连续的 0x1A2B3C4D 进行发送,其基本目的是确保接收端与 TCP数据流间的正确同步运行。

Control Message Type :值为1

Reserved 0 & 1 :       必须设置为0。

Protocol Version :    PPTP版本号。

Framing Capabilities: 指出帧类型,该信息发送方可以提供:

                                 1、异步帧支持(Asynchronous Framing Supported);

                                 2、同步帧支持(Synchronous Framing Supported)。

Bearer Capabilities : 指出承载性能,该信息发送方可以提供:

                                 1、模拟访问支持(Analog Access Supported);

                                 2、数字访问支持(Digital access supported)。

Maximum Channels : 该 PPTP服务器 可以支持的个人 PPP 会话总数。

Firmware Revision :若由 PPTP服务器 出发,则包括发出 PPTP服务器时的固件修订本编号;

                                     若由 PPTP客户端出发,则包括 PPTP客户端 PPTP 驱动版本。

Host Name :              包括发行的 PPTP服务器 或 PPTP客户端的 DNS 名称。

Vendor Name :          包括特定供应商字串,指当请求是由 PPTP客户端 提出时,使用的 PPTP服务器 类型或PPTP客户端软件类型。


2. Start-Control-Connection-Reply

PPTP 理解以及报文的分析_第2张图片

大部分字段的含义与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为2;

Result Code表示建立channal是否成功的结果码,值为1表示成功,值为2表示通用错误,暗示着有问题。值为3表示channal已经存在,值为4表示请求者未授权,值为5表示请求的PPTP协议版本不支持。

Error Code:表示错误码,一般值为0,除非Result Code值为2,不同的错误码表示不同的含义。


3.  Outgoing-call-request

PPTP 理解以及报文的分析_第3张图片

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为7。

Call ID:由PPTP客户端指定的唯一的会话ID。

Call Serial Number:是由PPTP客户端指定的唯一标识符,用于在记录会话信息中标识特定会话,与Call ID不一样的是,Call Serial Number PPTP客户端与PPTP服务器来说,唯一绑定到一个给定的会话,且是相同的。

Minimum BPS :对于此次会话可接受的最低传输速度,单位为位/秒;

Maximum BPS:对于此次会话可接受的最大传输速度,单位为位/秒;

Bearer Type: 指出承载访问支持,该信息发送方可以提供:

             1、模拟访问支持(Analog Access Supported);

             2、数字访问支持(Digital access supported)。

             3、可支持的任何类型。

Framing Type: 指出帧类型,该信息发送方可以提供:

             1、异步帧支持(Asynchronous Framing Supported);

             2、同步帧支持(Synchronous Framing Supported)。

             3、异步或同步帧支持。

Packet Recv. Window Size:PPTP客户端为此次会话提供最大接收缓冲大小;

Packet Processing Delay:表示PPTP客户端对数据包处理的延时度量,对于PPTP客户端来说,一般设置比较小越好。

Phone number length: 拔号号码长度;

Phone number:建立会话向外拔号的号码,一般对于ISDN或模拟方式拔号来说,此字段域为一个ASCII串。

Sub address:额外信息域,一般长度少于64个字节。


4. Outgoing-Call-Reply

PPTP 理解以及报文的分析_第4张图片

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为8。

Call ID:由PPTP服务器指定的唯一的会话ID。主要用于在PPTP服务器与PPTP客户端建立的会话上,复用与解封装隧道包使用的。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Result Code:表示响应Outgoing-call-request握手是否成功,

            值为1表示成功;

            值为2表示通用错误暗示着有问题

            值为3表示无载波

            值为4表示服务器忙,无法及时响应

            值为5表示无拔号音

            值为6表示呼号超时

            值为7表示未授权。

Error Code:表示错误码,一般值为0,除非Result Code值为2,不同的错误码表示不同的含义。

Cause Code:表示进一步错误信息描述;

Connect Speed:连接使用的实际速率;

Rev window size:PPTP服务器为此次会话提供最大接收缓冲大小;

Packet Processing Delay:表示PPTP服务器对数据包处理的延时度量。

Physical Channel ID:由PPTP服务器指定的物理信道ID。


5. Set-Link-Info

PPTP 理解以及报文的分析_第5张图片

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。

不同的字段含义如下:

Control Message Type :值为15。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Reserved0/Reserve1:保留位,必须为0;

Send ACCM:     发送的ACCM值默认值为0XFFFFFFFF;

Receive ACCM:接收的ACCM值,默认值为0XFFFFFFFF;


6.  Echo request

PPTP 理解以及报文的分析_第6张图片


Length、PPTP Message、Magic cookie与Start-control-connection-request一致。

不同的字段含义如下:

Control Message Type :值为5。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Reserved0:保留位,必须为0;

Identifier:发送者用来标识Echo request与Echo reply对应标识。


7.  Echo-reply

PPTP 理解以及报文的分析_第7张图片

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。

不同的字段含义如下:

Control Message Type :值为6。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Reserved0/1:保留位,必须为0;

Identifier:标识值,为接收者从Echo request里标识字段复制填入。

Result Code:结果码,为1表示Echo-reply是有效的,为2表示出现一般性错误。

Error code:同上面所描述的。


8. Call-Clear-Request

PPTP 理解以及报文的分析_第8张图片

LengthPPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为12。

Call ID:由PPTP客户端指定的会话ID。

Reserved0/1:保留位,必须为0;


9、Call-Disconnect-Notify

PPTP 理解以及报文的分析_第9张图片

LengthPPTP Message、Magic cookie与Start-control-connection-request一致。

不同的字段含义如下:

Control Message Type :值为13

Call ID:由PPTP客户端指定的会话ID

Reserved0/1:保留位,必须为0;

Result Code:结果码,

                    为1表示媒介断开,

                    为2表示出现一般性错误,

                    为3表示为管理员关闭连接,

                    为4表示收到Call-Clear-Request;

Error code: 同上面所描述的。

Cause Code:此域表示额外说明断开原因。


10.  Stop-Control-Connection-Request

PPTP 理解以及报文的分析_第10张图片

LengthPPTP Message、Magic cookie与Start-control-connection-request一致。

不同的字段含义如下:

Control Message Type :值为3。

Resverve0/1/2:保留位,必须为0;

Reason:表示会话连接关闭的原因,

              为1表示响应会话清除请求

              为2表示不支持对端PPTP版本

              为3表示本地系统关闭


12.  Stop-Control-Connection-Reply

PPTP 理解以及报文的分析_第11张图片

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。

不同的字段含义如下:

Control Message Type :值为4。

Resverve0/1/2:保留位,必须为0;

Result Code:表示关闭连接结果码,为1表示正常关闭成功,为2表示发生一般性错误。

Error Code : 表示当Result Code为2时,对应具体的一般性错误,Result Code为1时,必须为0。


四、总结

1. PPTP原理

首先,PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号1723建立控制连接(PPTP控制连接携带PPTP呼叫控制管理信息,用于维护PPTP隧道)。

其次,客户端与服务器通过控制连接来创建、维护、终止一条隧道。

然后,PPP帧的有效载荷经过加密、压缩或是两者的混合处理。

接着,使用通用路由封装GRE对PPP帧进行封装。

再者,将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET发送给PPTP服务器。

最后,服务器接收到PPTP数据包后进行常规处理。

 

2. PPTP控制连接数的数据包格式

包括一个IP报头,一个TCP报头和PPTP控制信息,还包括数据链路层报头和报尾。

                                               














你可能感兴趣的:(网络防火墙)