您现在的位置是:首页 >其他 >FTP协议分析(主动模式和被动模式)网站首页其他

FTP协议分析(主动模式和被动模式)

网络技术开发笔记 2024-10-24 00:01:03
简介FTP协议分析(主动模式和被动模式)

 今天本来计划分析下suricata中协议识别和解析的代码的,准备先从ftp协议开始看,不过看了一会儿代码后,还是觉得有必要对ftp协议的细节先熟悉熟悉。

目录

1、FTP环境搭建工具

2、FTP协议介绍

3、FTP文件操作命令列表

4、FTP请求码列表

5、FTP响应码列表

6、FTP两种工作模式

6.1 FTP主动模式流程

6.1.1 IPv4主动模式报文交互流程

6.1.2 IPv6主动模式报文交互流程

6.2 FTP被动模式流程

6.2.1 IPv4被动模式报文交互流程

6.2.2 IPv6被动模式报文交互流程


1、FTP环境搭建工具

1)FTP客户端:

  • Windows系统:FlashFXP 或者 浏览器 或者 文件管理器

  • Linux系统:ftp命令

2)FTP服务器:

  • Windows系统:  FileZilla Server 或者 3CDaemon(不支持IPv6)或者 自带的IIS

  • Linux系统:vsftpd

本篇文章,我的FTP客户端和服务器都是在windows系统上。

2、FTP协议介绍

 FTP协议(File Transfer Protocol,文件传输协议)是一种用于计算机之间传输文件的标准网络协议。它允许用户在不同的计算机之间进行文件传输和共享。通过FTP协议,用户可以通过网络连接到远程计算机上的FTP服务器,并进行文件上传、下载和管理。

FTP协议的功能非常简单,它不仅可以支持不同平台之间的文件传输,而且还支持多用户和多任务处理。FTP客户端和FTP服务器分别作为不同的实体进行交互。FTP客户端掌握了可以在一个远程服务器上实现的文件系统,而FTP服务器则允许用户上传、下载、删除和修改文件。FTP协议主要有两种模式:主动模式和被动模式。主动模式中,客户端向服务器发送命令,并侦听服务器发送的数据连接。被动模式中,服务器向客户端发送端口号,并侦听客户端连接的数据。FTP协议默认使用TCP协议传输,其控制连接是通过TCP的21端口,数据连接则是通过TCP的20端口。

需要注意的是,FTP协议并没有对数据进行加密处理,因此在数据传输过程中存在安全问题。有一些扩展了FTP协议的协议(比如Secure File Transfer Protocol、SSH File Transfer Protocol等),则包含了加密处理来保证数据的安全传输。

3、FTP文件操作命令列表

序号

命令

 说明

1

 ls

 显示服务器上的目录

2

 get

从服务器下载指定文件到客户端

3

 put

 从客户端传送指定文件到服务器

4

 open

 连接ftp服务器

5

 quit

 断开连接并退出ftp服务器

6

 cd directory

 改变服务器的当前目录为directory

7

 lcd directory

 改变本地的当前目录为directory

8

 bye

 退出ftp命令状态

9

 ascii

 设置文件传输方式为ASCII模式

10

 binary

 设置文件传输方式为二进制模式

11

 !

 执行本地主机命令

12

 cd

 切换远端ftp服务器上的目录

13

 cdup

 上一层目录

14

 close

 在不结束ftp进程的情况下,关闭与ftp服务器的连接

15

 delete

 删除远端ftp服务器上的文件

16

 get

 下载

17

 hash

 显示#表示下载进度

18

 mdelete

 删除文件,模糊匹配

19

 mget

 下载文件,模糊匹配

20

 mput

 上传文件,模糊匹配

21

 mkdir

 在远端ftp服务器上,建立文件夹

22

 newer

 下载时,检测是不是新文件

23

 prompt

 关闭交互模式

24

 put

 上传

25

 pwd

 显示当前目录

Linux系统上ftp看到的操作命令:

4、FTP请求码列表

序号

请求码

功能

1

ABOR

终止上一个FTP命令

2

ACCT

指定FTP登录的用户账户

3

ALLO

分配指定长度的服务器存储空间

4

APPE

在指定文件后追加数据

5

CDUP

返回到上一级目录

6

CWD

更改工作目录

7

DELE

删除指定的文件

8

EPSV

进入扩展被动模式(IPv6被动模式用)

9

HELP

查询FTP服务器的帮助信息

10

LIST

列出当前目录或指定目录下的文件列表

11

MKD

创建新目录

12

APPE

在指定文件后追加数据

13

MODE

设置文件传输模式

14

FEAT

获取服务器支持的FTP功能列表

15

MLSD

列出指定目录下的文件列表

16

MLST

显示指定文件/目录的属性

17

NLST

列出当前目录或指定目录下的文件名

18

NOOP

空操作,用于保持控制连接的活跃状态

19

PASS

指定FTP登录的用户密码

20

PASV

进入被动模式,等待数据传输连接(IPv4被动模式用)

21

PORT

