毕业设计(论文)题目基于HTTP协议的多线程下载和断点续传的实现学生姓名学号专业计算机科学与技术班级指导教师评阅教师完成日期年月日学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
本人完全意识到本声明的法律后果由本人承担。
作者签名:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
本学位论文属于1、保密□,在_________年解密后适用本授权书。
2、不保密□。
(请在以上相应方框内打“√”)作者签名:年月日导师签名:年月日目录摘要 (1)前言 (2)1 HTTP协议 (3)1.1HTTP协议的发展 (3)1.2HTTP协议的特点 (4)1.3HTTP会话及报文格式 (6)2 Windows套接字 (8)2.1 什么是套接字 (8)2.2 套接字规范 (9)2.3 Windows套接字的发展 (11)2.4 套接字的使用和WinSock API (12)3 多线程及断点续传技术 (15)3.1 多线程的优点 (18)3.2 多线程之间的互斥和同步 (16)3.3 什么是断点续传技术 (17)4 下载工具的设计与实现 (18)4.1 基本结构与数据流程图 (18)4.2 程序基本功能设计与实现 (19)4.3 代码分析 (24)4.4主要功能实现算法 (28)5 总结 (35)致谢 (36)参考文献 (37)附录 (38)基于HTTP协议的多线程下载和断点续传的实现学生:叶升路指导教师:覃颖(三峡大学电气信息学院)摘要:本文介绍了网络下载软件中的最新技术——多线程下载和断点续传技术,同时也介绍了HTTP协议的发展、特点以及WinSock编程技术。
最后在这些技术的基础上成功设计并实现了基于HTTP协议的具有多线程下载和断点续传功能的下载软件。
本软件的实现代码未使用任何WinInet API函数如InternetOpen , InternetConnect等,而是直接使用WinSock编程,逐步解析HTTP协议来完成会话和文件下载等功能。
经测试,下载速度有所提高。
关键词:下载;多线程;断点续传;HTTP;WinSock;Abstract:This paper introduces the latest downloading technology called multi-threaded downloading and resume in network downloading software. But also descripes the development of HTTP protocol, characteristics and WinSock programming. Finally, based on these technologies successfully designed and implemented a downloading tool based on the HTTP protocol with multi-threaded and resume features. The realization of the software code does not use any WinInet API functions such as InternetOpen, InternetConnect, etc., but directly use WinSock to programming, and complete the functions of conversation and file downloads and others by parse HTTP protocol steply. After tested, the speed of downloading has increased.Keywords:Downloading;Multi-thread;Resume;HTTP;WinSock;前言最近几年,随着计算机网络的飞速发展,因特网(Internet)已经逐渐成为人们生活、工作、学习必不可缺的一部分。
因特网上存储了大量丰富的信息资源,我们可以使用下载工具,把需要的信息资源下载到本地。
但是由于受到各种因素的限制,例如服务器性能、网络带宽、下载的信息量以及下载工具等等,下载速度受到不同程度的影响。
因此人们不断地提高服务器性能,扩展网络带宽,开发效率更高的下载工具以达到最大化提高下载速度的目的。
在限制下载速度的众多因素中,研究新的网络下载技术开发出更高效的下载工具无疑是其中最节约,环保以及方便的方式。
网络下载技术,也可以称为网络文件共享技术,它一直是网络发展的重要推动力之一。
早期人们共享资源的普遍方法是将资源文件上传至服务器上,然后其他用户可以通过HTTP或FTP等协议将其下载到本地电脑。
这种模式称为客户机/服务器模式即C/S模式,它对服务器的依赖性很大,当下载用户很少时,比如说一个,他将独享服务器的带宽,很显然其下载速度会非常快。
然而当下载的人数较多而服务器带宽有限时,比如服务器带宽为3MB/S,而下载人数为100人,则众多下载用户不得不共享一个带宽(3MB/S)最终结果是下载速度均分(30KB/S),普遍不高。
P2P技术的出现使得人们终于摆脱了服务器的枷锁。
它的主要特点是资源分散、负载均衡、和非中心化,它将共享的文件存储在各个客户机节点上,用户之间可以直接共享和传输文件而不需要通过服务器。
客户机不再只利用服务器带宽进行下载,它同时也可以利用其他客户机节点的带宽,这样大大提高了下载速度。
纵观网络下载技术发展的历史,可以将其划分为四个阶段:单线程下载阶段、多线程下载及断点续传阶段、P2P阶段、P2SP阶段。
一、单线下载时代:应对有限时间流量的办法早在上个世纪90年代,当时互联网并不普及,很多人使用Modem拨号,通过Telnet 软件连接到拨接式BBS上获取资讯并与别人交流(收发邮件等),由于服务器的电话线路数量有限,因此都会限制连接时间,一般新注册用户只有10分钟左右。
这点时间用来看帖回帖显然不够的,因此有人就开发了软件,进入BBS后,能够将整个BBS上所有内容都下载回来,然后可以断线慢慢看慢慢回,最后再次拨入BBS上传回复。
二、断点续传与多线程下载时代:大幅度提高速度进入Windows与WWW(World Wide Web,互联网)时代之后,IE,Netscape等浏览器都可以通过点击左键下载,那个时候网络速度最快不过5KB/s,下载一首5MB的MP3歌曲要15分钟以上!中途万一断线就前功尽弃,于是有人开发了支持断点续传的下载软件。
世界上第一款支持断点续传的下载软件应该是GetRight。
它可让你用浏览器下载文件时有续传功能,可设定时间来下载文件或是中断Modem拨接,下载完毕时自动中断Modem拨接或关机。
为了更好的利用带宽,在断点续传的基础上,多线程下载软件逐渐发展了起来。
最早出现的多线程下载软件是中国人开发的NetAnts(网络蚂蚁)。
网络蚂蚁其实也是一个断点续传软件,但它对断点续传功能进行了扩展:可进行多点续传,即利用断点续传的原理同时建立多个连接下载同一个软件并最终将其合并为一个完整的软件。
三、P2P时代:下载再也不怕人多挤破服务器最早的P2P网络当属1979年的FidoNet(惠多网)和1984年的Usenet,经过不断发展,才有了现在人们常用的“BT”,“电驴”等P2P软件。
这类软件应用了P2P(Peer-to-Peer)技术,能够最大限度地利用网络带宽。
如今,BitComet、BitTorrent、eMule等P2P软件已经拥有极为庞大的用户群,每个人既是下载者也是上传者,一个新发布的文件转瞬之间就会像燎原之火一样遍布全世界,这是任何服务器都无法比拟的。
四、P2SP时代:多技术结合,进一步提高速度现在人们在整合了HTTP和FTP的服务器技术之后,对BT下载也进行了改进,独创了P2SP技术P2SP(Peer to Server&Peer)即点对服务器和点对点。
P2SP除了包含P2P,还多了一个“S”是指服务器。
P2SP有效地把原本孤立的服务器和其镜像资源以及P2P资源整合到了一起。
在下载的稳定性和下载的速度上,都比传统单一的P2P有了非常大的提高。
1 HTTP协议1.1HTTP协议的发展万维网WWW(World Wide Web) 之父蒂姆•贝纳斯•李早在1990年就提出了超文本传输协议HTTP(Hyper Text Transport Protocol),HTTP是WWW的基本协议,它是一个应用层的,面向对象的协议。
WWW 联盟成立后,组织了IETE ( Internet Engineering Task Force)小组进一步完善和发布HTTP 协议。
至今,HTTP协议经历了0.9、1.0、1.1三个阶段。
各阶段特征如下:1)HTTP/0.9特征:①适用于各种数据信息的简洁快速协议;②具有典型的无状态性;③无连接性;④无法使用内容协商;⑤无法显示和处理图片。
2)HTTP/1.0特征:①简单快速;②无状态性;③无连接性;④无法使用内容协商;⑤增加了元信息:在主要数据前加上一块信息,即信息的信息。
它使服务器能够提供传送数据的有关信息。
例如,传送对象是哪种类型,是用哪种语言书写的等等;⑥支持多种内容的形式,如图片、音频等。
3)HTTP /1.1特征:①持续性连接:允许请求一个web页面的浏览器发起一次连接就可从服务器上下载多个文件;②仍无状态性,但可提供状态控制;③新增加了资源请求:在原有GET、HEAD 、POST 几种方法的基础上增加了OPTIONS、PUT 、DELETE 和TRACE;④身份认证:一种简单的“提问-回答”式的基本访问授权方法。
过程是先由服务器向客户发出身份鉴别请求,再由客户发出确认信息;⑤使用内容协商机制;⑥缓存(Cache) 机制:将先前的客户请求以及请求所对应的Web 服务器响应的内容暂时保存在机器的内存或物理存储器中,使得在处理新的客户请求时可以利用。
目前新一代的HTTP协议:HTTP-NG也已经处于研究阶段,它将很有可能取代现有的HTTP,它的最大变化是是客户机可以一次连续发送多个请求,服务器依次响应每个请求。