FTP协议使用

article/2025/8/18 14:52:12

FTP协议大家都知道是文件传输协议,那这个协议到底是怎么样的呢,怎么用C语言是实现一个客户端呢?

我想通过这篇文章你能够理解FTP协议。

 

1-首先我们先了解一下FTP的工作流程

  FTP分为   FTP服务器,FTP客户端,一般我们只关注FTP客户端,这里也会只讲一下客户端。

      1.1  命令端口连接

      1.2  登录

      1.3  数据端口连接(主动连接,被动连接)

             主动连接:客户端打开一个数据端口给服务器连接

             被动连接:服务器打开一个数据端口给客户端连接

      1.4  命令交互和文件下载上传操作

   一个FTP客户端一般要经历以上流程,其实1.1和1.3就是两个socket连接,一个用来传输命令,一个用来传输文件。

2-直接用工具演示

          准备一个网络调试组手,一个可用的FTP服务器,网络调试组手什么样的都可以。

          下面打开2个调试组手,左边的用来连接命令端口,右边用来连接数据端口

     2.1  命令端口连接   ,用组手连接成功后,会返回  220 pyftpdlib 1.5.6 ready.

  2.2 发送登录用户命令  USER user      返回 331 Username ok, send password.

        发送登录密码命令  PASS 123456  返回  230 Login successful.

   2.3 数据端口连接(因为我这个FTP服务器是公网的就不开放出来了)

   使用被动模式连接 PASV  返回 227 Entering passive mode (104,214,126,31,181,148)

   这里数据端口连接一定要快准狠,因为服务器很有超时等待。

   括号里面就是数据端口要连接的 IP 和端口,IP: 104,214,126,31 ,端口:181*256+148

2.4 下载文件

下载命令:RETR test.txt  ,返回:125 Data connection already open. Transfer starting.
226 Transfer complete.

发送下载命令后,服务器会把文件发送到数据端口中,发送完成数据端口会自动关闭。

2.5 断开连接

断开命令:QUIT  返回:221 Goodbye.

以上就是一个FTP客户端的连接-下载文件的一个过程,是不是很简单,自己用c语言写一个是不是也不难。

FTP的命令非常多,就不一样举例了。

下面列举一些常用的命令(命令后面都需要有 \r\n 就是回车)

命令描述RFCDescription
ABOR(ABORT)此命令使服务器终止前一个FTP服务命令以及任何相关数据传输。 Abort an active file transfer.
ACCT(ACCOUNT)此命令的参数部分使用一个Telnet字符串来指明用户的账户。 Account information.
ADAT(AUTHENTICATION/SECURITY DATA)认证/安全数据RFC 2228Authentication/Security Data
ALLO为接收一个文件分配足够的磁盘空间 Allocate sufficient disk space to receive a file.
APPE增加 Append.
AUTH认证/安全机制RFC 2228Authentication/Security Mechanism
CCC清除命令通道RFC 2228Clear Command Channel
CDUP改变到父目录 Change to Parent Directory.
CONF机密性保护命令RFC 2228Confidentiality Protection Command
CWD改变工作目录 Change working directory.
DELE删除文件 Delete file.
ENC隐私保护通道RFC 2228Privacy Protected Channel
EPRT为服务器指定要连接的扩展地址和端口RFC 2428Specifies an extended address and port to which the server should connect.
EPSV进入扩展被动模式RFC 2428Enter extended passive mode.
FEAT获得服务器支持的特性列表RFC 2389Get the feature list implemented by the server.
HELP如果指定了命令,返回命令使用文档;否则返回一个通用帮助文档 Returns usage documentation on a command if specified, else a general help document is returned.
HOST确定服务器上所需的虚拟主机名。RFC 7151Identify desired virtual host on server, by name.
LANG语言协商RFC 2640Language Negotiation
LIST如果指定了文件或目录,返回其信息;否则返回当前工作目录的信息 Returns information of a file or directory if specified, else information of the current working directory is returned.
LPRT为服务器指定要连接的长地址和端口RFC 1639Specifies a long address and port to which the server should connect.
LPSV进入长被动模式RFC 1639Enter long passive mode.
MDTM返回指定文件的最后修改时间RFC 3659Return the last-modified time of a specified file.
MIC完整性保护命令RFC 2228Integrity Protected Command
MKD创建目录 Make directory.
MLSD如果目录被命名,列出目录的内容RFC 3659Lists the contents of a directory if a directory is named.
MLST提供命令行指定的对象的数据RFC 3659Provides data about exactly the object named on its command line, and no others.
MODE设定传输模式(流、块或压缩,S=流模式,B=块模式,C=压缩模式) Sets the transfer mode (Stream, Block, or Compressed).
NLST返回指定目录的文件名列表 Returns a list of file names in a specified directory.
NOOP无操作(哑包;通常用来保活) No operation (dummy packet; used mostly on keepalives).
OPTS为特性选择选项RFC 2389Select options for a feature.
PASS认证密码 Authentication password.
PASV进入被动模式 Enter passive mode.
PBSZ保护缓冲大小RFC 2228Protection Buffer Size
PORT指定服务器要连接的地址和端口 Specifies an address and port to which the server should connect.
PROT数据通道保护级别RFC 2228Data Channel Protection Level.
PWD打印工作目录,返回主机的当前目录 Print working directory. Returns the current directory of the host.
QUIT断开连接 Disconnect.
REIN重新初始化连接 Re initializes the connection.
REST从指定点重新开始传输 Restart transfer from the specified point.
RETR传输文件副本 Retrieve a copy of the file
RMD删除目录 Remove a directory.
RNFR从...重命名 Rename from.
RNTO重命名到... Rename to.
SITE发送站点特殊命令到远端服务器 Sends site specific commands to remote server.
SIZE返回文件大小RFC 3659Return the size of a file.
SMNT挂载文件结构 Mount file structure.
STAT返回当前状态 Returns the current status.
STOR接收数据并且在服务器站点保存为文件 Accept the data and to store the data as a file at the server site
STOU唯一地保存文件 Store file uniquely.
STRU设定文件传输结构 Set file transfer structure.
SYST返回系统类型 Return system type.
TYPE设定传输模式(ASCII/二进制) A/I.  Sets the transfer mode (ASCII/Binary).
USER认证用户名 Authentication username.
XCUP改变之当前工作目录的父目录RFC 775Change to the parent of the current working directory
XMKD创建目录RFC 775Make a directory
XPWD打印当前工作目录RFC 775Print the current working directory
XRCP RFC 743 
XRMD删除目录RFC 775Remove the directory
XRSQ RFC 743 
XSEM发送,否则邮件RFC 737Send, mail if cannot
XSEN发送到终端RFC 737Send to terminal

 

 

