了解FTP协议和HTTP1.1协议(“图解HTTP”第3章3.5节),理解FTP、HTTP协议支持常用下载工具高速的多线程文件分块下载、 断点续传的背后原理。实践:在Ubuntu系统上安装一个Ftpd服务(搭建FTP服务)。用telnet 手工方式 登录ftp服务,上传一个图片文件或压缩包文件;然后,再手工用分片下载的方式,将此文件分片下载到本地(多个小文件),再将这几个小文件合并为1个大文件(无须编程,用copy命令即可实现),看是否与原文件一样大小,是否能正常打开。
一、介绍
HTTP是Hyper Text Transfer Protocol,超文本传输协议;面向网页的。
FTP是File Transfer Protocol,文件传输协议;面向文件的。(soap的默认端口号8880,ftp的代理服务器的默认端口号是21)
FTP也是基于C/S模式而设计的。在进行FTP操作的时候,即需要客户应用程序,也需要服务器端程序。我们一般先在自己的计算机中执行FTP客户应用程序,在远程服务器中执行FTP服务器应用程序,这样,就可以通过FTP客户应用程序和FTP进行连接。连接成功后,可以进行各种操作。在FTP中,客户机只提出请求各接收服务,服务器只接收请求和执行服务。
在利用FTP进行文件传输之前,用户必须先连入INTERNET网中,在用户自己的计算机上启动FTP用户应用程序,并且利用FTP应用程序和远程服务器建立连接,激活远程服务器上的FTP服务器程序。准备就绪后,用户首先向FTP服务器提出文件传输申请,FTP服务器找到用户所申请的文件后,利用TCP/IP将文件的副本传送到用户的计算机上,用户的FTP程序再将接收到的文件写入自己的硬盘。文件传输完后,用户计算机与服务器计算机的连接自动断开。
与其他的C/S模式不同的是,FTP协议的客户机与服务器之间需要建立双重连接:一个是控制连接,另一个是数据连接。这样,在建立连接时就需要占用两个通信信道。
HTTP超文本传输协议,HTTP是用来在WWW上交换文件(文本,图形,声音,动画等)的规则集。相对于TCP/IP协议族(它是网上交换信息的基础),HTTP是应用协议。
ftp的协议和http协议的主要区别在于ftp是需要用户名和密码才能访问(匿名登陆除外),这样做的目的在于有的文件只供特殊人访问,而http协议是任何人都可以访问的。ftp在浏览器的地址栏中的格式是:
ftp://用户名:密码@网站地址/文件目录/
如果直接输入ftp.网站地址 则会弹出一个登陆界面,需要输入用户名和密码,这种方式通常称为webftp,从字面上理解很容易明白,看起来是浏览器访问,实际上打开的是以文件夹的形式的存放目录。
命令 | 说明 |
---|---|
ls | 显示服务器上的目录 |
get | 从服务器下载指定文件到客户端 |
put | 从客户端传送指定文件到服务器 |
open | 连接ftp服务器 |
quit | 断开连接并退出ftp服务器 |
cd directory | 改变服务器的当前目录为directory |
lcd directory | 改变本地的当前目录为directory |
bye | 退出ftp命令状态 |
ascii | 设置文件传输方式为ASCII模式 |
binary | 设置文件传输方式为二进制模式 |
! | 执行本地主机命令 |
cd | 切换远端ftp服务器上的目录 |
cdup | 上一层目录 |
close | 在不结束ftp进程的情况下,关闭与ftp服务器的连接 |
delete | 删除远端ftp服务器上的文件 |
get | 下载 |
hash | 显示#表示下载进度 |
mdelete | 删除文件,模糊匹配 |
mget | 下载文件,模糊匹配 |
mput | 上传文件,模糊匹配 |
mkdir | 在远端ftp服务器上,建立文件夹 |
newer | 下载时,检测是不是新文件 |
prompt | 关闭交互模式 |
put | 上传 |
pwd | 显示当前目录 |
二、搭建FTP服务器
- 安装vsftpd
sudo apt-get install vsftpd
- 安装后打开ftp配置文件
nano/vim/gedit /etc/vsftpd.conf
内容 | 说明 |
---|---|
local_root=/home/virftp/testuser1 | 定义虚拟用户的家目录 |
anonymous_enable=NO | 不允许匿名用户登陆,如果允许则用YES |
write_enable=YES | 写权限,允许 |
local_umask=022 | 设定umask,用来控制用户创建文件和目录的默认权限 |
anon_upload_enable=NO | 不允许匿名用户上传 |
anon_mkdir_write_enable=NO | 不允许匿名用户创建目录和写权限 |
idle_session_timeout=600 | 空闲时限600秒,超时自动断开 |
data_connection_timeout=120 | 数据连接(请求)时限120秒,超时会自动断开 |
max_clients=10 | 客户端的最大连接数 |
- 完成配置后重启ftp服务
sudo service vsftpd restart
三、上传图片
- 首先在查看ubuntu的ip
- 在windows上打开cmd命令行输入ftp,如下图进行完成登录
- 登录成功后在命令行输入上传命令put
(本地文件) D:\HP\qint\wan.jpg 意思为:本地上传文件的路径,回车确认
(远程文件) ./qint/wan1.jpg 意思为:上传到ftp服务器的目录路径,回车确认
上传成功后可以通过目录查看
注意:上传的原文件要写到文件后缀,不然上传不上去,也就是必须确认文件格式
四、下载文件
- 使用get命令下载
- 再手工用分片下载的方式,将此文件分片下载到本地(多个小文件),再将这几个小文件合并为1个大文件(无须编程,用copy命令即可实现),看是否与原文件一样大小,是否能正常打开。
- 将图片分片
split -l 1000 wan1.jpg//不加参数,默认也是1000行
split [OPTION] [INPUT [PREFIX]]
选项如下:
-a : 指定后缀长度
-b : 每个文件多少字节
-d : 使用数字后缀而不是字母
-l : 指定每个文件的行数
这张图片被分割为4部分
- 通过get将其分别下载即可
5. 通过copy完成几个文件的合成
cmd cd到文件目录
copy /b xaa+xab+xac+xad wanwan.jpg
文件大小相同,可正常打开