ftp服务器为什么突然要用pasv才能登陆?

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:10:47
服务器serv-U 6.20, 客户端cuteftp7.2
本来默认用port登陆是正常的,可是突然登陆不上,显示:

200 PORT Command successful.
COMMAND:> LIST
150 Opening ASCII mode data connection for /bin/ls.
ERROR:> Timeout (30000 ms) occurred on accepting data connection from server.
425 Cannot open data connection.
ERROR:> Trashed response received.

后来改为PASV,就登陆上了,请问是什么问题?

FTP是一种数据传输协议,它的连接模式有两种: 主动模式( active )和被动模式( passive )。

1、在 active 模式下 (一般预设的模式):
FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求建立连接。当完成 Three-Way Handshake 之后,连接就成功建立,但这仅是命令通道的建立。
当两端需要传送数据资料的时候,client 透过命令通道用一个 port command 告诉 server ,client可以用另一个TCP port 做数据通道。
然后 server 用 port 20 和刚才client 所告知的 TCP port 建立数据连接。注意:连接方向是从server 到 client 的,TCP 分组中会有一个 SYN flag。
然后 client 会返回一个带 ACK flag的确认分组,并完成另一次的 Three-Way Handshake 过程。这时候,数据连接才能成功建立。开始数据传送。
2、在 passive 模式下:
FTP client 开启一个随机选择的TCP port 呼叫 FTP server 的 port 21请求建立连接,完成命令通道的建立。
当两端需要传送数据的时候,client 通过命令通道发送一个 PASV command 给server,要求进入 passive 传输模式。
然后 server 像上述的正常模式之第 2 步骤那样,挑一个TCP port ,并用命令通道告诉 client。
然后 client 用另一个TCP port 呼叫刚才 server 告知的 TCP port 来建立数据通道。此时分组中带有 SYN flag。
server 确认后回送一个 ACK 分组。并完成所有握手过程、成功建立数据通道。
开始数据传送。

在实际使用中, active mode 用来登入一些架设在主机上没有安装防火墙的 FTP server,或是架设在 client side 的 FTP