[转]PPTP连接过程分析

PPTP 协议的RFC 文档是 RFC2637:

pptp 的连接使用了TCP 1723 端口进行,通过此端口完成了pptp的握手之后,利用ppp协议进行认证以及数据传输。其中ppp协议数据在IP数据层之后,利用GRE进行封装,进行认证等操作,完成之后,数据传输是利用了ppp协议,添加GRE头部,ppp头部信息之后,进行数据的传输。其中在数据传输的时候,按照ppp有没有采用加密形式决定了,能不能通过抓包形式查看GRE信息后面隐藏的具体信息。

在此例子中 10.1.1.122 是客户端,10.1.1.130 是pptp服务器,在测试环境中抓到的数据包顺序以及格式如下:

PPTP连接过程分析【1】



此阶段的数据包结构如下:

PPTP连接过程分析【1】


跟着TCP 字段就是这个 Point-to-Point Tunnelling Protocol 的字段。
所以前面的PPTP握手的数据包格式为

以太头部信息
IP头部信息
TCP头部信息
PPTP信息

之后进入到了 ppp 的认证以及数据传输阶段,在此阶段,在IP头部后面添加了GRE头部信息,之后是ppp头部信息,并且无端口使用。
此过程如下图所示:
PPTP连接过程分析【1】
PPTP连接过程分析【1】

到了 PPP Comp 就是数据传输字段了,在此数据包中,看到这样的PPP数据包格式,

PPTP连接过程分析【2】 


其中 Call ID,是此次数据传输保持不变,而每个数据包的Sequence Number 是依次增加,而在 Point-to-Point Protocol 协议当中
Protocol 是 0X00fd 意味着压缩传输,看不到Datagram的具体内容。

在另外配置的16的明文pptp当中,看到的数据是
在明文传输的时候,比如双方互相ping的时候,
看到


 PPTP连接过程分析【2】

在PPP封装当中,可以看到后面的IP包头以及ICMP头部信息,并且发出ping的sequence number 为71,那么返回的replay 的数据包的PPP当中,Sequence Number是36,带着 Acknowledgement Number 71,回应此PING。
并且PPP的Protocol 为 0X0021,是IP协议。

没有评论: