老斜两宗事-七层代理模式还是IP层VPN
1.七层代理模式还是IP层VPN
非常多人会问,我究竟是使用代理模式呢,还是使用VPN模式,假设我想数据在中间不安全的链路上实现加密保护的话。
这个问题有一个背景。那就是,你想保护你的数据,能够使用VPN,可是有时候,第七层的代理模式或许更好。比方SSL卸载器。比方内置SSL处理的代理。分为正向代理和反向代理。
正向代理:代理的是訪问者。一般位于訪问者一端,訪问者能意识到代理的存在,直接訪问代理,由代理向server发起訪问。
反向代理:反向代理代理的是被訪问者。
位于被訪问者一端。訪问者意识不到代理的存在。訪问者訪问代理。由代理将请求重定向到真正的server。
且看上述差别的后半段,全然同样。这也是最easy引起迷惑的地方,可是我如今的解释不关注这些,假设单看TCP层以及IP层的訪问模式。会发现上述的正向代理和反向代理没有不论什么差别-你会发现TCP层和IP层的封包是一样,因此差别正是体现于第七层-重点是实际訪问client是否设置代理。体如今HTTP头。当我们已经屏蔽了第七层的差别后,仅仅看TCP层的訪问模型,你会发现一个事实,即无论是正向代理还是反向代理。在TCP看来都用同样的方式卡在了路径中央,client和代理建立TCP连接,代理和server建立TCP连接。
如今明确什么时候用代理什么时候用IP层VPN了吗?答案在于数据流的方向!
假设再深挖一下。假设数据流始终都是从你这里发起的。有一个代理声称能够替你完毕你要求的事务。还能够提供安全加密服务,未尝不可啊,假设还有一个代理对server声称。它能够汇集成千上万的client的訪问请求,那也行啊。可是代理对数据流的发起方向有要求。反过来就难了。对于服务端而言。它要主动发起一个到某个client的訪问,怎样使用代理,这意味着代理必须显式知道client的位置,而这差点儿是不可能。
此时须要一个新的方案,那是什么呢?那就是将整个反向的訪问流封装于一个正向建立的隧道内,这个隧道是长连接的。除非显式拆除。它会一直存在。
这是什么?这就是IPSec VPN。PP2P,L2TP。OpenVPN等三层以及三层下面的VPN。当然,使用三层以及三层VPN的代价就是你将不能处理全部的四层以上特别是七层的信息,比方你不能解析过境包的HTTP头(做这件事远远比你想的困难。首先你要识别出这是一个TCP的HTTP数据包,或许仅仅是一个IP分片。你要实现重组。或许是一个乱序的TCP段,你要实现TCP的按序逻辑...更现实的。或许一个HTTP头会分在多个TCP段中,....人生苦短,为何如此折磨自己,使用安全代理吧)...
假设你能保证数据流都是从client主动发往服务端的。且你须要更细的基于七层信息的控制粒度,且百折不扣地使用TCP代理。
假设哪怕有一类从服务端反向的连接,或者存在诸如UDP等协议的数据流。请考虑IP层VPN。
我们能够看到,使用IP层VPN始终是一种备选方案。是这种。这是现实,也是趋势。
请看看FTP的现实吧,FTP存在反向的连接,可是依旧存在安全的FTP代理。假设你认为FTP不够复杂。那么请看看标准的信令/数据分离的SIP协议,市面上也有了非常多的能够处理SIP协议的安全代理,这些都不是IP层的VPN。终于,IP层VPN仅仅剩下了一块保留地。那就是保持多个物理位置分离的子网之间的虚拟专用性(安全连通性)。这块保留地才是真实的IP层VPN的领域,其实。非常多其他方面的使用IP层VPN技术进行单点接入的系统都是一种误用!
对于单点接入系统以及单点訪问系统,链路的加密仅仅是一个基本不能再主要的安全需求,很多其他的訪问控制,接入控制。AAA等非常难集成在IP层VPN以内,即便OpenVPN提供了强大的push机制,client也是能够拒绝不论什么push reply的。
2.大便骑沟便沟内
这是什么含义?
还记得曾经那种中央一条沟的厕所吗?在沟的一端墙壁上面有一个水箱。一拉绳子。水就冲下来,一冲一条沟。例如以下图所看到的:
请看错误的方式。尿不会落在大便池中。而是会洒在蹲位上,有时,假设角度没对准。大便也不会落在池中,而是会落在蹲位的还有一边,这会引起连锁反应,后来的人仅仅能採用蹲在同一边的错误方式,由于便池的还有一边有屎..于是我们的宿舍管理员李大爷再也忍不住了,用毛笔在宣纸上写下赫然几个大字。张贴于男厕所的墙壁上。上面写着“大便骑沟便沟内”。是的。书法手笔不错...
老斜两宗事-七层代理模式还是IP层VPN的更多相关文章
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
- TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系 (转载)
首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层.但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生. 1,MTU( ...
- 原 TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层.但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生. 1,MTU( ...
- 结构型模式(七) 代理模式(Proxy)
一.动机(Motivate) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者.或者系统结构带来很多麻烦.如何在不 ...
- OSI 七层模型和 TCP/IP 四层模型 及 相关网络协议
简介 OSI 是理论上的模型,也就是一个统一的国际标准,现在的很多网络设备或者是网络协议都不同程度的精简了自己的所谓的模型,那么他们为了自己的通讯兼容都会参考这个OSI模型 TCP/IP 包括: TC ...
- Java设计模式 之 代理模式
所谓的代理模式就是为其它类或对象提供一个代理以控制对这个对象的访问.那么常见的代理有远程代理,虚拟代理,保护代理,智能代理. 1. 远程代理:为一个不同地址空间的对象提供一个本地代理对象. 2. 虚拟 ...
- TCP/IP协议之IP层
TCP/IP协议的结构参见下图.有应用层,运输层,网络层,链路层. 但是如果更细化的话,其实还有几层没在这上面体现出来. 1 表示层:数据格式化,代码转换,加密. 没有协议 2 会话层:解除或者建立与 ...
- 【趣味设计模式系列】之【代理模式2--JDK动态代理源码解析】
1. 图解 上图主要描述了JDK动态代理的执行过程,下面做详细分析. 2. Proxy源码分析 上一篇,在使用JDK动态代理的时候,借助于Proxy类,使用newProxyInstance静态方法,创 ...
- Java设计模式之(五)——代理模式
1.什么是代理模式 Provide a surrogate or placeholder for another object to control access to it. Proxy Patte ...
随机推荐
- Qt 技巧:去除对话框边框 + 设置窗口可移动和透明
1.去除对话框标题栏和边框 在构造函数里设置: this->setWindowFlags(Qt::FramelessWindowHint); Qt::Dialog (按照对话框的形 ...
- Java学习之自定义异常
1 package com.gh; import java.util.Scanner; /** * 自定义异常 * @author ganhang * */ public class Exceptio ...
- Pick-up sticks(判断两直线相交)
Pick-up sticks Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11335 Accepted: 4250 D ...
- 解决warning: incompatible implicit declaration of built-in function 'malloc'
因为代码中使用了malloc函数和字符串函数.编译时出现错误 warning: incompatible implicit declaration of built-in function 'mall ...
- [置顶] android AIDL 进程间通信
1.定义aidl文件 a.ITestService.aidl package com.open.aidl.service; import com.open.aidl.service.ITestServ ...
- Apple Swift 中文教程 高速參考 基本的语法
总的来说.语法有java的味道,也有python的味道,还有swift自己的味道. 有些语法还是挺不伦不类的,不太好理解,即使你有几年的java或python经验,也不见得有些语法你能非常轻松的看明确 ...
- javascript得知 - js的Date对象函数
js的Date功能很强大.通常使用. 首先获得当前的日期: var CurDate = new Date(); var Year = CurDate.getFullYear(); //年份(四位 例: ...
- Flask web开发 处理Ajax请求
本文介绍如何处理ajax请求, 一.处理ajax的post请求 举例一: js代码举例如下: var id = obj.parentNode.parentNode.id; $.post("/ ...
- c#语法与c++ 及 java语法的对比分析
早期开发的时候一直用c/c++,后来主要用的是java.最近需要用下c#. 熟悉了下c#,发现c#语言在对c/c++基础上做了很多简化,同时参考了很多java的语法习惯,本来在语法上c/c++就有很多 ...
- 一个RPC的demo
从下面的例子中可以看到,Consumer(client)的代码中引用了Provider部分的class,本例中是 com.provider.EchoServiceImpl和com.provider.E ...