Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188158
  • 博文数量: 23
  • 博客积分: 1475
  • 博客等级: 上尉
  • 技术积分: 278
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-23 16:18
文章分类

全部博文(23)

文章存档

2014年(8)

2012年(2)

2010年(3)

2009年(6)

2008年(4)

我的朋友

分类: LINUX

2009-10-09 00:14:40

   今天做项目遇到一个比较麻烦的问题,这是个比较小的项目,项目背景是:我公司与A公司要通过FTP方式交换数据,我公司负责上传文件到A公司指定的服务器上,然后A公司将上传的文件取走。这是个非常简单的小项目,但是却在FTP服务方面出现了问题:我公司在内部架设了FTP服务器进行测试时一切正常,都能正常上传文件,但是连接到A公司指定的FTP服务器上上传文件时却失败。我公司连接A公司指定的FTP服务器是通过防火墙NAT外网地址出去连接internetA公司的FTP服务器也是架设在内网,通过防火墙net出去, 连接internet。就是这种组网结构导致了FTP文件上传失败。首先介绍一下FTP服务,FTP服务与其他的客户端-服务器应用程序的不同就是它在主机之间使用两条连接。一条连接用于数据传输,而另一条则用于传送控制信息(命令和响应)。基于这种的连接方式产生了FTP服务的两种连接方式:(1 主动方式 ,说简单点就是客户端发起FTP连接到服务器,但要传输数据时,客户端随机分配一个端口并告知FTP服务器,此时客户端就等待服务器主动连接进行数据传输,而服务器使用20端口连接到客户端之前随机分配的号码,并进行数据连接。客户端连接服务器的20端口进行数据传输。 2)被动方式,简单点说,就是客户端发起连接到服务器,服务器随机启动一个数据端口,并告知客户端。客户端连接到此端口,进行数据传输。通过了解FTP的运行原理,在我公司连接A公司的服务器只能使用被动方式,因为我们的客户端是通过 防火墙NAT出去,好多端口在防火墙被封了,所以不能采用主动方式:由客户端作为数据的守候端口,由A公司来连接。但是采用被动模式只能连接到A公司服务器上,还是不能进行数据传输。通过抓包发现,作为被动方式,服务器随机分配的作为数据端口和IP地址返回给客户端时出现问题,返回的地址是A公司服务器的内网地址,所以导致我公司传送数据到A公司服务器失败,最后修改vsFTPD的配置文件pasv_address=58.223.0.78,添加这个的目的就是,服务器返回端口和IP地址,强制将ftp的外网地址送给客户端,这样客户端就可以进行连接。

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