文件传输协议FTP解析

一、FTP状态码解析

FTP服务器: 220 (vsFTPd 2.0.1)                                          |说明:链接成功
FTP客户端: USER useway                                                 |说明:输入用户名
FTP服务器: 331 Please specify the password.                            |说明:请输入密码
FTP客户端: PASS  !@#$%abce                                               |说明:输入密码
FTP服务器: 230 Login successful.                                       |说明:登录成功
FTP客户端: CWD /home/useway                                            |说明:切换目录
FTP服务器: 250 Directory successfully changed.                         |说明:目录切换成功
FTP客户端: EPSV ALL                                                    |说明:为EPSV被动链接方式
FTP服务器: 200 EPSV ALL ok.                                            |说明:OK
FTP客户端: EPSV                                                        |说明:链接
FTP服务器: 229 Entering Extended Passive Mode (|||62501|)              |说明:被动链接端口为62501
FTP客户端: LIST                                                        |说明:执行LIST显示文件列表
FTP服务器: 150 Here comes the directory listing.                       |说明:列表从62501端口被发送
FTP服务器: 226 Directory send OK.                                      |说明:发送完成
FTP客户端: QUIT                                                        |说明:退出FTP
FTP服务器: 221 Goodbye.                                                |说明:再见

二、FTP主动/被动模式对比

在这里插入图片描述
FTP协议使用两个TCP链接来分别进行命令传输数据传输,将管理和数据传输分隔开。

主动模式和被动模式的区别主要体现在端口的确定上。

(一)主动模式

1.主动模式的特征

主动模式下,FTP服务器的命令端口和数据端口是固定不变的,例如模式21是命令端口,20是数据端口。FTP服务器的端口也可以在配置文件中设置,但无论怎么配置都是一经设定,则固定不变。

2.主动模式数据传输过程

第一步:客户端会随机开启大于1024的端口N和N+1两个端口,N为客户端的命令端口,N+1为客户端的数据端口。

客户端使用端口N连接FTP服务器的命令端口21建立控制连接,同时开放N+1号端口进行监听。然后通过命令端口向服务器发出PORT N+1命令,告诉服务器我这边开启了数据端口N+1。

第二步:在控制连接建立成功后,服务器会使用数据端口20,主动连接客户端的N+1端口以建立数据连接。这就是FTP主动模式的连接过程。

我们可以看到数据连接建立的过程中,服务器是主动的连接客户端的,所以称这种模式为主动模式。

(二)被动模式

1.被动模式的特征

被动模式下,FTP的命令端口是固定不变的,但是数据端口是自动从端口1024到5000中随机选择的,或者从自己配置的端口范围内随机选择。

2.被动模式数据传输过程

第一步,客户端的命令端口N主动连接服务器命令端口21,并发送PASV命令,告诉服务器用“被动模式”。

第二步,控制连接建立成功后,服务器随机开启一个数据端口P,通过PORT命令将P端口告诉客户端。

第三步,客户端的数据端口N+1去连接服务器的数据端口P,建立数据连接。

参考文章:
1、https://blog.csdn.net/linjing2587032062/article/details/47760979
2、https://www.cnblogs.com/rainman/p/11647723.html
3、https://blog.csdn.net/qq_16038125/article/details/72851142
4、https://blog.csdn.net/qq_16038125/article/details/72851142

猜你喜欢

转载自blog.csdn.net/loongkingwhat/article/details/121453414