`
javaboy2006
  • 浏览: 186290 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP 工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。

(一)主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

(二)被动FTP

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)
3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)


以上关于主动和被动FTP的解释,可以简单概括为以下两点:

1、主动FTP:

命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口

(三) 主动与被动FTP优缺点:

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
分享到:
评论

相关推荐

    FTP 文件传输协议.docx

    FTP支持两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)。 主动模式:FTP客户端随机开启一个大于1024的端口N,并连接服务端的21号端口。然后,客户端开放M端口进行监听,并发送PORT命令通知服务器...

    ftp_Solaris ftp passive mode

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

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

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

    FTPjava.rar_ftp_ftpjava_ftpjava 客户端_site:www.pudn.com

    2. **设置工作模式**:FTP有两种工作模式,主动(Active)和被动(Passive)。在被动模式下,`FTPClient.enterLocalPassiveMode()`会启动一个监听端口等待服务器连接,适合防火墙后的环境。 3. **文件上传**:使用`...

    ftp协议例子的源代码

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

    linux的FTP服务器

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

    Apache FTPServer的配置使用

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

    ftp.zip_Over_ftp

    它支持两种主要的连接模式:主动模式和被动模式。 1. 主动模式(Active Mode): 在主动模式下,客户端首先建立一个数据连接的控制通道,然后告诉服务器它正在监听哪个端口。服务器随后会尝试从其FTP服务器进程的...

    FTP.rar_ftp

    FTP有两种工作模式:主动模式和被动模式。 1. 主动模式(Active Mode):服务器在建立数据连接时主动向客户端发起连接。服务器在控制连接中告诉客户端一个端口号,客户端会打开该端口来接收来自服务器的数据。 2. ...

    ftp程序源代码

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

    FTP服务工作技术原理概述.docx

    FTP主要分为两种工作模式:主动模式(Active)和被动模式(Passive)。 ##### 1. 主动模式(Active) 主动模式下,FTP客户端首先通过一个随机端口N(通常大于1024)与服务器的21端口建立连接,用于控制命令的传输...

    基于C#的FTP客户端设计与实现实用文档doc.doc

    FTP有两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。在主动模式下,客户端打开一个数据连接到服务器的特定端口,而在被动模式中,服务器打开一个随机端口等待客户端连接,以解决防火墙和NAT...

    简单ftp上传文件客户端源码

    3. **设置工作模式**:FTP有两种工作模式:主动(Active)和被动(Passive)。在主动模式下,客户端告诉服务器哪个端口可以用来接收数据;在被动模式下,服务器告诉客户端一个可用于数据传输的端口。被动模式常用于...

    ftp客户端11.rar_JAVA访问 FTP_ftp客户端_ftp客户端 java_java ftp客户端_java 上传下载

    它分为两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。主动模式中,服务器主动连接客户端的某个端口,而被动模式则由客户端发起连接,适用于防火墙和NAT环境。 二、Java中的FTP支持 Java提供了...

    ftp.rar_ftp 上传

    FTP有两种工作模式:主动(Active)模式和被动(Passive)模式。主动模式中,客户端打开一个随机端口请求数据连接,服务器则连接到这个端口进行数据传输。而在被动模式下,服务器开启一个随机端口等待客户端建立数据...

    FTP上传测试工具 java

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

    计算机网络课程设计:简单FTP客户端软件开发

    FTP有两种主要的工作模式:主动模式(Active FTP)和被动模式(Passive FTP)。 - **主动模式**:在这种模式下,FTP服务器监听一个固定的端口(通常是20),并主动向客户端发起数据连接请求。 - **被动模式**:在...

    ftp服务器FtpServer

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

    FTP文件传输源代码

    2. FTP工作模式: - 主动模式(Active Mode):服务器主动连接客户端的数据端口来传输数据。 - 被动模式(Passive Mode):客户端发起数据连接请求,适用于防火墙和NAT环境,解决端口访问问题。 3. FTP命令与响应...

Global site tag (gtag.js) - Google Analytics