PPTP 工作原理介绍


简介

点对点隧道协议(PPTP)是广泛使用的虚拟专用网络协议。 PPTP 是用于在中间网络上传输点对点协议(PPP)帧的一种隧道机制。 通过利用 PPP 的身份验证、加密和协议配置机制,PPTP 连接同时为远程访问和路由器到路由器的虚拟专用网(VPN)连接提供了一条在公共网络(比如:Internet)上创建安全连接的途径。

PPTP是对端对端协议(PPP)的一种扩展,它采用了PPP所提供的身份验证、压缩与加密机制。PPTP能够随TCP/IP协议一道自动进行安装。PPTP与Microsoft端对端加密(MPPE)技术提供了用以对保密数据进行封装与加密的VPN服务。 MPPE将通过由MS-CHAP、MS-CHAP v2身份验证过程所生成的加密密钥对PPP帧进行加密。为对PPP帧中所包含的有效数据进行加密,虚拟专用网络客户端必须使用MS-CHAP、MS-CHAP v2身份验证协议。

GRE协议:GRE(generic routing encapsulation,通用路由封装)协议是对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议中传输。

PPTP控制连接创建

在PPTP建立连接过程中,客户端先向服务器1723端口发送TCP连接请求,这里的TCP连接不是标准的三次握手,第三次回应的ACK会随着载荷一起发送,这样做的好处是可以节省一些网络流量,减少不必要的开销。在TCP连接完成以后,PPTP进入控制连接的建立

PPTP 控制连接建立步骤

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

  2. PPTP 客户端发送一条 PPTP Start-Control-Connection-Request(开始控制连接请求)消息,后者将用于建立一个 PPTP 控制连接。

  3. PPTP服务器使用一条 PPTP Start-Control-Connection-Reply(开始控制连接应答)消息予以响应。

  4. PPTP 客户端发送一条 PPTP Outgoing-Call-Request(传出调用请求)消息,并选择一个调用ID,识别用于将数据从 PPTP 客户端发送到 PPTP 服务器的 PPTP 隧道。PPTP 客户端使用 PPTP Outgoing-Call-Request 消息从 PPTP 服务器请求一个 PPTP 隧道(也称为调用)。

  5. PPTP 服务器发送一条 PPTP Outgoing-Call-Reply(传出调用应答)消息,并选择自身的调用ID,识别将数据从 PPTP 服务器发送到 PPTP 客户端的 PPTP 隧道。

  6. PPTP 客户端发送一条 PPTP Set-Link-Info(设置链路信息)消息来指定 PPTP 协商选项。

控制连接创建过程的最终结果

  • PPTP 服务器已允许创建一个 PPTP 隧道

  • PPTP 客户端已确定了在通过 PPTP 隧道向 PPTP 服务器发送数据时在 GRE 报头中使用的调用ID

  • PPTP 服务器已确定了在通过 PPTP 隧道向 PPTP 客户端发送数据时在 GRE 报头中使用的调用ID

具体报文

Start-control-connection-request报文

由PPTP客户端发出,请求建立控制连接;

pptp1

  • Length

    该 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客户端软件类型。

Start-Control-Connection-Reply报文

PPTP服务器对Star-Control-Connection-Request回应;

pptp2

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

  • Control Message Type

    值为2;

  • Result Code

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

  • Error Code

    表示错误码,一般值为0,除非Result Code值为2,不同的错误码表示不同的含义。(即:只有当Result Code值为2时,Error Code才有其它值)

Outgoing-call-request报文

由PPTP客户机发出,请求创建PPTP隧道,该消息包含GRE报头中call id, 该id可唯一地标识一条隧道;

pptp3

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、异步或同步帧支持。

  • Packet Receive window size

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

  • Packet Processing Delay

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

  • Phone number length

    拔号号码长度;

  • Phone number

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

  • Sub address

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

Outgoing-Call-Reply报文

PPTP服务器对Outgoing-Call-Request回应

pptp4

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

  • Control Message Type

    值为8。

  • Call ID

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

  • Peer 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

    连接使用的实际速率;

  • Physical Channel ID

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

由PPTP客户机或服务器任一方发出,设置PPP协商选项

pptp5

  • Control Message Type

    值为15。

  • Peers Call ID

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

  • Reserved0/Reserve1

    保留位,必须为0;

  • Send ACCM

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

  • Receive ACCM

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

Echo request报文

PPTP隧道维护报文,每60S发送一次;

  • Control Message Type

    值为5。

  • Peers Call ID

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

  • Reserved0

    保留位,必须为0;

  • Identifier

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

Echo-reply报文

PPTP隧道维护报文,对Echo request的回应报文;

  • Control Message Type

    值为6。

  • Peers Call ID

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

  • Reserved0/1

    保留位,必须为0;

  • Identifier

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

  • Result Code

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

Call-Clear-Request报文

由PPTP客户机发出,请求终止隧道;

  • Control Message Type

    值为12。

  • Call ID

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

Call-Disconnect-Notify报文

PPTP服务器对Call-Clear-Request回应或者其他原因指示必须终止隧道;

  • Control Message Type

    值为13。

  • Call ID

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

  • Result Code

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

  • Error code

    同上面所描述的。

  • Cause Code

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

Stop-Control-Connection-Request报文

由PPTP客户机或者服务器任一方发出,通知对端控制连接将被终止;

  • Control Message Type

    值为3。

  • Resverve

    保留位,必须为0;

  • Reason

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

Stop-Control-Connection-Reply报文

回应Stop-Control-Connection-Request消息;

  • Control Message Type

    值为4。

  • Resverve

    保留位,必须为0;

  • Result Code

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

  • Error Code

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

Ref

https://blog.csdn.net/leehomkey/article/details/61924540

http://www.groad.net/bbs/forum.php?mod=viewthread&tid=8343


本文不允许转载。
  目录