当前位置:硬件测评 > FTP的主动模式和被动模式如何工作

FTP的主动模式和被动模式如何工作

  • 发布:2023-10-09 09:23

目录

1。链接分类

2。控制链接

3。数据链路

3.1,被动模式 (PASV)

3.2,活动模式(端口)

3.3。两种模式数据链路的差异

4。 FTP相关命令

4.1,登录

4.2。建立文件传输套接字通信

4.3、操作文件

4.4、目录操作

4.5,模式和类型

4.6、参数信息

4.7,其他不常用命令

4.8,FTP 服务器响应代码


1。链接分类

  FTP 是一种仅基于 TCP 的服务。不同的是FTP协议使用两个TCP连接。一是控制链路,用于客户端和服务器之间传递命令;另一个是数据链路。路,用于上传或下载数据。建立从客户端到服务器端口 21 的控制链路。根据数据链路的链路建立方向和使用的端口号分为主动模式和被动模式。

2。控制链接

无论是被动模式还是主动模式,客户端都需要先使用大于1024的端口主动联系服务器 端口21 构建链路,形成控制链路。具体流程如下:

1。客户端向服务器端发起三次握手操作,完成TCP链接的建立
2、TCP链接建立完成,服务器端回复220给客户端(220:准备好服务新用户)
3、服务器向客户端发送响应530(530:要求客户端发送用户名和密码)
4、客户端发送用户名,服务器收到用户名后回复331并验证成功(331:用户名正确,需要密码)
5.客户端发送密码,服务收到密码验证成功并回复230(230:用户登录成功)

客户端:10.43.42.199,服务器:10.43.85.223,消息如下

//客户端
[root@localhost ~]# netstat -anp | grep 10.43.85.223
tcp 0 0 10.43.42.199:52055 10.43.85.223:21 建立 19848/ftp

3。数据链接

3.1,被动模式 (PASV)

ftp 默认使用被动模式传输数据。具体流程如下:

1。客户端向服务器发送PASV命令,告诉服务器使用被动模式(控制链路)
2、服务器收到命令后,打开一个监听端口listen_port(大于1024),并回复端口信息客户端
3. 客户端收到服务的listen_port信息后,立即创建一个新的端口,与listen_port建立链路(数据链路)
4. 数据链路建立完成后,数据信息发送到数据链路,控制命令信息经过控制链路

型号如下:

          

抓包信息如下:

client命令执行结果:

//clientftp>获取test1
本地:test1 远程:test1
227 进入被动模式 (10,43,85,223,25,164)。
150 打开 test1 的 BINARY 模式数据连接(70776816 字节)。
226 传输完成。
6.1 秒内接收到 70776816 字节 (1.1e+04 Kbytes/s)
....[roott@localhost ~]# netstat -anp | grep 10.43.85.223tcp 0 0 10.43.42.199:44613 10.43.85.223:6564 已建立 19848/ftp
tcp 0 0 10.43.42.199:52055 10.43.85.223:21 建立 19848/ftp

3.2,活动模式(端口)

1。客户端在本地打开一个监听端口listen_port,然后向服务端发送PROT命令,将端口信息带到服务端
2、服务收到PROT命令后,立即使用本地20端口监听客户端上的listen_port 。链路建立(数据链路)
3、数据链路建立完成后,数据信息经过数据链路,控制指令信息经过控制链路。

? 3WVdObEx6SXdNVEV2TURVeU9DOHlNRFF4TlRaZmRrYzRNVjg1TnpFeE9DNXFjR2M/eC1vc3MtcHJvY2VzcyYjNjE7aW1hZ2UvZm9ybWF0LHBuZw==/}

抓包信息如下:

客户端命令执行结果:

//clientftp>被动
被动模式关闭。
ftp> 获取测试2
本地:test2 远程:test2
200 端口命令成功。考虑使用 PASV。
150 打开 test2 的 BINARY 模式数据连接(86743786 字节)。
226 传输完成。
7.5 秒内收到 86743786 字节 (1.1e+04 KB/s)
ftp> 退出[roott@localhost ~]# netstat -anp | grep 10.43.85.223
tcp 0 0 10.43.42.199:59250 10.43.85.223:20 已建立 19848/ftp
tcp 0 0 10.43.42.199:52055 10.43.85.223:21 建立 19848/ftp
[roott@localhost ~]# netstat -anp | grep 10.43.85.223
tcp 0 0 10.43.42.199:59250 10.43.85.223:20 已建立 19848/ftp
tcp 0 0 10.43.42.199:52055 10.43.85.223:21 建立 19848/ftp
[roott@localhost4 ~]# netstat -anp | grep 10.43.85.223

