ftp

p连接问题_可以登录进去,可是获取不了列表  

 
 
温馨提示:在ftp连接问题上,出了问题,一定是不够了解ftp,如果你在网上搜索解决方案这个快捷方式解决不了问题,那么你就静下心来,好好的来了解下什么是ftp,然后你自然就懂得怎么没去分析问题并解决问题。
 
这几天我遇到的问题是登录进去。连接得上,可是获取不了列表,自动又关闭了!命令窗口如下:

状态: 正在连接 125.65.113.110 ...
状态: 已经连接到 125.65.113.110:0。正在等待欢迎信息...
响应: 220 Microsoft FTP Service
命令: USER abc
响应: 331 User name okay, need password.
命令: PASS ********
响应: 230 User logged in, proceed.
状态: 连接成功
命令: OPTS UTF8 OFF
响应: 501 Invalid option.
状态: 正在取得目录列表...
命令: PWD
响应: 257 "/" is current directory.
命令: PORT 192,168,0,104,198,213
响应: 200 PORT Command successful.
命令: TYPE A
响应: 200 Type set to A.
命令: LIST
响应: 150 Opening ASCII mode data connection for /bin/ls.
响应: 226 Transfer complete.
状态: 成功取得目录列表
状态: 正在取得目录列表...
命令: CWD wwwroot
响应: 250 Directory changed to /wwwroot
命令: PWD
响应: 257 "/wwwroot" is current directory.
命令: PORT 192,168,0,104,198,214
响应: 200 PORT Command successful.
命令: TYPE A
响应: 200 Type set to A.
命令: LIST
响应: 150 Opening ASCII mode data connection for /bin/ls.
响应: 226 Transfer complete.
状态: 成功取得目录列表
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: PWD
响应: 257 "/wwwroot" is current directory.
命令: TYPE I
响应: 200 Type set to I.
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: PWD
响应: 257 "/wwwroot" is current directory.
命令: REST 0
响应: 350 Restarting at 0. Send STORE or RETRIEVE.
命令: TYPE I
响应: 200 Type set to I.
命令: TYPE I
响应: 200 Type set to I.
命令: TYPE A
响应: 200 Type set to A.
命令: TYPE A
响应: 200 Type set to A.
命令: PWD
响应: 257 "/wwwroot" is current directory.
。。。。

 

 
什么是ftp?
 
        FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 
 
        FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。 
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。 
        从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。 
 
FTP服务器端的注意事项 
 
         一、FTP服务器是公网IP,用公网动态域名;或是内网IP,在网关上开端口映射或用内网专业版TrueHost 
         1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。 
         2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。 
         3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。 
 
FTP客户端的注意事项 
 
         请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。 
         一、客户端只有内网IP,没有公网IP 
         从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用 PASV方式,才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了 IE作为FTP客户端来登录(IE默认使用PORT方式)。 
        作为FTP站长,有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP。 
 
        二、客户端有公网IP,但安装了防火墙
        如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开 1024以上的高端端口。
 
        三、常见的FTP客户端软件PORT方式与PASV方式的切换方法。 大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。  
        在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT” 或:“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
 
        8uftp: 编辑 ->选项 -> 防火墙设置 
        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的时候,看不到登录信息。在登录出错的时候,无法找到错误的原因。在测试自己的FTP网站的时候,强烈建议不要使用IE。
 
        五、为什么没有公网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方式。 
         内网用端口映射方式建FTP的注意事项 
         根据上面的FTP原理,在只映射一个端口的情况下,只能要求来访者使用PORT方式来访问你的FTP服务器,但这样的话就限制了内网用户。 
         而如果映射很多个端口,就可以使用PASV方式了但还要从FTP服务器上作一些设置 比如,从网关上映射21端口和5000-5020端口到你的计算机21端口和5000-5020端口,在Serv-U的Local Server -> Settings -> Advanced -> PASV port range里,填入给PASV模式使用的端口范围5000-5020,然后在你建立的域--设置--高级-允许被动模式数据传输,使用IP 里面填入你的网关在公网的IP地址。 
        还有,用端口映射方式建FTP是看不到来访者的IP地址,只能看到网关在内网中的IP地址。(应该是这样,但也不一定,毕竟我没试过)这样就不能限制一个IP的连接数了。 
 
附:
 
一、如何打开关闭防火墙?
        1、win7中,控制面板  ->  系统和安全 ->Windows防火墙  -> 在左边菜单中有打开或关闭防火墙;
        2、win 2003中,网上邻居属性 ->本地连接属性 -> 高级选项卡中的Windows防火墙设置 ->点击设置,其中就是win 2003服务器防火墙设置(注:远程连接服务器的童鞋们,服务器防火墙的开启和关闭要非常小心,要不然把你的远程桌面连接窗口关了,你就管理不了服务器了。说不定还要花钱提交工单,让机房重启)。开启防火墙的时候,一定记得不要把那个“不允许例外”复选框打上去,一定不要!然后去例外选项卡中,把自己的远程连接端口,还有ftp端口等等添加下。
 
二、ftp状态码
     
       这个百度下?还是添加,等下再决定。见推荐阅读
 
原文地址:https://www.cnblogs.com/muxueyuan/p/4761863.html