您的浏览器禁用了Javascript,可能无法正常浏览我们的网站,请更改后再进行浏览,谢谢
主 题: ftp上传时数据Socket错误解决方法
已阅:3233 / 回复:0(楼主)
ftp上传时数据Socket错误解决方法
1.
Ftp协议有两种工作方式:port方式和pasv方式,中文意思为主动式和被动式。
port(主动)方式的连接过程是:客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一条数据链路来传送数据。

  pasv(被动)方式的连接过程是:客户端向服务器的ftp端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端向服务器的空闲端口发送连接请求,建立一条数据链路来传送数据。

  因为port方式在传送数据时,由服务器主动连接客户端,所以,如果客户端在防火墙或nat网关后面,用port方式将无法与internet上的ftp服务器传送文件。这种情况需要使用pasv方式。几乎所有的ftp客户端软件都支持这两种方式。特殊的典型例子是ie,ie默认是用port方式的。如果要在ie里启用pasv方式,请打开ie,在菜单里选择:工具 -> internet选项 -> 高级,在“使用被动ftp”前面打上钩(需要ie6.0以上才支持)。

2.
一些网友在上传网站时,虽然可以连接但出现如下错误
--------------------------------------------
200 Type set to ASCII.
PASV
227 Entering Passive Mode (61,151,251,110,4,64).
数据 Socket 错误: 连接已失败 (连接已拒绝)
--------------------------------------------
或是
-------------------------------------------------
命令:>     REST 0
    350 Restarting at 0. Send STORE or RETRIEVE.
命令:>     PASV
    550 Passive mode not allowed on this server.
错误:>     请求的操作未执行(如,文件或目录未找到,不能访问)。
错误:>     建立数据 socket 失败。
 
-----------------------------------------------------
 
 
经常登录各种FTP服务器,会遇到socket错误,朋友也经常遇到,来问我。偏偏大家使用的是不同的FTP软件,所以,今天我把几种目前常用FTP软件的解决办法告诉大家。
 
★Cute FTP 3.5英文版:FTP—>Settings—>Options—>Firewall,将“PASV mode”前复选框中的打勾去掉。
★Cute FTP3.5中文版:FTP—>设置—>选项—>防火墙,“PASV方式(A)”前复选框中的打勾去掉。
★Cute FTP4.0中文版:右击你所建立的ftp站点—>选择属性(properties)—>去掉"use PASV mod" 选择项
★Cute FTP Pro2.0中文版:编辑—>全局设置—>连接—>连接类型,“PASV/PORT”下拉选项菜单选择PORT。
★Leap FTP2.7.2:Sites—>Site Manager—>Advanced,将“Use PASV mode”前复选框中的打勾去掉。
★flashfxp : 选项->参数->代理->去掉“使用被动模式”
★flashget : 选项->参数->代理服务器->编辑->将“Use PASV mode”前复选框中的打勾去掉。

1.什么是ftp中的PASV和PORT模式

FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接。FTP服务程序一般会支两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),先说说这两种不同模式连接方式的分别:

先假设客户端为C,服务端为S。

所谓Port模式:

当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个Port命令后就会向客户端打开的那个端口N进行连接,这种数据连接就生成了。

所谓Pasv模式:

当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是(服务端S在本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,就可以向服务端S的M端口进行连接,连接成功后,数据连接也建立了。

从上面的解释中,可以看到两种模式主要的不同是数据连接建立的不同,对于Port模式,是客户端C在本地打开一个端口等服务端S去连接建立数据连接;而Pasv模式就是服务端S打开一个端口等待客户端C去建立一个数据连接。

FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用:

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

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

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

注意:所有FTP服务器软件都支持PORT方式,大部分FTP服务器软件PORT方式和PASV方式都支持,有些FTP服务器不支持PASV方式都支持,故造成了PASV 模式失败,正在尝试 PORT错误 或者 数据Sock错误。对症下药,解决的方法其实很简单――取消PASV模式。

2.具体的方法

1)在ie中如何启用或者取消PASV模式:

如果要在ie里启用或关闭PASV方式,先打开IE,在菜单里选择:工具 -> Internet选项 -> 高级,在“使用被动ftp”前面打上钩或者去掉钩,不过需要IE6.0以上才支持。

2)FTP下载工具取消被动模式的方法:

★Cute FTP 3.5英文版:FTP―>Settings―>Options―>Firewall,将“PASV mode”前复选框中的打勾去掉。

★Cute FTP3.5中文版:FTP―>设置―>选项―>防火墙,“PASV方式(A)”前复选框中的打勾去掉。

★Cute FTP4.0中文版:右击你所建立的ftp站点―>选择属性(properties)―>去掉"use PASV mod" 选择项

★Cute FTP Pro2.0中文版:编辑―>全局设置―>连接―>连接类型,“PASV/PORT”下拉选项菜单选择PORT。

★Leap FTP2.7.2:Sites―>Site Manager―>Advanced,将“Use PASV mode”前复选框中的打勾去掉。

★flashfxp: 选项->参数->代理->去掉“使用被动模式”

★flashget: 选项->参数->代理服务器->编辑->将“Use PASV mode”前复选框中的打勾去掉。

3.其他补充

如果你用Serv-U架设FTP,那么Serv-U默认配置下两种方式都支持。

如果要关闭PASV方式,打开Serv-U,进入 Domains -> user.dns0755.net -> Settings -> Advanced -> 把“Allow passive mode data transfers”前面的钩去掉。

在 Serv-U的Local Server -> Settings -> Advanced -> PASV port range里,填入给PASV模式使用的本地端口范围,如60000-60020。请把端口范围限制在20个以内。之后,再在防火墙里打开这个范围的端口就可以了

个性签名
建网站188元 0531-66814598
作者:xueok (2011-4-7 11:44:53)
188元建网站 免费试用 满意付款 0531-82862131

目前不允许游客回复,请 登录 注册 发贴.