PPTP通信由以下两部分组成:
(一)PPTP控制连接 :
一种用以代表PPTP隧道并且必须通过一系列PPTP消息来创建、文护与终止的逻辑连接。PPTP控制连接通信过程使用PPTP客户端上动态分配的TCP端口以及PPTP服务器上编号为1723的反向IANA TCP端口。
PPTP控制连接数据包包括一个IP报头,一个TCP报头和PPTP控制信息,如图2.4所示:
图 2.4
PPTP控制连接创建过程:
1. 在PPTP客户端上动态分配的TCP端口与PPTP服务器上编号1723的TCP端口之间 建立一条TCP连接。
2. PPTP客户端发送一条用以建立PPTP控制连接的PPTP消息。 3. PPTP服务器通过一条PPTP消息进行响应。
4. PPTP客户端发送另一条PPTP消息,并且选择一个用以对从PPTP客户端向PPTP 服务器发送数据的PPTP隧道进行标识的调用ID.
5. PPTP服务器通过另一条PPTP消息进行应答,并且为自己选择一个用以对从PPTP 服务器向PPTP客户端发送数据的PPTP隧道进行标识的调用ID。
6. PPTP客户端发送一条PPTP Set-Link-Info消息,以便指定PPP协商选项。 (二)针对数据的GRE封装
当通过PPTP连接发送数据时,PPP帧将利用通用路由封装(GRE)报头进行封装,这种报头包含了用以对数据包所使用的特定PPTP隧道进行标识的信息。
初始PPP有效载荷如IP数据报、IPX数据报或NetBEUI帧等经过加密后,添加PPP报头,封装形成PPP帧。PPP帧再进一步添加GRE报头,经过第二层封装形成GRE报文;第三层封装添加IP报头。IP报头包含数据包源端及目的端IP地址。数据链路层封装是IP数据报多层封装的的最后一层,依据不同的外发物理网络再添加相应的数据链路层报头和报尾。
PPTP数据包的接收处理:
1. 处理并去除数据链路层报头和报尾
2. 处理并去除IP报头
3. 处理并去除GRE和PPP报头
4. 如果需要的话,对PPP有效载荷即传输数据进行解密或解压缩。 5. 对传输数据进行接收或转发处理 PPTP控制连接文护:
为文护PPTP控制连接,无论在PPTP客户端与服务器之间是否存在正在发送的GRE封装数据,PPTP客户端每60秒钟发送一条PPTP Echo Request消息。当收到PPTP Echo Request消息后,PPTP服务器发送一条PPTP Echo Reply消息。PPTP Echo Request消息包含 一个标识符字段,其取值随PPTP Echo Reply消息一同发回,从而确保PPTP客户端能够在 其所发送的PPTP Echo Request消息与回复之间进行匹配。
3 Linux下VPN的实现
3.1 平台选择以及工具使用
3.1.1 Vmware简介
(VMware Workstation)是VMware公司销售的商业软件产品之一。该工作站软件包含一个用于英特尔x86相容电脑的虚拟机套装,其允许用户同时创建和运行多个x86虚拟机。每个虚拟机实例可以运行其自己的客户机操作系统,如(但不限于)Windows、Linux、BSD变生版本。用简单术语来描述就是,VMware工作站允许一台真实的电脑在一个操作系统中同时开启并运行数个操作系统。其它VMware产品帮助在多个宿主电脑之间管理或移植VMware虚拟机。
3.1.2 Linux简介
Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 Linux系统下VPN的研究与部署实现(9):http://www.751com.cn/jisuanji/lunwen_9562.html