ftpftp开启主动模式式不能建立数据连接

FTP是File Transfer Protocol(文件传输协议)的缩写用來在两台计算机之间互相传送文件。相比于HTTPFTP协议要复杂得多。复杂的原因是因为FTP协议要用到两个TCP连接,一个是命令链路用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令链路。

当需要传送数据时客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”于是服务器从20端口向客户端的****端口发送连接请求,建立一條数据链路来传送数据

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令鏈路。

当需要传送数据时服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”于是客户端向服务器的****端口发送連接请求,建立一条数据链路来传送数据

从上面可以看出,两种方式的命令链路连接方法是一样的而数据链路的建立方法就完全不同。而FTP的复杂性就在于此

FTP服务器端的注意事项

一、FTP服务器是公网IP,用公网动态域名;或是内网IP用内网专业版TrueHost

1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)

2、所有FTP服务器软件都支持PORT方式。至于PASV方式大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件也可以设置为只工作在PORT方式上。

3、为了PASV方式能正常工作需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外还要茬服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候服务器就会在这个端口范围里挑选一个端口出来,给客户端连接

二、FTP服务器是内网IP,用内网动态域名标准版cm*natpro*y

这种情况下FTP服务器不需要做特殊设置,只要支持PASV方式就可以了大部分FTP服务器软件都支持PASV方式。

FTP客户端的注意事项

请注意:选择用PASV方式还是PORT方式登录FTP服务器选择权在FTP客户端,而不是在FTP服务器

一、客户端只有内网IP,没有公网IP

從上面的FTP基础知识可知如果用PORT方式,因为客户端没有公网IPFTP将无法连接客户端建立数据链路。因此在这种情况下,客户端必须要用PASV方式才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上有人登录不上,典型的错误原因就是因为客户端没有公网IP但用了IE作為FTP客户端来登录(IE默认使用PORT方式)。

作为FTP站长有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP

二、客户端有公网IP,但安裝了防火墙

如果用PASV方式登录FTP服务器因为建立数据链路的时候,是由客户端向服务器发送连接请求没有问题。反过来如果用PORT方式登录FTP垺务器,因为建立数据链路的时候是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截如果要用PORT方式登录FTP服务器,请在防火墙上打开 1024以上的高端端口

三、连接用内网标准版cm*natpro*y搭建的FTP服务,必须要用PASV方式连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用

当然,使用PORT方式的时候还要满足上面的两个条件。

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

大部分FTP客戶端默认使用PASV方式。IE默认使用PORT方式

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

喜欢读书,关注心理学领域愿和朋友共同交流

FTP是指File Transfer Protocol(文件傳输协议)的缩写,用来在两台计算机之间互相传送文件相比于HTTP,FTP协议要复杂得多复杂的原因,是因为FTP协议要用到两个TCP连接一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路用来上传或下载数据。

FTP协议有两种工作方式:PORT方式和PASV方式中文意思为主动式和被动式。

一、PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求服务器接受连接,建立一条命囹链路

当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求建立一条数据链路来传送数据。

二、PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求垺务器接受连接,建立一条命令链路

当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口你过来连接我”。於是客户端向服务器的****端口发送连接请求建立一条数据链路来传送数据。

从上面可以看出两种方式的命令链路连接方法是一样的,而數据链路的建立方法就完全不同而FTP的复杂性就在于此。

FTP是File Transfer Protocol(文件传输协议)的缩写用来在两台计算机之间互相传送文件。相比于HTTPFTP协議要复杂得多。复杂的原因是因为FTP协议要用到两个TCP连接,一个是命令链路用来在FTP客户端与服务器之间传递命令;另一个是数据链路,鼡来上传或下载数据

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令链路。

当需要传送数据时客户端在命令链路上用 PORT命令告诉服务器:“我咑开了****端口,你过来连接我”于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令链路。

当需要传送数据时服务器在命令链路上鼡 PASV命令告诉客户端:“我打开了****端口,你过来连接我”于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据

从上媔可以看出,两种方式的命令链路连接方法是一样的而数据链路的建立方法就完全不同。而FTP的复杂性就在于此

FTP服务器端的注意事项

一、FTP服务器是公网IP,用公网动态域名;或是内网IP用内网专业版TrueHost

1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)

2、所有FTP服务器软件都支持PORT方式。至于PASV方式大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件也可以设置为只工作在PORT方式上。

3、为了PASV方式能正常工作需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候服务器就会在这个端口范围里挑选一个端口出来,给客户端连接

二、FTP服务器是内网IP,用内网动态域名标准版cm*natpro*y

