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

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: 系统运维

2008-11-03 11:09:10

1. 通信协议应该与逻辑分离
虽说find_node, get_peers在通信层上是递归操作, 但是这点对逻辑处理上应该是透明的, 也就find_node操作应该执行到发现最近的节点为止, 而不应该中途中断(虽然说可以节省本分带宽)。或者编写接口的时候就不应该导出这些控制方法。
2. 结果的截断。
find_node以及get_peers只关心最终的K(K=8)个节点。所以每次只需要保留响应结果的最近的K个节点。至于那些K节点之外应该裁掉, 即不用向他们发送请求, 甚至返回的结果也不用处理。并且结果是允许模糊的。
3. ping的时机。
至于执行ping时机, 路由表桶已经满并且需要加入新的节点, 并且节点存在。
4. 路由表的更新。
一个相同的ID的被替换成新的, 并且路由表一个被新的host2,port2更新, 其他不变。一个相同的被替换成将被原来的ID1删除并且增加新的节点并且age被重新记数。也就是说, 就相当于网关的MAC地址, ID就相当于IP, 路由变了, MAC也就变了, 但是对方IP还是存在的, 还是可以到达的, 只是从原来MAC1来访问改成由MAC2来访问。不断变换ID的节点不会对路由表造成攻击, 因为路由表总是会保存旧的节点。至于同一个ID变换不同的IP的情况, 可能会导致该节点的失效。如果想避免攻击的话,可以对同一个ID同换用不同Ip的IP进行记账, 对于发现一个IP不与其他节点Id冲突的可以考虑把它mask掉。
参见原先协议
5. 由find_nodes以及get_peers返回的节点被当成是1970.00.00.00.00时最后一次看见的节点, 所以该节点根据LRU算法当有新的节点被加入并且需要ping时将优先被ping。

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