今天在CentOS里面搭了个VsFTP的FTP环境,结果到宿主机里登上去却无法ls,查了下资料才知道FTP还有两种模式的。
模式1:被动模式(PASV)
FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。
然后向服务器发送PASV命令,通知服务器自己处于被动模式。
服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。
客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
模式2:主动模式(PORT)
客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,默认21端口;
然后客户端开始监听端口N+1,并发送FTP命令”port N+1″到FTP服务器;
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
我觉得一般大的网络环境中FTP服务器一般都是配的PORT模式的吧,否则防火墙的可入端口就开得有点多了。。。
也就是说,我们在反弹的时候遇到FTP服务器可以尝试一下从20端口出去:)
为什么我的Win7无法ls?
因为Windows下的ftp工具默认使用的主动模式,恰好我的防火墙又开着的,那么来自服务器20端口的数据是无法进入的!
但是我到Chrome里面用ftp://却可以连(不知道为什么速度很慢),查了下应该是ftp://默认用的被动模式。
参考:
FTP传输的两种模式
在命令行下实验FTP的PASV传输模式
转自:http://laterain.sinaapp.com/?p=345
转载请注明:jinglingshu的博客 » FTP的两种连接模式