"原理小解"读后感
版权声明:按照by-nc-sa的cc协议可转载,拒绝采用“独家” 授权媒介(含网站和平面媒体)转载、引用、链接,除非获得本人许可。转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://blog.devep.net/virushuo/2010/03/15/post_71.html
强烈推荐阅读youxu这篇原理分析的文章,写得相当好懂,读的过程中解答了我两个疑问,读完想明白了,写这里做笔记了。
一 墙是不是经过简单升级就可以对付西厢
西厢其实并没有对墙做任何事,只是巧妙的利用了TCP协议的规则。正如墙利用了三次握手的不校验这个特点(这不是漏洞,而是特点)强行插入reset包一样,西厢也利用了这个特点,让客户端和服务器发送出了墙希望看到的数据包。这里的强大之处在于,一切都是在规则之内的。所以说,如果我们从更高的角度看来,墙和西厢是一种东西,TCP协议如果进行了校验,那就不会有西厢,同样也不会有墙。如果没有墙,也不会有西厢这种用法。
二 墙能用什么办法来对付西厢
TCP协议的三次握手而不校验,留下了可以被强行插入包这个弱点,产生了墙。这个地方这样处理的原因主要是为了性能。TCP是一种高性能协议,所以必须以信任为基础,不能做太多的干涉,否则性能就会大大下降。所以我们目前采用的TCP协议都不对包做什么校验。如前面所说,西厢同样利用了这个特点来获得所需要的数据包。墙如果想知道那些连接是真的断开,哪些是被西厢模拟断开,就必须维护连接状态,进行深度包检测。这样一来效率就会大大下降。众所周知,如果一个系统中存在一个点,可以令系统性能大大下降,会出现什么结果
三 其他系统是否有移植机会
从现在的情况看来,代码并不复杂。整个系统的难度其实在于对TCP协议的深入了解,对墙工作原理的深入了解。这些部分完成之后,原理并不复杂。
可以把目前的alpha版本看作一份用代码写成的论文,其中是详细的论证过程。从代码的wiki看来,原作者据说不继续开发了,不过没关系,论文写完了,其实也就不需要他们那么nb的人来写产品了。您总不指望着科学家来做产品吧?
至于最终的产品,就期待别人了。熟悉网络开发的人,估计很快就可以写出来各种版本了。期待。
不知道我说的对不对,欢迎大家讨论。






