Chinaunix首页 | 论坛 | 博客
  • 博客访问: 443239
  • 博文数量: 56
  • 博客积分: 2705
  • 博客等级: 少校
  • 技术积分: 740
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-21 13:52
文章分类

全部博文(56)

文章存档

2016年(1)

2014年(1)

2013年(5)

2012年(4)

2011年(8)

2010年(10)

2009年(15)

2008年(12)

分类: LINUX

2008-10-30 12:52:16

日,今天遇到个tmd特怪的问题:
   通过IE,flasFXP等ftp客户端工具都可以登录上某个公网ftp并可以拿到数据,包括在linux命令行中ftp,但是通过我们的系统(需要走ftp的标准协议)无论如何就是不能下载.......
   后经查证,原来是与ftp的两个模式有关;对方的ftp是在内网部署,外网用户通过代理访问该ftp;ftp客户端默认采用的被动模式,并且这些客户端都可以自动切换模式,也就是说当被动模式无法下载时会自动切换到主动模式,然而我们的系统默认采用被动模式,如果无法下载需手动切换模式;

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端口发送连接请求,建立一条数据链路来传送数据。

概括:
--------------------------------------------------------------------------------
主动模式:服务器向客户端敲门,然后客户端开门
被动模式:客户端向服务器敲门,然后服务器开门
所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门
而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口

阅读(1983) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~