« 修正Quicksilver的Trigger"无法保存"问题 | Main | 五毛的末日 »

"原理小解"读后感

作者:virushuo 发表于 2010-03-15 11:03 最后更新于 2010-03-15 11:03
版权声明:按照by-nc-sa的cc协议可转载,拒绝采用“独家” 授权媒介(含网站和平面媒体)转载、引用、链接,除非获得本人许可。转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。


强烈推荐阅读youxu这篇原理分析的文章,写得相当好懂,读的过程中解答了我两个疑问,读完想明白了,写这里做笔记了。

一 墙是不是经过简单升级就可以对付西厢

西厢其实并没有对墙做任何事,只是巧妙的利用了TCP协议的规则。正如墙利用了三次握手的不校验这个特点(这不是漏洞,而是特点)强行插入reset包一样,西厢也利用了这个特点,让客户端和服务器发送出了墙希望看到的数据包。这里的强大之处在于,一切都是在规则之内的。所以说,如果我们从更高的角度看来,墙和西厢是一种东西,TCP协议如果进行了校验,那就不会有西厢,同样也不会有墙。如果没有墙,也不会有西厢这种用法。

二 墙能用什么办法来对付西厢

TCP协议的三次握手而不校验,留下了可以被强行插入包这个弱点,产生了墙。这个地方这样处理的原因主要是为了性能。TCP是一种高性能协议,所以必须以信任为基础,不能做太多的干涉,否则性能就会大大下降。所以我们目前采用的TCP协议都不对包做什么校验。如前面所说,西厢同样利用了这个特点来获得所需要的数据包。墙如果想知道那些连接是真的断开,哪些是被西厢模拟断开,就必须维护连接状态,进行深度包检测。这样一来效率就会大大下降。众所周知,如果一个系统中存在一个点,可以令系统性能大大下降,会出现什么结果

三 其他系统是否有移植机会

从现在的情况看来,代码并不复杂。整个系统的难度其实在于对TCP协议的深入了解,对墙工作原理的深入了解。这些部分完成之后,原理并不复杂。

可以把目前的alpha版本看作一份用代码写成的论文,其中是详细的论证过程。从代码的wiki看来,原作者据说不继续开发了,不过没关系,论文写完了,其实也就不需要他们那么nb的人来写产品了。您总不指望着科学家来做产品吧?

至于最终的产品,就期待别人了。熟悉网络开发的人,估计很快就可以写出来各种版本了。期待。

不知道我说的对不对,欢迎大家讨论。

相关文章:
blog comments powered by Disqus
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2