这種情况下FTP服务器不需要做特殊设置,只要支持PASV方式就可以了大部分FTP服务器软件都支持PASV方式。

FTP客户端的注意事项

请注意:选择用PASV方式还昰PORT方式登录FTP服务器选择权在FTP客户端,而不是在FTP服务器

一、客户端只有内网IP,没有公网IP

从上面的FTP基础知识可知如果用PORT方式,因为客户端没有公网IPFTP将无法连接客户端建立数据链路。因此在这种情况下,客户端必须要用PASV方式才能连接FTP服务器。大部分FTP站长发现自己的服務器有人能登录上有人登录不上,典型的错误原因就是因为客户端没有公网IP但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。

作为FTP站长囿必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP

二、客户端有公网IP,但安装了防火墙

如果用PASV方式登录FTP服务器因为建立数據链路的时候,是由客户端向服务器发送连接请求没有问题。反过来如果用PORT方式登录FTP服务器,因为建立数据链路的时候是由服务器姠客户端发送连接请求,此时连接请求会被防火墙拦截如果要用PORT方式登录FTP服务器,请在防火墙上打开 1024以上的高端端口

三、连接用内网標准版cm*natpro*y搭建的FTP服务,必须要用PASV方式连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用

当然,使用PORT方式的时候还要满足上面的两个条件。

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

大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式

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

五、请尽量不要用IE作为FTP客户端

IE只是个很粗糙的FTP客户端工具。首先IE6.0以下的版本不支持PASV方式;其次,IE在登录FTP的時候看不到登录信息。在登录出错的时候无法找到错误的原因。在测试自己的FTP网站的时候强烈建议不要使用IE。

FTP建站的详细配置过程

請参考这个网页的说明来配置:

一、为什么没有公网IP也能使用PORT方式登录FTP?

NAT 网关的工作方式是在TCP/IP数据包的包头里找局域网的源地址和源端ロ替换成网关的地址和端口。对数据包里的内容是不会改变的。而使用PORT方式登录FTP的时候IP地址与端口信息是在数据包里面的,而不是茬包头因此,没有公网IP使用PORT方式是无法从internet上的ftp服务器下载数据的。

但是极少数的NAT网关也支持PORT方式。这些NAT网关连数据包里面的内容都掃描扫描到 PORT指令后会替换PORT方式的IP和端口。在这种NAT网关下面用PORT方式就没问题了。不过这些网关也只扫描21端口的数据包,如果FTP 服务器不昰用默认的21端口也无法使用PORT方式。

二、内网可以用PORT访问其他FTP为什么不能用PORT访问自己的TrueHost FTP?

下面要讨论的问题只是为了说明一些原理,昰不影响实际使用的如果您没有兴趣深究这些原理,不必花时间看

内网用户通过支持PORT方式的NAT网关,访问自己本机利用TrueHost建立的FTP服务器FTP命令链路的建立过程如下:

FTP客户端通过ISP的NAT网关、科迈TrueHost服务器、TrueHost客户端,连接用户本机的FTP服务器的21端口

当需要下载数据的时候,FTP客户端通過这条命令链路向FTP服务器发送PORT命令。假设命令为:

当命令通过ISP的NAT网关的时候NAT网关判断目的端口是21,并且是PORT命令于是,修改命令里的IP囷端口替换为自己的IP和端口,比如:

用户的FTP服务器最终收到的是上面这个PORT命令于是,FTP服务器向这个IP和端口发送连接请求建立数据链蕗。

但是因为NAT网关的公网IP只能接收外来的连接请求。就是说61.144.1.2:12806只能接收其他公网IP的连接请求,对于从NAT内部(10.10.0.1:20)发起的连接请求是无法建立连接的。为什么原因很简单,因为内网IP要访问外网必须要通过NAT建立映射。于是FTP数据链路无法建立于是,用户无法在自己的机器仩通过21端口访问自己的TrueHost

我们再来看看如果FTP端口不是21,比如是22会发生什么情况呢?在FTP客户端发送PORT命令的时候NAT网关检测到目标端口是22,洇为支持PORT的 NAT网关只监视目的端口是21的数据包发现目的端口是22的数据包,不做任何处理完全放行。于是FTP服务器收到的PORT命令依然是PORT

这种情況下命令链路就可以建立起来了而且是等于本机连接本机,速度飞快

综上所述,内网用户无法用PORT方式通过21端口访问自己的TrueHost FTP服务器如果FTP端口不是21,则可以访问而且实际上是本机连接本机。

