Archive for 03月, 2008

28
Mar

1. 不说“不可能”三个字。
2. 凡事第一反应:找方法,而不是找借口。
3. 遇到挫折对自己大声说:太棒了!
4. 不说消极的话,不落入消极情绪,一旦出现立即正面处理。
5. 凡事先订立目标,并且尽量制作“梦想版”
6. 凡事预先作计划,尽量将目标视觉化
7. 工作时间。每一分,每一秒都做有利于生产的事情。
8. 随时用零碎的时间(如等人、排队等)做零碎的事情。
9. 守时。
10. 写下来,不要太依靠脑袋记忆。
11. 随时记录灵感。
12. 把重要的观念,方法写下来,并贴起来,以随时提示自己。
13. 走路比平时快30%,走路时脚尖稍用力推进,肢体语言健康有力,不懒散,萎靡。
14. 每天出门照镜子,给自己一个自信的微笑。
15. 每天自我反省一次。
16. 每天坚持一次运动。
17. 听心跳一分钟,指在做重要事情前,疲劳时,心情烦躁时,紧张时。
18. 开会坐在前排。
19. 微笑。
20. 用心倾听,不打断对方说话。
21. 说话时声音有力。感觉自己声音似乎能产生有感染力的磁场。
22. 说话之前,先考虑一下对方的感受。
23. 每天有意识,真诚地赞美别人三次以上。
24. 及时写感谢卡,哪怕是用便笺写。
25. 不用训斥,指责的口吻跟别人说话。
26. 控制住不要让自己做出为自己辩护的第一反应。
27. 每天做一件“分外事”。
28. 不管任何方面,每天必须至少做一次“进步一点点”。
29. 每天提前15分钟上班,推迟30分钟下班。
30. 每天在下班前用5分钟的时间做一天的整理工作。
31. 定期存钱。
32. 节俭。
33. 时常运用“头脑风暴”。
34. 恪守诚信,说到做到。

27
Mar

2008百度更新周期时间规律

Author: 比比巴儿

2008年1月份对于baidu优化的站长们来说,无疑是黑色1月。由于百度大更新,K掉拔毛了一批网站。这自然跟baidu算法调整有关,但在百度更新时间进行网站调整,也让很多站长们吃了亏。亏就亏在不了解百度更新的规律,于是无数站长都在关注 百度更新 百度更新网页 百度怎么更新 百度多长时间更新的问题,《2008百度更新周期时间》这篇文章就讲述了如何把握百度更新周期,从而规避网站博客百度seo的风险。

作为一个合格的站长,知道搜索引擎的更新时间和频率是应该的.也是应该具备的一种基本素质.百度作为搜索老大,可以说是万千站长都*着他,尽管站长们经常开骂.但是还要不得不千方百计的想把自己的站排在前面.今天不谈什么高深的技术问题.跟大家聊一聊百度引擎更新的频率和周期.以一星期为单位进行. 您看到的文章源自活动目录seo http://gnaw0725.blogbus.com/c1507212/

星期一
早上起来,或者应该说是中午起来.看一下排名.或许有些很小的变化.不用在意.最好在这一天的时候.换点链接,加点文章.
这一天应该说是更新文章(以增加收录为目的)最好的时间.因为如果好点的文章.两天收录足够了.
星期二
没更新文章的.尽快更新一下.别让蜘蛛来了没的吃.因为明天会有点小更新.会不会上升或者下降.很难说.但是一般情况下收录多了.排名也容易小小上升一下.long long ago 百度是每周星期二更新的.相信多数人都知道…

星期三
或许你起的比较早,也或许你没睡觉.因为今天会有小更新.无论你的排名升了,或者降了.都不要伤心或者兴奋.因为今天的更新是”不太准确”的.举个例子:估计你也见过不少类似的.星期三的更新经常是比较混乱的.经常是无故出与些乱七八糟的排名.举两个例子.20多天以前,星期三的更新.朋友作的”视频会议”这上词.排名第二名的竟然是个域名到期的站.快照,还是半年前的..打开之后.直接就是”该域名已经到期,点击这里进行续费”让很多人都感觉很是郁闷.都去抢注那个域名.

