FTP服务器Port和Pasv模式释义

时间:2024.5.19

FTP服务器Port和Pasv模式释义

起初, FTP并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议,

FTP服务器Port和Pasv模式释义

ARPANET是美国国防部组建的老网络,于1960-19xx年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。

FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。

下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。

首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用

? 从客户向服务器发送一个文件。

? 从服务器向客户发送一个文件。

? 从服务器向客户发送文件或目录列表。

其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。为了让大家清楚的认识这两种模式,朗月繁星分别举例说明。

PORT模式

当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后,连接(控制信道)被建立(如图1和图2)。

图1:FTP客户使用FTP命令建立于服务器的连接

FTP服务器Port和Pasv模式释义

图2:用netstat命令查看,控制信道被建立在客户机的6015和服务器的20

FTP服务器Port和Pasv模式释义

端口

现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在PORT指令中指定的端口号,用以发送目录的列表(如图3)。 图3:ls命令是一个交互命令,它会首先与服务器建立一个数据传输通道。经验证本次试验客户机使用6044端口

FTP服务器Port和Pasv模式释义

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

图4:使用netstat命令验证上一次使用ls命令建立的数据传输通道已经关闭

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

PASV模式

然而,当FTP客户以PASV模式连接服务器时,情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和PORT模式是一样的,不同的是,当FTP客户发送

FTP服务器Port和Pasv模式释义

ls、dir、get等这些要求数据返回的命令时,他不向服务器发送PORT指令而是发送PASV指令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。为了验证这个过程我们不得不借助CUTEFTP Pro这个大家经常使用的FTP客户端软件,因为微软自带的FTP命令客户端,不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式,但是当你用ls命令列出服务器目录列表,你会发现它还是使用PORT方式来连接服务器的。现在我们使用CUTEFTP Pro以PASV模式连接服务器(如图5)。

图5:使用CUTEFTP Pro以PASV模式连接服务器

请注意连接LOG里有这样几句话:

COMMAND:> PASV

227 Entering Passive Mode (127,0,0,1,26,108)

COMMAND:> LIST

STATUS:> Connecting ftp data socket 127.0.0.1: 6764...

125 Data connection already open; Transfer starting.

226 Transfer complete.

其中,

227 Entering Passive Mode (127,0,0,1,26,80). 代表客户机使用PASV模式连接服务器的

26x256+108=6764端口。(当然服务器要支持这种模式)

125 Data connection already open; Transfer starting.说明服务器的这个端口可用,返回ACK信息。 再让我们看看用CUTEFTP Pro以PORT模式连接服务器的情况。其中在LOG里有这样的记录: COMMAND:> PORT 127,0,0,1,28,37

200 PORT command successful.

COMMAND:> LIST

150 Opening ASCII mode data connection for /bin/ls.

STATUS:> Accepting connection: 127.0.0.1:20.

226 Transfer complete.

STATUS:> Transfer complete.

其中,

PORT 127,0,0,1,28,37告诉服务器当收到这个PORT指令后,连接FTP客户的28x256+37=7205这个端口。

Accepting connection: 127.0.0.1:20表示服务器接到指令后用20端口连接7205端口,而且被FTP客户接受。

比较分析

在这两个例子中,请注意: PORT模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端的某一个大于1024的端口;在PASV模式中,数据传输的通道的建立是由FTP客户端发起的,他使用一个大于1024的端口连接服务器的1024以上的某一个端口。如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,比如使用微软的ISA Server 2000发布一个FTP服务器,这一点非常关键,如果设置错了,那么客户将无法连接。

最后,请注意在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。

在本文中,朗月繁星把重点放到了FTP的连接模式,没有涉及FTP的其他内容,比如FTP的文件类型(Type),格式控制(Format control)以及传输方式(Transmission mode)等。不过这些规范大家可能不需要花费过多的时间去了解,因为现在流行的FTP客户端都可以自动的选择正确的模式来处理,对于FTP服务器端通常也都做了一些限制,如下:

? 类型:A S C I I或图像。

? 格式控制:只允许非打印。

? 结构:只允许文件结构。

? 传输方式:只允许流方式

FTP服务器Port和Pasv模式释义

所谓port模式也就是主动模式。

