服务器port怎么改以 port 模式连接成功,请更新站点配置中的数据连接模式

zerowinning
阅读(4249)
FTP基础知识 FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。 FTP的主动Active,被动Passive是以服务器为主观出发,以下两段话为摘抄。主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N&;1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。 PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N&; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P &; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。以非常著名的开源FTP软件FileZilla为例进行配置,首先确认下服务器上是否已经安装了其他ftp服务器端,以避免ftp端口冲突,确保要配置的端口为空余状态,FTP默认端口为21。filezilla安装很简单,正常点击下一步就可以,安装后启动服务运行。用FileZillaServer Interface.exe登录后,然后在主界面选择 edit-user。在 general 选项卡中选择 add,输入账号并点击ok。然后将password选项勾选,并输入密码。然后点击左侧 shared folders 设置 ftp 目录,点击 add。选中本地要作为 ftp 目录的文件夹,确定后按照图中显示将读写等权限添加,添加后点击 ok。完成配置。ftp可以正常登录。这时就可以用客户端连接服务器了下面重点说说发生下列错误服务器应如何配置响应: 227Entering Passive Mode (115,47,46,131,5,180)状态: 服务器发回了不可路由的地址。被动模式失败。错误: 读取目录列表失败网上说的解决方法:解决方法:更改Filezilla设置,编辑-设置-连接-FTP-被动模式,将“使用服务器的外部ip地址来代替”改为“回到主动模式”即可。上面的解决方法不完全,服务器端也需要进行配置点击edit-settings选择 Passive mode settings,设置 pasv 模式的端口范围,如果不手动设置分配的是随机端口。设置其他端口,需要保证端口畅通,即确保端口可以使用,并能通过你的防火墙。如果你的Server端在内网,在路由中设置了DMZ主机或把21号端口映射到公网IP上,那么同样在公网IP上的Client可以使用Active主动Passive被动访问。但如果Client在内网那很有可能无法链接到Server,这个时候就要用Passive被动方式,但如果Server只映射了21号端口,那么Clent虽然可以登陆Server但无法获得列表(LIST或PWD)。为了限制对外开放的PORT端口,主要还是为了方便你映射已知的端口,你需要在FTP服务器上开启“User Custom PortRange”。注意如果服务器在内网,IPv4specific页不要选择Default,可以指定IP或选择Retrieve external IPaddress from: http://ip.filezilla-project.org/ip.php这里比如开放这么多端口,相应的还要在路由配置,“转发规则”-&“虚拟服务器”中对这几个端口做如21端口一样的映射。图中21端口被我改为了8021,而因为只有我一个人在用,所以只开放了8020。这样做之后你的Client不论主动还是被动都可正常访问到。FTP客户端的注意事项请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端。一、客户端只有内网IP,没有公网IP从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。大部分人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。二、客户端有公网IP,但安装了防火墙如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开1024以上的高端端口。三、常见的FTP客户端软件PORT方式与PASV方式的切换方法。大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。IE:工具 -& Internet选项 -& 高级 -& “使用被动FTP”(需要IE6.0以上才支持)。如果找不到这个选项,请看图片。CuteFTP:
Edit -& Setting -& Connection -& Firewall -& “PASV Mode”或
File -& Site Manager,在左边选中站点 -& Edit -& “Use PASV mode”FlashGet:工具 -& 选项 -& 代理服务器 -& 直接连接 -& 编辑 -& “PASV模式”FlashFXP:选项 -& 参数选择 -& 代理/防火墙/标识 -& “使用被动模式”或站点管理 -& 对应站点 -& 选项 -& “使用被动模式”或快速连接 -& 切换 -& “使用被动模式”LeechFTP:
Option -& Firewall -& Do not Use请尽量不要用IE作为FTP客户端
IE只是个很粗糙的FTP客户端工具。首先,IE6.0以下的版本不支持PASV方式;其次,IE在登录FTP的时候,看不到登录信息。在登录出错的时候,无法找到错误的原因。
阅读排行榜他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)缃戠粶璁剧疆"这是最近一礼拜遇到的一个很头疼的问题,由于我们的系统需要需要用到 ftp 的 fxp 进行两个 ftp 服务器之间进行数据传输。 但是就是在这上出现了让我很郁闷的问题,连着几天,一个坑接一个坑 .."
黑客派 17 号会员
FTP的PORT模式,PASV模式, FXP协议和在java中使用时的一些问题
这是最近一礼拜遇到的一个很头疼的问题,由于我们的系统需要需要用到 ftp 的 fxp 进行两个 ftp 服务器之间进行数据传输。 但是就是在这上出现了让我很郁闷的问题,连着几天,一个坑接一个坑,连续解决了 5,6 个问题,到今天下午才算是把所有问题解决。 在讲述我遇到的问题之前我们先了解下几个概念:
首先是 PORT 模式和 PASV 模式,也就是 FTP 的主动模式和被动模式: &
主动模式的 FTP 连接建立要遵循以下步骤: && 1. 客户端打开一个随机的端口(端口号大于 1024,在这里,我们称它为 x),同时一个 FTP 进程连接至服务器的 21 号命令端口。此时,源端口为随机端口 x,在客户端,远程端口为 21,在服务器。 && 2. 客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的 21 号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。 && 3. 服务器打开 20 号源端口并且建立和客户端数据端口的连接。此时,源端口为 20,远程数据端口为(x+1)。 && 4. 客户端通过本地的数据端口建立一个和服务器 20 号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。 & & &
被动模式 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 响应和数据到客户端的数据端口)
FPX 全称:File Exchange Protocol (文件交换协议)(貌似很对人对这个全称持有不赞同的意见) &  FXP 是一个服务器之间传输文件的协议,这个协议控制着两个支持 FXP 协议的服务器,在无需人工干预的情况下,自动地完成传输文件的操作。在我们的客户机上,可以简单的发送一个传输的命令,即可控制服务器从另一个 FTP 服务器上下载一个文件,下载过程中,无须客户机干预,客户机甚至可以断网关机。这种协议通常只适用于管理员作管理的用途,在一般的公开 FTP 服务器上,是不会允许 FXP 的,因为这样会浪费服务器资源,而且有可能出现安全问题。 以上这些都是我从百度百科扒出来的,也只是给各位简单的了解先 FTP 和我这几天遇到的问题的技术背景 我们的系统环境是这样的,数据是从 A 服务器 (系统是 window server 2003,ftp 服务器 serv-u,使用的默认模式配置,应该是被动模式,但是貌似是主被动都支持) 先通过 FXP 传送到 B 服务器 (中转服务器,是 linux,ftp 服务器是 vsftpd,被动模式,不能主被动同时开启,会出现 5XX 错误),然后在使用 fxp 分别传送到 c1,c2 服务器 (windows server 2003, ftp 服务器是 serv-u,同样是使用的默认配置模式), 我们在项目中使用的是 Apache 的 net 包的 ftp 功能进行 FTP 操作, 下面是我们使用 FXP 功能的代码: FTPClient srcServer = connect(source, ftpLog); FTPClient targetServer = connect(target, ftpLog); // Let's just assume success for now. srcServer.enterRemotePassiveMode(); targetServer.enterRemoteActiveMode(InetAddress.getByName(srcServer.getPassiveHost()), srcServer.getPassivePort()); // Although you would think the store command should be sent to // server2 // first, in reality, ftp servers like wu-ftpd start accepting data // connections right after entering passive mode. Additionally, they // don't even send the positive preliminary reply until after the // transfer is completed (in the case of passive mode transfers). // Therefore, calling store first would hang waiting for a // preliminary // reply. if (targetServer.remoteStoreUnique(encodepath(target.getPath())) && srcServer.remoteRetrieve(source.getPath())) { // if(ftp1.remoteRetrieve(file1) && ftp2.remoteStore(file2)) { // We have to fetch the positive completion reply. srcServer.completePendingCommand(); targetServer.completePendingCommand(); } 这段代码是我们头从 apache 网站中扒下来,稍作改动,目的就是为了从 src 服务器向 target 服务器发送一个文件,文件在 10G 左右。 代码很简单创建两个 FTP 连接,分别连接源服务器和目标服务器,告诉源服务器使用被动模式,并告诉目标服务器使用主动模式,并告诉目标服务器源服务器的 ip 和端口。 最后面的几句就简单的,if 判断条件里 && 的左边的语句targetServer.remoteStoreUnique(encodepath(target.getPath()))的意思是,目标服务器接收数据, && 右边srcServer.remoteRetrieve(source.getPath())是告诉源服务器发送数据,这样两个服务器就会进行数据传输,直到传输完成,如果这两个服务器不支持 FXP, 那么 if 语句里面的两句话就会返回 false。 从 Apache 的代码中不难看出,进行 FXP 需要两个 FTP 服务器一个是被动模式一个是主动模式,将被动模式的服务器的地址和端口告诉主动模式的服务器,有主动模式服务器连接被动模式服务器进行数据传输。 这里不一定是要源服务器是主动模式,目标服务器是主动模式,反过来也是完全可以的,我们这里之前的代码是目标服务器是被动模式,源服务器是主动模式,但是由于系统架构的变化所以这里的代码也有了变化。 这里需要注意的是:
srcServer.enterRemotePassiveMode();这句话需要在前面,targetServer.enterRemoteActiveMode(InetAddress.getByName(srcServer.getPassiveHost()), srcServer.getPassivePort());一定要在后面, 因为主动模式的服务器需要被动模式的服务器的地址和端口。
targetServer.remoteStoreUnique(encodepath(target.getPath())) && srcServer.remoteRetrieve(source.getPath())这两句也是有顺序的, 最开始的时候srcServer.remoteRetrieve(source.getPath())在targetServer.remoteStoreUnique(encodepath(target.getPath()))之前,在两个都是 serv-u 的情况下是没有问题的, 但是后面我们的源 ftp 服务器换成了 vsftpd 这样就不可以,在内网中进行测试呃时候,只有 20 字节的速度,而在公网中这两个就干脆连不上,但是改成现在的样子速度就能跑满。 我们在调试中还发现,vsftpd 是不能同时启动两种模式的,不然在执行命令的时候会返回一个 5XX 的错误,只能启动主动或者被动模式,网上的一些文章发的配置信息很多都是主被动同时启动的,我认为这是错的,但是我有一点很疑惑我们的 serv-u 使用的是默认配置, 这种的配置貌似既是主动也是被动,有点不理解,也就是说客户端连接的时候需要什么模式就会切换到什么模式。 还想提醒一下不论什么程序,只要是在程序中使用 FTP 操作的,需要注意 FTP 是否支持一些命令,比方说 vsftpd 就不支持 mlst 这个命令,还有 serv-u 默认配置下,是不能使用 list 命令的,会返回 425 错误,但是 serv-u 支持 mlst 命令,等等各种问题。 下午在闲下来的时候在和同时讨论这个问题的时候,得到结论是:FTP 的协议规范可能太简单,很多服务器的开发者,对协议支持的都不太一样,虽然大部分功能是一样的,但是在一些细节上有很大的差别,这些差别和可能就是我们需要进行攻关的地方。 当然我们也在这里拌了好几天,一个问题一个问题的解决,虽然耽误了很多时间但是收获也很多。
该文章同步自
微信扫一扫
Feel easy about trust.
Powered by
2.5.0 o 126ms设置以PORT模式连接FTP站点_百度经验
&&&&&&&&&电脑软件设置以PORT模式连接FTP站点听语音1234567
百度经验:jingyan.baidu.com前些天建立了一个FTP站点,但在用FlashFXP连接它时总是先以PASV模式连接失败,再尝试使用PORT模式才连接成功的,这导致了连接过程时间很长。因此,先不管为什么PASV模式连接失败,尝试设置一开始就以PORT模式连接。百度经验:jingyan.baidu.comFlashFXP软件百度经验:jingyan.baidu.com1打开FlashFXP软件,在工具栏上选择“站点”,然后单击“站点管理器”。2在站点列表中选择目标站点,然后检查“常规”选项卡下内容是否正确。3如果列表中没有相应站点,单击下方“新建站点”按钮,输入站点名称,在“常规”选项卡下填写相应信息。4选择“选项”选项卡,在数据连接模式下的下拉框中选择“主动模式(PORT)”,再单击“应用”即可。5这样操作之后再连接FTP站点就会直接以PORT模式连接了。END百度经验:jingyan.baidu.com1如果是用IE连接FTP的,就需要在IE中设置一下,具体步骤如下。2打开IE,选择命令栏上的“工具”选项,在点击最下面的“internet选项”。3在“internet选项”窗口中选择“高级”选项卡,然后在设置中找到“使用被动FTP”,取消其选中状态,在点击“确定”即可完成操作,如图所示。END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(1)已投票(1)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验03100热门杂志第1期你不知道的iPad技巧3725次分享第1期win7电脑那些事6573次分享第2期新人玩转百度经验1385次分享第1期Win8.1实用小技巧2637次分享第1期小白装大神1884次分享◆请扫描分享到朋友圈

我要回帖

更多关于 已经成功连接到服务器 的文章

 

随机推荐