FTP主动模式、被动模式介绍

主动模式

  1. FTP client use TCP port 1026 for command to FTP server command port 21
  2. FTP server use TCP port 21 responed  to FTP client command port 1026
  3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1)
  4. FTP client use TCP port 1027 ( 1026 + 1) for data ACK to FTP server port 20

被动模式

  1. FTP client use TCP port 1026 to FTP server command port 21 via command PASV
  2. FTP server use TCP port 21 to FTP client 1026 command port for reply data port 2024
  3. FTP client use TCP port 1027 (N+1) to FTP server 2024 for data transmit and ACK
  4. FTP server use TCP port 2024 to FTP client for data transmit and ACK

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优缺点

  主动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的高端端口
--------------------------------------------------------------------------------

(0)

相关推荐

  • FTP主动模式、被动模式介绍

    主动模式 1. FTP client use TCP port 1026 for command to FTP server command port 21 2. FTP server use TCP port 21 responed  to FTP client command port 1026 3. FTP server use TCP port 20 for sending data to FTP client data port 1027 (1026 + 1) 4. FTP clien

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

    基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时,数据端口就有可能不是20了. 主动模式FTP: 主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口.然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给F

  • centos8系统ftp服务器安装及被动模式配置详细教程

    目录 1.了解基础知识 2.确认系统环境 3.安装ftp指令[非必须] 4.安装VSFTPD 5.设置本地用户 6.配置vsftpd的conf文件 7.配置系统相关软件的配合 8.测试可能出现的错误 这是一篇新手向的ftp服务器安装. 1.了解基础知识 FTP:文件传输协议(File Transfer Protocol,FTP). FTP是历史上最悠久的文件传输协议之一,在很多软件体系中都有应用.比如说wordpress后台更新就需要FTP服务. FTP使用 TCP 协议传输而不是 UDP. F

  • windows server 2012安装FTP并配置被动模式指定开放端口

    目录 实验环境及思路 windows server 2012中安装FTP服务 建立FTP站点并访问测试 确认服务器防火墙为关闭状态后检查端口并访问测试 访问测试上传下载 实验环境及思路 1.在windows server 2012中安装web服务器,FTP服务2.启动FTP服务进行上传下载测试3.启用windows server 防火墙指定被动模式需要开放的端口范围4.测试服务器与客户端连接,并查看指定的端口范围 备注:本篇文档只做FTP安装及测试操作 windows server 2012中安

  • Activity 四种启动模式详细介绍

    Activity 四种启动模式详细介绍 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /&

  • Java设计中的Builder模式的介绍

    概述 Builder模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 使用场景 相同的方法,不同的执行顺序,产生不同的事件结果 多个部件或零件,都可以装配到一个对象中,但产生的运行结果又不相同时 产品类非常复杂,或者产品类中的调用顺序不同产生不同的作用 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时 下面从一个Person例子进行分析重叠构造器模式.JavaBeans模式.Builder模式的使用.Person类有两个必要参数(id和name),有5

  • MySQL主从复制之GTID模式详细介绍 

    目录 一.GTID概述 二.GTID相较与传统复制的优势 三.GTID自身存在哪些限制 四.GTID工作原理简单介绍 五.如何开启GTID复制 六.查看GTID相关参数 七.GTID与传统模式建立复制时候语句的不同点 八.GTID同步状态简单解析 一.GTID概述 MySQL5.6 在原有主从复制的基础上增加了一个新的复制方式,即基于GTID的复制方式,它由UUID和事务ID两个部分组成,具有如下特点. GTID事务是全局唯一性的,并且一个事务对应一个GTID值. 一个GTID值在同一个MySQ

  • Vue Router路由hash模式与history模式详细介绍

    目录 一.前言 二.hash模式 三.history模式 一.前言 对于hash模式和history模式,最直接的区别就是地址栏带不带"#"号了. vue脚手架搭建的项目的路由默认是hash模式. hash模式: 创建路由实例时,添加mode:"history"属性,即可使用history模式. const router = new VueRouter({ routes, mode: "history" }) history模式: 二.hash模

  • C++设计模式中的工厂模式详细介绍

    目录 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern): 是指定义一个工厂类,工厂类中实现一个方法,此方法根据不同的参数返回不同的类,UML类图如下所示: 代码如下: #include <iostream> using namespace std; class Product { public: ~Product() {} // 纯虚函数 virtual void Create(string conte

  • Android 启动模式详细介绍

    Android 启动模式: 启动模式:LaunchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里. 这里简单介绍一下任务栈task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task.任务栈里面的Activity是按照先进后出的形式保存的,比如:你打开一个页面,在页面中打开另一个页

随机推荐