断点续传的原理探讨和编程应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
据通道, 接收数据并追加入本地文件。 2.FTP 断点上传: 2.1 获取服务器上已接收到本地要上传的文件的长度。 2.2 向服务器发送“APPE+文件名”, 通知服务器, 接下来从数据通
道发送的数据要附加到这个文件末尾。 2.3 定位本地文件指针, 指向和 FTP 上文件大小相同的位置。 2.4 从文件指针处读数据并发送。 3.HTTP 断点下载: 3.1 浏览器向服务器发出请求, 请求下载服务器上的一个文件。 3.2 同时在请求信息中包含 RANGE: bytes=XXXXX- , 意思 就 是 告
● 参考文献
[ 1] 《Java 程序设计》, 袁兆山, 中国铁道出版社, 2007.2. [ 2] 《Java 网络编程精解》, 孙卫琴, 电子工业出பைடு நூலகம்社, 2007.2. [ 3] RFC 959[S]. [ 4] RFC 2616[S].
352
诉服务器从这个文件的 XXXXX 字节开始下载, 前面的 字 节 不 用 下 载 了。
3.3 客户端定位本地文件指针, 指定文件末尾。 3.4 两端的准备工作都做完了以后, 使用 HTTP 协议 传 送 数 据 并 追加入本地文件。
四 、相 关 编 程 技 术 1.断 点 续 传 的 文 件 保 存 技 巧 以断点下载举例, 因为要断点续传, 所以在下载的过程中必须保 存文件的地址, 文件的大小和已经下载的文件大小等。常用的文件保 存方法有两种: 可以产生两个文件: 内容文件和配置文件; 只需一个文 件: 综合内容和配置的文件。 这两个都不失为好方法, 前一种实现起来比较容易但文件较多, 后一种使用简单文件少但编程复杂, 所以一般使用前一种方法的软件 较多。两种方法用到的文件都是临时文件, 当文件下载完毕的时候, 应 该删去配置文件, 并把内容文件改为原下载文件的文件名。 2.多 线 程 技 术 以断点下载为例, 前面讲到可以使用命令控制从文件任意位置处 开始下载, 那么可不可以多次使用命令控制从文件多处位置同时开始 下载呢? 当然可以! 这应是多线程下载技术, 是目前各种传统下载软件 加速的公开的秘密了。我们怎么组织进行多线程下载呢? 实际方法如 下: 现在有个 abc.rmvb 文件需要下载 。 文 件 的 大 小 为 : 355364544 字 节。要用 10 个线程下载。各个线程任务分配是这样实现的: 在开始下 载时, 文件平均分成若干块进行下载。如第一个线程一开始的任务是 从文件的 0 位置开始下载一直到 35536455 位置处。线程 1 每次下载 一块数据后就要调整任务, 如第一次下载了 123400 字节的数据, 那么 线 程 1 的 任 务 将 改 为 : 123400- 35536455。 如 此 下 去 , 直 到 任 务 为 35536455- 35536455 时表示线程 1 完成了下载任务。 五 、总 结 实际测试在服务器支持断点续传的情况下, 文件断点下载成功; 在服务器支持多线程下载的情况下, 使用 10 线程下载文件相比单线 程下载平均快 8 倍左右( 实际情况下一般都达不到理论的 10 倍) 。通 过对断点续传的原理进行分析, 我们可以看到这种技术的优势, 它不 断地吸引着各种软件使用它。通过在编程中应用这种技术, 我们可以 方便的建立具有断点续传功能的软件, 这样可以使软件使用者节省不 少时间和资源, 这也是吸引用户的一个亮点。科
一 、协 议 介 绍 1.FTP 协议: 用户和服务器 之 间 要 使 用 FTP 协 议 传 送 文 件 , 需 要 建 立 两 个 通 道, 一个控制命令通道, 用来传输一些字符串命令信息, 让 FTP 服务器 知道客户端要干什么; 一个数据传输通道, 用来传输文件。控制命令通 道一定是由客户端向服务器的连接, 连接的过程完成了 FTP 的登录。 数据通道具体由控制命令来决定。 断点续传要用到的命令有: REST: 参数域代表服务器要重新开始的那一点, 此命令 并 不 传 送 文件, 而是略过指定点后的数据, 此命令后应该跟其它要求文件传输 的 FTP 命令。 RETR: 开始传送指定的文件。( 从 REST 参 数 指 定 的 偏 移 量 开 始 传送) 2.HTTP 协议 HTTP 叫作超文本传输协议, 即 Hpyer Text Transfer Protocal 的缩 写, 它是现代互联网上最重要的一种网络协议, 位于 TCP/IP 协议的应 用 层 , 是 一 个 面 向 无 连 接 、简 单 、 快 速 的 C/S 结 构 的 协 议 , 用 于 在 Internet 上发送和接收消息, 是一种请求- 应答式的协议— ——客户端发 送一个请求, 服务器返回该请求的应答, 所有的请求与应答都是 HTTP 包。HTTP 的工作过程大体上分连接、请求、响应和断开连接四个步骤。 HTTP 协议。HTTP 协议使用可靠的 TCP 连接, 默认端口是 80。 断 点 续 传 要 用 到 的 请 求 包 头(Header)有: Range: bytes=XXXX- XXXX 二 、原 理 分 析 断点续传的实质就是能记录上一次已下载完成的位置, 并能在下 一次下载时指定这个位置为下载的启始位置。 1.FTP 断点续传原理 要实现 FTP 的断点续传, FTP 服务器必须支 持 REST 指 令 , 这 条 指令在 FTP 协议文本 RFC959 中就已经定义了, 不过它不是 FTP 服务 器必须支持的指令。一般,你可以在下载前使用 REST 100 命令进行实 验, 如果服务器正常执行了这 条 命 令 , 说 明 该 服 务 器 支 持 FTP 断 点 续 传。REST 后面跟的数表示下载文件的起始位置, 而 REST 0 表示从文 件 最 开 始 处 下 载 。REST 命 令 本 身 并 不 执 行 下 载 功 能 , 仍 需 要 使 用 RETR 命令执行下载工作。 2.HTTP 断点续传原理 要实现 HTTP 断点续传, Web 服务器必须支持 HTTP/1.1 ( 协议文 本 为 RFC2068) , 当 然 也 不 是 所 有 支 持 HTTP/1.1 的 服 务 器 都 实 现 了 HTTP 断点续传。一般在正常的 Header 之外, 还要在 Header 中加上如 下几句: Connection: close Host: www.zhaodiyi.com Range: bytes=1- 100 这里的 Range 就是指定下载范围, 也可 以 使 用 “100- ”表 示 从 100 开始下载。我们就可以通过设置 Range 来确定起始下载位置, 使之指 向上次停止下载的地方, 开始本次的下载。 三 、实 现 方 法 1.FTP 断点下载: 1.1 向服务器发送“REST+本地文件长度”命令, 告诉服务器, 客户
科技信息
○计算机与信息技术○
SCIENCE & TECHNOLOGY INFORMATION
2007 年 第 23 期
断点续传的原理探讨和编程应用
廖乐林 ( 汕尾职业技术学院 广东 汕尾 516600)
摘要: 通过介绍 FTP 协议和 HTTP 协议的工作方式和所使用的常用命令, 分别分析了基于 FTP 协 议 和 HTTP 协 议 的 断 点 续 传 技 术 的 原 理, 并给出在编程中实现断点续传技术原理的一般技术。
端要断点下载了, 这时服务器还不知道客户端要下载什么文件。 1.2 向 服 务 器 发 送 “RETR+文 件 名 ”命 令 , 通 知 服 务 器 要 下 载 的 文
件名, 这时服务器开始定位文件指针读文件并发送数据。 1.3 客户端定位本地文件指针, 指定文件末尾。 1.4 两端的准备工作都做完了以后, 以被动或非被动方式建立数
关键词: 下载; 断点续传; 协议 FTP HTTP 多线程
很多人都有过使用 NetAnts( 网 络 蚂 蚁 ) 或 FlashGet( 网 际 快 车 ) 软 件下载互联网文件的经历, 这些软件的使用可以大大加速互联网上文 件的传输速度, 减少文件传输的时间, 如果以前没下载完的文件都可 以再继续下载。而现在很多软件的网上自动升级, 包括微软的自动更 新, 也都可以从上次没下载完的地方接着再下载。这些软件都采用了 断点续传技术, 有些还用到了多线程技术, 这为我们节省了不少时间 和 资 源 。我 们 可 以 通 过 分 析 断 点 续 传 的 原 理 使 这 种 技 术 用 在 自 己 编 写 的软件里。
相关文档
最新文档