FTP 探究

说明

  • 事由:公司IPC产品需要支持FTP上传人脸抓拍图功能。
  • FTP功能是C/S模型,由FTP服务器以FTP协议提供上传服务。

环境搭建

  • 调试过程中需要自己搭建服务器来验证功能。

服务器安装

  • 由于FTP协议出现已经非常久了,网络上可以找到的FTP服务器非常多,但是最好使用较为闻名的服务器,性能和稳定性更有保障,此次调试过程中就出现,测试使用不知名的服务器,导致长时间循环上传图片出现丢图片,上传中断的问题,浪费宝贵的验证时间。
  • 常见的服务器:windows上的FileZilla Server,Linux上的vsftp等,使用过程中性能和稳定性都非常不错,FileZilla Server使用较为简单,没有太多配置。
  • vsftp,全称是Very Secure FTP,从名称可以看出来,作者的初衷是服务的安全性。
  • 安装
sudo apt install vsftpd
  • 查看ftp服务器状态
service vsftpd status
  • 启动ftp服务器
service vsftpd start
  • 重启ftp服务器
service vsftpd restart

服务器配置

  • vsftpd 3.0.3安装后默认生成了下面的配置文件。
/etc/vsftpd.conf
  • 配置略。

FTP协议

  • FTP客户端通过FTP协议将文件上传到FTP服务器。

协议特征

  • 类似于Http1.1等协议,FTP是字符协议,发送的数据是字符形式的。

上传流程

  • 首先客户端使用服务默认端口(21)与服务器创建一个socket链接,通过字符串的形式发送命令,例如:登录,模式设置,上传,下载等等,服务器收到命令,进行相应执行后会返回字符形式的数字响应码,客户端根据响应码判断执行结果。
  • 当需要进行文件上传或下载时,服务器会返回一个新的端口,客户端与服务器之间会以此端口创建一个新的短链接进行文件发送,发送完就关闭。

主动模式和被动模式

  • 创建文件传输链接时,有两种方式:
  1. 客户端充当服务器,开放端口,服务器主动连接客户端指定的数据端口,连接成功后进行文件传输,也称为主动模式。
  2. 服务器开放数据端口,客户端去连接服务器,连接成功后进行文件传输,也称为被动模式。
  • 主动模式和被动模式是站在服务器角度描述。

常用命令

命令描述
ABOR中断数据连接程序
ACCT 系统特权帐号
ALLO 为服务器上的文件存储器分配字节
APPE 添加文件到服务器同名文件
CDUP 改变服务器上的父目录
CWD 改变服务器上的工作目录
DELE 删除服务器上的指定文件
HELP 返回指定命令信息
LIST 如果是文件名列出文件信息,如果是目录则列出文件列表
MODE 传输模式(S=流模式,B=块模式,C=压缩模式)
MKD 在服务器上建立指定目录
NLST 列出指定目录内容
NOOP无动作,除了来自服务器上的承认
PASS 系统登录密码
PASV请求服务器等待数据连接
PORT
IP地址和两字节的端口ID
PWD显示当前工作目录
QUIT从FTP服务器上退出登录
REIN重新初始化登录状态连接
REST 由特定偏移量重启文件传递
RETR 从服务器上找回(复制)文件
RMD 在服务器上删除指定目录
RNFR 对旧路径重命名
RNTO 对新路径重命名
SITE 由服务器提供的站点特殊参数
SMNT 挂载指定文件结构
STAT 在当前程序或目录上返回信息
STOR 储存(复制)文件到服务器上
STOU 储存文件到服务器名称上
STRU 数据结构(F=文件,R=记录,P=页面)
SYST返回服务器使用的操作系统
TYPE 数据类型(A=ASCII,E=EBCDIC,I=binary)
USER 系统登录的用户名

响应码

响应代码解释说明
110新文件指示器上的重启标记
120服务器准备就绪的时间(分钟数)
125打开数据连接,开始传输
150打开连接
200成功
202命令没有执行
211系统状态回复
212目录状态回复
213文件状态回复
214帮助信息回复
215系统类型回复
220服务就绪
221退出网络
225打开数据连接
226结束数据连接
227进入被动模式(IP地址、ID端口)
230登录因特网
250文件行为完成
257路径名建立
331要求密码
332要求帐号
350文件行为暂停
421服务关闭
425无法打开数据连接
426结束连接
450文件不可用
451遇到本地错误
452磁盘空间不足
500无效命令
501错误参数
502命令没有执行
503错误指令序列
504无效命令参数
530未登录网络
532存储文件需要帐号
550文件不可用
551不知道的页类型
552超过存储分配
553文件名不允许
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值