http://jiaoyu.3158.cn/20121128/n4230270592726.html
PPTP(Point to Point Tunnel Protocol),点对点隧道协议,是建立在PPP(Point to Point)点对点协议上的VPN隧道技术。PPP使用广泛的链路层协议,国内基本所有的服务商都提供PPP拨号上网服务,因为PPP有提供验证并且容易实现按流量计费的功能,而PPTP在此基础上,通过PAP或者CHAP等密码身份认证协议,甚至与IPsec结合,提高PPP网络通信的安全性,可以使得远程用户通过拨入ISP、或者直接连入Internet安全地访问企业网。
PPTP在封包的过程中会两次封装IP包:当上层协议发包到传输层,再由传输层发送到网络层,添加IP报文头部完成第一次IP封包后发给PPP模块,PPP模块将数据包发往PPTP初始化时注册的虚拟设备;在虚拟设备里,PPTP模块通过添加GRE报文头部后再次发到IP层,完成第二次IP封包,最后将数据包发往以太网卡,完成一次完整PPTP封装。
PPTP通过在PAC和PNS之间建立连接来进行通信。PPTP通信过程需要建立两种连接,一种是控制连接,另一种是数据连接。控制连接用来管理协商通信过程中的参数和进行数据连接的维护,而真正的数据通信部分则交由PPTP数据连接完成。PPTP隧道提供低层拥塞控制和流控制,这样就使得带宽利用率大大的提高,避免多余的重发,缓冲区的压力也大大减小。
PPTP连接建立:
(1)、客户端先向服务器1723端口发送TCP连接请求,这里的TCP连接不是标准的三次握手,第三次回应的ACK会随着载荷一起发送,这样做的好处是可以节省一些网络流量,减少不必要的开销。
(2)、在TCP连接完成以后,PPTP进入控制连接的建立,首先PAC会发Start Control Connection Request报文给PNS要求建立连接,PNS接到后发送应答报文,PAC再次发送Outgoing Call Request,等到PNS响应后控制连接建立。
(3)、接着是标准的PPP协商,上面说过,PPTP是建立在PPP的基础上的隧道协议。这样先进行LCP层的协商,PAC跟PNS双方都要把自己的链路层配置发送给对方,PAC的配置一般比较简单,PNS收到后就会接受 ,而PNS发给PAC的配置报文,PAC会对Unknow选项和不接受选项向PNS反馈,PNS收到后删除这些选项再次发送配置,PAC接受,LCP协商完成。此时在PPTP的控制层会互发Set Link Info报文来对刚刚协商好的选项进行配置。
(4)、LCP协商完成后,PNS开始对PAC进行身份验证,可以选的验证方式很多,有PAP、CHAP、MS-CHAP等方式。
(5)、身份验证后就进行NCP层协商。主要是来确定双方网络层接口参数,配置虚拟端口,分配IP、DNS等信息。
(6)、之后PPTP连接过程就算是完成,PPTP开始发送GRE封装的数据包,但每隔60秒,连接双方会发送Echo Request来询问链路是否可用,如果对方在此后60秒内没有响应,连接就会被终止。正常的连接终止时通过发送Stop Control Connection Request来通知对方结束连接。
PPTP主要应用在分公司或者个人用户要连接总部服务器时,通过建立PPTP隧道,让用户跟服务器看起来像处于同个局域网内,实现安全通信。