星期四
业作SEO的.这一天是最紧张的.因为一般情况下,这一天的更新就决定了这一周的排名.星期三的混乱结果.一般今天就会”修正”这一天的更新,有的时候变化会很大.如果你的排名掉的很历害.那你只能努力下个星期了.当然也不排除有些特殊情况的出现,会让N多人摸不着头脑您看到的文章源自活动目录seo http://gnaw0725.blogbus.com/c1507212/
星期五
基本可以轻松一下.星期四的结果一般不会变.或者极少会变.当然我说的只是大多数.可以去站长网看看文章.去群里吹吹牛X,去某某论坛看图片,下毛片.呵呵.但是最好还是更新下网站.

星期六
让不少人有点小担心的一天.因为这一天会有一次小更新,但不是星期三那种混乱局面.即使有变化也不会太大.可以把它看作是 星期四那天的小小补充吧.当然前提是你不要用一些作弊的招.

星期天
估计站长很少有星期天.又开始一周的忙活..更新网站.换链接.到站长网看文章..到点石学技术..到XX论坛看图片…

以上是一周的更新时间.每天的更新时间很多人都说是凌晨四点到五点.(很多站长也是习惯这个点看完更新再睡觉)
有细心点的朋友应该能发现.最稳定的更新.应该在早上九点以后.从长周期看.每个月会有两次相对比较大的更新.11号和26号/28号 多数人也都同意这种说法.

以上这些,是根据我和几个朋友这一个月来,通过十几个站,十几个关键词的排名变化得出的.应该还算合理.
之前也和不少朋友交流过.也比较认同.如有不同意见.欢迎留言.

另外再说一句老土的话:除非你是作垃圾站的.否则最好每天更新一下网站.作网站,坚持是一种美德!

24
Mar

网络真的好小~~

Author: 比比巴儿

累了一天啦,终于做到电脑前。习惯性的看了看网站的访问量,居然又创了新高,今天可是礼拜一啊,往日流量最小的一天。于是看了看看来路,原来是pconline论坛里的一篇文章提到了我的小a网站,带来100多个ip。紧接的居然是一个很熟悉的网站,打开一看是摩摩诘的博客,也是同一篇文章。自从离开yo2后就退了yo2群,再也没有见到大家了,今天居然他的博客给我带来不少ip,摩摩诘的博客现在做的已经非常不错了,论坛的广告还被阿里妈妈三包了,恭喜恭喜哦!博客做到这样真的挺不容易的,希望我的小a网站也能赶上摩摩诘,o(∩_∩)o…

18
Mar

什么是CGI

Author: 比比巴儿

1. 定义:
CGI(Common Gateway Interface)是HTTP服务器与你的或其它机器
上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。2. 功能:
绝大多数的CGI程序被用来解释处理杰自表单的输入信息,并在服
务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使
网页具有交互功能。

3. 运行环境:
CGI程序在UNIX操作系统上CERN或NCSA格式的服务器上运行。
在其它操作系统(如:windows NT及windows95等)的服务器上
也广泛地使用CGI程序,同时它也适用于各种类型机器。

4. CGI处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。

