• 【网络协议详解】——FTP系统协议(学习笔记)


    🕒 1. 概述

    • 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送
    • 文件传送协议FTP (File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。
      • FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。
      • FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
      • RFC 959 很早就成为了因特网的正式标准。
    • 在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,万维网WWW的通信量才首次超过了FTP。

    FTP的常见用途:

    • FTP的常见用途是在计算机之间传输文件,尤其是用于批量传输文件。
    • FTP的另一个常见用途是让网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器。

    在这里插入图片描述

    🕒 2. 工作原理

    在这里插入图片描述

    🕘 2.1 两个连接

    FTP客户和服务器之间要建立以下两个并行TCP连接

    • 控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令。
    • 数据连接,用于文件传输,在每次文件传输时才建立,传输结束就关闭。

    默认情况下,FTP使用TCP 21端口进行控制连接,TCP 20端口进行数据连接。但是,是否使用TCP 20端口建立数据连接与传输模式有关,主动方式使用TCP 20端口,被动方式由服务器和客户端自行协商决定。

    在这里插入图片描述

    🕒 3. 相关命令与处理

    FTP的命令分为6组:

    🕘 3.1 接入命令

    接入命令使用户能够访问远程系统。

    命令参数说明
    USER用户标识符用户信息
    PASS用户口令口令
    ACCT应付费的服务财务信息
    REIN重新初始化
    QUIT从系统注销
    ABOR命令异常终止

    🕘 3.2 文件管理命令

    文件管理命令使用户能访问到远程计算机的文件系统。

    命令参数说明
    CWD目录名改变到另一个目录
    CDUP改变到父目录
    DELE文件名删除文件
    LIST目录名列出子目录或文件
    NLIST目录名列出子目录或无其它属性的文件
    MKD目录名创建新目录
    PWD显示当前目录
    RMD目录名删除目录
    RNFR文件名(旧文件名)标志要重新命名的文件
    RNTO文件名(新文件名)重新命名文件
    SWNT文件系统名安装文件系统

    🕘 3.3 数据格式化命令

    数据格式化命令让用户定义数据结构、文件类型以及传输方式。

    命令参数说明
    TYPEA(ASCII),E(EBCDIC),I(图像),N(非打印),或T(TELNET)定义文件类型
    STRUF(文件),R(记录),P(页面)定义数据的组织
    MODES(流),B(块),C(压缩)定义传输方式
    RMD目录名删除目录
    RNFR文件名(旧文件名)标志要重新命名的文件
    RNTO文件名(新文件名)重新命名文件
    SWNT文件系统名安装文件系统

    🕘 3.4 端口定义命令

    端口定义命令定义客户端的数据连接使用的端口号。

    命令参数说明
    PORT6个数字的标识符客户选择端口
    PASV服务器选择端口

    🕘 3.5 文件传输命令

    文件传输命令用于控制传输文件。

    命令参数说明
    RETR文件名读取文件:文件从服务器传送到客户
    STOR文件名存储文件:文件从客户传送到服务器
    APPE文件名与STOR类似,但是若文件存在,将数据添加到文件尾部
    STOU文件名与STOR相同,但是文件名在目录中必须唯一
    ALLO文件名在服务器为文件分配存储空间
    REST文件名在指明的数据点给文件标记确定位置
    STAT文件名返回文件的状态

    🕘 3.6 杂项命令

    杂项命令用于将用户要求的信息返回客户端。

    命令参数说明
    HELP询问关于服务器的信息
    NOOP检查服务器是否工作
    SITE文件名指明特定场所的命令
    SYST询问服务器使用的操作系统

    🕘 3.7 命令处理——响应

    响应分为两个部分:

    • 3位数字的代码:定义代码
    • 跟随在代码后的文本:定义所需的参数或额外的解释说明

    将3位数字记为xyz,下面展示每一个数字的意义。

    第一个数字定义命令的状态。该位置上可以使用下列5个数字:

    • 1yz(正面初步回答) 表示动作已经开始。服务器在接受命令之前将发送回答。
    • 2yz(正面完成回答) 表示动作己经完成。服务器将接受命令。
    • 3yz(正面中间回答) 表示命令已经接受,但需要进一步的信息。
    • 4yz(过渡负面完成回答) 表示动作没有发生,但差错是暂时的。同样的命令其后可继续发送。
    • 5yz(永久负面完成回答) 表示命令没有接受,不能再次发送。

    第二个数字定义命令的状态。该位置上可以使用下列6个数字:

    • x0z(语法)
    • x1z(信息)
    • x2z(连接)
    • x3z(鉴别和账号)
    • x4z(未指明)
    • x5z(文件系统)

    第三个数字提供附加信息,下表给出了可能出现的响应简短列表:

    代码说明
    ——正面初步回答
    120服务不久即将就绪
    125数据连接打开;数据传输不久即将开始
    150文件状态是OK
    ——正面完成回答
    200命令OK
    211系统状态或求助回答
    212目录状态
    213文件状态
    214求助报文
    215命名系统类型(操作系统)
    220服务就绪
    221服务关闭
    225数据连接打开
    226关闭数据连接
    227进入被动方式,服务器发送IP地址和端口号
    230用户登录OK
    250请求文件动作OK
    ——正面中间回答
    331用户名OK:需要口令
    332需要登录账号
    350文件动作在进行中:需要更多的信息
    ——过渡负面完成回答
    425不能打开数据连接
    426连接关闭:不能识别的命令
    450未采取文件动作:文件不可用
    451动作异常终止:本地差错
    452动作异常终止:存储器不足
    ——永久负面完成回答
    500语法差错:不能识别的命令
    501参数或变量的语法差错
    502命令未实现
    503不良命令序列
    504命令参数未实现
    530用户未登录
    532存储文件需要账号
    550动作未完成:文件不可用
    552请求的动作异常终止:超过分配的存储器空间
    553未采取请求动作:文件名不允许

    🕒 4. 文件传输

    FTP的文件传输仅表示下列三件事件之一:

    • 从服务器把文件复制到客户(下载),称为读取文件。在RETR命令的监督下完成。
    • 从客户把文件复制到服务器(上传),称为存储文件。在STOR命令的监督下完成。
    • 从服务器向客户发送目录列表或文件名。在LIST命令的监督下完成。应注意,FTP把目录或文件名列表当作文件,在数据连接上发送。

    🕘 4.1 例子

    🔎 在 VMware 虚拟机中搭建 FTP 服务器 (详细)

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    注:PORT 192,168,26,1,36,123,该命令是客户端告知服务器,客户端的数据连接端口号为36*256+123=9339


    ❗ 转载请注明出处
    作者:HinsCoder
    博客链接:🔎 作者博客主页

  • 相关阅读:
    QT基础入门【QSS】继承、命名空间中的小部件、QObject 属性介绍
    kubernetes cluster IP not with in the service CIDR
    2022年《微信小程序从基础到uni-app项目实战》
    电脑重装系统后如何给系统磁盘扩容空间
    网络拓扑图怎么画最好?
    PySpark数据分析基础:pyspark.SparkConf核心类详解+代码示例
    Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
    电脑重装系统后usbcleaner怎么格式化u盘
    FPGA project : TFT_LCD
    Mysql—六大日志
  • 原文地址:https://blog.csdn.net/HinsCoder/article/details/130911658