响应代码 解释说明 
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文件名不允许

http://chatgpt.dhexx.cn/article/rylYdq1i.shtml

相关文章

FTP协议分析

一、实验名称 FTP协议分析 二、实验目标 1、理解FTP协议的工作原理; 2、了解FTP协议的常用命令; 3、了解应用层协议与传输层协议的关系 三、实验原理 FTP(File Transfer Protocal),是文件传输协议的简称。FTP使…

FTP 文件传输协议

FTP: 使用FTP进行文件传输时,会使用两个TCP连接。第一个连接是FTP客户端和FTP服务器间的控制连接。FTP服务器开启21号端口,等待FTP客户端发送连接请求。FTP客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器…

在互联网上传输文件 —— FTP协议

文章目录 FTP协议是什么FTP协议传输过程FTP命令和回答参考文献 FTP协议是什么 FTP(File Transfer Protocol,文件传输协议) 是TCP/IP 协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。…

文件传输协议(FTP)

因特网上使用的最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存储权限。它屏蔽了各个计算系统的细节,因而适合于在异构网络中的任意计算机之间传输文件。 FTP提供以下功能: 提供不同种…

FTP协议完全详解

1. 介绍 FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。虽然我们也可以手工使用它,但是它的主要作用是供程序使用的。在阅读本文之前最好能够阅读TCP协议标准规范和Telnet协议标准规范。…

FTP协议(文件传输协议)

FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序&am…

FTP文件传输协议详解

简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器。 需要通过控制连接20端口来控制双方的通信 需要通过数据连接21端口来进行双方的通信 主动模式:最大的特点是数据连接由服务器的20端口主动发起连接,这种情况可能会被客户端的防火墙拒绝…

FTP协议讲解

FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。 在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命…

FTP 协议

FTP 协议 FTP协议的(file Transfer Protocol)文本传输协议,简称为FTP, **FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,**采用的是c/s模式 也就是客户端和服务器…

浅谈FTP(文件传输协议)

FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议。是基于TCP协议的应用层协议,用于在网络上传输文件。 该协议使用的端口号为20和21,其中20是数据端口,21是命令端口(默认情况下) 是否使用…

FTP协议

一、FTP的概述 1、文件传送协议FTP (File Transfer Protocol)是互联网上使用得最广泛的文件传送协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。 3、FTP 屏蔽了…

FTP文件传输协议

目录 一、FTP的概述 1.1 FTP的理念 1.2 FTP数据连接模式 1.2.1 连接模式分类 1.2.2 主动和被动模式的工作原理 二、配置FTP服务 2.1 配置匿名用户FTP服务 2.1.1 关闭防火墙安装vsftpd软件包 2.1.2 开启FTP服务并做备份 ​ 2.1.3 修改配置文件 2.1.4 设置目录下权限&a…

FTP协议详解

一、FTP协议的概述 1、文件传送协议(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。 3、FTP屏蔽了各…

手推向量投影长度、投影向量

投影 (tuyǐng),数学术语,指图形的影子投到一个面或一条线上。 声明向量F为F、 向量F的大小为|F|,向量b为b、向量b的大小为、|b| 当我们得到了投影的大小之后|F| 因为 F 在 b 上 所以 单位向量相同,F 和 b…

向量投影公式

公式一:a.b |a||b|cos(r) cos(r) a.b/|a|/|b| 公式二:|c| |a|cos(r) 公式三:|c| a.b/|b| 公式四:c b/|b| |c| 公式五:c a.b/|b|2 b 公式六:c a.b/b.b b 备注:|b| √b.b 朝向解P…

已知法向量,某一向量投影到其平面,计算投影向量

最近一直在计算旋转矩阵,奈何高中数学实在是差,大学高等数学也不行,线性代数也不行,现在做起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。 第一个:对某一向量进行旋转平移,等于是在其左边乘了…

向量投影推导

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…

向量投影

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…