电骡协议规范(三):客户端和服务器之间的UDP通讯

电骡协议规范(三):客户端和服务器之间的UDP通讯

电骡客户端和服务器使用不可靠的 UDP 服务来保活和搜索增强。由电骡客户端产生的 UDP 包的数量(注意,包不是字节)达到电骡客户端发送包总数的 5% ;这依赖于在客户端的服务器列表中服务器的数量、客户端下载列表中源的数量以及用户执行的搜索的数量。 UDP 包通过定时器来触发, 100ms ,如果有一个单独线程来负责发送 UDP 通讯,结果最大是每秒 10 UDP 包。

1.1                        服务器保活和状态信息

客户端定期验证它的服务器列表的状态。这个验证使用 UDP 服务器状态请求(见 6.3.3 )和 UDP 服务器描述请求(见 6.3.7 )报文来完成。现在介绍的简单的保活模式每个小时产生少于几打个包。在任何情况下,最大高产生率是 0.2 个包每秒(或每 5 秒一个包)。当检查一个服务器的状态是,客户端首先给服务器发送一个状态请求,然后是每两个服务器描述请求一个状态请求的方式发送;见图 3.1

eMuleUDPKeepalive.bmp
3.1 UDP 的保活循环

服务器的状态请求包含一个随机数,这个随机数在服务器的响应中返回。如果服务器中返回的数不同于前面客户端返回的,响应中的信息会被抛弃。每次从客户端发送到服务器的状态请求包,客户端都会启动一个尝试计数器。如果尝试次数达到设置的最大值是,就认为该服务器是死的,将它从客户端的服务器列表中删除。服务器响应包括几个数据项:服务器状态响应( 6.3.4 节)包括当前的用户数和服务器上的文件,服务器的软和硬限制( 1.7 节)。服务器描述响应( 6.3.8 节)包括服务器名称和一个简单的描述字符串。图 3.2 描述了一个客户端和活动服务器之间的完整保活序列的消息流。

eMuleUDPKeepLiveseq.bmp
3.2 UDP 保活序列

1.2                        文件搜索增强

电骡客户端可能被配置而用来使用 UDP 来增强文件搜索功能。 UDP 搜索请求格式几乎与 TCP 搜索请求相同。服务器仅仅在有搜索结果的时候响应。有两种 UDP 搜索报文的 OPCODE ,我不能他们之间不同。 UDP 搜索包发送给客户端服务器列表中的服务器。见 6.3.5 6.3.6 节详细介绍。

1.3                        文件源搜索增强

当客户端所拥有的下载队列中的某个文件的源的数量小于设置的极限( 100 )时,客户端定期向它的服务器队列中的服务器发送 UDP 包来得到更多源。有个包可能每秒都发送,它时源搜索客户端产生的 UDP 通讯中最重要部分。消息格式( 6.3.1 节介绍)和 TCP 计数器部分非常相似。注意,同 TCP 源搜索比较, UDP 源搜索与文件搜索是隔离的并且依赖于客户端拥有的给定文件的源的数量。

你可能感兴趣的:(电骡协议规范(三):客户端和服务器之间的UDP通讯)