PPTP 理解以及报文的分析

2023-11-14

    首先,先来理解下什么是 PPTP。PPTP将PPP(Point-to-Point Protocol)帧封装进IP数据报中,通过IP网络如Internet或其他企业专用Intranet等发送。PPTP通过PPTP控制连接来创建、维护、终止一条隧道,并使用通用路由封装GRE(Generic Routing Encapsulation)对PPP帧进行封装。封装前,PPP帧的有效载荷即有效传输数据一般会经过加密、压缩或是两者的混合处理。PPTP协议假定在PPTP客户机和PPTP服务器之间有连通且可用的IP网络。因此如果PPTP客户机本身已经是某IP网络的组成部分,那么即可通过该IP网络与PPTP服务器取得连接.MPPE只提供连接加密,而不提供端-端加密。端-端加密属于应用层的加密技术,如果应用中要求实现端-端加密,则可在PPTP隧道建立之后,使用IPSec对两端的IP数据流进行加密处理。基于Internet的PPTP服务器即使用PPTP协议的VPN服务器,它的一个接口在Internet上,另一个接口在Intranet上。

 

一、    PPTP连接过程与隧道维护

        PPTP控制连接建立在PPTP客户机IP地址和PPTP服务器IP地址之间,PPTP客户机使用动态分配的TCP端口号,而PPTP服务器则使用保留TCP端口号1723。PPTP控制连接携带PPTP呼叫控制和管理信息,用于维护PPTP隧道,其中包括周期性地发送回送请求和回送应答消息,以期检测出客户机与服务器之间可能出现的连接中断。PPTP控制连接数据包包括一个IP报头,一个TCP报头和PPTP控制信息,数据包格式如下。所示的PPTP控制连接数据包还包括数据链路层报头和报尾。

                                                                                              

 

PPTP典型连接过程:

TCP连接由PPTP客户机上的一个动态分配的TCP端口到PPTP服务器上的TCP端口1723建立。

                                                     

 

二、大致分析下客户端和服务端的报文

start-control-connection-request : 由PPTP客户端发出,请求简历控制连接。PPTP隧道要求在发送任何其他PPTP消息之前,先建立一条控制连接。

start-control-connection-reply:由PPTP服务器发出,回应start-controlconnection-request消息。

outgoing-call-request:由PPTP客户机发出,请求创建PPTP隧道,outgoing-call-request消息包含GRE报头钟的Call ID,该ID可唯一地标识一条隧道。

outgoing-call-reply:PPTP服务器对outgoing-call-request消息的回应。

echo-request:作为保持连线机制,可由PPTP客户机或服务器任何一方发出,若echo-request了没有应答,则PPTP隧道逐渐终止。

echo-reply:对echo-request的应答。注:PPTP的echo-request和echo-reply的消息与ICMP回送请求和回送应答消息无关。

wan-error-notify:由PPTP服务器向所有VPN客户机发出,指示服务器的PPP接口处于错误状态。

set-link-info:可由PPTP客户机或服务器任何一方发出,设置PPP协商选项。

call-clear-request:由PPTP客户机发出,请求终止隧道。

call-disconnect-notify:PPTP服务器回应call-clear-request,或因其他原因指示必须终止隧道。如果PPTP服务器终止隧道,则发送出call-disconnect-notify消息。

stop-control-connection-request:可由PPTP客户机或服务器任何一方发出,通知对方控制连接将被终止。

stop-control-connection-reply:回应stop-control-connection-request消息。

 

三、详细分析数据包的内容

1.  Start-control-connection-request

                           

Length :该 PPTP 信息的八位总长,包括整个 PPTP 头。

PPTP Message Type : 信息类型。可能值有:1、控制信息;2、管理信息。

Magic Cookie : Magic Cookie 以连续的 0x1A2B3C4D 进行发送,其基本目的是确保接收端与 TCP数据流间的正确同步运行。

Control Message Type :值为1;

Reserved 0 & 1 : 必须设置为0。

Protocol Version : PPTP版本号。

Framing Capabilities : 指出帧类型,该信息发送方可以提供:1、异步帧支持(Asynchronous Framing Supported);2、同步帧支持(Synchronous Framing Supported)。

Bearer Capabilities : 指出承载性能,该信息发送方可以提供:1、模拟访问支持(Analog Access Supported);2、数字访问支持(Digital access supported)。

Maximum Channels : 该 PPTP服务器 可以支持的个人 PPP 会话总数。

