BitTorrent协议标准之Peer状态

 BT的Peer之间通过TCP进行通讯,相互交换piece(实际上交换的最小单位是block),最终达到下载整个资源的目的。
一个BT的客户端(本地节点)对于每个与它连接上的节点都维护两种状态信息,choked(阻塞)和interested(关注),它们的含义分别是:
choked(阻塞):当一个远端节点把BT客户端(本地节点)阻塞住的时候,BT客户端向远端节点发送的所有请求block的请求包将不会被回应,当BT客户端发现自己被远端节点阻塞的时候,就不应当向该节点发送请求。
interested(关注):当BT客户端(本地节点)被远端节点关注时,远端节点会向BT客户端发送请求(当然如果BT客户端把远端节点阻塞住的话,就不会),这说明BT客户端(本地节点)有远端节点所需要的数据。
上面的解释中都只说了一方主动,另一方被动的情况,其实“作用”是相互的,对于本地节点和远端节点其实是这样的情况:
am_choking:本地节点把远端节点阻塞
am_interested:本地节点关注远端节点
peer_choking:本地节点被远端节点阻塞
peer_interested:本地节点被远端节点关注
在连接初始建立的时候,状态是双方互相被阻塞,互相不关注。
对于这些状态的表示,我们可以用每个Bit表示一个状态,用&操作取出状态值。
只有在本地节点关注远端节点并且远端节点没有阻塞本地节点的时候,本地节点才能从远端节点下载block,同样,只有在本地节点被远端节点关注并且本地节点没有把远端节点阻塞的时候,本地节点才会向远端节点上传数据。
需要注意的是,尽管节点被阻塞或者不关注,连接还是不关闭,而是要保持更新状态,除非客户端(本地节点)在一些调度算法上把没用的节点给淘汰关闭。至于多 少个Peer后才需要淘汰,那是属于调度策略的事情,各个客户端实现可能不一样,一般30个peer已经够用,建议不要超过55个peer,节点再增多, 不见得能把速度提高多少。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值