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

目录

  • 1. 概述
  • 2. 工作原理
    • 2.1 两个连接
  • 3. 相关命令与处理
    • 3.1 接入命令
    • 3.2 文件管理命令
    • 3.3 数据格式化命令
    • 3.4 端口定义命令
    • 3.5 文件传输命令
    • 3.6 杂项命令
    • 3.7 命令处理——响应
  • 4. 文件传输
    • 4.1 例子

1. 概述

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

FTP的常见用途:

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

【网络协议详解】——FTP系统协议(学习笔记)_第1张图片

2. 工作原理

【网络协议详解】——FTP系统协议(学习笔记)_第2张图片

2.1 两个连接

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

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

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

【网络协议详解】——FTP系统协议(学习笔记)_第3张图片

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 数据格式化命令

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

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

3.4 端口定义命令

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

命令 参数 说明
PORT 6个数字的标识符 客户选择端口
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 服务器 (详细)

【网络协议详解】——FTP系统协议(学习笔记)_第4张图片
【网络协议详解】——FTP系统协议(学习笔记)_第5张图片

【网络协议详解】——FTP系统协议(学习笔记)_第6张图片
【网络协议详解】——FTP系统协议(学习笔记)_第7张图片
【网络协议详解】——FTP系统协议(学习笔记)_第8张图片

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


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

你可能感兴趣的:(TCP/IP网络协议原理与分析,网络协议,学习,笔记,经验分享,网络)