参考

问题描述

安装selenium+chrome环境后测试chromedriver是否成功安装,执行指令

chromedriver

后报错

[1564468509.213][SEVERE]: bind() failed: Cannot assign requested address (99)

解决方法

执行指令时添加 –whitelisted-ips 参数

chromedriver --whitelisted-ips

最近入手J1900折腾一下软路由

参考

准备

  • U盘
  • PE系统
  • OpenWrt固件(下载地址,选择combined.img.gz版本)
  • physdiskwrite(用于在PE中向硬盘写入固件)

步骤

  1. 将PE刷入U盘
    • 我使用的是WePE,其中包含了 DiskGenius(基本所有PE都自带),但是没有ImageWriter类似软件,所以选择使用 physdiskwrite 来刷入OpenWrt。如果PE自带ImageWriter类似软件,不使用 physdiskwrite 也可以。
  2. 将固件和 physdiskwrite 一起复制到PE盘中
  3. 开机,进入bios的boot选项,选择PE并启动
  4. 清除硬盘分区
    • 在PE中打开DiskGenius,右键硬盘,选择【删除所有分区】,确定
  5. 刷入固件
    • 【win+R】打开运行,输入cmd打开控制台
    • 输入【[你的盘符]:】,进入physdiskwrite和固件所在硬盘(例如,我的固件在U:盘,输入U:)
    • 输入 physdiskwrite(按tab可补全),回车可以看到 physdiskwrite 的使用方式
    • 输入指令,选择要刷入的硬盘,开始刷入固件
      physdiskwrite.exe -u [你的LEDE固件名称].img.gz

    • 刷入完毕即可关闭PE进入OpenWrt,大小大约为700M
  6. 进入OpenWrt

IPv6的设置

我的具体情况是,路由器拨号可以自动获取IPv6地址,并且在OpenWrt的【网络-接口】中有自动出现的WAN_6,其协议类型为【虚拟动态接口 (DHCPv6 客户端)】,但打开 test-ipv6.com 无法获取ipv6地址。

解决方法

详见参考链接的【第一部分:lede软路由ipv6的具体设置方法】,这里进行一次简单复读:

  1. 进入【网络-接口】,将默认自带的【wan6】删除
  2. 进入【网络-接口-lan】,选择【高级设置】,将【使用内置的ipv6管理】打勾,然后下拉选择【ipv6设置】,将【路由通告服务】、【DHCPv6 服务】和【NDP 代理】设置为【混合模式】,再将【DHCPv6 模式】设置为【无状态+有状态】
  3. 进入【网络-负载均衡】,选择【策略】,将所有成员修改为【默认(使用主路由表)】再进入【规则】,将所有策略改为【default】

然后就可以愉快的用上IPv6了

分布式哈希表常用在P2P网络中,如常见的BitTorrent。而Kademlia算法是要解决在网络中的寻找节点问题。

分布式哈希表(Distributed Hash Table)

在介绍Kademlia之前有必要熟悉一下DHT。

分布式哈希表就是将文件的哈希表存储在多个节点中,每个节点存储一部分文件的同时维护一个路由表,即每个节点包含:

  • Hash key(文件哈希值)
  • Hash Value(文件的一部分)
  • 路由表(在kademlia算法中称为k-bucket)

这些节点相互连接组成网络:

具体到P2P的文件共享中,假如要分享1G的电影,可以将1G的文件分割为128KB的小块,并生成小块的哈希值。

分布式哈希表实际上是P2P共享发展史上的第三种技术路线,前两代都存在一定的问题,简单介绍一下:

  1. 第一代 Tracker服务器
    • 这种模式下,文件块是分发到各个节点上的,但是每个节点在获取其他节点的位置时需要连接中央服务器。
    • 这种情况下中央服务器就成为了单点故障,一旦中央服务器出现故障或者被不可抗力ban掉后整个网络就无法运行
  2. 第二代
    • 在看到第一代的不足后,第二代P2P在查找节点时会询问与自身相连的所有节点,如果周边节点不知道目标节点的位置,又回广播一遍查询信息,直到找到目标节点。
    • 显然这种情况很容易催生广播风暴,严重占用网络带宽。即使通过设定TTL、限制查询递归次数也无法解决这个问题。

Kademlia算法

首先声明算法的三个参数:

  1. keyspace
    • 节点ID的位数,默认是160位
    • 决定每个节点的路由表(k-bucket)有几层
  2. k *重要*
    • 路由表里的每层存储k个信息
    • 每次查询时返回k个信息
    • 存储文件时,将文件存储到k个节点
    • 默认值为8
  3. α
    • 向其他节点查询目标节点时,每次向α个节点发送请求

Continue reading “Kademlia算法与分布式哈希表(DHT)”