一、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