2008年10月12日星期日

IIS日志 200 0 64 状态的分析

前段时间,一些百度的密切关注者纷纷撰文,大谈IIS日志 200 0 64 状态乃百度封站“拨毛”之征兆。樂思蜀在此谈谈个人看法,供参考。

目前,对于 200 0 64 的观点大致分为以下几种:

  1. 会话故障,请求不可到达,并非百度封站征兆

  2. 百度封站、“拨毛”或放入沙盒

  3. 64位操作系统


樂思蜀参考了大量相关文章,虽未得出最终结论,但觉得第一种观点最合理,现分析如下。

首先来看 200 0 64 状态码的构成

200 0 64:sc-status(协议状态) sc-substatus(协议子状态) sc-win32-status(Win32状态码)

sc-status(协议状态):200 连接成功

sc-win32-status(Win32状态码):64 指定的网络名不再可用

假设请求过程

我们不妨来假设一下请求的过程:客户端向服务端发送访问请求 -> 服务端响应请求,资源存在,请求成功,发送资源(sc-status 200) -> 客户端等待所请求的资源 -> TIME_WAIT/CLOSE_WAIT -> 客户端断开连接,发送Win32状态(sc-win32-status 64)

这个假设是否成立,核心在于证实请求过程中 TIME_WAIT/CLOSE_WAIT 的存在。

支持假设的依据

1、假设的请求中 200 0 64 状态码分析:在服务端与客户端通话的过程中,因请求的资源存在,并由服务端正常发送,故sc-status为200;客户端并未正确的收到资源,返回 sc-win32-status 为64;服务器记录会话状态 200 0 64。

2、据网上资料及手中IIS日志分析结果,状态 200 0 64 的请求,其发送数据一般为0或极小的字节数,而接收的字节数一般大于发送字节数;也可以这样理解,客户端请求的数据大于服务端发送的数据。这一点也可证实上一点的说法。

3、分析结果显示,并非仅百度蜘蛛(Baiduspider)的请求出现 200 0 64,出现 200 0 64 状态的网站用户访问也同样存在。

补充

参考相关资料时,很多提问者都提到,服务器存在这样的情况,其中有无关联望高手解答:

  • 服务器中同时存在IIS和Apache

  • IIS经常无故重启

  • 服务器CPU使用经常100%


综上所述,个人认为 200 0 64 可能仅是请求失败,并不表示与百度封站有着必然的联系。

这个问题还未得出最终结果,望对此有了解的朋友留言提供建议或意见,谢谢!

附:在国外论坛看到的一段解释
sc-win32-status of 64 means "The specified network name is no longer available". It usually occurs when the client reset the connection after getting the last packet rather than doing a graceful close of the connection. In client server architecture after IIS has sent final response to client typically it waits for ACK message form client. Now certain clients instead of sending final ACK back to server, resets the connections which are not and graceful connection close and hence IIS logs “64” in IIS logs. Many clients will reset the connection when they are done with it, to free up the socket instead of leaving it in TIME_WAIT/CLOSE_WAIT. Proxies tend to do it more than others do, hence win 32 status code of 64 should be reviewed only if necessary.

15 条评论:

边崖 说...

你好,首先谢谢乐大对于我提出的问题的回答!
我在点石问你问题的时候,已经把我对这几种说法不赞同的原因些出来了。
其实我对于这个问题有个自己的看法。0和64会同时出现在一个网站中间。而我对我自己的几个站的观察都是旧页面一般都是64,而新的页面一般都是0返回,我假设是蜘蛛在抓取的时候,对未出现更新的页面打开而不抓取字节数。从而形成64.对于新页面是打开并抓取,形成0。关于这样猜想我正在试验中
当然,我还想到饿缓存上面去了。我们的计算机不是都有个脱机浏览吗?蜘蛛作为模拟人的访问者。是不是也存在这种缓存的机制。从而打开同一个页面的时候。在缓存没有清除的时候也会去优先使用缓存页面!这个猜想我目前还没有想到试验的方法。
不知道老大对这个同意不?
还有,有个不情之请,我一直是用我朋友的号在上点石,没有点石的号。乐大作为管理员,能不能给我开个号啊
谢谢!做se有一年半了。没点石号。感觉很寒~

青岛SEO 说...

樂思蜀大哥好专业啊,认真的看了,比较模糊的能看懂
谢谢

朱小暖 说...

和一楼一样 惭愧
学seo晚了 连进去的门路都没了
其实建议每年开放两天 或则一天的
貌似很多新人 有点残酷

朱小暖 说...

点石 不用 账号能看的 帖子 都仔细的看过的

yxcwgc 说...

一楼说的现象应该是304

lilley 说...

我也分析过日志信息,统计数据表明是:百度封站、“拨毛”或放入沙盒

中国核心期刊网 说...

IIS日志里状态为 200 0 64出现的原因,经过我对其他网友观点和分析和对我自己服务器日志的分析,现得出结论,而且个人觉得这个结论将是终结版。

首先,200状态,大家都很清楚,只有浏览器发出请求到收到完整请求时,才会是200状态,这证明此次请求无程序和网络错误。

其次,至于64出现的原因,过程是这样的(首先要想到:客户端浏览器具有缓存,各搜索引擎爬虫拥有快照): 客户端发起请求,服务器正常影响产生并记录200状态,客户端收到服务器返回数据后,进行了自身的操作(如,浏览器会依据缓存,判断是否从缓存妈数据还是重新下载,搜索引擎依据自己的标准判断该页面是否需要更新快照),然后,当得到当前数据不需要重新下载后,就主动断开与服务器的此次对话,这时服务器就将标注为64状态(大家知道,64代表指定的网络名不再可用),整个过程就是这样,所以对那些妄言说,64代表被K或者其它言论的人来说,不再要继续误导网友哦。如果想解决这个问题,那就是更新。

转发此文章请注明:文章来源(中国核心期刊网 qikanw.org 技术)

默默 说...

"200 0 64 可能仅是请求失败,并不表示与百度封站有着必然的联系。"
同意此句话,我刚看了下LOG,也出现了200 0 64 但是收录正常,而且没有降权的迹象

小邪 说...

看了楼上这么多位的分析,我还是没弄懂200 0 64 的意思~!大家是不是服务器在这几个月内有换过IP呢?

换过IP的话,因为服务器缓存的问题也有可能出先这个情况,我现在看我整个服务器都是这样的情况,查了我肉鸡服务器也都是以上情况,而且我知道的都是在一个月内换过IP的~!

顺便俺也找楼主要个点石的号号~!如果可以发到我的邮箱xiaochong_58@163.com 感谢~!

双色球 说...

还是没弄懂200 0 64 的意思,我的网站也出现了这样的问题,开始的时候是出现304 0 0,后面一个成了200 0 64 了,不知道现在何解,既然你08年就发现了这个问题,想必现在早就解决了,还望你再分享一二

中老年人保健品 说...

今天看日志发现302错误,就有顺带搜索了下200 0 64 感谢博主提供的知识 这里又学到东西

海西互联 说...

同一天同一时间
http://www.google.com/bot.html) 200 0 0
http://www.baidu.com/search/spider.htm) 200 0 64

怎么解释

西安SEO 说...

不错,够想尽,多谢各位分享了~~~辛苦了~~~

shaiyue 说...

服务器开启了gzip引起,关闭就好了

阅微草堂 说...

个人认为 200 0 64 应该就是请求成功,访问失败,几乎没有下载到页面的任何数据!