网络代理的基础知识

时间:2024-03-04 19:06:48

常见的网络代理技术有vpn代理,http代理,socket代理等。打开fireFox浏览器看见其常见网络连接配置很多,本文将逐步讲解其每项代理的意义及配置方法;

一、Socks原理介绍

1、Socket套接字介绍

Socket套接字实际上是基于TCP/IP的一组应用程序接口,应用层的程序通过调用Socket套接字来实现网络间的进程通信。

2、Socks5原理介绍

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

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

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

3、Socket5代理简介

  采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准。Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。

  SOCKS是一组由Internal工程工作小组(IETF)所开发出来的开放软件开放标准,用来处理网络安全的事宜。SOCKS象一堵墙被夹在Internal服务器和客户端之间,对于出入企业网络的资讯提供流量和安全的管理。SOCKS这个名词并不是一组英文字头的缩写,而是一个和TCP/IP的Socket端口有关的安全标准,一般防火墙系统通常是象网关(Gateway)一样是作用在OSI模型的第七层也就是应用层上,对TCP/IP的高级协议,如Telnet、FTP、HTTP和SMTP加以管制,而SOCKS作用在OSI模型的第五层(如下图的七层模型)也就是会话层上,象一个代理一样对客户端到服务器端或服务器和服务器之间的数据联系,提供安全上的服务。由于SOCKS作用在会话层上,因此它是一个提供会话层到会话层间安全服务的方案,不受高层应用程序变更的影响。

4、SOCKS4、SOCKS5、HTTP、FTP代理的区别

  SOCKS4和SOCKS5具体表现在SOCKS4只能代理TCP协议,而SOCKS5什么协议都可以代理,而QQ使用的是UDP协议,所以它不能使用SOCKS4代理,而象国外的ICQ使用比UDP协议安全的TCP协议,所以就可以使用SOCKS4代理。
  对于SOCKS代理和HTTP代理从上文我们知道SOCKS工作在会话层上,而HTTP工作在应用层上,SOCKS代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求),所以SOCKS代理服务器比应用层代理服务器要快得多。
  firefox代理设置HTTP代理、SOCKS代理和FTP代理等的区别:通常按照不同的用途选择不同的代理:浏览器用HTTP或SOCKS代理、下载软件用HTTP或SOCKS代理、上传软件用FTP或SOCKS代理、其他方面(聊天,MUD游戏等)一般用SOCKS代理。SOCKS代理使用范围很广,但SOCKS有SOCK4和SOCK5之分。其中SOCK4只支持TCP协议,SOCK5支持TCP和UDP协议,还支持身份验证、服务器端域名解释等。SOCK4能干的SOCK5都可以干,反过来就不行。我们常用的聊天软件(如QQ),起初就一直用的是UDP协议,所以只能用SOCK5的代理。

 

二、VPN代理原理介绍

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

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

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层及以下,因此不依赖与具体的应用,所以可以实现全局代理。

三、PAC代理

  一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理其或者直接访问。 当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。 浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自发现协议(Web Proxy Autodiscovery Protocol)自动配置的。

现代的浏览器实现了几个级别的自动化;用户可以选择最适合他们需要的级别。下面的这些方法被普遍的实现:
  • 手动代理配置:为所有的URLs规定一个主机名和端口作为代理。大多数浏览器允许用户规定一个域名的列表(例如 localhost),访问这个列表里面的域名的时候不通过代理服务器。
  • 代理自动配置(PAC):规定一个指向PAC文件的URL,这个文件中包括一个JavaScript函数来确定访问每个URL时所选用的合适代理。这个方法更加适合需要几个不同代理配置的笔记本用户,或者有很多不同代理服务器的复杂的企业级设置。这个就是我们在本文中所要讨论的。
  • 网络代理自发现协议(WPAD): 浏览器通过DHCP和DNS的查询来搜索PAC文件的位置。