• 文件传输协议---FTP


    简介

    FTP是File Transfer Protocol(文件传输协议)的英文简称,建立在TCP协议之上,用于Internet上文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用是:让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

    几款开源的FTP服务端软件

    • Tinyftpd是用C语言实现的简单、快速、高效的Linux FTP服务器,只需简单的配置,就可快速的将主机变成高效的FTP服务器。下载地址:https://github.com/vbirds/Tinyftp
    • ftpd是一款功能强大、性能稳定、安全可靠、使用简单等优点,并能够进行web管理的ftp server软件。直接百度就可以下载,可以交叉编译到单板上。

    端口

    FTP协议主要使用的端口有两个,控制端口21,数据端口20,21端口主要用于传输控制命令,20端口主要用于传输数据。

    传输格式

    主要使用的传输格式和TFTP协议类似,二进制传输格式和文件传输格式,默认是二进制传输格式。

    传输模式

    传输模式主要分为两种,主动模式和被动模式,主动模式是在进行数据连接时,服务端主动连接客户端;被动模式是在进行数据连接时,客户端主动连接服务端。在客户端有防火墙的情况下,建议使用被动模式,因为在主动模式下,服务端连接客户端时,由于连接的客户端端口大于1024,有可能被客户端的防火墙挡住,导致连接失败。    

    协议格式

    FTP的控制帧格式由一段文本结构组成,一般结构如下:命令 + 空格 + 内容 + 。根据命令的不同,报文中的内容字段也有细微的区别,下面介绍一些常用的命令及其格式:

    登录类:

    • USER 账号 登录账号
    • PASS 密码 登录密码
    • REIN 想重新登录,连接不会关闭,下一条命令USER 可重新连接
    • QUIT 退出

    建立文件传输套接字通信类

    • PASV 被动模式,服务端会回复一个IP 地址和端口,然后你再连接.(一般使用被动模式)
    • PORT 表示IP 端口的特殊格式 主动模式,让服务端主动来连接你的文件监听套接字

    操作文件类

    • STOR 文件名 上传文件
    • APPE 文件名 上传文件,如果文件名已存在,把数据插入尾部
    • DELE 文件名 删除指定文件
    • REST 字节个数 跳过字节数,短点续传,下载文件前使用,使RETR 命令仅下载偏移后的部分
    • RETR 文件名 下载文件
    • ABOR 放弃传输一个文件,将关闭文件套接字通信
    • CWD 目录名 改变当前目录到指定目录
    • CDUP 返回上一次目录,当到根目录时,不变
    • LIST 显示当前目录下的文件,包括长度,文件类型(如目录)与权限(表示类型:drwxr-xr-x)
    • LIST 目录名 显示指定目录下的文件,包括长度,文件类型(如目录)与权限(表示类
    • 型:drwxr-xr-x)
    • MKD 目录名 创建一个目录
    • PWD 显示当前目录的路径
    • RMD 目录名 删除目录
    • RNFR 文件或目录名 将某文件或目录重命名,接下来要使用RNTO 指定新名称
    • RNTO 文件或目录名 重命名为....
    • NLST 仅显示当前目录下的文件,以 表示下一个
    • NLST 目录 仅显示指定目录下的文件,以 表示下一个

    模式与类型

    • TYPE 字符 选择传输类型
      • A 为文本模式
      • I 为二进制模式
      • E 为EBCDIC
      • N 为Nonprint 非打印模式
      • T 为Telnet 格式控制符

    参数信息

    • SYST 获取服务端系统信息(NT 或Unix)
    • STAT 文件或文件夹 获取相关信息

    其他不常用的命令

    • ACCT 用户帐号 发送PASS 命令并接收到332 代码之后才应发送
    • SMNT 另一个文件数据系统的路径 允许用户装配另一个文件系统的数据结构而无需改变登录
    • MODE 字符 指定传输类型:默认为流模式(S 为流)(B 为块)(C 为经过压缩)
    • STRU 字符 指定结构类型:F 为文件结构(默认值,就是流式传输)
    • ALLO 逻辑字节数 上传文件前,使用此命令申请内存
    • NOOP 测试通信
    • HELP 帮助,会列出有效命令

    FTP错误码

    错误一般是3个数字,2开头的数字一般表示成功,3开头的数字一般表示权限问题,4开头的数字一般表示文件问题,5开头的数组一般表示服务器问题,具体错误码的含义如下:

    • 150 文件状态良好,打开数据连接
    • 200 命令成功
    • 212 目录状态
    • 213 文件状态
    • 110 重新启动标记应答
    • 500 格式错误,命令不可识别
    • 501 参数语法错误
    • 502 命令未实现
    • 120 在X 分钟内准备好
    • 125 连接打开准备传送
    • 214 帮助信息,信息仅对人类用户有用
    • 215 名字系统类型
    • 220 对新用户服务准备好
    • 221 服务关闭控制连接,可以退出登录
    • 202 命令未实现
    • 211 系统状态或系统帮助响应
    • 225 数据连接打开,无传输正在进行
    • 226 关闭数据连接,请求的文件操作成功
    • 227 进入被动模式
    • 230 用户登录
    • 331 用户名正确,需要口令
    • 332 登录时需要帐户信息
    • 350 请求的文件操作需要进一步命令
    • 421 连接用户过多
    • 425 不能打开数据连接
    • 426 关闭连接,中止传输
    • 450 请求的文件操作未执行
    • 451 中止请求的操作:有本地错误
    • 452 未执行请求的操作:系统存储空间不足
    • 250 请求的文件操作完成
    • 257 创建"PATHNAME"
    • 503 命令顺序错误
    • 504 此参数下的命令功能未实现
    • 530 账号或密码错误
    • 532 存储文件需要帐户信息
    • 550 未执行请求的操作
    • 551 请求操作中止:页类型未知
    • 552 请求的文件操作中止,存储分配溢出
    • 553 未执行请求的操作:文件名不合法
  • 相关阅读:
    c++链表实现学生成绩管理系统(简易版)
    IOS动画讲解
    栈的实现
    Masonry的使用
    二叉树详解-2
    二叉树详解-1
    CoreData的使用-2
    NSPredicate 详解
    CoreData的使用-1
    IOS常用手势用法
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11393205.html
Copyright © 2020-2023  润新知