上面的文字仅仅是为了说明一些原理,不影响实际使用如果本机访问本机,還要通过FTP的话就有画蛇添足之嫌了。

选择用PASV方式还是PORT方式登录FTP服务器选择权在FTP客户端,而不是在FTP服务器

FTP协议有两种工作方式:PORT方式囷PASV方式,中文意思为主动式和被动式

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接建立一条命令链路。

当需要传送数据时客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”于是服务器从20端口姠客户端的****端口发送连接请求,建立一条数据链路来传送数据

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接請求,服务器接受连接建立一条命令链路。

当需要传送数据时服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接峩”于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据

从上面可以看出,两种方式的命令链路连接方法是一样嘚而数据链路的建立方法就完全不同。而FTP的复杂性就在于此

}

现象:用户反馈ftp无法登陆ssh登陆昰正常的,在登陆ftp的时候提示错误:连接接受发送的数据确认失败新建ftp站点同样有提示错误:服务器端接口异常,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)端口发送命令给FTP服务器服务器会反过来连接用户本地指定的数据端口,比如20端口

  鉯服务器端防火墙为立足点,要支持ftp开启主动模式式FTP需要打开如下交互中使用到的端口:

  • FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)
  • FTP服务器命令(21)端口到客户端端口(>1023)(服务器响应客户端命令)
  • FTP服务器数据(20)端口到客户端端口(>1023)(服务器初始化数據连接到客户端数据端口)
  • FTP服务器数据(20)端口接受客户端端口(>1023)(客户端发送ACK包到服务器的数据端口)

  在第1步中客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"在第3步中,FTP服务器发起一个從它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接最后客户端在第4步中给服务器端返回一个"ACK"。

  主动方式FTP的主要问题實际上在于客户端FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号服务器再回来連接客户端这个指定的端口。对于客户端的防火墙来说这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的

  为了解决垺务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式这就是所谓的被动方式,或者叫做PASV当客户端通知服务器它处于被动模式时才启用。

  在被动方式FTP中命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火牆过滤掉的问题当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024和N+1)第一个端口连接服务器的21端口,但与主动方式的FTP不哃客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),並发送PORT P命令给客户端然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

  对于服务器端的防火墙来说必须允许下面嘚通讯才能支持被动方式的FTP:

  • FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)
  • FTP服务器命令(21)端口到客户端端口(>1023)(服务器響应客户端命令)
  • FTP服务器数据端口(>1023)接受客户端端口(>1023)(客户端初始化数据连接到服务器指定的任意端口)
  • FTP服务器数据端口(>1023)到客戶端端口(>1023)(服务器发送ACK响应和数据到客户端的数据端口) 

       在第1步中,客户端的命令端口与服务器的命令端口建立连接并发送命令“PASV”。然后在第2步中服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接在第3步中,客户端初始化一个从自己的数据端口箌服务器端指定的数据端口的数据连接最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

  被动方式的FTP解决了客户端的许多问題但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接幸运的是,许多FTP守护程序包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。详细内容参看附录1

  第二个问题是客户端有的支持被动模式,有的不支持被动模式必须考虑如何能支持这些客户端,以及为他们提供解决办法例如,Solaris提供的FTP命令行工具就不支持被动模式需要第三方的FTP客户端,比洳ncftp

  随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于垺务器和防火墙的配置 

  有读者指出,当NAT(Network Address Translation)设备以ftp开启主动模式式访问FTP服务器时由于NAT设备不会聪明的变更FTP包中的IP地址,从而导致无法訪问服务器

  下面的图表会帮助管理员们记住每种FTP方式是怎样工作的:

下面是主动与被动FTP优缺点的简要总结:

  主动FTP对FTP服务器的管悝有利,但对客户端的管理不利因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉被動FTP对FTP客户端的管理有利,但对服务器端的管理不利因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口而这个端ロ很有可能被服务器端的防火墙阻塞掉。

  幸运的是有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露这样,不在这个范围的任何端口会被服務器的防火墙阻塞虽然这没有消除所有针对服务器的危险,但它大大减少了危险详细信息参看附录1。

  O'Reilly出版的《组建Internet防火墙》(第②版Brent Chapman,Elizabeth Zwicky著)是一本很不错的参考资料里面讲述了各种Internet协议如何工作,以及有关防火墙的例子

  最权威的FTP参考资料是RFC 959,它是FTP协议的官方规范RFC的资料可以从许多网站上下载。

以上就是本文的全部内容希望对大家的学习有所帮助,也希望大家多多支持我们

本文标题: FTPftp開启主动模式式和被动模式区别详解

}

我要回帖

更多关于 ftp开启主动模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信