XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • 有了MAC地址 为什么还需要IP地址
  • 为什么IP地址老是变
  • 我们为什么需要IPV6
  • TCP与IP协议
  • TCP与UDP
  • https与http
  • DNS域名解析
  • 进程与线程
  • SSH
  • 正向代理与反向代理
  • 程序猿必须掌握的英语单词
  • ASCII、Unicode、UTF-8和UTF-16
  • 异或门怎么连
  • 前端够用的linux命令
  • http1.1与http2
  • 与服务器保持连接的几种方式
  • base64编码
  • 关于URL
  • http请求方式
  • 图解http阅读笔记
  • 计算机
XingYun
2022-12-01
目录

BT下载的原理

# 一、什么是 BT 下载

百科: BT 下载是互联网下载方式之一。BT 是一种互联网的 P2P 传输协议,全名"BitTorrent",中文名"比特流" ,已发展成一个有广大开发者群体的开放式传输协议。BT 下载是通过一个 P2P 下载软件来实现的,具有下载的人越多下载速度越快的特点。

关键字: P2P, 下载的人越多下载速度越快

# 架构

架构图:

在架构图中心的是 Tracker, Tracker 并不提供下载文件, 只告诉用户有效的下载地址

想要下载速度快,就要找到更多用户, 而 Tracker 就是在帮我们做这件事

# 二、下载速度的影响因素

# 资源热门度

想要下载速度快,就要找到更多用户, 但前提是有用户,否则总不能凭空制造用户、凭空下载文件。

所以 BT 只适合下载热门资源

对于冷门资源,再怎么折腾都没啥用(毕竟 Peer、DHT、Tracker 都只是起到辅助作用, 毕竟他们只能帮我们链接到更多用户, 如果无用户可链, 他们也没办法)

# 链接用户质量

另外,不仅要关注用户数量,还要关注用户质量,因为国内绝大部分家庭宽带都没有公网 IP,因此上传速度比较捉急,另一方面也是运营商上传不对等,还老是干扰 BT、限制 UDP 协议,这也是国内 BT 环境这么差的主要原因之一。

申请不到公网 IPv4 的用户,建议改用 IPv6(这个都是公网),也能有效提高下载/上传速度。

# 三、有关迅雷

迅雷会员加速的本质就是解除连接用户限制,让你可以连接到更多的用户,来 有效 提高下载速度。

迅雷之所以叫吸血雷,是因为 迅雷一边吸取其他 BT 软件用户上传速度,一边却屏蔽其他 BT 软件,只把上传速度提供给其他迅雷用户 ,所以对于其他客户端来说,迅雷只进不出,俗称吸血雷,长此以往形成恶性循环,用迅雷的人越来越多,其他 BT 软件下载速度越来越慢。

刚才我取消屏蔽迅雷后做种时截的图,迅雷用户一直吸我提供的上传,而下载进度永远为 0.0%

上次更新: 2023/04/05, 09:41:10
最近更新
01
JavaScript-test
07-20
02
二维码的原理
07-20
03
利用ChatGPT优化代码
07-20
更多文章>
Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式