Advertisement

Linux BT下载(4)-peer之间的通信协议

阅读量:

peer之间的通信协议

什么是peer

我们将某个客户端称为下载者,而将其他下载者称为peer。

什么是peer之间的通信协议

网络层数据链路通信协议又被称为网络层物理链路协议(Wireless Protocol),也被称为网络层物理连线_protocol。(Wireless Link Protocol)。其具体实现基于物理链路建立和断开的机制。该协议通常与TCP/IP模型中的应用层功能相集成,并通过建立可靠的端到端连接来实现数据传输。

要维持那些状态变量

当客户端与peer建立TCP连接后,客户端必须维持的几个状态变量是:

设am_chocking为标志变量,则其取值1表示客户端已封锁远程peers. 当远程peers发送数据请求至客户端时,则此peers的数据请求将被忽略. 一旦实现对该peers的封锁,则该peers将无法从当前系统获取任何数据. 反之,则当该标志变量设为0时

客户端下载数据。

am_interested: 为1,则表示客户端对远程的 peer 兴趣。当 peer 拥有某份文件而客户端无时,则客户端对 peer 的兴趣将被抑制。

感兴趣。该值若为0,则相反。

peer_chocking等于1时,则表示 peer 连接中出现阻塞现象;此时, 客户端无法从 peer 处获取数据。如果 peer_chocking等于0,则表明(即客户端处于正常连接状态)。

若向某节点发起数据请求,则该节点会做出响应。
其中 interested 值定义如下:
当 interested = 1 表示该节点对该客户感兴趣;
当 interested = 0 表示该节点对此无兴趣。

不感兴趣。

连接后的变量设置

在客户端与peer建立TCP连接之后进行参数配置时,默认将这些参数设为am_chocking = 1, am_interested = 0, peer_chocking = 1, peer_interested = 0。

条件

当一个客户希望与peers建立联系并且peers尚未对其进行阻挡时,该客户能够从peers那里获取所需的数据。反之,当peers对于客户保持兴趣并且客户尚未对其实施阻挡策略时,该客户就可以与peers进行数据共享。

握手消息

当客户端与一个peer建立TCP连接时,在TCP连接建立过程中,客户端首先通过发送握手消息来向 peer 发出信号。当 peer 接收该握手消息后会相应地返回一个确认的握手消息。

握手消息是一个长度固定为68字节的消息。格式如下:

复制代码
    <pstrlen><pstr><reserved><info_hash><peer_id>

消息格式中的一部分参数的含义:

其他消息(除握手消息)

格式为:

prefix 'length' 是一个表示长度的前缀;它占用4个字节,并代表消息ID和负载的总长度。message ID (消息编号) 占据1个字节,并是一个十进制整数号码来标识消息内容。负载 payload 是消息内容的一个部分。

全部评论 (0)

还没有任何评论哟~