Firmware Revision : 若由 PPTP服务器 出发,则包括发出 PPTP服务器时的固件修订本编号;若由 PPTP客户端 出发,则包括 PPTP客户端 PPTP 驱动版本。

Host Name : 包括发行的 PPTP服务器 或 PPTP客户端的 DNS 名称。

Vendor Name : 包括特定供应商字串,指当请求是由 PPTP客户端 提出时,使用的 PPTP服务器 类型或 PPTP客户端软件类型。

 

2. Start-Control-Connection-Reply

                            

大部分字段的含义与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为2;

Result Code:表示建立channal是否成功的结果码,值为1表示成功,值为2表示通用错误,暗示着有问题。值为3表示channal已经存在,值为4表示请求者未授权,值为5表示请求的PPTP协议版本不支持。

Error Code:表示错误码,一般值为0,除非Result Code值为2,不同的错误码表示不同的含义。

 

3.  Outgoing-call-request

                                     

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为7。

Call ID:由PPTP客户端指定的唯一的会话ID。

Call Serial Number:是由PPTP客户端指定的唯一标识符,用于在记录会话信息中标识特定会话,与Call ID不一样的是,Call Serial Number PPTP客户端与PPTP服务器来说,唯一绑定到一个给定的会话,且是相同的。

Minimum BPS:对于此次会话可接受的最低传输速度,单位为位/秒;

Maximum BPS:对于此次会话可接受的最大传输速度,单位为位/秒;

Bearer Type: 指出承载访问支持,该信息发送方可以提供:1、模拟访问支持(Analog Access Supported);2、数字访问支持(Digital access supported)。3、可支持的任何类型。

Framing Type: 指出帧类型,该信息发送方可以提供:1、异步帧支持(Asynchronous Framing Supported);2、同步帧支持(Synchronous Framing Supported)。 3、异步或同步帧支持。

Rev window size:PPTP客户端为此次会话提供最大接收缓冲大小;

PPTP服务器ket processing delay:表示PPTP客户端对数据包处理的延时度量,对于PPTP客户端来说,一般设置比较小越好。

Phone number length:拔号号码长度;

Phone number:建立会话向外拔号的号码,一般对于ISDN或模拟方式拔号来说,此字段域为一个ASCII串。一般长度少于64个字节。

Sub address:额外信息域,一般长度少于64个字节。

 

4. Outgoing-Call-Reply

                     

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为8。

Call ID:由PPTP服务器指定的唯一的会话ID。主要用于在PPTP服务器与PPTP客户端建立的会话上,复用与解封装隧道包使用的。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Result Code:表示响应Outgoing-call-request握手是否成功,值为1表示成功,值为2表示通用错误,暗示着有问题。值为3表示无载波,值为4表示服务器忙,无法及时响应,值为5表示无拔号音,值为6表示呼号超时,值为7表示未授权。

Error Code:表示错误码,一般值为0,除非Result Code值为2,不同的错误码表示不同的含义。

Cause Code:表示进一步错误信息描述;

Connect Speed:连接使用的实际速率;

Rev window size:PPTP服务器为此次会话提供最大接收缓冲大小;

PPTP服务器ket processing delay:表示PPTP服务器对数据包处理的延时度量。

Physical Channel ID:由PPTP服务器指定的物理信道ID。

 

5. Set-Link-Info

                      

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为15。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Reserved0/Reserve1:保留位,必须为0;

Send ACCM:发送的ACCM值,默认值为0XFFFFFFFF;

Receive ACCM:接收的ACCM值,默认值为0XFFFFFFFF;

 

6.  Echo request

                      

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为5。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Reserved0:保留位,必须为0;

Identifier:发送者用来标识Echo request与Echo reply对应标识。

 

7.  Echo-reply

                          

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为6。

Peer’s Call ID:设置的值是从接收到的Outgoing-call-request中Call ID值,是由PPTP客户端指定的,用于GRE中对于隧道数据解封与复用。

Reserved0/1:保留位,必须为0;

Identifier:标识值,为接收者从Echo request里标识字段复制填入。

Result Code:结果码,为1表示Echo-reply是有效的,为2表示出现一般性错误。

Error code:同上面所描述的。

 

8. Call-Clear-Request

                     

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为12。

Call ID:由PPTP客户端指定的会话ID。

Reserved0/1:保留位,必须为0;

 

9. Call-Disconnect-Notify

                      

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为13。

Call ID:由PPTP客户端指定的会话ID。

