Socks5与VPN在原理上的异同

文章目录

最近学习了一些TCP/IP相关的知识,在上一篇文章在浏览器中输入URL后发生了什么?中我简单的介绍了浏览器输入URL后的后台过程,这其中也主要是涉及到了TCP/IP协议。tennfy很好奇Socks5与VPN在TCP/IP协议层面上到底是怎么工作的,在本篇文章中就浅略探究一下。

TCP/IP协议

这是本文最为基础的部分,也是INTERNET网络通信的基础,由于过于经典,本文就不再献丑了,推荐大家阅读下书进行学习。

TCP/IP详解卷1:协议

网上可以找到完整的电子档,或者可以购买一本收藏,绝对值得。

Socks5原理介绍

1、Socket套接字介绍

Socket套接字实际上是基于TCP/IP的一组应用程序接口,应用层的程序通过调用Socket套接字来实现网络间的进程通信。因此,在介绍Socks5之前,推荐大家看以下两篇文章:

简单理解Socket
Linux Socket编程(不限Linux)

2、Socks5原理介绍

Socks5是一个代理协议,位于传输层(TCP/UDP等)与应用层之间。Socks软件包组成为如下结构:
Socks库:安装于客户端。为Socket库的替代品,所有使用Socks的程序都必须将Socket库函数调用更改为Socks库函数调用。需要注意的是,Socks库函数仍然需要调用Socket库函数,Socks仅仅是在其上做了安全验证。
Sockd守护程序:安装于服务器,接收并处理来自客户端的CONNECT,BIND及请UDP associate求。以CONNECT请求为例,其工作流程为

  • 客户端向代理服务器发出请求信息,用以协商版本和认证方法
  • 代理服务器应答,将选择的方法发送给客户端
  • 客户和代理服务器进入由选定认证方法所决定的子协商过程
  • 子协商过程结束后,客户端发送请求信息,其中明了目标服务器的IP地址和端口
  • 代理服务器验证客户端身份,验证通过后会与目标服务器连接
  • 代理服务器向客户端返回连接信息
  • 若连接完成,则代理服务器开始作为中转站中转数据

Socks5协议同时支持TCP及UDP代理,它主要工作与会话层,因此与上层的协议无关。但是,它无法做到全局代理。

VPN原理介绍

VPN,Virtual Private Network(虚拟专用网络),被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过公用网络的安全、稳定的隧道。VPN有很多种实现方式,常见的有PPTP,L2TP ,L2TP over IPSEC等等。

以OSI 模型参照标准,不同的VPN术可以在不同的OSI协议层实现。如下表:

1
2
3
4
5
VPN在OSI中的层次       VPN实现技术 
应用层                 SSL VPN 
会话层                 Socks5 VPN 
网络层                 IPSec VPN 
数据链路层              PPTP及L2TP

1、隧道技术

隧道技术的基本过程是在源局域网与公网的接口处将数据(可以是OSI七层模型中的数据链路层或网络层数据)作为负载封装在一种可以在公网上传输的数据格式中,在目的局域网与公网的接口处将数据解封装,取出负载。被封装的数据包在互联网上传递时所经过的逻辑路径被称为“隧道”。

2、PPTP VPN技术

PPTP(点到点隧道协议)是由PPTP论坛开发的点到点的安全隧道协议,为使用电话上网的用户提供安全VPN业务,1996年成为IETF草案。PPTP是PPP协议的一种扩展,提供了在IP网上建立多协议的安全VPN的通信方式,远端用户能够通过任何支持PPTP的ISP访问企业的专用网络。

PPTP使用一个TCP连接对隧道进行维护,使用通用路由封装(GRE)技术把数据封装成PPP数据桢通过隧道传送。可以对封装PPP桢中的负载数据进行加密或压缩。
下边简单描述PPTP 过程中涉及的封装和解封步骤。
封装
1)数据封装于IP(或IPX和NetBEUI)封包中。
2)该IP(或IPX和NetBEUI)封包封装在PPP帧中。
3)该PPP 帧封装在GRE 帧中(并加密)。
4)该GRE 帧封装在IP 封包中。

解封
1)移除IP 包头。
2)移除GRE 包头(解密过程)。GRE负载中是一个PPP帧。
3)移除PPP 包头。
4)将该IP(或IPX和NetBEUI)封包路由到其最终的目的地。

MPPE将通过由MS-CHAP、MS-CHAP v2或EAP-TLS身份验证过程所生成的加密密钥对PPP帧进行加密。为对PPP帧中所包含的有效数据进行加密,虚拟专用网络客户端必须使用MS-CHAP、MS-CHAP v2或EAP-TLS身份验证协议。PPTP将利用底层PPP加密功能并直接对原先经过加密的PPP帧进行封装。

PPTP协议将控制包与数据包分开,控制包采用TCP控制,客户端连接到VPN服务器TCP1723端口,用于控制和管理VPN隧道的功能。;数据包部分先封装在PPP协议中,然后封装到GRE V2协议中,最后封装到IP协议中传送。

可以看出来,VPN技术主要应用于IP层及以下,因此不依赖与具体的应用,所以可以实现全局代理。

本文出自 TENNFY博客,转载时请注明出处及相应链接。

本文永久链接: https://www.tennfy.com/3412.html

下一篇文章:

上一篇文章:

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

5 + 1 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部