在FTP协议刚刚建立的时候,只定义了普通的连接模式,也就是port模式。

Port模式的连接过程是:在开始一个FTP的连接时,客户端程序首先会为自己随机分配一个TCP端口,它使用这个个端口向服务器的FTP端口(默认为21)发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户程序发出port命令(通常格式为 PORT A, A, A, A, I,I,其中A,A,A,A为客户端IP地址,I,I为随机的一个数据连接端口号)告诉服务器它的数据通道的端口打开了。当需要传送数据时,服务器便从随机选择的一个端口向客户端的20端口发送连接请求,请求被接受之后便开始传输数据,数据链路通道也就打 开了。

所谓pasv模式也就是被动模式。

随着网络的不断发展,出现了防火墙。老的FTP协议在遇到防火墙的时候就束手无策了,这是因为20端口往往是防火墙的重点封堵对象,因此数据也就不能发送出去了,于是pasv模式就诞生了。

Pasv模式的连接过程是:在开始一个FTP的连接时,客户端程序首先为自己随机分配一个TCP端口,它使用这个端口向服务器的FTP端口(默认为21)发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户端程序发出PASV命令,代替原来PO RT命令告诉服务器它的数据连接端口,于是服务器便为自己随机分配一个数据通道端口,并将这个端口号告诉客户端程序。当需要传送数据时,客户端程序会向服务器的数据通道端口发送连接请求,请求被接受之后便开始传输数据,数据链路通道也就打开了。

1.所谓主动和被动可以看作是以服务器端为基准,当服务器主动向客户端发送数据连接请求时,为主动模式;当客户端主动向服务器发送数据连接请求时,为被动模式。

2.无论客户端还是服务器端有防火墙,或是两边都有防火墙,只要PASV模式下两边数据通道的连接端口在防火墙的拦截之外就可以建立成功。如果防火墙将所有的端口全部堵死,则不能建立数据通道。

FTP使用中PASV模式的操作方法

注:此方法只有在无法登录和下载的情况下才可使用

取消 pasv 模式的方法

有许多朋友的 FTP 服务器是不支持 PASV 模式的,登入時要取消 PASV 模式才行。现将几种 FTP 下载工具的取消方法公布如下:

1.把 flashget 的 pasv 模式关掉的方法

点菜单上的“工具”->“选项”->“代理服务器”->“直接连接”->编辑->把“ pasv 模式”前的勾勾去掉,一路确定回来。

2.把 Cutftp 的 pasv 模式关掉的方法

点菜单上的“文件”->“站点管理”->在“站点管理器”窗口->“新建站点”->填上“域名”->“编辑”->“常规”->把“使用 pasv 模式”前的勾勾去掉。

3.把 FlashFXP 的 pasv 模式关掉的方法

点菜单上的“站点”->“站点管理器”->站点管理器窗口->“新建站点”->填上“域名”->“选项”->把“使用被动模式”前的勾勾去掉->“应用” 即可。

4.把 NetAnts 的 pasv 模式关掉的方法

点菜单上的"选项"->"参数设置"->"代理"->“直接连接”->编辑->把“ pasv 模式”前的勾勾去掉,一路确定回来。

相信大家都知道FTP是什么啦,但我相还有很多人不知道什么是PASV和PORT,或者你知道但不知道他们到底是什么。

下面介绍一下这两种模式吧:

PORT其实是Standard模式的另一个名字,又称为Active模式。中文意思是“主动模式。

PASV也就是Passive的简写。中文就是“被动模式。

两者之间有什么不同:

不同之处是由于PORT这个方式需要在接上TCP 21端口后,服务器通过自己的TCP 20来发出数据。并且需要建立一个新的连接来传送档案。而PORT的命令包含一些客户端没用的资料,所以有了PASv的出现。

而PASV模式就当然拥有PORT模式的优点及去掉一些PORT的缺点。PASV运行方式就是当服务器接收到PASV命令时,就会自动从端口1024到5000中随机选择,而且还会使用同一个端口来传送数据,不用建立新的连接

一、什么是PASV和PORT方式

(1)PORT其实是Standard模式的另一个名字,又称为Active模式。中文意思是“主动模式。

