Linux BT下载(4)-peer之间的通信协议
来源:互联网 发布:js随机数1到10 编辑:程序博客网 时间:2024/05/24 02:22
peer之间的通信协议
什么是peer
我们将某个客户端称为下载者,而将其他下载者称为peer。
什么是peer之间的通信协议
peer之间的通信协议又称为peer wire protocal,即peer连线协议,它是一个基于TCP协议的应用层协议。
要维持那些状态变量
当客户端与peer建立TCP连接后,客户端必须维持的几个状态变量是:
am_chocking : 该值若为1,表明客户端将远程peer阻塞。此时如果peer发送数据请求给客户端,客户端将会不理会。即一旦将peer阻塞,peer就无法从客户端下载到数据。该值若为0,则刚好相反,即peer未被阻塞,允许从
客户端下载数据。
am_interested: 为1,表明客户端对远程的peer感兴趣,当peer拥有某个piece,而客户端没有,则客户端对peer
感兴趣。该值若为0,则相反。
peer_chocking:为1,表明peer见啊ing客户端阻塞,此时,客户端无法从peer处下载到数据。若为0,表明客户端
可以向peer发送数据请求,客户端将进行相应。
peer——interested:为1,peer对客户端感兴趣,即客户端拥有某个piece,而peer没有。为0,表明peer客户端
peer——interested:为1,peer对客户端感兴趣,即客户端拥有某个piece,而peer没有。为0,表明peer客户端
不感兴趣。
连接后的变量设置
当客户端和peer建立TCP连接后,客户端将这几个变量的值设置为:am_chocking = 1, am_interested = 0, peer_chocking = 1, peer_interested = 0。
条件
当客户端对peer感兴趣且peer未将客户端阻塞时,客户端可以从peer处下载数据。当peer对客户端感兴趣,且客户端未将peer阻塞时,客户端向peer上传数据。
握手消息
客户端与一个peer建立TCP连接后,客户端先向peer发送握手消息,peer接收后回应一个握手消息。
握手消息是一个长度固定为68字节的消息。格式如下:
<pstrlen><pstr><reserved><info_hash><peer_id>消息格式中的一部分参数的含义:
其他消息(除握手消息)
格式为:<length prefix><message ID><payload>
length prefix是个描述长度的前缀,占4个字节,是message ID和payload的长度和。message ID(消息编号)占1字节,是个十进制的整数,是消息的编号。payload(负载),长度可变,是消息的内容。
0 0
- Linux BT下载(4)-peer之间的通信协议
- peer之间的通信协议
- bt peer通信协议报文格式
- Linux BT下载(16)-与peer交换数据模块的设计和实现
- Linux BT下载(11)-信号处理模块和Peer管理模块
- linux下bt下载存在的问题
- Linux下下载BT资源的方法
- Linux BT下载(6)-BT下载实现的关键算法和策略
- 基于Linux下Iptables限制BT下载的研究
- Linux BT下载(17)-主函数的设计和实现
- Linux平台下基于BitTorrent应用层协议的下载软件开发--peer模块(peer.c)
- Linux平台下基于BitTorrent应用层协议的下载软件开发--peer模块(peer.h)
- BT(带中心Tracker)通信协议的分析
- BT(带中心Tracker)通信协议的分析
- jdk1.5的bt下载
- BT是怎么下载的
- linux 下载jdk 发生 (104) Connection reset by peer 错误 的解决办法
- 论网络通信协议之间的相互作用
- "Variables debug info not available" Debug出现问题的解决
- 第12周项目2-操作用邻接表存储的图
- “一个程序员的成长史”系列答读者问(1)
- 使用BBED跳过归档进行恢复
- STM32学习--定时器(高级定时器)
- Linux BT下载(4)-peer之间的通信协议
- 第十三周项目4-floyd算法的验证
- PHP发送邮件
- android判断是否后台运行
- 说明
- python 排序
- 贪心算法:最优装载问题(java版本)
- ibatis bindingexception invalid bound statement
- 最大子列和的四种算法比较