| 作者:佚名 电脑知识来源:本站原创 点击数: 更新时间:2008-1-5 |
|
最近我们这的垃圾网通,在插了一年的广告之后,终于开始封路由了。 其实这并不难理解,在神奇的中国,是什么事情都可能发生的!!! 与其他人不同的是,我自己写的那个反网通插广告的软件,已经平稳地在我机器上运行,所以目前我比其他人少忍受了流氓广告的骚扰。
下面切入正题: 最近经常发现,在打开某个新网站的时候,IE立即显示该页无法显示,然后刷新一次网页,就可以正常显示了。 通常如果网站无法连接,IE建立tcp连接会超时,要过一会儿才能看到该页无法显示的提示。
这是怎么回事呢? 开始怀疑是我的SPI过滤广告的程序出错,导致SOCKET阻塞,没有返回。后来排查了源码,发现没有问题,卸载了之后情况依旧,不是这里。 再看网上的介绍,我怀疑是自己的TCP协议出问题了,于是执行命令,重载了TCP协议。重启后,发现还是没有解决。不对。
所以鄙人决定抓包分析。(Sinffer Pro 4.7) 开始抓包,随便访问了一个出现过这种情况的网站,果然出现了该页无法显示的提示。
ok,下面我们看看抓包的结果吧。(图1)
这是标准的建立TCP三次握手的过程,有什么错误么?没有吧。。。不过,等等!!! 第二次握手,从服务器返回的数据报,里面的ISN(服务器的初始序列号),怎么这么奇怪呢? 为什么是1?正常的服务器的初始序列号一般来说不会是1的,这种情况基本是千载难逢的。 先不管,总之我们的TCP协议栈发了一个ACK=2的应答给服务器,TCP三次握手成功。
再看图2,怎么回事呢?在我们发送了GET后,怎么又来了一个代表TCP第二次握手的数据报?
我们这次就明白了,原来刚才收到的第二次握手的数据报,是伪造的。它给出了错误的ISN,导致我们用错误的ISN跟服务器建立了TCP连接。 当然了,真正的服务器是不能接收一个错误的序列号的,所以后面,你的连接就被服务器复位了。
详细的,请看Sniffer的抓包分析吧。
至于网通是怎么判断我在使用路由的,我也说不太好。 估计是用了几个联合的特征来判断的。 我一台机器用路由上网,有时候也会被封杀。当然2台机器上网,情况更严重了。
|
| | |