FTP 与大多数 Internet 服务一样,使用的也是“客户端/服务器”模式。

用户通过一个支持 FTP 协议的客户机程序,连接在远程主机上的 FTP 服务器程序。通过在客户端向服务器端发送 FTP 命令,服务器执行该命令,并将执行结果返回给客户端。由于“控制连接”的因素,客户端发送的 FTP 命令,服务器都会有对应的应答。

FTP 工作流程如图所示。

上图中显示了 FTP 进行文件传输的基本工作流程。主要分为 4 个阶段,即建立连接阶段、身份认证阶段、命令交互阶段和断开连接阶段。下面对这 4 个阶段进行详细介绍。

建立连接阶段

该阶段是 FTP 客户端通过 TCP 三次握手与FTP服务器端进行建立连接。

客户端向 FTP 服务器发出建立连接请求,FTP 服务器对请求进行应答。如果 FTP 服务器上的 21 端口是启用的,可以接受来自其他主机的请求,给出应答 220,表示服务就绪,即告诉客户端需要的 FTP 服务已经准备好了。

返回应答以后,FTP 服务器需要客户端进行身份认证,向客户端发送身份认证请求。

身份认证阶段

身份认证是指客户端需要向FTP服务提供登录所需的用户名和密码。FTP 服务器对客户端输入的用户名和密码都会给出相应的应答。如果客户端输入的用户名和密码正确,将成功登录FTP服务器,此时进入 FTP 会话。

命令交互阶段

在 FTP 会话中,用户可以执行 FTP 命令进行文件传输,如查看目录信息、上传或下载文件等。客户端输入要执行的 FTP 命令后,服务器同样会给出应答。如果输入的执命令正确,服务器会将命令的执行结果返回给客户端。执行结果返回完成后,服务器继续给出应答。

断开连接阶段

当客户端不再与 FTP 服务器进行文件传输时,需要断开连接。客户端向 FTP 服务器发送断开连接请求,服务器收到断开连接后给出相应的应答。

验证工作流程

为了能够更好地理解FTP客户端与服务器的工作流程,下面以一个简单的实例进行讲解。

【实例】已知 FTP 服务器的 IP 地址为 192.168.59.135。使用一个主机作为 FTP 客户端与 FTP 服务器进行文件传输。

这里查看 FTP 服务器上目录 content 中的信息。执行命令如下:

root@daxueba:~# ftp

为了方便分析,下面将按照 FIP 的 4 个工作流程阶段进行分析。

建立连接

ftp> open 192.168.59.135                  #客户端请求建立连接
Connected to 192.168.59.135.
220 Welcome                               #服务器应答, 应答码为220

以上输出信息显示客户端向 FTP 服务器 192.168.59.135 发起了连接请求,服务器给出了对应的应答码 220,表示成功建立了连接。

身份认证

Name (192.168.59.135:root): sm            #客户端输入的用户名(明文显示), 这里为sm
331 User name ok, need password.          #服务器应答, 应答码为331
Password:                                 #客户端输入的密码
230 User logged in, proceed.              #服务器应答, 应答码为230

以上输出信息显示了客户端输入的用户名和密码,并显示了对应的应答码。用户名的应答码为 331,表示还需要客户端输入密码;密码的应答码为 230,表示登录成功。

命令交互

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir content                                            #客户端执行的命令
200 Connected.                                              #服务器应答, 应答码为200
150 Start of file list.                                     #服务器应答, 应答码为150
-rwxrwxrwx 1 ftp ftp        18 Sep 11 14:47 file-3.txt      #目录列表信息
-rwxrwxrwx 1 ftp ftp        18 Sep 11 14:47 file-1.txt      #目录列表信息
-rwxrwxrwx 1 ftp ftp        18 Sep 11 14:47 file-2.txt      #目录列表信息
226 Transfer complete.                                      #服务器应答, 应答码为226

以上输出信息显示了用户名要执行的命令 dir content,表示显示 FTP 服务器上 content 的目录列表信息;服务器给出了应答,这里给出了两个应答码。应答码为 200,表示 FTP 服务器可以执行该命令;应答码为 150,表示服务器已经准备好了目录列表,打开数据连接,将执行结果发送给客户端。

