PPTP协议握手流程分析--转载
一 PPTP概述
PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可以通过密码验证协议,可扩展认证协议等方法增强安全性。远程用户可以通过ISP、直接连接Internet或者其他网络安全地访问企业网;
它能够将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输。PPTP使用TCP是实现隧道的创建、维护与终止,并使用GRE(通用路由封装)将PPP帧封装成隧道数据。被封装后的PPP帧的有效载荷可以被加密或压缩;
PPTP通信过程中需要建立两种连接,一种是控制连接,另一种是数据连接。控制连接用来协商通信过程中的参数和进行数据连接的维护。而真正的数据通信部分则交由PPTP数据连接完成。以下两个章节分别介绍PPTP的控制连接和数据连接
二 PPTP控制连接的建立流程分析
PPTP控制连接建立过程可以分为以下几步:
1、 建立TCP连接
2、 PPTP控制连接和GRE隧道建立
3、 PPP协议的LCP协商
4、 PPP协议的身份验证
5、 PPP协议的NCP协商
6、 PPP协议的CCP协商
以下以抓包的方式分析上述几个步骤,
pptp client : 192.168.163.56
pptp server : 192.168.162.196
2.1 建立TCP连接
PPTP控制层协议是建立在TCP协议的基础上,所以刚开始即使普通的TCP三次握手
图2-1 TCP三次握数据包
图2-2 TCP三次握手时序图
1、 Client端向Server的1723端口发TCPSYN包,请求建立TCP连接。
2、 Server接收TCP连接请求,回SYN ACK。
3、 Client端向Server发送确认包ACK
2.2 PPTP控制连接和隧道的建立
在此过程,完成PPTP控制层连接和Gre隧道建立的工作
图2-3 PPTP控制层连接建立过程
图2-4 PPTP控制层连接时序图
1、 Client向Server发送Start-Control-Connection-Request,请求建立控制连接
2、 Server向Client发送Start-Control-Connecton-Reply,应答客户端的请求
3、 Client向Server发送Outgoing-Call-Request,请求建立PPTP隧道,该消息包含GRE报头中的Callid,该id可唯一地标识一条隧道
4、 Server向Client发送Outgoing-Call-Reply,应答客户端的建立PPTP隧道请求
5、 有Client或者Server任意一方发出Set-Link-info,设置PPP协商的选项
2.3 PPP协议的LCP协商
LCP是PPP协议的链路控制协议,负责建立、拆除和监控数据链路。协商链路参数,如认证方法,压缩方法,是否回叫等。
图2-5 PPP协议的LCP协商过程
图2-6 PPP协议的LCP协商时序图
1、 Client发送一个Configuration Request,把自己的配置参数发送给Server
2、 Server发送一个Configuration Request,把自己的配置参数发送给Client
3、 Server发送一个Configuration Reject,将自己不能识别的参数告知Client,让Client进行修正
4、 Client发送一个Configuration Ack,表示所有配置参数全部认识且可以接受,应答Server
5、 Client修改配置项后再次发送Configuration Request
6、 Server发送一个Configuration Ack,标示所有配置参数全部认识且可以接受,应答Client
2.4 PPP协议的身份认证
LCP协商完成后,PPP协议的Server端会对Client端进行身份验证,在LCP协商中已经协商好身份验证协议,本文以MS-CHAP-2为例说明
图2-7 PPP协议的Chap身份认证过程
图2-8 PPP协议的Chap身份认证时序图
1、 Server向Client发送Challenge,其中包括一个Challenge string(value字段)和Server Name(pptpd)
2、 Client向Server发送Response,其中用户名使用明文发送,密码(syberos)和Challenge字段混合hash后以密文(value字段)形式发送
3、 Server读取密码文件,对用户身份进行验证,验证成功,向Client发送Success,表示身份验证成功
2.5 PPP协议的NCP协商
NCP协议是PPP协议的网络控制协议,主要用来协商双方网络层接口参数,配置虚拟端口,分配IP,DNS等信息。图中的IPCP是NCP基于TCP/IP的接口协商协议。Server和Client都要把自己的Miniport信息发送给对方
图2-9 PPP协议的NCP协商过程
图2-10 PPP协议的NCP协商时序图
1、 Server把自己的Miniport信息通过Configuration Request发送给Client
2、 Client接收Server的接口配置,向Server发送Configuration ACK,应答上一步骤的Request
3、 Client把自己的Miniport信息(无效数据,等待Server分配)通过Configuration Request发送给Server
4、 Server发现Client的配置是无效的,则给Client发送一条有效的配置信息,使用Configuration Nak发送,其中主要是给Client分配ip
5、 Client根据Server端发送过来的配置,修改自己的Miniport的接口,再次发送Configuration Request
6、 Server接受Client的配置,发送Configuration Ack应答Request
2.6 PPP协议的CCP协商
CCP协议协商PPP通讯中数据加密的协议
图2-11 PPP协议的NCP协商过程
图2-12 PPP协议的NCP协商时序图
1、 Server向Client发送Configuration Request,标识服务端支持的加密协议
2、 Client向Server发送Configuration Request,标识客户端支持的加密协议
3、 Client向Server发送Configuration ack,标识接受服务端的加密协议
4、 Server向Client发送Configuration ack,标识接受客户端的加密协议
三 PPTP数据连接的分析
图3-1 PPTP数据包格式
我们以应用层使用HTTP连接为例说明PPTP数据包的封装和解析过程;
3.1 PPTP数据包封装过程
图3-2 PPTP数据包封装过程
封装过程:
1、 应用层数据封装成IP数据包
2、 将IP数据包发送到VPN的虚拟接口
3、 VPN的虚拟接口将IP数据包压缩和加密,并增加PPP头
4、 VPN的虚拟接口将PPP帧发送给PPTP协议驱动程序
5、 PPTP协议驱动程序在PPP帧外添加GRE报头
6、 PPTP协议驱动程序将GRE报头提交给TCP/IP协议驱动程序
7、 TCP/IP协议驱动程序为GRE驱动添加IP头部
8、 为IP数据包进行数据链路层封装后通过物理网卡发送出去
3.2 PPTP数据包解析过程
图3-2 PPTP数据包解析过程
解析过程:
1、物理thernet帧
2、剥掉Ethernet帧后交给TCP/IP协议驱动程序
3、TCP/IP协议解析剥掉IP头部
4、IP协议解析剥掉GRE头部
5、将PPP帧发送给VPN虚拟网卡
6、VPN虚拟网卡剥掉PPP头并对PPP有效负载进行解密或者解压缩
7、解密或者解压缩完成后将数据提交给上层应用
8、上层应用对数据进行处理
从应用层看,Service和Client是直接点对点连接的,他们之间的媒介就是GRE。而这个GRE的底层并不是真正的点对点连接,
而是建立在物理网络上的一个隧道,保护传输的数据;
PPTP协议握手流程分析--转载的更多相关文章
- PPTP协议握手流程分析
一 PPTP概述 PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可 ...
- http协议请求流程分析
http协议请求流程分析 用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先 ...
- Uboot启动流程分析(转载)
最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上.正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果.之前在学习uboot时 ...
- Android wpa_supplicant 四次握手 流程分析
记录wpa_supplicant四次握手的过程. 相关log:https://www.cnblogs.com/helloworldtoyou/p/9633603.html 接收到第一次握手,会设置一个 ...
- TCP/IP协议三次握手与四次握手流程解析(转载及总结)
原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详 ...
- TCP/IP协议三次握手与四次握手流程解析
原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...
- Android bluetooth介绍(四): a2dp connect流程分析
关键词:蓝牙blueZ A2DP.SINK.sink_connect.sink_disconnect.sink_suspend.sink_resume.sink_is_connected.sink_ ...
- Android之 MTP框架和流程分析
概要 本文的目的是介绍Android系统中MTP的一些相关知识.主要的内容包括:第1部分 MTP简介 对Mtp协议进行简单的介绍.第2部分 MTP框架 介绍 ...
- boost.asio源码剖析(三) ---- 流程分析
* 常见流程分析之一(Tcp异步连接) 我们用一个简单的demo分析Tcp异步连接的流程: #include <iostream> #include <boost/asio.hpp& ...
随机推荐
- vi/vim命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/mondol/p/vi-examples.html 进入vi vi filename # 打开或新建文件,并将光标置于第 ...
- podSpec文件相关知识整理
上一篇文章整理了我用SVN创建私有库的过程,本文将整理一下有关podSpec文件的相关知识. podSpec中spec的全称是“Specification”,说明书的意思.顾名思义,这是用来描述你这个 ...
- Daily Srum 10.21
到目前为止,我们组处在学习阶段,很多知识点都还不太清楚,所以现在我们还在看相关书籍和博客,任务. 而我们此间主要是在阅读一些材料: 陈谋一直在看学长的代码,其中C#的很多方式我都不太明白(尽管和Jav ...
- 提不起劲想赶紧完工 Scrum Meeting 博客汇总
提不起劲想赶紧完工 Scrum Meeting 博客汇总 一.Alpha阶段 1,第一次Scrum Meeting 2,第二次Scrum Meeting 3,第三次Scrum Meeting 4,第四 ...
- caffe with anaconda
https://blog.csdn.net/u013498583/article/details/74231058 https://www.cnblogs.com/youxin/p/4073703.h ...
- HTML和CSS <h1> --2-- <h1>
认识html文件基本结构 这一节中我们来学习html文件的结构:一个HTML文件是有自己固定的结构的. <html> <head>...</head> <bo ...
- wcf的DataContractAttribute与DataMenmberAttribute
文章:序列化和反序列化的几种方式(DataContractSerializer)(二) 介绍了序列化控制细节.哪些字段可以序列化,序列化后这些字段的名字.
- synchronized、锁、多线程同步的原理是咋样
先综述个结论: 一般说的synchronized用来做多线程同步功能,其实synchronized只是提供多线程互斥,而对象的wait()和notify()方法才提供线程的同步功能. 一般说synch ...
- Linux操作系统(三)
文件系统: boot sector:记录引导文件 sb: super block 每个文件系统只有一个sb,其余black group均是它的备份 读写文件会进入到inode operation vf ...
- 解决Shiro+SpringBoot自定义Filter不生效问题
在SpringBoot+Shiro实现安全框架的时候,自定义扩展了一些Filter,并注册到ShiroFilter,但是运行的时候发现总是在ShiroFilter之前就进入了自定义Filter,结果当 ...