首页 > 其他分享 >Ftp基础(二):被动模式与主动模式

Ftp基础(二):被动模式与主动模式

时间:2023-09-30 17:01:05浏览次数:35  
标签:Ftp 被动模式 端口 21 主动 服务端 客户端

  Ftp即文件传输协议,说白了就是处理文件操作的。可能你还听说过Ftps、SFtp,简单说一下他们的区别吧

    Ftps:可以理解为Ftp+Ssl,Ftp与Ftps的关系就类似Http和Https的关系
    SFtp:可以理解为Ftp+SSH

  总之,可以理解为Ftp就是明文传输,Ftps、SFtp采用了加密传输。

       好了,本文继续说说主动模式和被动模式,首先,我们先要知道Ftp的两个端口:  

    命令控制端口:用于发送FTP命令信息,默认是21
    数据传输端口:用于上传、下载文件数据,默认是20

  主动模式

    

    1、客户端首先打开随机端口A,连接到Ftp的命令控制端口(默认是21)
    2、客户端再次打开一个不同于A的随机端口B
    3、客户端使用PORT命令将打开的随机端口B发送给Ftp
    4、Ftp使用20端口连接到客户端打开的随机端口B
    5、Ftp和客户端使用20、B两个端口传输数据

  被动模式

  被动模式的数据发送流程大概是这个样子的

    

    1、客户端首先打开随机端口A,连接到Ftp的命令控制端口(默认是21)
    2、然后客户端发送PASV命令到Ftp服务端,然后Ftp将会打开一个随机端口B(端口号大于1023小于65535)
    3、Ftp将打开的随机端口B发送给客户端
    4、客户端再次打开一个不用于A的随机端口C,连接到Ftp打开的随机端口B
    5、Ftp和客户端使用B、C两个端口传输数据

  优缺点  

    主动模式:方便服务端管理,Ftp服务端只开启了一个20端口用来传输数据,但是不方便客户端的管理。
              因为数据传输连接由Ftp服务端发起,如果Ftp服务端开启了防火墙,只需要放行21端口,
              如果客户端开启了防火墙,需要放行一段端口,否则可能导致连接失败
              
    被动模式:方便客户端管理,因为数据传输连接由客户端发起,
              如果Ftp服务端开启了防火墙,那么需要在Ftp上放行一段接口,这个相对容易实现。
              客户端是否开启了防火墙,对被动模式没什么影响。

  现实中,我们一般是只有一个服务端多个客户端,而且往往客户端是个人电脑,那么多数时候是开启了防火墙的,隐藏往往被动模式更适合大多数人。

  验证

  最后再说一个问题,我们怎么验证一个Ftp服务端是支持主动模式还是被动模式?

  经过验证,如果不使用代码的情况下和安装第三方软件的情况下,一般有两个办法:

  1、使用资源管理器验证,但是这个情况下只能验证是否支持被动模式,如果资源管理器能打开,那么表示支持被动模式

  2、使用Telnet来验证,比如有个ftp地址:10.255.0.162,

  验证是否支持被动模式:     

    # 打开cmd,使用telnet连接到21端口
    telnet 10.255.0.162 21
    # 使用USER、PASS命令登录
    USER ftp_user
    PASS 123456
    # 发送PASV命令,告诉Ftp表示一个被动连接
    PASV

  如果最后的结果显示下面的结果,则表示支持被动模式,同时可以从下面的结果中看到,服务端开启了一个端口16523(64*256+139):

  

  否则表示不支持被动模式:

  

  验证是否支持主动模式

    # 打开cmd,使用telnet连接到21端口
    telnet 10.255.0.162 21
    # 使用USER、PASS命令登录
    USER ftp_user
    PASS 123456
    # 使用PORT命令随便发送一个端口,告诉Ftp表示一个主动连接
    PORT 58899

  如果显示的结果是类似下面的样子,说明支持主动模式。

  

  你可能会说,这不是报错了么,其实这个是因为我们发给Ftp服务端的端口未打开导致的,如果不支持主动模式的话,会返回550代码,而不是500代码:

  

  总结

  Ftp的主动模式和被动模式其实就是区分数据传输连接的发起方,如果是由Ftp服务端发起,那么就是主动模式,如果是由客户端发起,那么就是被动模式。

  如果你对主动模式和被动模式犹豫不决,那么可以优先选择被动模式,或者两个一起用。

 

