UDP协议是网络传输层的协议。当然也就是起到传输作用的一种协议。那么很容易就联想到,传输和下载是有着密不可分的联系。在这里我们就来就来讲解一下UDP服务和电骡下载之间的一些应用。电骡客户端和服务器使用不可靠的UDP服务来保活和搜索增强。由电骡客户端产生的UDP包的数量(注意,包不是字节)达到电骡客户端发送包总数的5%;这依赖于在客户端的服务器列表中服务器的数量、客户端下载列表中源的数量以及用户执行的搜索的数量。UDP包通过定时器来触发,100ms,如果有一个单独线程来负责发送UDP通讯,结果最大是每秒10个UDP包。
服务器保活和状态信息
客户端定期验证它的服务器列表的状态。这个验证使用UDP服务器状态请求和UDP服务器描述请求报文来完成。现在介绍的简单的保活模式每个小时产生少于几打个包。在任何情况下,最大高产生率是0.2个包每秒(或每5秒一个包)。当检查一个服务器的状态是,客户端首先给服务器发送一个状态请求,然后是每两个服务器描述请求一个状态请求的方式发送;见图1:
图1 UDP的保活循环
服务器的状态请求包含一个随机数,这个随机数在服务器的响应中返回。如果服务器中返回的数不同于前面客户端返回的,响应中的信息会被抛弃。每次从客户端发送到服务器的状态请求包,客户端都会启动一个尝试计数器。如果尝试次数达到设置的最大值是,就认为该服务器是死的,将它从客户端的服务器列表中删除。服务器响应包括几个数据项:服务器状态响应包括当前的用户数和服务器上的文件,服务器的软和硬限制。服务器描述响应包括服务器名称和一个简单的描述字符串。图2描述了一个客户端和活动服务器之间的完整保活序列的消息流。
图2 UDP保活序列
文件搜索增强
电骡客户端可能被配置而用来使用UDP服务来增强文件搜索功能。UDP搜索请求格式几乎与TCP搜索请求相同。服务器仅仅在有搜索结果的时候响应。有两种UDP搜索报文的OPCODE,我不能他们之间不同。UDP搜索包发送给客户端服务器列表中的服务器。
文件源搜索增强
当客户端所拥有的下载队列中的某个文件的源的数量小于设置的极限(100)时,客户端定期向它的服务器队列中的服务器发送UDP包来得到更多源。有个包可能每秒都发送,它时源搜索客户端产生的UDP通讯中最重要部分。消息格式和TCP计数器部分非常相似。注意,同TCP源搜索比较,UDP源搜索与文件搜索是隔离的并且依赖于客户端拥有的给定文件的源的数量。