`

(转)什么是FTP的Passive模式和Active模式

 
阅读更多

什么是FTP的Passive模式和Active模式

  转自:http://blog.sina.com.cn/s/blog_5ceb51480102vpm8.html
 
 
       由于项目中经常使用到FTP,通过一些相关客户端如CuteFTP、Fillzilla、WinSCP等工具或Linux命令对FTP数据进行操作,而至于FTP的工作模式却有点模糊。下面就把FTP主动和被动模式熟悉一下,需要知道的是,FTP是基于TCP服务的,不支持UDP。FTP-File Transfer Protocol,文件传输协议。
 
一、FTP的两种工作模式
FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
 
      在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
 
      在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
 
      总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
 
      被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后的主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
 
      一般连接FTP客户端软件的连接模式默认为Passive(被动连接)。即FTP客户端向服务端口(默认是21)发出连接请求,服务端接到请求后建立命令链路。然后服务端通过命令链路发消息告诉客户端,服务端某个端口位于(1025—65535)之间开放,与客户端建立起数据链路,从而客户端可以进行数据上传与下载。这个被动指的是客户端被动收到服务端的消息,才能开始传输。一般这样的话,可能会受到服务端防火墙的阻隔。而主动模式,PORT即FTP客户端向服务端口(默认是21)发出连接请求,服务端接到请求后建立命令链路,这个过程与被动连接一样。然后客户端通过命令链路发消息告诉服务端,客户端一般是20端口开放,服务端收到消息后连接该端口,建立起数据链路,从而进行数据的上传下载。这个主动是指客户端主动开放20端口,并发起与服务端建立数据传输的请求。这种模式,可能受限于客户端防火墙的限制,另外也不能用与代理上网时的FTP服务,因为服务端收到客户端请求后,他连接的代理服务器的端口。
 
二、FTP模式深入说明
      主动FTP对FTP服务器的管理有利,但对客户端的管理不利,因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利,因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
 
      幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。
 
      简而言之:主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机。
 
三、FTP主动模式与被动模式的解决与原理
      FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
 
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
 
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
 
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
 
概括说明:
主动模式:服务器向客户端敲门,然后客户端开门;
被动模式:客户端向服务器敲门,然后服务器开门。
 
所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口要用主动模式来下载,请您把下载工具的被动模式(PASV)都不要打勾,用主动模式来下载就OK了,如果再出错,那就被动主动相互转换一下。
 
常见的FTP客户端软件的PASV方式的关闭方法。大部分FTP客户端默认使用PASV方式,PASV模式的意式是被动模式。 在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”。
 
IE: 工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。
 
CuteFTP: Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
 
或 File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode”
 
FlashGet: 工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”
 
FlashFXP: 选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式”
 
或 站点管理 -> 对应站点 -> 选项 -> “使用被动模式”
 
或 快速连接 -> 切换 -> “使用被动模式”
 
LeapFTP: Option ->Preferences -> General->Proxy->Use Pasv Mode
 
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同,而FTP的复杂性就在于此。
 
 
分享到:
评论

相关推荐

    ftp_Solaris ftp passive mode

    FTP有两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。主动模式下,FTP客户端打开一个随机端口(通常是1024到5000之间的端口)与FTP服务器的21号控制端口通信,并告诉服务器它使用的端口。然后,...

    ftp.rar_ftp_ftp.rar_ftp上传_uploader_上传ftp

    此外,FTP还支持 passive模式和active模式,解决防火墙或NAT设备可能导致的连接问题。Passive模式常用于防火墙后的客户端,服务器会主动发起数据连接,而active模式则是客户端向服务器请求数据连接。 FTP上传的步骤...

    Ftp-Sever.rar_ftp_ftp sever_ftp 服务器_ftp-sev_ftp-sever

    5. ** passive模式与active模式**:FTP有两种工作模式,Passive(被动)模式和Active(主动)模式。Passive模式适用于防火墙或NAT环境,服务器会打开一个随机端口等待客户端连接,以避免被防火墙阻断。Active模式则...

    FTP协议详细介绍,包含主动模式和被动模式

    FTP协议有两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。在主动模式下,客户端连接到服务器的21端口(命令端口),以建立控制连接。一旦控制连接建立,服务器打开一个临时端口来等待数据连接的...

    ftp服务器FtpServer

    4. **传输模式**:FTP有两种传输模式,主动(Active)和被动(Passive)。主动模式中,客户端打开一个端口向服务器发送数据;被动模式下,服务器打开一个端口等待客户端连接,用于解决防火墙和NAT设备下的连接问题。...

    FTP-RFC959

    此外,FTP还支持其他特殊模式,如TELNET和CARRIAGE CONTROL(ASA),这些模式适用于特定的应用场景,如文本处理和编程环境。 #### FTP的结构化文件传输与控制 FTP协议还定义了一系列的文件结构和传输控制机制,以...

    linux的FTP服务器

    FTP还支持两种工作模式:Standard(PORT或Active模式)和Passive(PASV模式)。在Active模式下,客户端先与服务器的21端口建立控制连接,然后告诉服务器用于数据传输的端口,服务器主动发起连接到客户端。而在...

    用Java实现FTP服务器 .rar_FTP服务器_ftp_java ftp_java ftp 服务器_java ftp服务器

    8. ** passive模式和active模式**:FTP有两种工作模式,即主动模式(active)和被动模式(passive)。主动模式中,客户端打开一个端口等待服务器连接;被动模式中,服务器打开一个端口等待客户端连接。服务器需要...

    Apache FTPServer的配置使用

    FTP 协议有两种工作模式:主动模式和被动模式。 主动模式(Active Mode):客户端打开一个随机端口,连接到服务器的 21 号端口,然后服务器连接到客户端的随机端口,传输文件。 被动模式(Passive Mode):客户端...

    简单实用的FTP服务器(单文件)

    5. ** Passive模式与Active模式**:FTP有两种连接模式,Passive模式用于解决防火墙和NAT设备的问题,Active模式则是服务器主动发起数据连接。"FTPserver.exe"可能默认启用其中一种,或者允许用户根据网络环境选择。 ...

    FTP.rar_ftp

    3. **FTP模式**:有两种主要的FTP模式,主动(Active)和被动(Passive)。主动模式中,客户端打开一个端口向服务器发送数据;而在被动模式下,服务器打开一个端口等待客户端连接,这通常用于解决防火墙和NAT设备...

    ftp协议例子的源代码

    FTP有两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。 1. 主动模式:在主动模式下,客户端首先建立一个TCP控制连接到服务器的21号端口。然后,客户端发送PORT命令,告诉服务器它希望在哪个端口...

    FTP流程解析

    FTP的协议流程,讲述Active以及Passive模式如何工作

    ftp程序源代码

    FTP协议有两种工作模式:主动模式(Active)和被动模式(Passive)。在主动模式下,客户端首先建立一个数据连接到服务器的特定端口(通常是20),然后服务器通过这个连接发送或接收文件。被动模式是为了解决防火墙...

    FTP上传测试工具 java

    4. **模式设置**:根据网络环境选择合适的传输模式,如主动模式(FTP.ActiveMode)或被动模式(FTP.PassiveMode)。 5. **文件上传**:使用FTPClient的storeFile方法上传本地文件到服务器。需要确保文件路径正确,...

    FTP内容的详细介绍

    此外,FTP有两种连接模式:主动模式(Active Mode)和被动模式(Passive Mode)。在主动模式下,客户端发起控制连接,服务器响应并请求建立数据连接;而在被动模式下,服务器主动开启一个端口等待客户端的数据连接...

    基于Labview的 FTP 的文件传输

    2. **设置工作模式**:根据网络环境选择主动或被动模式,这可以通过`FTP Set Passive Mode`或`FTP Set Active Mode`函数来完成。 3. **目录操作**:使用`FTP List Directory`函数获取服务器上的目录列表,`FTP ...

    Quick Easy FTP Server 4.0.0

    此外,了解被动模式(Passive Mode)和主动模式(Active Mode)的区别对于克服防火墙或NAT设备带来的连接问题至关重要。 总的来说,Quick Easy FTP Server 4.0.0是一款适合初学者和小型团队的FTP服务器解决方案,它...

    FTP.rar_FTP JAVA 客户端_ftp_ftp java_ftp java_java ftp

    2. **工作模式**:FTP有两种主要的工作模式,主动(Active)和被动(Passive)。主动模式中,服务器打开一个数据连接到客户端;而在被动模式下,客户端打开连接到服务器的数据端口。 3. **命令交互**:FTP使用一...

Global site tag (gtag.js) - Google Analytics