Reserved0/1:保留位,必须为0;

 

10. Call-Disconnect-Notify

Result Code:结果码,为1表示媒介断开,为2表示出现一般性错误,为3表示为管理员关闭连接,为4表示收到Call-Clear-Request;

Error code:同上面所描述的。

Cause Code:此域表示额外说明断开原因。

 

11.  Stop-Control-Connection-Request

                     

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为3。

Resverve0/1/2:保留位,必须为0;

Reason:表示会话连接关闭的原因,为1表示响应会话清除请求,为2表示不支持对端PPTP版本,为3表示本地系统关闭.

 

12.  Stop-Control-Connection-Reply

Length、PPTP Message、Magic cookie与Start-control-connection-request一致。不同的字段含义如下:

Control Message Type :值为4。

Resverve0/1/2:保留位,必须为0;

Result Code:表示关闭连接结果码,为1表示正常关闭成功,为2表示发生一般性错误。

Error Code::表示当结果为2时,对应具体的一般性错误,Result Code为1时,必须为0。

 

四、总结

1. PPTP原理

首先,PPTP客户机使用动态分配的TCP端口号,与PPTP服务器使用的保留TCP端口号123建立控制连接(PPTP控制连接携带PPTP呼叫控制盒管理信息,用于维护PPTP隧道)。

其次,客户端与服务器通过控制连接来创建、维护、终止一条隧道。

然后,PPP帧的有效载荷经过加密、压缩或是两者的混合处理。

接着,使用通用路由封装GRE对PPP帧进行封装。

再者,将PPP帧封装进IP数据报文中。通过IP网络如Internet或其他企业准用INTRANET灯发送给PPTP服务器。

最后,服务器接收到PPTP数据包后进行常规处理。

 

2. PPTP控制连接数的数据包格式

包括一个IP报头,一个TCP报头和PPTP控制信息,还包括数据链路层报头和报尾。

 

  ps:参考 http://wenku.baidu.com/view/32af1ad8d15abe23482f4d35.html  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PPTP 理解以及报文的分析 的相关文章

  • 配置Kettle连接大数据HDFS

    需求 配置Kettle连接大数据HDFS Kettle对接大数据平台的配置 一 软件环境 1 Hadoop集群 版本 Hadoop3 3 0 2 ETL工具Kettle 版本 pdi ce 7 0 0 0 25 解压命令 zip 用 unz