标签:Ftp,被动模式,端口,21,主动,服务端,客户端
From: https://www.cnblogs.com/shanfeng1000/p/17609372.html

相关文章

  • FTP服务
    FTP服务一:FTP的工作原理1:FTP的概念 2:FTP工作的2种模式a:主动模式2台虚拟机,一台作为客户机,另外一台作为服务器,客户机上面的n号端口去访问服务上面的21号端口,建立连接,并告诉20号端口要去连接客户机的n+1号端口,主动去连接了n+1号端口,建立了数据连接b:被动模式客户机n号端口......
  • 【闲暇一写】基于TCP协议写的FTP管理工具
    这是一个FTP(文件传输协议)管理工具,能够支持文件上传下载以及操作服务端的文件。该工具由客户端和服务端组成。客户端与服务端通过Socket连接实现通信,客户端发送命令,服务端解析并执行相应的操作。部分代码已省略,下面是服务端和客户端代码的详细解释。GitHub:https://github.com/......
  • zsh的错误配置导致sftp无法正常使用
    先上图。有段时间一直用MobaTerm之类的终端连接ssh都正常,但sftp一直练不上。起初只是以为是软件的原因,后来今天用filezilla上传数据发现sftp会报超时(报错如上。折腾了半天才发现是.bashrc文件里的一行zsh引起的,把他注释掉之后就一切正常了。下面是.bashrc的对应配置#starship......
  • xftp 7必须更新最新版本怎么解决
    下载可以查看16进制的软件:SublimeText运行XFTP7双击打开是:这样的解决方案用SublimeText进行打开nslicense.dll,打开之后查找“0f888300”字段,大概在864行,将88修改成83,修改完“0f838300”,保存后关闭,再打开Xftp7成功。保存即可,再次使用XFTP7就好使了......
  • CentOS如何查看是否安装FTP并设置端口?
    FTP是传输文件的常用协议之一linux系统怎么样,而在CentOS系统上是否安装了FTP,对于管理者和用户来说都是非常关键的。本篇文章将从以下八个方面进行深入分析:1.什么是FTP;2.CentOS下如何安装FTP;3.CentOS下如何启动FTP服务;4.CentOS下如何设置FTP服务的端口;5.CentOS下如何设置匿名访......
  • 主动写入流对@ResponseBody注解的影响
    问题回溯2023年Q2某日运营反馈一个问题,商品系统商家中心某批量工具模板无法下载,导致功能无法使用(因为模板是动态变化的)商家中心报错(JSON串):{"code":-1,"msg":"失败"}负责的同事看到失败后立即与我展开讨论(因为不是关键业务,所以不需要回滚,修复即可),我们发现新功能模板下载的代码......
  • 主动写入流对@ResponseBody注解的影响 | 京东云技术团队
    问题回溯2023年Q2某日运营反馈一个问题,商品系统商家中心某批量工具模板无法下载,导致功能无法使用(因为模板是动态变化的)商家中心报错(JSON串):{"code":-1,"msg":"失败"}负责的同事看到失败后立即与我展开讨论(因为不是关键业务,所以不需要回滚,修复即可),我们发现新功能模板下载的代码与之前......
  • Linux 搭建FTP服务器
    介绍本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置。  知识点在linux中使用的FTP是vsftpFTP可以有三种登入方式分别是:匿名登录方式:不需要用户密码本地用户登入:使用本地用户和密码登入虚拟用户方式:也是使用用户和密码登入,但是该用户......
  • C#实现SSH、SCP、FTP等操作
    C#实现SSH、SCP、FTP等操作C#没有自带的SSH、SCP、FTP等操作的方法库,自己编写又太麻烦,这里将使用第三方Renci.SshNet.dll动态链接库实现这些操作 一、获取RENCI.SSHNET.DLL 二、将RENCI.SSHNET.DLL添加进C#工程我使用visualstudio2015作为IDE,将Renci.SshNet.dll添加进......
  • 用Python编写的FTP CLIENT端脚本
    1importftplib,os2temp=os.environ["temp"]3#参考连接:https://blog.csdn.net/wyt2wyt/article/details/1289510394ftp=ftplib.FTP()5ftp.connect("127.0.0.1",2121)6ftp.login("user","123456789")78defuplo......