维瓦尔第网络坐标系统在Azureus中的评估
1. 往返时间与网络层往返时间
1.1 应用层往返时间
消息的应用层往返时间(artt)由两部分组成:网络层往返时间(nrtt)和由应用程序计算引入的额外延迟,额外延迟取决于终端系统的负载。通常,应用层往返时间会大于网络层往返时间,后续内容中往返时间均以毫秒为单位。
1.2 网络层往返时间
REPLY FIND NODE消息包含对等方的IP地址和端口。发现对等方后,会在该端口发送一个设置了ACK标志的TCP数据包,对等方预计会回复一个设置了RST标志的TCP数据包。从发送TCP ACK到接收TCP RST的延迟即为网络层往返时间(nrtt)。发送TCP ACK而非ICMP ping是因为一些网络提供商过滤ICMP数据包,且大多数(无线局域网)路由器和个人防火墙不响应ICMP ping。此外,默认情况下所有端口都是关闭的,因此先爬取点对点网络以了解开放端口非常重要。
2. 网络坐标
2.1 坐标版本
爬取过程中收到的回复消息包含被查询对等方的维瓦尔第网络坐标。根据Azureus客户端的版本,会传输不同版本的维瓦尔第网络坐标:无、版本1(由2个维度加高度组成)或版本1和版本2.4(由4个维度加高度组成)。两个版本的差异不仅在于维度数量,还会传输坐标的使用时长,且更新坐标的方式也更复杂。版本2.4会额外传输16个字节。97.2%的Azureus客户端使用最新的DHT协议,该协议会传输版本1和版本2.4的网络坐标,因此只考虑这些对等方。
2.2 维瓦尔第距离计算
在进行爬取的机器上运行Azureus客户端