PPTP 理解以及报文的分析

发布时间:2017-1-21 2:04:03 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"PPTP 理解以及报文的分析",主要涉及到PPTP 理解以及报文的分析方面的内容,对于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                             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                              大部分字段的含义与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                                       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、异步或同步帧支持。 Rev window size:PPTP客户端为此次会话提供最大接收缓冲大小; PPTP服务器ket processing delay:表示PPTP客户端对数据包处理的延时度量,对于PPTP客户端来说,一般设置比较小越好。 Phone number length:拔号号码长度; Phone number:建立会话向外拔号的号码,一般对于ISDN或模拟方式拔号来说,此字段域为一个ASCII串。一般长度少于64个字节。 Sub address:额外信息域,一般长度少于64个字节。   4. Outgoing-Call-Reply                       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服务器为此次会话提供最大接收缓冲大小; PPTP服务器ket processing delay:表示PPTP服务器对数据包处理的延时度量。 Physical Channel ID:由PPTP服务器指定的物理信道ID。   5. Set-Link-Info                        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                        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                            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                       Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下: Control Message Type :值为12。 Call ID:由PPTP客户端指定的会话ID。 Reserved0/1:保留位,必须为0;   9. Call-Disconnect-Notify                        Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下: Control Message Type :值为13。 Call ID:由PPTP客户端指定的会话ID。 Reserved0/1:保留位,必须为0;   10. Call-Disconnect-Notify Result Code:结果码,为1表示媒介断开,为2表示出现一般性错误,为3表示为管理员关闭连接,为4表示收到Call-Clear-Request; Error code:同上面所描述的。 Cause Code:此域表示额外说明断开原因。   11.  Stop-Control-Connection-Request                       Length、PPTP 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 Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下: Control Message Type :值为4。 Resverve0/1/2:保留位,必须为0; Result Code:表示关闭连接结果码,为1表示正常关闭成功,为2表示发生一般性错误。 Error Code::表示当结果为2时,对应具体的一般性错误,Result Code为1时,必须为0。   四、总结 1. PPTP原理 首先,PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号123建立控制连接(PPTP控制连接携带PPTP呼叫控制盒管理信息,用于维护PPTP隧道)。 其次,客户端与服务器通过控制连接来创建、维护、终止一条隧道。 然后,PPP帧的有效载荷经过加密、压缩或是两者的混合处理。 接着,使用通用路由封装GRE对PPP帧进行封装。 再者,将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET灯发送给PPTP服务器。 最后,服务器接收到PPTP数据包后进行常规处理。   2. PPTP控制连接数的数据包格式 包括一个IP报头,一个TCP报头和PPTP控制信息,还包括数据链路层报头和报尾。     ps:参考 http://wenku.baidu.com/view/32af1ad8d15abe23482f4d35.html  

上一篇:POJ 1364 差分约束
下一篇:Timer的使用

相关文章

相关评论