作者 杰夫 | 2010-01-20 17:00 | 类型 弯曲推荐, 行业动感 |
32条用户评论 »
大家知道,互联网的基本协议是TCP/IP,后来有了HTTP,才带来了web,使互联网进入千家万户,成为大家生活中不可或缺的一部分。HTTP自上世纪90年代问世以来,已有二十年的历史,期间互联网本身发生了很大的变化,也使得HTTP的许多不足暴露了出来,现在它已经不能满足许多web app的要求。两个月前,谷歌启动了一个工程,叫做SPDY项目(发音是speedy),目的是要改善HTTP的性能,使用户下载网页更加快速。之所以要改动HTTP而不是TCP/IP,是因为改变HTTP只需更新Browser和web server就行了,而改动TCP/IP就困难多了,牵扯面太广,需要更新巨量的路由器,服务器和客户端的操作系统。
如上图所示,SPDY介于HTTP和TCP之间,处于Session layer,其下面还强制使用SSL,增强数据安全性。谷歌的Chrome浏览器已经开始支持SPDY协议,在其地址框中键入spdy://www.google.com就可以用SPDY协议而不是HTTP来访问谷歌的网站。谷歌自己的实验结果表明,使用SPDY协议,网页显示速度可以提高50%。SPDY主要针对HTTP以下不足进行了改进。
- Single request per connection. 由于每次只能发一个request,含有许多文件的网页就会很慢。目前浏览器的办法是同一页面开多个connection,最多是6个。SPDY允许在一个TCP connection上同时发多个request。
- 只有client才能initiate request,server端不可以,哪怕是server有文件要发到client。
- HTTP header没有压缩。由于使用cookies,现在的HTTP header变得越来越大,典型长度是700-800字节,可能会长达2K,占用了大量的带宽。SPDY对HTTPheader进行了压缩。
- HTTP的数据包的压缩是可选项。SPDY压缩所有数据。
SPDY还会带来一个巨大的副作用,但谷歌的网页中却只字未提。由于SPDY使用了SSL和数据压缩,那么网站封锁工具,例如什么防火长城呀,什么盾呀等等,将无法识别其数据内容,也就无法进行过滤。这可能是SPDY设计者的一个重要目的,但出于某种原因,他们没说出来。不知道,SPDY会不会因此在一些国家被禁用。
SPDY目前还处于测试阶段,有兴趣的读者可以访问下面谷歌网页进一步阅读。
http://dev.chromium.org/spdy
|
| |
雁过留声
有两个技术描述小弟不赞同
1.“而改动TCP就困难多了,需要更新巨量的路由器。”,路由器基于IP层转发,改不改TCP没有影响。
2.“Single request per connection”这是早期HTTP0.9,1.0的limitation了,现在都用的1.1,已经支持了http pipeline以及persistent connection.因此这一点对于HTTP不是问题。
这个东西现在看起来主要的优点在于压缩。
第一点正确,应该是主要更改客户端OS。
第二点,http1.1支持pipeline,但没解决根本问题,还是用FIFO queue。
还有,SPDY不光是压缩,更重要的是,还有加密。
我的印象是“persistent connection”是FIFO的方式。“pipeline”是可以同时发出多个request而不必串行等待response,这个我们可以查一下协议文档。
1.“而改动TCP就困难多了,需要更新巨量的路由器。”,路由器基于IP层转发,改不改TCP没有影响。
改动TCP有向下兼容的问题,很多路由器都有TCP/IP的stack,比如BGP的应用。
同时很多路由器都有L4及以上的服务模块。
>>我的印象是“persistent connection”是FIFO的方式。“pipeline”是可以同时发出多个request而不必串行等待response,这个我们可以查一下协议文档。
目前没什么web server支持pipeline
keep-alive主要是重用一下链接而已
杰夫兄,我又想了一下,pipeline虽然可以不用等待response就发送request,但是本质还是串行的。究其原因就是http transation之中没有call id的概念。因此google的东东可能是在其中增加了id,这样可以完全解决FIFO的问题。
1)听起来像是滑动窗口,只不过这里不是byte,而是一个request
2)加密是SSL做,还是spdy做?
3)用ipcomp是不是也可以?
4)server也需要重写啊,这个协议是不是开放的?
好文章学习之。
前两项改进真正戳到了http的痒处
加密是SSL做的,不过SPDY强制要求SSL。
IPComp是可以做压缩,不过在IP层做,推广难度可能要大些。
Server端也要加支持SPDY的模块。SPDY是Open source,文中给出的谷歌网页就可以下载源码。
还有,SPDY压缩用的是gzip算法。
从翻墙上讲有些言过其实了吧,SPDY的作用和SSL的作用差不多。只是不能关键字过滤了。IP屏蔽、DNS污染照样搞。
应该说现在关键字过滤也主要是过滤HTTP Header,Content多半是压缩的,不好过滤的。
搞成私有协议还差不多,估计很难得到大众的认可。
指望firefox,IE支持?指望Apache Server支持?
这个要CS两个端都支持才行的。
如果能爬墙,则被X是必然的……
0.默认ssl,其实和https没什么区别吧
1.异步单连接还没同步多连接速度快吧,不过对服务器端比较省资源
2.不太明白,传统http也是只client能发出请求
3.有一定作用,节省大量带宽谈不上
4.压缩可选也有可选的好处,压缩也是要消耗服务器CPU的
13楼太低估墙的能力了,gzip之类的压缩,墙会解压再过滤关键词。。
真搞笑,直接封你的SPDY协议就不得了
墙都直接封IP,什么加密都白扯。
封IP是最暴力也损失最大的一种。无论攻方还是守方,精细化已经是趋势。
封IP最实在,Youtube就是开始先搞的DNS绑架,后来被人反破了,FW就直接封IP了。
最新版的Chrome和Chromium都还不支持spdy,输入spdy://www.google.com会转到搜索。支持spdy的Chrome源代码在 http://src.chromium.org/viewvc/chrome/trunk/src/net/flip/ ,但是我不知道怎么编译
P2P. SKYPE这些作了这么多加密和反识别的软件都照样过滤,这个过滤起来就是小菜。
国际出口做过滤和企业网的显然不是一个量级。
这个文章用的中文网址啊……不会有问题吗?
这个如果要推广,是不是还要开发配套的webserver呀?前端开发人员是不是需要重新学习一套spdy的开发方法啊?
不知道这是不是推广的一大阻力。
写的非常好,不过似乎只有最新版的谷歌浏览器支持吧。另外我们做个友情链接好吗?/轩辕网
HTTPS不也完全能满足要求
要是出国网关把所有的spdy协议请求全封锁了就没辙了, 毕竟现在这个协议只有google自个儿在搞, 封了也没啥影响
skywalker: 需要做友情链接的话,请Email联系:jiefu@tektalk.cn
其实有个更好的办法:
协议不改,浏览器用javascript解密,随便搞两下就OK,如果把输出内容伪装成图片,就更容易瞒天过海了。
当然,不怕贼偷就怕贼惦记,这一招只能解决偶发的关键字问题,被人肉盯上了什么也白瞎。
To 30#,
用javascript加密,然后在对端解密?标准的浏览器能行吗? 如果标准的浏览器能行,G – F -W也行。
此法只能保证网站伪装成一个普通的,没啥敏那个感那个词的网站,很难被贼盯上,如果被贼盯上了那就什么协议也没戏了。