5. CGI服务器配置
CGI程序不是放在服务器上就能顺利运行,如果要想使其在服务器
上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进
行必要的设置。
配置:根据所使用的服务器类型以及它的设置把CGI程序放在某一
特定的目录中或使其带有特定的扩展名。
⑴CREN格式服务器的配置:
编辑CREN格式服务器的配置文件通常为/etc/httpd.conf/
在文件中加入:Exec cgi-bin/*/home/www/cgi-bin/*.exec
命令中出现的第一个参数cgi-bin/*指出了在URL中出现的目录
名字,并表示它出
现在系统主机后的第一个目录中,如:
http://edgar.stern.nyn.edu/cgi-bin/
命令中的第二个参数表示CGI程序目录放在系统中的真实路径。
CGI目录除了可以点网络文件放在同一目录中,也可以放在系统
的其它目录中,但必须保证在你的系统中也具有同样的目录。在
对服务器完成设置后,须重新启动服务器(除非HTTP服务器是用
inetd启动的)。
⑵NCSA格式服务器的配置
在NCSA格式服务器上有两种方法进行设置:
①在srm.conf文件(通常在conf目录下)中加入:
Script Alias/cgi-bin/cgi-bin/
Script Alias命令指出某一目录下的文件是可执行程序,且这
个命令是用来执行
这些程序的;此命令的两个参数与CERN格式服务器中的Exec命
令的参数的含意一样。
②在srm.conf文件加入:
Add type application/x-httpd-cgi.cgi
此命令表示在服务器上增加了一种新的文件类型,其后第一个
参数为CGI程序的MIME类型,第二个参数是文件的扩展名,表
示以这一扩展名为扩展名的文件是CGI程序。
在用上述方法之一设置服务器后,都得重新启动服务器(除非
HTTP服务器是用inetd启动的)。

6. CGI的编写语言
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和
环境变量。对初学者来说,最好选用易于归档和能有效表示大量数据
结构的语言,例如
UNIX环境中:
· Perl (Practical Extraction and Reporting Language)
· Bourne Shed或者Tcl (Tool Command Language)
Windows环境中:
· C和C++
由于Internet上大部分服务器使用的是UNIX操作系统,且几乎任
一UNIX操作系统中都有Bourne Shell,因而后面讲述的例子中大部
分是用Bourne Shell编写的。

7. CGI环境变量列表
用 好易环境变量探针 来查看CGI环境变量
SERVER-NAME:运行CGI序为机器名或IP地址。
SEUVER-INTERFACE:WWW服务器的类型,如:CERN型或NCSA型。
SERVER-PROTOCOL:通信协议,应当是HTTP/1.0。
SERVER-PORT:TCP端口,一般说来web端口是80。
HTTP-ACCEPT:HTTP定义的浏览器能够接受的数据类型。
HTTP-REFERER: 发送表单的文件URL。
(并非所有的浏览器都传送这一变量)
HTTP-USER-AGENT:发送表单的浏览器的有关信息。
GETWAY-INTERFACE:CGI程序的版本,在UNIX下为 CGI/1.1。
PATH-TRANSLATED: PATH-INFO中包含的实际路径名。
PATH-INFO:浏览器用GET方式发送数据时的附加路径。
SCRIPT-NAME: CGI程序的路径名。
QUERY-STRING:表单输入的数据,URL中间号后的内容。
REMOTE-NOST:发送程序的主机名,不能确定该值。
REMOTE-ADDR:发送程序的机器的IP地址。
REMOTE-USBR:发送程序的人名。
CONTENT-TYPE:POST发送,一般为applioation/xwww-form-urlencoded。
CONTENT-LENGTH:POST方法输入的数据的字节数。

18
Mar

病毒常用英语

Author: 比比巴儿

False Positive(FP):  误报 

Malware: malicious software 恶意软件

exclusion :排除

drive-by :通过

17
Mar

在老板眼里,什么样的人才是合格的?以下综合了几位经理的看法,归纳出职场人最忌讳的七个方面。  

      忌讳1:卷入人事斗争
危险指数:★★★★★
职场新人千万不要有试图跟哪个部门老板结成同盟的幼稚想法,公司的事情和秘密永远比你想像的还要复杂和深奥,在你成为某次斗争的牺牲品之前,你也许还浑然不觉。无论哪一家公司都是如此,干嘛不老老实实把自己那份工作做好,成为一个不倒翁呢?
忌讳2:眼里没活
危险指数:★★★★
办公室里大家都忙得热火朝天的时候,你却很清闲地逛来逛去,还满肚子抱怨无聊、没活可干。要知道很多公司是一个萝卜一个坑,不会把希望寄托在新人身上。而新人的活是自己找出来的,不是同事送上门来的。如果新人眼睛里既看不到活,嘴巴上又不会去问出活,那么来之不易的工作不久也会“得而复失”的。
忌讳3:眼高手低
危险指数:★★★★
这种情况在职场大学生中发生的概率比较高,相对来说职校生或大专生比例小一些。自以为自己是了不起的大学生,不是干粗活脏活的料,不是眼里没活,而是挑挑拣拣。比如需要搬一些东西,认为与自己无关而袖手旁观。还有就是不懂得珍惜别人的劳动成果,比如清洁工刚刚打扫完办公室,新人却很随意地往地上扔垃圾,就是不愿意举手之劳地扔进边上的垃圾筒,还理直气壮地说弄得干净了,清洁工就没事干了。
忌讳4:煲电话粥
危险指数:★★★★
不要在办公室里接打超过十分钟以上的私人电话。不仅是因为所谈内容与工作无关,次数多、时间长,造成不好影响,还因为你的谈话内容会传入别人的耳朵,得意时也许忘了形,音调提高,引来无数讶异的眼睛,调情时也许压低声音或改变语气,却更加逃不掉同事的猜疑和好奇。
忌讳5:打电脑游戏
危险指数:★★★
没活干的时候手就痒痒,就去打电脑游戏,以为活干完了,可以犒劳一下自己。但在老板看来,上班是来工作的,不是来玩的,员工整天埋头工作,才能让老板看到公司的希望。即使有同事在玩,新人也不能以此为借口放纵自己,不说你根基尚不稳,就说你的察眼观色能力也还没练到老同事的程度,不如老实一点,活干完后,帮帮别人,或者干脆拿本与业务相关的书籍看看。
忌讳6:说黄色笑话
危险指数:★★★
别自以为是,认为自己很能讲笑话,很有幽默感。你要明白这种爱好与幽默无关。也许你的老板也是个黄段子高手,那你也别试图与老板一决高低。虽然你把女同事逗得喜笑颜开,但她极有可能转过身去对自己说:“天那,这个家伙真无耻!连这种话都说得出来”。老板更不会因为你的黄段子比他强,而因此赏识你。
忌讳7:说话没重点
危险指数:★★★
也许你想引起老板的注意,但遗憾的是,几乎所有的老板都讨厌看见一个喋喋不休的,说话没有重点的罗嗦员工。记住,能用三分钟表达完的事情千万别说上三个小时,如果你是那种不讲话就会发疯的人,那就建议你先在家里对着墙壁大声说上一个小时,直到筋疲力尽,直到没有心情在办公室胡说八道的程度时再去上班。在职场上,用最短的句子把你的观点非常职业地表达出来。还有,在别人尤其是老板讲话时,别随便打断。

 

*********************************************************************************

忌讳8:垂头丧气
危险指数:★★★不要在老板面前提任何丧气的话,如果经过努力,这个产品不行,您可以给老板提出一些建设性意见,而不是在这个产品上说些没用的话。

13
Mar

刚刚把货放上去,100元的移动充值卡,价格99.不到两分钟就有人来找,问了价格后就拍了,然后让我充值,我说请您先付款,对方说你去看淘宝信箱啊,已经付款了。我打开一看的确有一封邮件。然后就问了号码,于是在eachnet充了。结果对方还让我充,我说您应该打款才对啊。对方说我拍了不止一件,我赶忙去打开邮件,发现里面写的是20件,晕倒!后来对方一直催,我也就越来越觉得可疑了,坚决不给对方充值。后来对方打电话缠了我半天发现没什么用,就再不理我了。这时才有空去淘宝的论坛看别人发的帖子,有一个卖家的情况和我的非常相似。我再次看了邮箱,才发现,那个有件事假冒的。都是因为太没有经验了,还好损失是可以承受的,这个教训很值的~~尤其是在开店的第一天。而且,后天就是3.15了。不为别的,更不想去鄙视这些无耻的骗子,只望自己记住这一天,记住这个教训,网店之路我依然会坚决的走下去。

**这是第三次网上损失了,第一次是QQ和工行绑定,被盗后损失了100.第二次是taobao购卡自动发货,被骗子骗去卡密。

第四次又会是什么呢?

6
Mar

    注意了,你开着迅雷,不管已下载列表框是否有文件(是否已经被你删除),迅雷都会自动发现可以上传的文件,并且上传.这也是为什么开着迅雷电脑总是啪啪作响,拖慢网速的原因之一。开始我认为是由于迅雷自己偷偷保留历史下载文件列表(C:\ProgramFiles\ThunderNetwork\ Thunder\Profiles\history.dat),所以从中发现可以上传的文件,后来我发现根本不是这样!

  history.dat这里面有你的下载记录,开始我估计是他上传的根据.后来我证实了我的估计是错误的.我把这文件删除了.重新启动.再开迅雷做监视,发现他仍然在偷偷上传我硬盘上的文件.我愤怒了!我不知道他怎么知道我的硬盘里面有那些可以上传的文件.我估计还有什么临时文件没有删除干净!但是我不知道是什么临时文件.这个我查明白了再写出来.我估计他并不是扫描我的整个硬盘.好了,下面教你如何“怒看”.

  1,首先去微软官方网站去下载ProcessMonitor这个进程监视器:

  http://technet.microsoft.com/zh-cn/sysinternals/bb896645(en-us).aspx

  2,下载网络流量检测软件

  ByteOmeterhttp://www.byteometer.com/

  3,打开迅雷5,打开ByteOmeter,打开ProcessMonitor(我用的汉化版),点击“过滤器”->”过滤器”->选择”进程名”->“是”->thunder5.exe->增加然后就等着吧,你可以选择自动滚动.

  4,1分钟后,你就会看到下面的图的内容:第一个图你能看到他在上传我d盘下的风色幻想游戏,和一个电影,还有vs2008第二个图你能看到他每秒钟打开关闭你的文件多次,为什么这么做?因为他怕锁定文件句柄然后被用户发现.没别的.不多说了.

2008/2/15后记迅雷很阴险地把所有的你以前下载过的文件都存储到了系统盘下的Windows\system32\cid_store.dat里面.

  这样你每一次启动迅雷之后,立刻他就会从这个数据库里面读取内容,然后上传.

  你只需要在桌面建立一个批处理d.bat(建立方法是用记事本另存为)里面写上一句话,delc:\windows\system32\cid_store.dat(c:要替换成系统盘盘符)

  记得每一次用完迅雷,运行一下这个就可以了.目的就是自动删除该数据库.记住,删除这个没有性能影响.

  尽管如此,我发现迅雷在没有cid_store.dat的时候仍然每1秒钟疯狂下载一次广告,我不明白他为什么每隔一秒下一次!所以用完关了最好.

5
Mar

eMule协议简要分析[三]

Author: 比比巴儿

客户端服务器TCP连接

每个客户端用TCP连接一个服务器。服务器给客户端分配一个ID,用于在会话中唯一标识这个客户端(高ID总是跟据它的ID地址来分配)。电骡客户端需要一个服务器连接才能操作。客户端不能连接到多个服务器,没有用户干预情况下客户端不能动态改变服务器。

连接建立

客户端创建连接的时候,可能会同时连接到多个服务器,仅仅使用成功的登陆流程,其他的连接直接放弃。

这里有两种连接建立的情况:

  1. 高ID??服务器分配一个高ID给客户端。
  2. 低ID??服务器分配一个低ID给客户端。
  3. 拒绝??服务器拒绝客户端的连接。

当然不用说,还有服务器死机和无法连接的情况。

高ID登陆流程

高ID登录流程

高ID登录流程

上 图描述了高ID登录的消息交换流程。在这种情况下,客户端创建一个到服务器的连接,传送他的登录消息给服务器。服务器用另外的TCP连接去 连接客户端,进行一次客户端到客户端的握手,用来确认客户端有能力接受其他的电骡客户端的连接。在完成了客户端到客户端握手之后,服务器关闭第二个连接, 并发给客户端他的ID作为客户端服务器握手的终结。 你可能注意到上图中的eMule info是灰色的。这是因为这个消息属于eMule协议的扩展。

低ID登陆流程


低ID登录流程


上 图描述了产生低ID连接的流程。在这种情况下,服务器无法连接到客户端(客户端到客户端的握手),所以给客户端分配了一个低ID。通常服务器消息会包括 这样的一个警告“Warning [server details] - You have a lowid. Please review your network config and/or your settings.”。不管高ID还是低ID,握手都是由id change消息结束的,这个消息给客户端在下面的跟服务器的会话提供了一个客户端ID。

登录被拒绝流程


登录被拒绝流程
上图描述了登录被拒绝的流程。当客户端是低ID或者服务器已经到达了硬件能力极限,服务器都有可能拒绝登录。服务器消息里面会包含拒绝理由的简单描述。

连接开始的信息交换

客 户端和服务器成功建立连接之后会交换一些设置消息。这些消息的用途是更新两端的状态信息。客户端首先把它的共享文件列表发送给服务器,然后它要求更新它 的服务器列表。服务器发送它的状态和版本,然后发送它知道的eMule服务器列表,并提供一些自识别的细节。最后客户端询问源(可以用来下载它的下载文件 列表中的文件的客户端),服务器返回一系列消息,知道所有的源列表都被客户端得到为止。

文件搜索

文件搜索是由用户触发的。这个操作是简单的,一个搜索请求发给服务器后,服务器会返回一个搜索结果。当结果有很多的时候,搜索结果消息会被压缩。然后,用 户选择下载其中的一个或多个文件,客户端会请求所选文件的源,服务器返回一个所请求文件的源的列表。一个可选的服务器状态信息可能会在发现源的消息之前发 送给客户端。这个状态信息包含了服务器支持的当前用户和文件数量。注意,这是一个UDP补充消息,用来增强客户端定位源的能力的。确定这些源是新的以后, eMule客户端进行连接,并把他们加到他的源列表内。根据客户端收到源先后顺序连接这些源。没有任何优先级机制来决定先连接哪个源。但是当一个源同时被 下载列表中的多个文件需要的时候,有一个补充机制可以解决问题(注意,eMule只允许两个客户端间建立一个传输连接)。这个选择算法寄予用户指定的文件 优先级,如果没有优先级就根据字母顺序。

回调机制

 

回调机制是设计用来克服低ID客户端无法接受连入连接的问题的,这样他们也可以跟其他的客户端共享文件。这个机制很简单:如果客户端A和B都连接到同一个 eMule服务器,A需要的一个文件在B上,而B是一个低ID,A可以给服务器发送一个回调请求,请求服务器要求B反过来连接A。服务器已经跟B有了一个 TCp连接,发送给B回调请求消息,把A的IP和端口提供给B。B就可以连接到A,把文件发送给A,而不需要服务器更多的参与。很明显,只有高ID客户端 可以要求低ID客户端回调(低ID没有能力接受连入的连接)(这就是为什么高ID可以跟任何的源连接,而低ID只能跟高ID连接的原因)。这也是允许两个低ID客户端通过服务器交换文件的方法,服务器作为中转。但是因为这样对服务器负担太重,目前大部分的服务器已经不在支持中转了。

5
Mar

eMule协议简要分析[二]

Author: 比比巴儿

客户端到客户端之间的连接

电骡客户端一般是为了下载某个文件才会连接到其他的客户端(也就是源)的。一个文件会被分为很多块。客户端会从多个客户端(源)那里下载同一个文件,从不同的源下载文件的不同部分(这样不同的部分就可以同时被下载,如果源多,下载的效率就会极高)。

当 两个客户端连接后,他们会交换容量信息,然后协商开始下载(或者说是上传,这取决于视角)的时间。每个客户端有一个下载队列,用来保存正在等待下载的客 户端的列表。当电骡客户端的下载对列为空的时候,下载请求会被马上接受(除非这个请求者已经被屏蔽)。如果下载对列不为空,那么新的下载请求就会放在队列 之中。不会努力服务更多的客户端,对每个下载客户端至少保持不少于2.k字节/每秒。一个正在下载的客户端的下载地位可能被一个对列等级(queue ranking)比他高的等待客户端抢占,在下载进程中的前15分钟正在下载的客户端的队列等级会增长用来避免产生颠簸(这里说的颠簸就是说,一个客户端频繁的从下载地位切换到等待状态,然后再切换回去。这种频繁的切换叫做颠簸,这对资源是种浪费,所以要避免。)。

当 正在下载的客户端到达了下载队列的顶部,提供上传的客户端初始化一个连接用于把它需要的文件片断传送给它。一个电骡客户端可能会在多个源客户端的等待队 列中,在每个客户端上注册要求同一个文件片断。当这个等待客户端实际上完成了这个文件片断的下载,他不会通知那些源客户端删除它的请求,而仅仅是在它在那 些源客户端的队列中排到顶端的时候拒绝上传请求而已。

电骡使用一个声望系统来鼓励上传,为了防止假冒,电骡用RSA公钥加密技术来保护声望系统。

客 户端连接中会使用很多电驴协议(eDonkey protocol)没有定义的消息,这些消息叫做扩展协议。扩展协议用来实现信用系统,用来进行信息交换(例如,服务器列表的更新和源的更新),通过对文 件块进行压缩提升发送和接收的效率。电骡客户端连接中有限地使用UDP去周期其他客户端的状态。

客户端ID

客 户端是一个4字节的标识符,在跟服务器连接握手的时候由服务器提供的。客户端ID仅在客户端服务器TCP连接的生命期内可用,虽然如果客户端是高ID (High ID),它在任何服务器分配的客户端ID都一样,除非IP变化了。客户端ID分为低ID(low ID)和高ID。电骡服务器通常会给不能接受连接的客户端分配低ID。拥有低ID会限制客户端在电骡网络中的使用,甚至会造成服务器拒绝连接。高ID是由 客户端的IP地址为基础算出的。这里从电骡协议的观点来看客户端ID的分配和表示。得到高ID的客户端允许其他的客户端自由地连接他的电骡TCP端口(默 认为4662)。得到高ID的客户端在电骡网络内不受任何限制。当服务器不能打开一个连往客户端的电骡端口的连接时,服务器给客户端一个低ID。这主要是 客户端安装了防火墙组织外来连接造成的。以下情况下,客户端会得到低ID:

  • 当客户端通过NAT或者代理服务器上网。
  • 当服务器正在忙(造成服务器的连接计数器超时,从而认为客户端无法连接)。

高ID通过下面的方法计算:假设机器IP地址为X.Y.Z.W,客户端ID应该为 X+28*Y+216*Z+224*W(big endian高位在前)。低ID总是小于15777216(0×1000000)我不知道它是怎么计算的(协议原文如此,看来低ID的算法并不重要,只要满足条件即可。),注意从不同的服务器得到的低ID是不一样的。

低ID的客户端没有公开的IP地址供其他的客户端连接,所以所有的通信必须通过电骡服务器。这会造成服务器的负载提升,所以服务器不愿意接受低ID的客户端。同样,这说明低ID的客户端不能跟其他服务器上面的低ID客户端连接,因为电骡不支持服务器间的桥接。

为了支持低ID客户端电骡协议引入了回调机制。使用这种机制,一个高ID客户段可以要求(通过服务器)低ID客户端连接它来交换文件。

现在大部分服务器不会拒绝低ID的客户端连接,因为他们基本上都不帮助客户端传输文件了。由此,低ID的客户端之间也无法传输了。

用户ID

电 骡支持声望系统为了增加用户的文件共享。一个用户上传给其他客户端越多东西,它就得到越多的声望,这样它在他们的等待队列中前进就会越快。用户ID是一 个128位(16字节)GUID,通过连接随机数而产生,第6和第15位不是随机生成的,他们分别是14和111。用户ID仅在客户端和服务器会话中有 效,用户ID是唯一的用来标识客户端。用户ID在声望系统里面起了很大的作用,攻击者冒充其他用户就是为了得到它们声望对应的权利。电骡提供了加密方案用 来用户欺诈。实现方式是用RSA方法来加密方法来加密信息交换。

文件ID

文件ID用于网络中文件的唯一标识,以及文件损坏的检测和修复。注意电骡对文件进行唯一标识和编目不依赖于文件名,文件由其内容哈希计算出来的全局唯一ID来标识。文件ID有两种,一种用来生成唯一标识,一种用于文件损坏的检测和修复。

文件哈希

文 件是用一个128位的GUID来标识的,这个GUID是由客户端用文件内容哈希计算出来的。GUID使用MD4算法计算。计算文件ID的时候文件被分成 9.28MB的大小。一个GUID是分别计算每个文件块的哈希,然后把它们合成为一个唯一文件ID。下载客户端完成文件块的下载后,会计算块的哈希和文件 上传端发送来的文件块哈希做比较,如果不同,就说明文件块损坏了,客户端将逐块的覆盖(一次180kb)知道哈希计算表明文件块已经修复为止。

根哈希

根哈希是每个文件块用SHA1算法计算出来的,每个计算单元尺寸为180kb。它提供了更高级别的可靠性和错误恢复。

电骡协议拓展

虽然电骡(eMule)完全兼容电驴(eDonkey),但是它还是实现了一些扩展,用于增强它的功能。扩展关注于客户端和客户端之间的通信,特别是安全领域和UDP工具。

软件和硬件限制

服务器设定包括两种对活跃用户数目的限制,软件的和硬件的。硬件限制大于等于软件限制。当活跃用户数目到达了软件限制,服务器停止接受新的低ID客户端连接,当用户数目达到了硬件限制,服务器不会接受任何连接。