`
流浪鱼
  • 浏览: 1670120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FTP模式简式:PORT/PASV/EPRT/EPSV

    博客分类:
  • ftp
 
阅读更多

简介

      常见FTP有两种模式:PORT(主动模式)、PASV(被动模式)。

 

       而EPRT/EPSV模式出现的原因是FTP仅仅提供了建立在IPv4上进行数据通信的能力,它基于网络地址是32位这一假设。但是,当IPv6出现以后,地址就比32位长许多了。原来对FTP进行的扩展在多协议环境中有时会失败。我们必须针对IPv6对FTP再次进行扩展。EPRT、EPSV是Extended Port/Pasv的简写。

 

详解

PORT模式

 

        当FTP的Client以PORT模式连接FTP Server时,它动态的选择一个Port X(注意这个Port一定是1024以上的,因为1024以前的Port都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,也是保留给以后会用到这些端口的资源服务)来连接FTP Server的21端口,当经过TCP的三次握手后,连接(控制信道)被建立。    

 

        现在用户要列出FTP Server上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉FTP Server连接自己的Port Y来建立一条数据通道(这个命令由控制信道发送给服务器)。当FTP Server接到这一指令时,FTP Server会使用20端口连接用户在PORT指令中指定的Port Y,用以发送目录的列表.

 

        当完成这一操作时,FTP Client也许要下载一个文件,那么就会发出get命令,请注意,这时Client再次发送PORT指令,告诉服务器连接他的哪个“新”端口。(你可以先用netstat -na这个命令验证,上一次使用的Y已经处于TIME_WAIT状态。)

 

        当这个新的数据传输通道建立后(在微软的系统中,客户端通常会使用连续的端口,也就是说这一次客户端会用Y+1这个端口),就开始了文件传输的工作。

 

PASV模式

 

  在初始化连接这个过程,即连接FTP Server这个过程和PORT模式是一样的。

 

然而,当FTP Client以PASV模式连接FTP Server,FTP Client发送ls、dir、get等这些要求数据返回的命令时,当情况就有些不同了。

 

    FTP Client不向服务器发送PORT指令而是发送PASV指令,在这个指令中,Client告诉FTP Server自己要连接服务器的某一个端口:

 

如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);

 

如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。

 

    为了验证这个过程我们不得不借助CUTEFTP Pro这个FTP客户端软件,因为微软自带的FTP命令客户端,不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式,但是当你用ls命令列出服务器目录列表,你会发现它还是使用PORT方式来连接服务器的。

 

EPRT模式

 

        EPRT考虑到数据连接的扩展地址问题,扩展地址必须包括网络协议以及网络和传输地址。格式如下:

 

 

EPRT<空格><d><网络协议><d><网络地址><d><TCP端口><d>

EPRT后要跟空格,空格后面必须是分隔符<d>,分隔符必须在ASCII的33到126范围之内。推荐使用|,除非它已有它用。网络协议是一个数字,它指出使用的是什么协议。具体数据如下:

 

 

1=IPv4;2=IPv6;

 

网络地址是在指定网络协议下的相应地址,在IPv4和IPv6下地址分别如下格式:

 

 

IPv4=132.235.1.2;IPv6=1080::8:800:200C:417A

TCP端口指的是协议在哪一个TCP端口上侦听数据连接。下面是两个EPRT命令的例子:

 

 

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

第一个命令在TCP端口6275上用IPv4打开主机"132.235.1.2";

第二个命令在TCP端口5282上用IPv6打开主机"1080::8:800:200C:417A"。

 

在接收到合法的EPRT命令后,服务器必须返回200(命令合法)。标准的错误代码500和501已经足够处理大部分错误了,但是还需要一个错误代码,代码522指定服务器不支持请求的网络协议,新错误代码的解释如下:

 

 

5yz 交换信息结束

x2z 连接

xy2 扩展端口错误:未知的网络协议

 

响应的文本部分必须说明服务器运行的协议是什么,响应串的格式如下:

 

 

<说明不支持的网络的字符串> /(协议1,协议2,...,协议n)

 

上述的数字代码和在括号内的协议信息由软件自动控制接收响应;而在数字代码和'('之间的内容供人类用户处理。其后的协议表中的协议应该以逗号分隔。下面是两个响应串的例子:

 

 

Network protocol not supported, use (1)

Network protocol not supported, use (1,2)

 

EPSV模式

 

EPSV格式如下:

 

 

EPSV<空格><网络协议>

 

如果请求的网络协议是服务器支持的,那就必须使用此协议;如果不支持,则返回522。最后,EPSV命令可以使用参数"ALL"通过网络地址翻译器,EPRT命令不再使用。下面是例子:

 

 

EPSV<空格>ALL

 

接收到此命令后,服务器要拒绝除了EPSV以外所有建立连接的命令。

 

对于所有在两台相同机器间建立控制和数据连接的FTP传输来说,必须使用EPSV。使用它可以减少通过防火墙和网络地址翻译器(NAT)对效率的影响。有些文章推荐在防火墙后使用被动命令,因此防火墙通常不允许主动连接。在本文中定义的EPSV命令不需要NAT在传输时对网络地址进行改变。如果使用EPRT,NAT必须改变网络地址。如果客户发送了"EPSV ALL"命令,NAT能够将连接变为快速方式,只要再不使用EPRT,就不需要对数据段的数据部分进行改变。如果客户希望进行两路FTP传输,应该使用这条命令,如果后来客户需要建立三种FTP传输,必须新打开了个FTP会话。

 

EPSV请求服务器在一个数据端口上侦听等待连接,它可以带参数。对它的响应是TCP端口号。响应的格式与EPRT参数的很象。这对实现上有很大的方便。而且响应还留下了网络协议和/或网络地址的空位,可以供以后使用。使用扩展地址进行被动模式的响应码必须是229,对它的解释如下:

 

 

2yz 主动完成

x2z 连接

xy9 进行扩展的被动模式

 

响应的格式如下:

 

 

<指示服务器已经进入初扩展的被动模式> /(<d><d><d><TCP端口><d>)

 

包括在括号内的字符串必须是EPRT打开数据连接的端口。具体如上所未,这里就不多说了。数据连接使用的协议必须和控制连接使用的协议和地址一致,下面是响应的一个例子:

 

 

Entering Extended Passive Mode (|||6446|)

 

标准错误代码500和501对EPSV已经足够了(不支持EPSV)。在EPSV命令没有使用参数时,服务器会基于控制连接所使用的协议选择数据连接使用的网络协议。但是在有代理的情况下,这种机制可能不合适。因此客户也需要能够要求一个指定协议。如果服务器返回说明它在指定端口不支持此协议,客户必须发送ABOR(放弃)命令使服务器关闭连接,然后客户再使用EPSV命令要求使用特定的网络协议.

分享到:
评论

相关推荐

    ftp.zip_FTP上传下载 PORT PASV

    在FTP中,有两种主要的数据连接模式:PORT和PASV模式。 1. PORT(主动模式): 在PORT模式下,客户端首先建立一个控制连接到FTP服务器的端口21。然后,客户端会告诉服务器它愿意接收数据的端口号(通常是一个随机...

    ftp 帐号密码大全

    FTP服务器可以分为两种主要的工作模式:主动(PORT)模式和被动(PASV)模式。主动模式中,客户端向服务器请求连接数据传输通道,而在被动模式下,服务器会打开一个随机端口并通知客户端连接到这个端口。 某些FTP...

    ftp中主动模式(port)与被动模式(PASV)

    处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。

    ftp下载

    - `PORT`:在主动模式下,客户端告诉服务器要用于数据传输的端口号。 - `CWD`:改变当前工作目录。 - `LIST`:列出服务器目录中的文件和子目录。 - `RETR`:下载文件。 - `STOR`:上传文件。 - `QUIT`:关闭FTP会话...

    FTP服务器Port和Pasv模式释义.pdf

    FTP服务器Port和Pasv模式释义.pdf

    Centos 8 vsftpd多用户FTP服务器配置完美方案——同时解决PORT和PASV模式

    在CentOS 8系统中,配置vsftpd多用户FTP服务器,实现多虚拟用户FTP连接,并同时解决FTP PORT和PASV模式下的问题。 vsftpd简介 vsftpd是非常流行的FTP服务器软件,支持多种操作系统,包括CentOS、Ubuntu、Debian等。...

    ftp连接不上出现500 Invalid PORT Command.错误

    220 Microsoft FTP Service USER 123000 331 Password required for 123. PASS xxxxxx 230 User 123 logged in. SYST 215 Windows_NT PWD 257 "/" is current directory. TYPE A 200 Type set to A. PORT 192,168,1,...

    CURL用法大全

    并非所有的FTP服务器支持PORT命令,请尝试使用被动(PASV)传输代替! - **31:** FTP无法使用REST命令。REST命令失败。此命令用来恢复的FTP传输。 - **33:** HTTP range错误。range“命令”不起作用。 - **34:** ...

    ftp 从入门到精通

    FTP有两种连接模式:主动模式(Standard或PORT模式)和被动模式(Passive或PASV模式)。在主动模式下,客户端向服务器发起控制连接,然后服务器主动打开一个端口等待客户端的数据连接请求。而在被动模式下,服务器只...

    基于lwip的ftp客户端代码

    例如,"USER" 和 "PASS" 用于身份验证,"CWD" 改变当前工作目录,"PASV" 或 "PORT" 用于数据连接设置,"RETR" 请求下载文件等。 4. **数据传输**:在建立控制连接后,客户端需与服务器协商数据连接方式(主动模式或...

    一个简单的FTP客户端

    很多年前写的练习程序,FTP客户端源码; 实现了 list,cd,get,put,pwd,lcd,llist,lpwd之类的命令;可以选择PASV还是PORT模式。 配套的FTP服务器端见:http://download.csdn.net/source/2724443

    http-ftp-server

    2. 数据连接:FTP有两种模式,主动模式(PORT)和被动模式(PASV)。服务器需要根据客户端的请求开启数据连接。 3. 文件操作:处理文件上传和下载,这通常涉及到I/O流的读写操作,以及对文件系统的访问。 4. 命令...

    ftp如何下载及使用.docx

    如果你需要更改FTP客户端的工作模式,例如将PASV模式改为PORT模式,可以通过以下步骤进行设置: - 在CuteFTP中,选择“编辑” -&gt; “全局设置” -&gt; “连接类型” -&gt; 选择“PORT”或“PASV”。 - 在FlashFXP中,进入...

    windows下搭建ftp服务器.docx

    FTP协议支持两种主要的工作模式:主动模式(PORT)和被动模式(PASV)。 - **主动模式**:在主动模式下,客户端向服务器发送一个连接请求,服务器会主动建立与客户端的数据连接。这种方式可能会遇到防火墙阻断的问题...

    c#ftp客户端 支持主动和被动模式

    c#ftp客户端 支持主动和被动模式,c#ftp客户端 主动模式 被动模 PORT PASV

    FTP客户端程序

    - 被动模式(PASV模式):服务器告诉客户端一个开放的端口号,客户端主动发起连接到服务器的这个端口来建立数据连接。被动模式常用于解决防火墙和NAT设备导致的连接问题。 2. 匿名FTP 匿名FTP允许用户无需拥有FTP...

    serv_u要关闭被动模式(PASV),使用PORT模式才能连接FTP的解决办法

    在FTP中,有两种主要的工作模式:主动模式(PORT模式)和被动模式(PASV模式)。这两种模式主要区别在于数据传输通道的建立方式。 **主动模式(PORT模式)** 在主动模式下,FTP客户端首先向FTP服务器发起控制连接,...

    CentOS5.5上配置ftp虚拟用户服务

    在CentOS 5.5操作系统中配置FTP服务并采用虚拟用户进行权限管理,可以提高系统的安全性,因为虚拟用户不直接对应于系统用户。以下是一个详细的步骤指南,涵盖了从安装依赖库到配置FTP服务以及创建虚拟用户的整个过程...

    docker-vsftpd-anon:通用的随时可用的匿名ftp服务器

    vsftpd-anon:快速的匿名ftp服务器docker映像 该映像用于运行公共只读共享之类的内容。 不支持用户帐户,所有... MAX_PORT -pasv MAX_PORT的最大端口(默认值: 65515 ) MIN_PORT -pasv通信的最小端口(默认值: 6

    FTP被动模式分析,ftp抓包分析

    FTP 的两种不同工作模式:PORT(主动模式)与PASV(被动模式) 1、首先,我们要了解,FTP 工作的时候,需要用到两个连接:控制连接与数据连接,控制 连接专门用于FTP 控制命令及命令执行信息传送;数据连接专门用于...

Global site tag (gtag.js) - Google Analytics