PPTP协议

  PPTP(Point-to-Point Tunneling Protocol)点对点隧道协议是PPP协议的一种扩展,它将PPP帧封装进IP包中,通过IP网络进行传输。它通过PPTP控制连接来创建、维护、终止一条隧道,同时使用通用路由封装GRE(Generic Routing Encapsulation)对PPP帧进行封装用来传输数据。
  PPTP协议假定在PPTP客户机和服务器之间有连通且可用的IP网络,因此如果PPTP客户机还没有接入网络,则首先需要建立从客户机到服务器的IP网络(可以通过拨号连接或者dhcp)。

PPTP控制连接过程和隧道维护

  PPTP控制连接建立在PPTP客户机IP地址和PPTP服务器IP地址之间,PPTP客户机使用动态分配的TCP端口号,PPTP服务器使用固定端口号1723,。在连接建立之后,客户机和服务器之间会周期性的发送回送请求和应答消息,以期检测出客户机与服务器之间可能出现的连接中断。PPTP控制连接的数据包格式如下所示:

Data-link Header IP Header Tcp Header PPTP Control Message Data link Trailer
 

PPTP的控制连接过程可以分为如下几步:
(1)建立TCP连接

三次握手建立TCP连接

(2)PPTP控制连接和GRE隧道建立

建立控制连接,同时分配CallID,该ID可以唯一标识一条隧道

(3)PPP协议的LCP协商

配置链路层参数,以及认证方法(比如MS-CHAP, MS-CHAP v2)

(4)PPP协议的身份认证

认证身份,可以通过LCP协商好的认证方法

(5)PPP协议的NCP协商

配置网络层参数,如分配IP地址,miniport信息

(6)PPP协议的CCP协商

双方协商加密协议(确定是否使用加密),MPPE加密的加密位数

如果LCP过程中确定了认证方法(比如MS-CHAP, MS-CHAP v2),同时CCP协商好要加密,则双方需要协商MPPE的 RC4 算法的密钥。

PPTP数据隧道传输

  PPTP客户端和服务器之间通过连接过程建立隧道之后,就可以通过隧道传输数据。
(1)用户的IP包经过PPP协议封装成为PPP包;
(2)PPTP对PPP帧的有效载荷进行加密(MPPE)、压缩(MPPC),加密和压缩都是可选的;
(3)PPTP使用通用路由封装协议GRE协议对PPP帧进行封装;
(4)将GRE帧放入IP报文中,通过IP网络发送给PPTP服务器
PPTP数据报文格式如下:


MPPE将通过由MS-CHAP、MS-CHAP v2或EAP-TLS身份验证过程所生成的加密密钥对PPP帧进行加密。PPTP将利用底层PPP加密功能并直接对原先经过加密的PPP帧进行封装。

MPPE (Microsoft Point-to-Point Encryption) 是一种将点到点协议(PPP)包用加密形式表示的方法,通常用来实现PPTP 中的加密。 MPPE 的加密算法是固定的,只能使用RC4 算法。

PPTP数据包的封装过程
(1)应用层数据封装成IP包
(2)将IP包发送到VPN的虚拟接口
(3)VPN的虚拟接口将IP数据包压缩和加密(压缩和加密可选),并增加PPP头。对于加密了的PPP包,其PPP类型是0x00FD
(4)VPN的虚拟接口将PPP帧发送给PPTP协议驱动程序
(5)PPTP协议驱动程序在PPP帧外加GRE报头
(6)PPTP协议驱动程序将GRE报头提交给TCP/IP协议驱动程序
(7)TCP/IP协议驱动程序为GRE添加IP头
(8)为IP数据包进行数据链路层封装后通过物理网卡发出

PPTP协议的更多相关文章

  1. [网络技术][转]PPTP协议解析

    PPTP协议大体上可以分为两部分:控制层连接和隧道,下面简要介绍两部分的功能.如果要详细了解PPTP协议请阅读RFC文档. 一. Control Connection Protol 控制层连接是基于T ...

  2. VPN column: PPTP(2)--PPTP协议解析

    zhu_hit原创,如需转载请注明出处.Thanks. PPTP协议大体上可以分为两部分:控制层连接和隧道,下面简要介绍两部分的功能.如果要详细了解PPTP协议请阅读RFC文档. 一. Control ...

  3. PPTP协议握手流程分析

    一  PPTP概述 PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可 ...

  4. mac下进行连接pptp协议

    环境:mac系统 软件:shimo 协议:pptp协议 说明: mac 自带vpn已经不支持 pptp协议的vpn,可以下载shimo连接. mac下进行vpn连接pptp协议操作方法: 下载: 链接 ...

  5. PPTP协议握手流程分析--转载

    一  PPTP概述   PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网 ...

  6. pptp协议的工作原理

    我的工作机是A,通信网卡是Aeth0, Appp0: 然后我的云主机是B, 通信的网卡是Beth0, Bppp0: 在网卡Bppp0上会不断地很清晰的数据包: 16:40:39.522917 IP 6 ...

  7. MacOS开启PPTP协议

    ​ 开启PPTP协议: Mac OS X 系统默认开启了完整性保护(System Intregrity Protection,SIP),所以即使是root帐户也无法修改系统目录中的文件.如果需要修改受 ...

  8. 「Shimo使用指南」mac支持pptp协议的小软件

    Mac的好多小伙伴在访问网络设备时觉得远程连接不方便,例如ssh,***登陆都不是很方便,后来又安装了open*** forMac.ISSH等客户端,使用后发现不是很稳定,断线后很久都无法连接等缺点, ...

  9. PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。

    PPTP PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可 ...

随机推荐

  1. python staticmethod and classmethod方法

    静态方法无绑定,和普通函数使用方法一样,只是需要通过类或者实例来调用.没有隐性参数. 实例方法针对的是实例,类方法针对的是类,他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数. #h ...

  2. sed tr 去除PATH中的重复项

    最近发现由于自己不良的安装软件的习惯,shell的PATH路径包含了很多冗余的项.这里使用shell命令去除PATH的冗余项. export PATH=$(echo $PATH | sed 's/:/ ...

  3. 移植mbed到目标板

    上一篇我们导出了mbed基本环境到mdk,根据实际目标还需要做些修改.手头的硬件是ebox平台,芯片STM32F103C8T6,调试器jlink,默认使用UART1. 导出时所选择的NUCLEO-F1 ...

  4. (转)[BetterExplained]为什么你应该(从现在开始就)写博客

    (一)为什么你应该(从现在开始就)写博客 用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处.(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极 ...

  5. Eclipse断点调试方法

    1. 条件断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止. 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才 ...

  6. How to convert webp to png/jpg/gif in MacOS

    Environment I'm using OS X 10.11.4 and have homebrew 1.0.5 installed. Introduction I recently downlo ...

  7. Ubuntu 16.04环境布署小记

    本系列文章记录了升级Ubuntu 16.04的布署过程 回到目录 10. 安装Mono, Xsp 当前版本16.04.1的系统源的Mono版本为4.2.1,如需使用最新版本(本文书写时稳定版本为4.6 ...

  8. 解析和风天气API的json(objective-C实现)

    暑假在家闲着没事干,心血来潮想做个天气预报APP玩玩,听说和风天气API很好,于是注册并试了下,结果它的JSON是这样的(拿我的家乡武义为例子) {"}},"status" ...

  9. jquery实现前台倒计时。应用下单24小时后自动取消该订单

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. easyui validatebox 验证类型DEMO

    <script> $.extend($.fn.validatebox.defaults.rules, { idcard: {// 验证身份证 validator: function (va ...