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协议的v*n服务器,它的一个接口在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服务器向所有v*n客户机发出,指示服务器的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消息。
四、总结
- PPTP原理
首先,PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号123建立控制连接(PPTP控制连接携带PPTP呼叫控制盒管理信息,用于维护PPTP隧道)。
其次,客户端与服务器通过控制连接来创建、维护、终止一条隧道。
然后,PPP帧的有效载荷经过加密、压缩或是两者的混合处理。
接着,使用通用路由封装GRE对PPP帧进行封装。
再者,将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET灯发送给PPTP服务器。
最后,服务器接收到PPTP数据包后进行常规处理。
- PPTP控制连接数的数据包格式
包括一个IP报头,一个TCP报头和PPTP控制信息,还包括数据链路层报头和报尾。