Chinaunix首页 | 论坛 | 博客
  • 博客访问: 923904
  • 博文数量: 201
  • 博客积分: 8078
  • 博客等级: 中将
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 17:22
文章分类

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: 系统运维

2008-10-13 14:28:24

进入DHT的节点都是很自由的。 很难保证每个节点都遵守DHT的游戏规则。
所以很难保证以下情况不会出现:

1、多个主机争用同一个ID。
以下属于正常情况:
1) 一个客户端的网络断开(ADSL重新拨号), 然后重新进入DHT网络。
2) 两个客户端随机生成了两个相同的ID。
3) 一个恶意客户端不断使用不同的ID, 试图跟其他节点产生冲突, 因为可以知道每个ID是否存在于网络。

2、同一个主机使用多个不同的ID。
1) 客户端的重新启动, 生成了不同的ID。
2) 客户端进行恶意攻击, 故意产生不同的ID。

产生的后果:
与正常情况的ID与主机一一对应的相比, 多少将会造成问题。

对于情况1: 将会产生坏节点, 由于路由表保存的是旧的节点。所以客户端试图想该节点发送请求的时候将
失去响应。所以碰到该情况时(发现出现该问题时), 应该向旧的节点发送ping请求, 如果节点没有响应则替换
为新的节点否则使用旧的节点(根据DHT的游戏规则, 应该这样做)。不过正常情况下(非攻击)只是简单的替换成新的节点应该不会
有什么大的问题, 毕竟1-2)的情况发生的可能性很少(微乎其微, 除非随机函数有问题)。

对于情况2: 由于每个DHT包都会包含发送者ID, 所以直接更新ID即可。不过假如为恶意客户端, 故意每次
产生比上次更接近目标节点的ID话, 将需要浪费大量的带宽用于请求。特别是不对返回的内容进行过滤的话,
那么将会产生无休止的请求。直到所有的ID都被用完(1-2^160)。所以假如使用, 而不是id对返
回的处理进行标记,那么就可以避免这种情况。

由此可见, 恶意客户端的共同行为是同一个host节点, 不断虚报, 占用不同的ID(冲突, 或者不存在), 所以发
现该类节点, 应该把它给MASK掉。 至于如何尽快发现, 处理的方法是:

PS: IE该淘汰了, 用IE打开gmail总是一卡一卡, 总没有firefox那么流畅。


阅读(868) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~