随机推荐

  • 【数据压缩】Exp05.JPEG解码

    实验原理 01 JPEG的编解码原理 输入图像的YUV数据先进行偏置 再将图片按8x8的块进行DCT变换编程8x8的系数块 接着再根据8x8的量化表对系数块进行量化 量化后的8x8的系数块需要对其进行不同的操作 其中左上角的直流系数进行 交
  • Python中将字典转换为字符串常用的方法!

    在Python中 字典是一种很常见的数据类型 其由一组键值对组成的无序集合 有时候需要将字典转换为字符串 以便于在网络传输 文件存储等场合使用 那么如何将字典转换为字符串格式呢 以下是详细的内容 1 使用json库 json是一种轻量级的数
  • thread创建线程的一些坑

    测试detach的坑 class A public int m i A int a m i a cout lt lt Construction lt lt endl A const A a m i a m i cout lt lt Copy
  • Nacos、Eureka和Zookeeper有什么区别

    Nacos Eureka和Zookeeper都是服务注册中心 它们的主要功能是管理分布式系统中各个微服务实例的注册与发现 它们之间的主要区别在于 1 语言支持 Nacos是用Java语言开发的 Eureka是用Java语言开发的 Zooke
  • Opencv4基于C++的 实时人脸监测

    文章目录 一 环境配置搭建 VS2015 Opencv4 6 二 下资源文件 第一种 本地生成 第二种 直接下载 三 代码展示 窗口布局 main cpp test h test cpp 效果图 opencv人脸识别效果图 请叫我真爱粉 一
  • 二进制部署高可用k8s集群

    一 前置知识点 1 1 环境准备 服务器要求 建议最小硬件配置 2核CPU 2G内存 30G硬盘 软件环境 软件 版本 操作系统 CentOS7 x x64 容器引擎 Docker CE 19 Kubernetes Kubernetes v
  • lambda

    外部变量访问方式说明符 不捕获任何变量 以引用方式捕获所有变量 用值的方式捕获所有变量 可能被编译器优化为const foo 以引用捕获foo 但其余变量都靠值捕获 foo 以值捕获foo 但其余变量都靠引用捕获 bar 以值方式捕获bar
  • 查看虚拟机CentOS7 的 IP 地址

    在CentOS7中我们不能输入ifconfig命令查看 而是要输入ip addr命令查看 此命令会出现3个条目 centos的ip地址是ens33条目中的inet值 发现 ens33 没有 inet 这个属性 那么就没法通过IP地址连接虚拟
  • Android 获取电池容量 mAh

    1 Java 反射获取电池容量 目前手机出厂下配置电池容量主要是通过修改 power profile xml 的电池容量参数 一般Google 默认配置为 1000 mAh 故只要是出货的手机一般都需要修改该值 我们可以直接导出 frame
  • 名人问题 (Celebrity problem)

    问题 在一个房间里有 N 个人 其中一个是名人 所谓名人就是大家都认识他 但是他不认识任何人 其它人可能认识房间里面另外的一部分人 你可以问任何人问题 但是问题只能是 你认识 X 吗 对方回答 Yes or No 请问最少要问多少个问题才能
  • MySQL 视图(view)

    目录 视图 概念 基本使用 视图规则和限制 视图 view 概念 视图是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 视图的数据变化会影响到基表 基表的数据变化也会影响到视图 基本使用 创建视图 crea
  • Pytest系列 - fixture的详细使用

    前言 前面一篇讲了setup teardown可以实现在执行用例前或结束后加入一些操作 但这种都是针对整个脚本全局生效的 如果有以下场景 用例 1 需要先登录 用例 2 不需要登录 用例 3 需要先登录 很显然无法用 setup 和 tea
  • 高德地图开放平台——行政区划分DistrictSearch 准确定位区域,指定某一城市的行政区

    当搜索宝山区时 会定位到赤峰市的元宝山区 然而想要的是上海市宝山区 解决办法 利用AMap PlaceSearch获得行政区号adcode 用adcode来搜索对应的区域 这里利用了AMap PlaceSearch支持模糊搜索的功能 且AM
  • RPC框架详解

    第一部分 RPC框架 1 Socket回顾与I 0模型 1 1 Socket网络编程回顾 Socket 套接字就是两台主机之间逻辑连接的端点 TCP IP协议是传输层协议 主要解决数据如何在网络中传输 而HTTP是应用层协议 主要解决如何包
  • 20个常用模拟电路(详细分析)

    一 桥式整流电路 1二极管的单向导电性 二极管的PN结加正向电压 处于导通状态 加反向电压 处于截止状态 伏安特性曲线 理想开关模型和恒压降模型 理想模型指的是在二极管正向偏置时 其管压降为0 而当其反向偏置时 认为它的电阻为无穷大 电流为
  • 渗透测试工具之Layer子域名挖掘机

    目录 前言 1 Layer介绍 2 子域名介绍 3 挖掘子域名的作用 4 下载地址 5 工具使用 前言 每篇一句话 困难像弹簧 你强它就弱 你弱它就强 这里是小葵花的学习之路 博客主页 小葵花学堂 文章为个人笔记 若其中如有内容不规范或讲解
  • Python 代码规范

    前言 Python 学习之旅 先来看看 Python 的代码规范 让自己先有个意识 而且在往后的学习中慢慢养成习惯 目录 Python代码规范 一 简明概述 1 编码 如无特殊情况 文件一律使用 UTF 8 编码 如无特殊情况 文件头部必须
  • vs+qt程序添加cmd窗口

    概述 在项目开发过程中为方便查看一些调试信息 可以在运行时把命令行窗口同时显示出来 操作说明 项目右键选择属性 项目 属性 配置属性 链接器 系统 子系统 下拉选项中选择控制台 当不需要打 cmd 的时候设置子系统为窗口 SUBSYSTEM
  • EasyAR4.0稀疏空间地图室内导航

    现有的AR室内导航 一种方案是利用运动跟踪实现 但是偏移较大 比较靠谱或者说能满足商业使用的还是稀疏空间地图 ARCore管叫云锚点 实现效果如下 EasyAR稀疏云地图室内导航 制作思路其实很简单 先建立空间地图 然后利用平面图像追踪在空
  • PPTP 理解以及报文的分析

    首先 先来理解下什么是 PPTP PPTP将PPP Point to Point Protocol 帧封装进IP数据报中 通过IP网络如Internet或其他企业专用Intranet等发送 PPTP通过PPTP控制连接来创建 维护 终止一条