定义客户端的数据传输端口(IPv4主动模式用)

22

PWD

显示当前工作目录

23

QUIT

结束FTP会话

24

REIN

重新初始化登录状态连接

25

REST

设置数据传输的起始点

26

RETR

下载文件

27

RMD

删除指定的目录

28

RNFR

重命名的原始文件名

29

RNTO

重命名的目标文件名

30

SITE

发送特定于服务器的命令

31

SIZE

查询指定文件的大小

32

SMNT

挂载指定文件系统

33

STAT

显示FTP服务器的状态

34

STOR

上传文件

35

STOU

储存文件到服务器名称上

36

STRU

设置文件结构

37

SYST

获取服务器的操作系统类型

38

TYPE

指定数据传输的类型,如二进制、ASCII等

39

USER

指定FTP登录的用户名

40

EPRT

定义服务器的数据传输端口(IPv6主动模式用)

5、FTP响应码列表

序号

响应码

功能

1

110

指示服务器正在等待客户端发送REST命令来恢复中断的传输

2

120

指示服务器需要一些时间以使服务准备就绪,并在n分钟后告知客户端

3

125

指示数据连接已经处于打开状态,并且文件传输即将开始

4

150

指示文件状态正常,即将打开数据连接

5

200

指示操作成功完成

6

202

指示命令未实现

7

211

指示服务器系统状态

8

212

指示服务器目录状态

9

213

指示服务器文件状态

10

214

指示服务器帮助信息

11

215

指示服务器系统类型

12

220

指示服务已经准备就绪等待新的用户

13

221

指示服务正在关闭控制连接

14

225

指示数据连接已打开,并且没有正在进行的文件传输

15

226

指示数据连接已关闭

16

227

指示进入被动传输模式(IPv4被动模式用)

17

229

进入扩展被动传输模式,包含IP地址和端口号(IPv6被动模式用)

18

230

指示用户已登录

19

250

指示文件操作已成功完成

20

257

指示已经创建一个新的路径名称

21

331

指示服务需要密码进行认证

22

332

指示服务需要帐户名进行认证

23

350

指示文件操作需要进一步的信息

24

421

指示服务因某个原因无法可用

25

425

指示无法打开数据连接

26

426

指示数据连接已关闭

27

450

指示文件不可用

28

451

指示操作被中止

29

452

指示指定的存储分配不足以处理该命令

30

500

指示语法错误,或者命令无法理解

31

501

指示参数语法错误

32

502

指示命令未实现

33

503

指示服务不可用

34

504

指示命令没有完成如何操作,需要更多信息

35

530

指示需要进行身份验证

36

532

指示存储文件需要进行完整性检查

37

550

指示文件不可用

38

551

指示归档/备份操作未执行

39

552

指示超过存储限制

40

553

指示操作未执行,文件名不合法

6、FTP两种工作模式

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式(如果是IPv6,则分别是EPRT和EPSV)。主动被动都是相对于服务器来说的。

主动方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令(IPv4)或者EPRT命令(IPv6)告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

被动方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端通过PASV命令(IPv4)或者EPSV命令(IPv6)服务器想要使用被动模式, 服务器回应响应码227(IPv4)或者229(IPv6)告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

6.1 FTP主动模式流程

6.1.1 IPv4主动模式报文交互流程

从上图IPv4主动模式的报文可以看到,客户端172.16.1.1发送PORT命令,告诉服务器172.16.1.2,“我要使用主动模式,你来连我的ip 172.16.1.1,端口1135”,服务器回应响应码200表示同意,然后数据通道就主动使用20端口去连客户端的1135端口。

6.1.2 IPv6主动模式报文交互流程

从上图IPv6主动模式的报文可以看到,客户端2000::58发送EPRT命令,告诉服务器2000::57,“我要使用主动模式,你来连我的ipv6地址 2000::58,端口1194”,服务器回应响应码200表示同意,然后数据通道就主动使用49428端口去连客户端的1194端口。

6.2 FTP被动模式流程

6.2.1 IPv4被动模式报文交互流程

从上图IPv4被动模式的报文可以看到,客户端172.16.1.1发送PASV命令,告诉服务器172.16.1.2,“我要使用被动模式,你告诉我端口,我来连你”,服务器回应响应码227,告诉客户端"我的ip地址是172.16.1.2,端口是49183",然后数据通道时,客户端就使用随机端口1082主动去连服务器的49183端口。

6.2.2 IPv6被动模式报文交互流程

从上图IPv6被动模式的报文可以看到,客户端2000::58发送EPSV命令,告诉服务器2000::57,“我要使用被动模式,你告诉我端口,我来连你”,服务器回应响应码229,告诉客户端"我的ip地址是2000::57,端口是49490",然后数据通道时,客户端就使用随机端口1827主动去连服务器的49418端口。

好了,ftp协议流程分析就到这里了。具体里面的登录、输入用户名密码、列出目录这些交互流程,这里就不讲了,直接看报文就可以看懂了,相对于http协议来说,ftp还是简单很多的。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。