FTP的主动传输模式(PORT Mode 主动模式)及被动传输模式(Passive Mode 被动模式)(PASV)(FTP通信原理)主动模式是从服务器端向客户端发起数据连接
ftp> ? passive
passive enter passive transfer mode
文章目录
- FTP的特殊性
- 主动传输模式和被动传输模式
- 20230429(gpt4.0答案,比较详细)(这个讲得好)
- 主动模式(Active mode)
- 被动模式(Passive mode)
FTP的特殊性
大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计。一般,FTP连接包括:
-
一个控制连接(control connection)
这个连接用于传递客户端的命令和服务器端对命令的响应。它使用服务器的21端口,生存期是整个FTP会话session时间。(就是从open ip[port]到close这段时间?) -
几个数据连接(data connection) (数据连接隶属于会话?)
这些连接用于传输文件和其它数据,例如:目录列表等。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,每次使用的端口也不一定相同。而且,数据连接既可能是客户端发起的,也可能是服务器端发起的。
主动传输模式和被动传输模式
在FTP协议中,控制连接使用周知端口21。相反,数据传输连接的目的端口通常实现无法知道。FTP协议使用一个标准的端口20作为ftp-data端口,但是这个端口只用于连接的源地址是服务器端的情况,在这个端口上根本就没有监听进程。FTP的数据连接和控制连接的方向一般是相反的,也就是说,是服务器向客户端发起一个用于数据传输的连接。连接的端口是由服务器端和客户端协商确定的。FTP协议的这个特征对ISA转发以及防火墙和NAT的配置增加了很多困难。
除此之外,还有另外一种FTP模式,叫做被动模式(passive mod)。在这种模式下,数据连接是由客户程序发起的,和刚才讨论过的模式(我们可以叫做主动模式)相反。是否采取被动模式取决于客户程序,在ftp命令行中使用passive命令就可以关闭/打开被动模式。
这两种模式发起连接的方向截然相反,主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了X端口,你过来连接我”。于是服务器从20端口向客户端的X端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了X端口,你过来连接我”。于是客户端向服务器的X端口发送连接请求,建立一条数据链路来传送数据。 (我们arm ftp客户端默认是被动模式)
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。
各客户端默认连接方式说明:
1、 IE浏览器访问方式-------被动模式
2、 Linux字符连接-----------被动模式
3、 Windows字符连接-----主动模式
IE更改FTP连接方式为主动方法:
工具—Internet选项—高级—使用被动FTP(去掉勾选)-------OK
Linux下更改ftp连接方式为主动:(默认是被动,貌似我们目前需要的就是被动)
当ftp正常连接后输入:passive 将passive 模式关闭即可。
参考文章:FTP的主动模式(PORT Mode)及被动模式(Passive Mode)
20230429(gpt4.0答案,比较详细)(这个讲得好)
FTP(File Transfer Protocol)是文件传输协议,用于在客户端和服务器之间传输文件。FTP有两种连接模式:主动模式(Active mode)和被动模式(Passive mode)。这两种模式主要区别在于建立数据连接的方式不同。
主动模式(Active mode)
在主动模式下,客户端打开一个监听端口(通常是随机选择的),并将其告知服务器。服务器在需要传输数据时,主动连接到客户端的监听端口。具体步骤如下:
- 客户端连接到服务器的21端口(FTP命令端口)。
- 客户端打开一个监听端口(例如:1025),并通过
PORT命令告知服务器。 - 服务器收到
PORT命令后,通过服务器的20端口主动连接到客户端的监听端口(例如:1025)。
主动模式的缺点是,由于服务器主动连接客户端,可能会受到客户端防火墙的限制。
被动模式(Passive mode)
在被动模式下,服务器打开一个监听端口(通常是随机选择的),并将其告知客户端。客户端在需要传输数据时,主动连接到服务器的监听端口。具体步骤如下:
- 客户端连接到服务器的21端口(FTP命令端口)。
- 客户端发送
PASV命令,请求服务器进入被动模式。 - 服务器打开一个监听端口(例如:1025),并通过
227响应告知客户端。 - 客户端收到
227响应后,主动连接到服务器的监听端口(例如:1025)。
被动模式的优点是,由于客户端主动连接服务器,通常不会受到客户端防火墙的限制。因此,被动模式在实际应用中更为常用。
总结一下,主动模式和被动模式的主要区别在于建立数据连接的方式:主动模式是服务器主动连接客户端,而被动模式是客户端主动连接服务器。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
