• PPTP协议


    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 HeaderIP HeaderTcp HeaderPPTP Control MessageData 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数据包进行数据链路层封装后通过物理网卡发出

  • 相关阅读:
    Java反射机制
    两个port贴合七夕主题,百度输入法的“情感营销”策略
    2014年百度之星程序设计大赛
    Java内存模型
    远程推送
    【NOI2010】海拔【平面图最小割】
    句法模式识别(二)-正规文法、上下文无关文法
    通过c# 实现mysql 数据库的备份和附加
    时光轴二之RecyclerView版时光轴效果
    手游产品经理初探(四)从Buybutton谈玩家付费
  • 原文地址:https://www.cnblogs.com/gtarcoder/p/6259110.html
Copyright © 2020-2023  润新知