3.3。两种模式之间数据链路的差异

  1. 被动模式和主动模式的区别主要在数据链路上,控制链路完全相同。
  2. 被动模式是客户端主动与服务器建立链接,监听端口在响应PASS后被服务器带回。
  3. 主动模式是服务器主动建立到客户端的链接。监听端口封装在客户端的请求信息PROT中。同时,该服务只能使用端口21来建立链接。也就是说,如果是主动模式,则只能有一条数据链路在传输(同一IP)。
  4. 还有一点需要注意:数据链路仅用于数据传输。数据传输完成后,链路将立即断开。如果后续有数据传输,就会创建新的数据链路,无论是PASS还是PROT。

4。 FTP相关命令

(每条命令执行后,服务器都会回复)

4.1,登录

用户帐号\r\n登录帐号
PASS密码\r\n登录密码
REIN\r\n如果您想再次登录,连接将不关闭,下一篇文章命令USER重新连接
QUIT\r\n退出

4.2。建立文件传输套接字通信

PASV\r\n被动模式,服务器会回复IP地址和端口,然后您就可以连接。 (一般使用被动模式)
PORT代表IP端口的特殊格式\r\n主动模式,让服务器主动连接你的文件监听套接字

4.3、操作文件

STOR 文件名\r\n上传文件
APPE 文件名\r\n上传文件,如果文件名已存在,则在末尾插入数据
DELE 文件名\r\ n删除指定文件
REST字节数\r\n跳过字节数,短时间内恢复下载,在下载文件之前使用,以便RETR命令仅下载偏移部分
RETR 文件名\r\n下载文件
ABOR\r\n中止传输文件,将关闭文件套接字通信

4.4、目录操作

? n显示当前目录下的文件,包括长度、文件类型(如目录)和权限(表示类型:drwxr-xr-x)LIST目录名\r\n显示文件在指定目录中的文件,包括长度、文件类型(如目录)和权限(表示类型:drwxr-xr-x) MKD目录名\r\n创建目录PWD\r \n 显示当前目录的路径 RMD 目录名称\r\n删除目录RNFR 文件或目录名称\r\n重命名文件或目录,然后使用 RNTO 指定新名称 RNTO 文件或目录名\r\n重命名为....NLST\r\n仅显示当前目录中的文件,\r\ n代表下一个NLST目录\r\n只显示指定目录下的文件,\r\n代表下一个

4.5,模式和类型

TYPE 字符 \r\n选择传输类型
A 为文本模式
I 为二进制模式
E 为 EBCDIC
N 为非打印模式
T 表示 Telnet格式控制字符

4.6、参数信息

SYST\r\n获取服务器系统信息(NT或Unix)
STAT文件或文件夹\r\n获取相关信息

4.7、其他不常用命令

ACCT 用户帐户\r\n 发送 PASS 命令并在发送之前接收 332 代码
SMNT 另一个文件数据系统的路径\r\n允许用户挂载另一个文件系统不改变登录的数据结构
MODE字符 \r\n指定传输类型:默认为流模式(S为流)(B为块)(C为压缩)
STRU字符\ r \n指定结构类型:F为文件结构(默认值为流式)
ALLO逻辑字节\r\n在上传文件之前,使用此命令申请内存(I还没看到需要的就直接上传)
NOOP测试通讯
HELP帮助,会列出有效命令

4.8,FTP 服务器响应代码

150文件状态良好,数据连接已打开
200命令成功
212目录状态
213文件状态
110重启标记响应
500格式错误,命令无法识别
501参数语法错误
502 命令未执行
120 准备就绪 关闭控制连接,您可以注销
202 命令未执行
211 系统状态或系统帮助响应
225 数据连接打开,没有正在进行的传输
226 关闭数据连接,请求的文件操作成功
227 进入被动模式
230用户登录
331用户名正确,需要密码
332登录需要帐户信息
350请求的文件操作需要进一步的命令
421连接数过多用户
425无法打开数据连接
426关闭连接,中止传输
450未执行请求的文件操作
451中止请求的操作:出现本地错误
452未执行请求的操作:系统存储空间不足
250 请求的文件操作已完成
257 创建“PATHNAME”
503 命令顺序错误
504 该参数下的命令功能未实现
530 帐号或密码不正确
532 帐号需要信息来存储文件
550 未执行请求的操作
551 请求的操作已中止:未知页面类型
552请求的文件操作中止,存储分配溢出
553未执行请求的操作:非法文件名

参考:

https://www.sychzs.cn/jingzi123456789/article/details/83409572

https://www.sychzs.cn/Aaron133/article/details/78508211

 

相关文章