这里显示的目录列表信息可以看到 content 中有 3 个文件 file-1.txt,file-2.txt 和 file-3.txt。输出信息最后一行显示了服务器的应答码 226,表示执行结果已经返回。

断开连接

ftp> quit                                           #客户端指定的断开FTP子命令
221 Service closing control connection.             #服务器应答, 应答码为221

以上输出信息显示了客户端执行的断开连接的 FTP 子命令 quit。最后一行显示了服务器的应答,应答码为 221,表示服务器确认退出登录。

FTP协议的工作流程相关推荐

  1. FTP协议及工作原理详解

    FTP协议及工作原理详解 1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的 ...

  2. FTP协议及工作原理

    1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文 ...

  3. DCHP协议的工作流程简述

    DHCP:全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务 ...

  4. http协议的工作流程

    一次HTTP操作称为一个事务,其工作过程可分为四步: 1.首先客户机与服务器需要建立连接,只要单击某个超级链接,HTTP的工作开始. 2.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一 ...

  5. 【基础协议】HTTP/HTTPS协议及其工作流程

    目录 1 HTTP协议与HTTPS协议 1.1 HTTP协议概述 1.2 HTTPS协议概述 1.3 HTTPS与HHTP区别 2 URI和URL相关知识 2.1 URI统一资源标识符 2.2 URL ...

  6. 网络协议之FTP协议

    1.什么是FTP协议? FTP 是File Transfer Protocol(文件传输协议).用于ftp客户端和ftp服务器之间进行文本.文件传输的协议.与http的短连接不同,FTP协议是一种基于 ...

  7. SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)

    SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接:2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器 ...

  8. [C# 网络编程系列]专题十一:实现一个基于FTP协议的程序——文件上传下载器...

    引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...

  9. FTP协议中的登录 上传 下载 新建目录 删除目录 的wireshark包分析(一文看完TCP包分析,附源文件,ppt,操作视频)

    ​​​​​​​目录 一原理 二.FTP登录 三.FTP下载 四.FTP上传 五.FTP新建目录 六.FTP删除目录 一原理 前言:TCP/IP四层模型和OSI模型对照,以及FTP在模型中的位置. • ...

最新文章

  1. 对于这个函数const int func(const int a) const声明中,三个const分别是什么意思?...
  2. Android-静态代理模式
  3. Hbase hbck2下载编译和基本使用
  4. 为bootstrap的tab增加请求操作
  5. bzoj 2763 [JLOI2011]飞行路线——分层图
  6. java ee用户登录_EE Servlet 3:使用会话和过滤器开发用户登录
  7. 如何不使用Java 8默认方法
  8. Java常考面试题(一)
  9. matlab ones函数_Matlab中相见恨晚的命令(持续更新)
  10. spring boot 配置动态刷新
  11. 浅谈ARMv8-A系列CPU的架构
  12. loss函数之L1Loss,MSELoss,SmoothL1Loss, HuberLoss
  13. android金逸电影院客户端
  14. C语言条件运算符(?:)的使用
  15. 【zookeeper】Apache curator优点介绍
  16. 解决 CLion 出现中文乱码问题【亲测有效】
  17. Java模拟微信发红包,一看就会
  18. 吴恩达:神经网络和深度学习(Neural Networks and Deep Learning)
  19. 中国合成革行业应用发展分析与销售前景研究报告2022版
  20. undefined control sequence_control两个超级实用的短语解析

热门文章

  1. C++set函数用法
  2. 2021年R1快开门式压力容器操作考试及R1快开门式压力容器操作考试题
  3. 独孤九剑-第一式 整体规划
  4. TL-X19固件汇总(1.01-5.07+兔斯基美化版)带详细更新说明
  5. 从用户交互场景出发,欧瑞博MixPad要系统化定义智能居住空间
  6. HDU2112 HDU Today【Floyd算法】
  7. 微信小程序报错:navigateTo:fail can not navigateTo a tabbar page的解决方法
  8. python爬虫学习之爬取全国各省市县级城市邮政编码
  9. 最新织梦响应式电力发电机维修类企业官网网站源码(自适应手机版)
  10. 太太太好用了!12款论文润色神器,SCI、EI论文写作必看