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连接包括:

  1. 一个控制连接(control connection)
      这个连接用于传递客户端的命令和服务器端对命令的响应。它使用服务器的21端口,生存期是整个FTP会话session时间。(就是从open ip[port]close这段时间?)

  2. 几个数据连接(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)

在主动模式下,客户端打开一个监听端口(通常是随机选择的),并将其告知服务器。服务器在需要传输数据时,主动连接到客户端的监听端口。具体步骤如下:

  1. 客户端连接到服务器的21端口(FTP命令端口)。
  2. 客户端打开一个监听端口(例如:1025),并通过PORT命令告知服务器。
  3. 服务器收到PORT命令后,通过服务器的20端口主动连接到客户端的监听端口(例如:1025)。

主动模式的缺点是,由于服务器主动连接客户端,可能会受到客户端防火墙的限制。

被动模式(Passive mode)

在被动模式下,服务器打开一个监听端口(通常是随机选择的),并将其告知客户端。客户端在需要传输数据时,主动连接到服务器的监听端口。具体步骤如下:

  1. 客户端连接到服务器的21端口(FTP命令端口)。
  2. 客户端发送PASV命令,请求服务器进入被动模式。
  3. 服务器打开一个监听端口(例如:1025),并通过227响应告知客户端。
  4. 客户端收到227响应后,主动连接到服务器的监听端口(例如:1025)。

被动模式的优点是,由于客户端主动连接服务器,通常不会受到客户端防火墙的限制。因此,被动模式在实际应用中更为常用。

总结一下,主动模式和被动模式的主要区别在于建立数据连接的方式:主动模式是服务器主动连接客户端,而被动模式是客户端主动连接服务器。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部