网络-网关、代理、隧道异同
本文最后更新于:2021年1月25日 下午
代理 Proxy
代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接
一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击
代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不改变请求URI
,并不会直接发送给前方持有资源的目标服务器
持有资源实体的服务器被称为源服务器。从源服务器返回的响应经过代理服务器后再传给客户端
作用
- 提高访问速度
通常代理服务器都设置一个较大的缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度 - 控制对内部资源的访问
如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务 - 过滤内容
例如限制对特定计算机的访问,将一种语言的数据翻译成另一种语言,或是防御代理服务器两边的攻击性访问 - 隐藏真实IP
上网者也可以通过代理服务器隐藏自己的IP,免受攻击。但是只一个代理很难保证安全,更安全的方法是利用特定的工具创建代理链(如:Tor) - 突破自身IP访问限制
- 突破内容过滤机制限制,访问被过滤网站
如防火长城对中国境内互联网访问的限制可透过使用代理服务器浏览而突破。但是每到国庆、两会等敏感时期,防火长城的封锁力度会大大加强,大多数代理服务器和代理软件都会无法连接
代理服务器的特点:
- 通信协议一致
客户端与代理服务器使用的通讯协议,代理服务器与服务器使用的通讯协议是一致的 - 解析重发
客户端/服务器 发送给代理服务器的 请求/响应 都会被代理服务器解析,重新封装后再发送给对方
网关 Gateway
网关(英语:Gateway)是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关
区别于路由器(由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器(英语:Router)称为网关,在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP),经常在家庭中或者小型企业网络中使用,用于连接局域网和互联网
网关也经常指把一种协议转成另一种协议的设备
在现代网络术语中,网关(gateway)与路由器(router)的定义不同。网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关(IP gateway)
对于以太网中的网关只能转发三层以上数据包,这一点和路由是一样的。而不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发
网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用户
网关特点:
- 屏蔽
客户端不知道真正的服务器是谁,服务器也不知道客户端是什么样的 - 通信协议不一致
客户端同代理服务器,代理服务器同服务器,这两者之间使用的通讯协议或者协议的版本是不一样的 - 解析+协议转换
代理服务器会对接收的请求进行解析,转换协议后再发送给服务器;在服务器响应后,对响应进行解析,转换协议后再发送给客户端
隧道协议 Tunneling Protocol
隧道协议(英语:Tunneling Protocol)是一种网络协议
使用一种网络协议(发送协议),将另一个不同的网络协议,封装在负载部分
使用隧道的原因是在不兼容的网络上传输数据,或在不安全网络上提供一个安全路径
隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序
隧道协议通常(但并非总是)在一个比负载协议还高的层级,或同一层
隧道本身不会去解析请求
请求保持原样中转给之后的服务器。隧道本身是透明的,客户端不用在意隧道的存在
常见隧道协议
- TLS
- SSH
- SOCKS
- IPsec
- 一般路由封装(GRE),支持多种网络层协议和多路技术
- L2TP(资料链接层隧道协议)
- PPTP(点对点隧道协议)
- PPPoE(基于以太网的点对点隧道)
- PPPoA(基于ATM的点对点隧道)
作用
规避防火墙
一个被防火墙阻挡的协议可被包在另一个没被防火墙阻挡的协议里,如HTTP
如果防火墙并没有排除此种包装,这技巧可用来逃避防火墙政策
隧道可按要求创建起一条与其他服务器的通信线路,届时使用 SSL
等加密手段进行通信
加密网络流量
将明文网络流量加密以在互联网上安全地传输
隧道的特点:
- 该协议是为承载协议自身以外的流量而编写的协议
- 允许数据从一个网络移动到另一个网络
- 只关心流量的传输,不对承载的流量进行解析
对比
代理 | 网关 | 隧道 | |
---|---|---|---|
服务器客户端相互知晓 | True/False | False | True |
解析数据 | True | True | False |
协议一致 | True | False | True |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!