eMule 协议分析翻译(二)

2,客户机服务器之间的TCP通信

      

每一个客户端都采用TCP 连接与一个特定的服务器相连接,服务器分配给客户端一个固定的ID。客户端不能同时连接到几个服务器,也不能动态的选择服务器,除非由其他客户端的邀请。

 

2.1 建立连接

在建立连接的时候,客户端会向一定数目的服务器发起连接请求,当有一个连接成功建立之后。客户端就会取消所有其他的连接请求。

 

在连接建立的时候,可能有以下几个情况发生:

(1)    high ID  连接:服务器与high ID客户端连接。

(2)    Low ID 连接 :服务器与Low ID 客户端连接。

(3)    拒绝连接: 服务器拒绝与客户端连接

当然还有与服务器建立连接不成功或者服务器不可达的情况。

       2.1描述了high ID用户是如何与服务器交互的,在这种情况下,客户端发送登陆消息到服务器端。服务器以客户端——客户端模式建立另一个连接,以便确认客户端可以顺利的接受由其他客户端发起的连接。完成客户端——客户端模式的握手后,服务器关闭第二个连接,然后发送ID 交换信息完成客户端——服务器的握手。图中灰色的部分是emule的扩展协议,我们将留到2.6节讨论。

 

2.2描述了Low ID与服务器通信的过程,在这种情况下,服务器发起的第二次连接就会失败。在服务器的返回信息中就会包含如下信息:Warning [server details] - You have alowid. Please review your network config and/or your settings.” 不论是low ID  还是high ID都以ID交换信息作为连接建立的结束。

2.3描述了连接被拒绝的情况,当客户端是low ID时,或者服务器已经到达硬限制的时候连接就会被拒绝。

 

2.2        服务器连接启动阶段的消息

 

在连接成功建立之后,客户机和服务器还要交换一系列的数据。这些数据用来传输客户机之间的状态信息。客户端启动时像服务器端传送其上共享文件的列表,服务器发送其状态信息和版本信息,还有已知的其他服务器列表和其他标志服务器唯一的细节信息。最后,客户端请求源信息,服务器返回可供下载的源信息。

 

2.3        文件搜索

 

文件搜索是由用户发起的,作法比较简单,搜索请求发送给服务器,并由服务器返回搜索结果。然后,由用户选择一个或多个文件下载。客户端随即请求下载此文件需要的源信息。同时,服务器也将返回可选的状态信息。包括服务器支持的文件数和用户数。值得一提的是同时还会有UDP数据报作为源节点数据的补足,(更多细节在第3章讨论)在效验过源信息之后,可户端将源加入源列表,并尝试了其他可户端连接。

Emule客户端按照源被加入到源列表的顺序进行连接。并没有优先权机制去比较连接的顺序。并有一套机制来解决在用一个源下载多个文的情况。(因为emule客户端只允许与一个下载可户端建立一个连接)选择算法根据用户的优先权设置(默认则按照字母表顺序)进行选择,更多的细节请参照官方网站的说明。

 

 

2.4        Call Back 机制

 

Call Back 机制主要用来克服low ID不能接受TCP连接(也就是进行NAT穿越用的)。机制比较简单,假设主机AB都连接到服务器SA 需要连接到B以便获取B上的文件,但是由于BLowID不能接受由A发起的连接。这时 A将请求传送到S处,S发送信息令BA发起连接,这时连接可以成功建立。

Emule也支持通信双方都是low ID的情况,这时将采用中转的方式进行,由S 负责中转。

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值