`

FTP的主动和被动模式详解

阅读更多
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp25

主动模式FTP与被动模式FTP该如何选择
一、主动模式的实现与特点。  无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结。而主动模式与被动模式的差异主要体现在数据连结通道上。为了说明两者的差异,我将主要对这个数据连结进行比较详细的说明。
  当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接。如在客户端向服务器发起连接请求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三方握手来实现的。当三方握手完成之后,客户端与服务器之间便建立了命令连接通道。不过这个通道的用途是非常有限的,其主要用来传输FTP的相关指令。如查看文件列表、删除文件等等,而不能够用来在客户端与服务端进行文件传输。为此这个通道就被称之为命令通道。而跟数据传输相关的为数据通道。
  到客户端与服务器建立了连接之后,可能客户端暂时不需要进行数据传输。如只是需要查看目录下的文件或则其他相关的动作。此时之需要命令连接通道就可以完成了。如果此时客户端需要往FTP服务器上上传或者下载文件的话,就需要在客户端与服务器端再建立一条额外的数据传输连接。

      二、主动模式的实现与特点。
     当客户端发出数据传输的指令之后(如上传数据或者下载文件),客户端会启用另外一个端口监听等待连接,并利用先前建立的命令连接通道告诉FTP服务器其监听的端口号。然后FTP服务器会利用端口20和刚才的FTP客户端所告知的端口再次进行三方握手。三次握手成功后便建立了一条数据传输通道。注意此时数据连结通道建立的过程中,是FTP服务器的20号端口主动连接FTP客户端的,为此这种连接方式就叫做主动模式。
  三、被动模式的实现与特点。
  被动操作模式在建立命令连接通道的时候,跟主动操作模式是相同的。两者主要的差异就在于数据传输通道的建立上面。但是如果用户需要进行数据传输的时候,则FTP客户端会通过命令通道告诉FTP服务器,如会向服务器发出一个PASV指令。这个指令就是告诉服务期,要采用被动模式建立连接。如果采用被动操作模式,服务期会选择自身的一个端口来进行监听连接(而在主动操作模式下是利用客户端的一个端口来进行监听连接),并再次利用命令连接通道告诉客户端“我为你开启了哪个端口,你要建立数据连接的话就跟我的哪个端口联系”。客户端在接到这个信息后,就会在自己操作系统上选择一个数据连接的通信端口,与服务器提供的端口进行三方握手,并最终建立起可以进行数据传输的通道。
  可见,从技术上来说,主动模式与被动操作模式的主要差异就在于谁开启一个端口来进行监听连接,谁等待(提供端口)、谁主动。虽然在技术上的差异比较小,但是其在具体的应用上却有很大的不同。
  四、两者该如何选择?
  当企业的网络环境不同,两个操作模式的应用效果是不同的。这主要是主动操作模式与被动操作模式在数据的传输通道建立上有一定的差异。从以上的分析中我们可以看出,在主动操作模式下,FTP服务器的20号端口是主动同客户端联系,建立数据传输通道的。而在被动操作模式下,则FTP服务器是被动的等待,等待客户段与其的20号端口建立连接。不要小看这个细小的差异,这个差异却决定了两者应用环境的不同。
  一般来说,如果这个FTP服务器只对企业的内部局域网客户提供文件传输的服务,那么基本上两者的应用效果没有很大的差异。但是如果企业网络外部的用户也需要通过互联网与FTP服务器进行文件传输的话,就会有很大的不同。这主要是因为,在数据通道建立的过程中,客户端会在另一个端口上监听等待连接,并利用命令连接通道告诉服务器其监听的端口好。然后企业的边界路由器会将FTP的IP地址转换为合法的公网IP地址(假设企业由于公网IP地址有限,在边界路由器上通过NAT服务向外部用户提供FTP连接)。如果此时采用的是自动操作模式的话,则在连接这个数据通道的过程中FTP服务器会主动跟边界路由器的端口进行通信(因为FTP服务器认为这台边界路由器,其实就是NAT服务器,就是FTP客户段)。但是实际上不是,而且也有可能没有启用这个端口。为此客户端与FTP服务器之间的连接最终没有建立起来。所以说,如果采用主动操作模式的话,当FTP服务器部署在NAT等服务器后面的时候,则FTP服务器与客户端之间只能够建立命令连接通道,而无法建立起数据传输通道。如果FTP服务器与客户端之间还有防火墙的话,在连接的过程中也会出现以上类似的情况。
  而如果是采用被动操作模式的话,是客户端主动跟服务期的20号端口进行连接的。为此在数据传输通道建立的过程中,即使中间有NAT服务器或者防火墙,也会准确无误的连接到FTP服务器的数据传输接口。所以说,如果在客户端与FTP服务器之间存在防火墙或者NAT服务器等类似设备的话,那么在FTP服务器部署的时候,最好采用被动操作模式。否则的话,很可能只能够建立命令连接通道,而无法进行数据传输。
在FTP服务器部署的时候,其默认采用的是主动操作模式。如果企业FTP服务器的用户都是在内部网络中的,即不用像外部网络的用户提供FTP连接的需求,那么采用这个默认操作方式就可以了。但是如果一些出差在外的员工或者员工在家庭办公时也需要访问企业内部的FTP服务器,而此时出于安全的考虑或者公网IP地址数量的限制,企业往往会把FTP服务器部署在防火墙或者NAT服务器的后面,此时这个主动操作模式就不行了。如果企业中通过互联网来访问企业内部FTP服务器的员工比较多的时候,那么最好能够一劳永逸的解决这个问题,即在FTP服务器上进行设置,强制客户端在连接的时候采用被动操作模式。相反如果用户比较少的话,而且用户又具有一定的计算机知识,那么可以不在服务器上进行设置。而是在连接的过程中,通过FTP客户端来设置。如在某些FTP客户端上,会有一个Passive Transfers等类似的选项。选中这个选项就表示以被动操作方式进行传输。而没有选中这个选项的客户端则仍然采用主动操作模式来进行连接。
  总之,在FTP服务器部署的时候考虑是要采用主动操作模式还是被动操作模式,只需要记住一个原则,即如果把FTP服务器部署在防火墙或者NAT服务器的背后,则采用主动操作模式的客户端只能够建立命令连接而无法进行文件传输。如果部署完FTP服务器后,系统管理员发现用户可以连接上FTP服务器,可以查看目录下的文件,但是却无法下载或者上传文件,如果排除权限方面的限制外,那么很有可能就是这个操作模式选择错误。系统管理员告诉用户选择合适的操作模式,基本上就可以解决文件传输的问题了。
分享到:
评论

相关推荐

    ftp主动模式和被动模式详解

    ftp主动模式和被动模式详解 详细的解释了FTP的主动模式和被动模式。

    ftp主动与被动模式详解

    FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。...这就是主动与被动FTP的最大不同之处。

    FTP主动模式和被动模式区别详解

    主要为大家详细介绍了FTP主动模式和被动模式区别的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    FTP服务器理论详解

    FTP协议有两种数据连接模式:主动数据连接和被动数据连接。 主动数据连接是FTP客户端开启一个随机TCP端口连接FTP服务器的21端口请求建立连接,完成三次握手后,控制连接建立完成。需要传输数据时,客户端通过控制...

    FTP详解(英文版)

    此外,FTP还提供了两种工作模式:主动模式和被动模式。在主动模式下,服务器通过控制连接发起数据连接;而在被动模式下,服务器等待客户端发起数据连接。 #### 三、新特性 在本次修订版中,增加了一些新的可选命令...

    3CDaemon --简单方便的FTP SERVER工具

    1. **启动与设置**:首次运行3CDaemon,需要配置服务器的基本信息,如监听的IP地址(可选择特定IP或所有IP)、端口号(默认21,但可根据需要更改)以及服务模式(主动或被动)。 2. **用户管理**:3CDaemon允许创建...

    IIS下FTP服务器的PASV端口范围修改方法

    在FTP通信过程中,有两种主要的数据传输方式:主动模式(PORT)和被动模式(PASV)。被动模式下,客户端向服务器发起请求时,服务器会从指定的端口范围内选择一个未使用的端口与客户端建立连接。如果这个端口范围过大,...

    FTP服务器有哪些优势FTP服务器知识详解.docx

    7. **速度优化**:FTP服务器可以利用多种传输模式,如主动模式和被动模式,以适应不同的网络环境,提高文件传输速度。 FTP服务器的配置通常包括以下步骤: 1. **安装服务器软件**:在服务器上安装FTP服务器软件,...

    FTP服务器详解+源代码.doc

    FTP协议提供了两种模式:主动模式和被动模式。主动模式下,服务器主动建立数据连接到客户端的特定端口;而在被动模式中,服务器提供一个临时端口,由客户端发起数据连接。 FTP服务器的实现涉及以下几个关键技术点:...

    实例FTP实例FTP.rar

    数据连接有两种模式:主动模式和被动模式。 - **主动模式**:服务器主动建立数据连接到客户端,这在防火墙或NAT设备后可能遇到问题。 - **被动模式**:服务器提供一个端口号,客户端主动连接到这个端口,解决...

    纯净版FTp_flashhttp

    FTP有两种工作模式:主动模式和被动模式。 1. 主动模式:服务器主动发起数据连接。客户端在建立控制连接时告诉服务器一个端口号,服务器随后在这个端口上建立数据连接。 2. 被动模式:考虑到防火墙和NAT设备的问题...

    FTP命令详细说明

    FTP有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。 **主动模式**: 在主动模式下,FTP客户端首先连接到服务器的控制端口21,建立命令链路。当需要传输数据时,客户端会通过PORT命令告诉服务器,...

    ftp实例_PB code

    FTP有两类模式:主动模式和被动模式。主动模式中,服务器主动连接客户端的某个端口;而在被动模式下,客户端发起连接到服务器的新端口。通常,被动模式更适用于防火墙或NAT设置。 二、PB中的FTP实现 在PB中实现FTP...

    ftpserver ftpserver ftpserver ftpserver

    FTP有两种工作模式:主动模式和被动模式。 1. 主动模式:客户端首先建立一个控制连接,然后服务器通过这个连接发起一个新的数据连接,用于文件传输。 2. 被动模式:为了解决防火墙和NAT设备的问题,FTP服务器在控制...

    FTP命令详解.txt

    - **passive**:切换到被动模式,用于某些防火墙环境下。 - **prompt**:启用或禁用交互式提示,当启用时,FTP会在执行某些操作前询问确认。 - **proxy ftp-cmd**:在代理服务器环境中使用,执行一个FTP命令,通常...

    FTP客户端详解

    FTP有两种主要的工作模式:PORT(主动模式)和PASV(被动模式)。 在PORT模式下,客户端首先发起与服务器的控制连接,然后告诉服务器它将监听的端口号,通常是命令连接端口号加1。服务器随后会从其数据端口(20)...

    ftp客户端源码

    7. **FTP的主动和被动模式**: - 主动模式:服务器发起数据连接,客户端提供一个端口等待连接。 - 被动模式:客户端发起数据连接,适用于防火墙或NAT环境,服务器返回一个可供连接的端口号。 8. **源码实现的关键...

    FTP建站详解[整理].pdf

    FTP有两种工作模式:主动模式(PORT)和被动模式(PASV)。主动模式下,FTP客户端打开一个数据连接到服务器的指定端口,而被动模式则是服务器打开一个随机端口等待客户端连接,这在内网环境中尤其重要,因为NAT可能...

    PHP实现FTP客户端,开源

    它提供了两种传输模式:主动模式和被动模式,用于处理客户端与服务器之间的连接问题。主动模式中,服务器主动连接客户端的指定端口;被动模式则由客户端主动发起连接,适用于通过NAT或防火墙的环境。 2. **PHP的FTP...

Global site tag (gtag.js) - Google Analytics