基于HTTP协议的局域网文件下载工具
项目背景
在学习完计算机网络这门课程后,我想通过一个实践性的项目完善和巩固自己对于HTTP协议的通信流程的认识,而HTTP协议正好很适合进行小文件的传输,所以萌发了做一个基于HTTP协议的局域网文件下载工具的想法
项目开发平台和工具
centos 7.0
vim/gdb
g++ 5.3.1
boost
需求分析
在写这个项目之前,对于选择哪种协议充当通信协议我做过一番思量,tcp/udp协议符合我的要求,但是,想要实现功能还需要进行扩展,并且还需要针对项目的具体功能设计特定的语句来进行通信。
没有办法,tcp/udp协议对于这个项目实现的功能来说太底层了,而针对文件传输在应用层的众多协议中,有两种协议很适合,HTTP(超文本传输协议)、FTP(文件传输协议)。
功能上来说,FTP更适合这个项目,但是考虑到实现难度,我最终选择了HTTP协议。
FTP协议有两条连接,控制连接和数据连接,控制连接是持久连接,数据连接是非持久连接。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME(