`

关于ftp的主动模式(Active Mode)和被动模式(Passive Mode)

 
阅读更多

首先FTP协议是建立在TCP协议基础上的,所以client与server的每次交互都要经过三次握手(「TCP Three-Way Handshake)

通过两张图进行解释

1、主动模式(也叫做PORT模式、standard模式,需要利用服务器的21端口进行资料传输)

 


说明:client端利用>1024的任意端口发起于server的21端口建立连接,建立“命令联系通道”,如果要发生资料传输,通过21告知server数据联系通道端口(也是一个>1024的端口例如1333),并进行listen,server利用20端口向client的1333端口发起连接,并建立“资料联系通道”。

“资料联系通道”是由server主动建立的(步骤6),所以叫做“祖东模式”。

 

局限性:client端在防火墙或IP分享服务器后面是,其“命令联系通道”可以顺利建立,但“资料联系通道”无法顺利建立。

2、被动模式


 说明:建立“命令联系通道”的方式和主动模式基本一样,也是连接server的21端口。但是如果需要传输资料,client会送出PASV指令,告诉server要利用被动模式建立“资料联系通道”,然后server会打开一个>1024端口,并开始listen,并把这个端口好通过“命令联系通道”告知client,client再打开一个>1024的端口,与server建立“资料连接通道”。

“资料连接通道”是由server被动建立的,所以称作“被动模式”。

 

3、VSFTP关于主动模式被动模式的配置

 

 pasv_enable=YES    //开启被动模式,默认是YES

 pasv_min_port=3000  

 pasv_max_port=4000 //设置建立“资料联系通道”的端口范围,指定是为了利于server端防火墙设置

 pasv_promiscuous=YES(默认是N,设置为Y时,将关闭PASV模式的安全检查,该检查确保数据连接和控制连接是来自同一个IP地址,小心打开此选项,此选项唯一合理的用法是存在于由安全隧道方案构成的组织中)

 

 

4、FTP命令行连接设置主动和被动模式

windows的ftp命令默认是使用的主动方式连接FTP serer。

linux默认是PASV模式,并通过passive on  | off  来进行切换

 

5、实际中遇到的一个问题

关于pasv_promiscuous=YES。

没有设置此项时客户端连接服务器正常,但是执行“list”等命令时报

425 Security: Bad IP connecting

说明“资料联系通道”建立时发现与“命令联系通道”的IP不同,倒是连接诶失败。

 

 

14:15:27.563 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 220 (vsFTPd 2.0.5)

14:15:27.564 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> USER ws

14:15:27.566 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 331 Please specify the password.

14:15:27.566 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> PASS ********

14:15:27.570 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 230 Login successful.

14:15:27.570 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> TYPE I

14:15:27.571 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 200 Switching to Binary mode.

14:15:27.571 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> TYPE I

14:15:27.571 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 200 Switching to Binary mode.

14:15:27.578 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> SYST

14:15:27.578 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 215 UNIX Type: L8

14:15:27.583 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> PWD

14:15:27.583 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 257 "/"

14:15:27.583 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> PASV

14:15:27.584 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 227 Entering Passive Mode (200,200,200,8,119,147)

14:15:27.586 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 发送命令: ---> LIST

14:15:27.587 [main] INFO  c.b.c.util.ftp.EventListenerImpl - 返回结果: 425 Security: Bad IP connecting.

 

 

参考资料:http://www.phys.nthu.edu.tw/~cc/QA/vsftpd.pdf

       http://vsftpd.beasts.org/vsftpd_conf.html

  • 大小: 68.6 KB
  • 大小: 70.6 KB
分享到:
评论

相关推荐

    ftp_Solaris ftp passive mode

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

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

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

    FTP服务原理及vsfptd的安装、配置

    FTP 服务端与客户端连接一般有两种模式:主动模式(Active Mode)和被动模式(Passive Mode)。 1. 主动模式(Active Mode) 在主动模式下,客户端首先会向服务器端的 21 号端口发出一个连接命令,请求与服务器端...

    实例解析FTP原理

    FTP支持两种不同的连接模式:主动模式(Active Mode)和被动模式(Passive Mode)。 1. **主动模式(Active Mode)**:在主动模式下,数据连接的建立由FTP服务器发起。具体步骤如下: - 客户端通过控制连接向...

    ftp协议例子的源代码

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

    FTP.rar_ftp

    2. 被动模式(Passive Mode):由于防火墙和NAT设备的存在,主动模式可能无法工作。为了解决这个问题,FTP引入了被动模式。在被动模式下,客户端在控制连接中请求服务器打开一个端口,并返回该端口的地址,然后...

    Apache FTPServer的配置使用

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

    FTP上传测试工具 java

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

    FTP.rar_VB_ftp_客端

    2. **被动模式(Passive Mode)**:为了解决主动模式的问题,FTP服务器在控制连接中提供一个开放的端口号,客户端随后建立一个到这个端口的数据连接。这种方式使得客户端可以控制数据连接的建立,避免了防火墙问题。...

    ftp.zip_Over_ftp

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

    ftp客户端基于socket的实现

    FTP有两种模式:主动模式(Active Mode)和被动模式(Passive Mode)。在主动模式下,客户端告诉服务器它将监听哪个端口,然后服务器连接到这个端口进行数据传输。而在被动模式下,服务器告诉客户端一个临时端口,...

    FTP.zip_ftp

    1. 主动模式(Active Mode):客户端向服务器发起一个临时的端口(通常是端口1024-5000之间的随机端口),然后服务器使用其FTP服务器端口(默认21)连接到客户端指定的端口进行数据传输。 2. 被动模式(Passive Mode...

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

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

    FTP.zip_FTP 下载_ftp下载

    1. **FTP工作模式**:FTP有两种工作模式,分别是主动模式(Active Mode)和被动模式(Passive Mode)。主动模式下,客户端打开一个数据连接端口并告知服务器,服务器则通过这个端口发送数据。而在被动模式中,服务器...

    vb ftp上传

    FTP基于TCP/IP协议,提供了两个主要的传输模式:主动模式(Active Mode)和被动模式(Passive Mode)。主动模式下,客户端打开一个数据连接到服务器,而被动模式则是服务器打开一个端口等待客户端连接。在局域网环境...

    FTP内容的详细介绍

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

    基于Labview的 FTP 的文件传输

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

    JAVA开发的FTP系统

    6. **被动模式与主动模式**:FTP有两种工作模式,被动模式(Passive Mode)和主动模式(Active Mode)。被动模式适用于防火墙后的客户端,JAVA FTP库提供了切换这两种模式的方法。 7. **目录管理**:JAVA FTP库允许...

    ftp文件传输源代码资料

    FTP协议基于TCP/IP协议族,分为两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。主动模式中,客户端首先建立一个控制连接到服务器的端口,然后服务器通过这个控制连接回传一个数据连接的端口号,...

    Delphi7实现FTP

    FTP有两种模式,被动模式(Passive Mode)和主动模式(Active Mode)。被动模式通常用于防火墙后的服务器或客户端,可以通过设置TIdFTP的Passive属性为True来启用。 8. **保持连接**: 如果需要频繁进行FTP操作,...

Global site tag (gtag.js) - Google Analytics