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. paper 121 :matlab中imresize函数

    转自:http://www.cnblogs.com/rong86/p/3558344.html matlab中函数imresize简介: 函数功能:该函数用于对图像做缩放处理. 调用格式: B = i ...

  2. Python各式装饰器

    Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...

  3. 【转】Python练习,网络爬虫框架Scrapy

    一.概述 下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示).下面就来一个个解释每个组件的作用及数据的处理过程. 二.组件 1.Scrapy Engine(S ...

  4. lucene中FSDirectory、RAMDirectory的用法

    package com.ljq.one; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStrea ...

  5. CSS之float样式总结

    从四大开始开始慢慢接触前端,大概半年多过去了,虽然做了一些东西,但感觉有些点始终不是很清晰.有时候为了赶进度,没有太多时间对某个点进行全面深入思考分析,只能从网上搜一搜,试一试,只要效果出来了,任务就 ...

  6. Spring Batch学习笔记三:JobRepository

    此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用H ...

  7. ASP.NET连接数据库时,提示“用户 'sa' 登录失败原因: 未与信任 SQL Server 连接相关联

    用ASP.NET连接数据库时,提示"用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联.".解决方法:首先检查是不是web.config文件内的用户名密码 ...

  8. jquery autocomplete

    <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="http: ...

  9. [TCPIP] IP路由表及选路 Note

    TCP/IP IP路由表及选路 1.路由表信息 路由表一般包含信息:目的IP地址.下一站路由器的IP地址.标志. 为数据报传送指定的一个网络接口. 查看路由表信息mac-abeen:~ abeen$ ...

  10. Android first---SQLite

    SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper 必须定义一个构造方法: public MyOpenHelper(Context context, ...