(2)PASV也就是Passive的简写。中文就是“被动模式。

二、两者不同

不同之处是由于PORT(主动)这个方式需要在接上TCP 21端口后,服务器通过自己的TCP 20来发出数据。并且需要建立一个新的连接来传送档案。而PORT的命令包含一些客户端没用的资料,所以有了PASv的出现。而PASV模式拥有PORT模式的优点,并去掉一些PORT的缺点。PASV运行方式就是当服务器接收到客户端连接请求时,就会自动从端口1024到5000中随机选择一个和客户端建立连接传递数据。由于被动且自动建立连接,容易受到攻击,所以安全性差。

三、常见的FTP客户端软件PORT方式与PASV方式的切换方法

大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。 在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。

(1)IE:工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。

(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> “PASV Mode” 或File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode” 。

(3)FlashGet:工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”。

(4)FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式” 或 站点管理 -> 对应站点 -> 选项 -> “使用被动模式”或快速连接 -> 切换 -> “使用被动模式”。


第二篇:FTP_Port_21


FTPPort21

FTPPort21

FTPPort21

FTPPort21

更多相关推荐:
个人学习总结-BootStrap入门教程

注明该文档由本人整理于20xx年12月8日Bootstrap中文参考网站BootStrap最新版源码下载官网下载的Bootrsap源码包含下列文件构建bootstrap基础网页可以作为网页的基础模板以后直接复制...

合成词总结 Compound Word List 60words

lifetimecannottogethercrosswalkmoonlightanybodymeantimesometimesbutterfliesfirefliessomethinganyoneinsidethereforew...

Bootstrap再抽样方法的SAS程序设计

Bootstrap再抽样方法的SAS程序设计近年来许多数理统计方法被引入到医学研究中有些理论在大样本的条件下才能获得稳定的解如项目反应理论线性状态空间模型等但是在实际中由于成本或者现场条件的限制而无法获得大样本...

JavaScript 项目优化总结

JavaScript优化总结分为以下几点优化前后对比优化前优化后代码混乱同样功能的函数重复出现在多个地方如模块化提取公共接口组织为库结构清晰方便代果需要修改实现需要找到所有的地方牵一发而动码重用并且能够游戏防止...

JavaScript作用小结

JavaScript作用小结1创建脚本块1ltscriptlanguageJavaScriptgt2JavaScriptcodegoeshere3ltscriptgt2隐藏脚本代码1ltscriptlangua...

javascript弹出窗口总结

javascript弹出窗口总结关闭父窗口弹出对话框子窗口直接关闭thisResponseWritequotltscriptlanguagejavascriptgtwindowcloseltscriptgtqu...

Javascript语言结构总结

第4章语言结构41JavaScript的基本文法411字符集字符集通常特指以编码的方式构成文本字符的全集所以JavaScript的字符集指的是构成JavaScript的程序合法字符范围集合常见的字符集有ASCI...

javascript心得

Javascript心得1正则表达式1RegExpquottiddquotquotgquot匹配数字用RegExp全局对象时用d而不是d其他的应该也是用两个2RegExp1用一次之后就失效了例如alertReg...

javaScript 删除确认实现方法小结

javaScript删除确认实现方法小结第一种方法挺好用的确认以后才能打开下载地址页面原理也比较清晰主要用于删除单条信息确认详细出处参考article21543htmltSCRIPTLANGUAGEjavasc...

JavaScript 错误处理与调试总结

在Web开发过程中编写JavaScript程序时或多或少会遇到各种各样的错误有语法错误逻辑错误如果是一小段代码可以通过仔细检查来排除错误但如果程序稍微复杂点调试JS便成为一个令Web开发者很头痛的问题下面总结一...

Javascript经典小技巧总结

1documentwritequot输出语句2JS中的注释为3传统的HTML文档顺序是documentgthtmlgtheadbody4一个浏览器窗口中的DOM顺序是windowgtnavigatorscree...

WIN7下PHP 5.3.27和PHPStorm6调试

WIN7下PHP5327和PHPStorm6调试1PHP配置如下加黄色高亮的是必须项PHPXDEBUGextensionphpxdebugdllXdebugzendextensionquotDdevPHP5ex...

bootstrap总结(3篇)