`
chennaid2
  • 浏览: 51140 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • b_l_east: 在主动模式下,如果有多个客户端,服务器对每一个客户端均使用20 ...
    ftp

ftp

    博客分类:
  • FTP
ftp 
阅读更多

ftp有两个端口号进行服务,

控制进程/命令接口21

数据连接20

如果ftp服务器开通了20,并且ftp服务器关闭了高位随机端口,则必须使用主动模块,这样对ftp服务器安全点。如果你使用了被动模块,则无法显示文件夹清单list。

如果ftp服务器开通了20,并且ftp服务器也开通了高位随机端口,则可以使用被动模块,同时也可以使用主动模式。

如果ftp服务器没有开通20,但是ftp服务器开通了高位随机端口,则必须使用被动模块,同时也可以使用主动模式。

如果客服端的防火墙关闭了端口的主动接收功能,则无法使用主动模式,但可以使用被动模块。

 

主动模式:服务器主动链接客服端数据传输接口。需客户端可接受高位链接,没有防火墙关闭。

被动模式:服务器不主动链接,被动接口,客户端主动链接。url 方式如ftp://是采用被动。

 

如果客服端的防火墙关闭了端口的主动接收功能,则无法使用主动模式,但可以使用被动模块,这也是被动模块存在的原因。

一般公司内部为了服务器安全点,使用主动模式,但对客户端有些要求,可以接受端口的请求数据。

 

flashFXP的具体设置如下。

空:表示主动模式
勾:表示被动模式
勾+灰:表示先尝式被动模式,不行则尝试使用主动模式

 

ftp 192.168.169.8
输入正好密码
cd /你要的目录
ls
如果出来,但你的FTP工具不行,就是FTP工具配置不正确

 =============================================

原理是:
从FTP服务器的工作方式说起,FTP服务器有一个listening socket 21端号,,负责接收client端的连接请求,当连接建立之后,服务器会创建一个新的用于和客户端进行数据交互的data socket 20,这个socket是去主动连接客户端对应(主动模式, 以前一般采用这种方式),

等待客户端过来连接(被动模式)


如果客户端的IP位于防火墙(宽出严进)之后,服务端有可能主动连不上客户端,这时就要采用被动模式,客户端主动联接服务端.

 

所以ftp服务端防火墙最好开启21,由ftp服务器软件指定范围数据连接端口,以解决客户端采用被动模式出错的情况

可以不在服务端防火墙上打开20端口,因为这个仅在port模式下才有用,并且是出. 而不是进

以上摘抄:

=========================

 

 

 

 

> entry from faq
> 2. Have your FTP clients use passive mode. Passive mode data connections
> originate from the client,and thus do not experience this "port 20" problem.

There are many types of firewalls and some of them
do their work by disallowing connections from IP addresses outside their
network. FTP protocol has been designed a long time ago and it did not count
with this kind of restriction. That is why server, not client, originates
connection during FTP session. Simply, I can explain it like this: client
tells server "I am waiting on my port XXXX for your data", and server
connects (opens/originates connection) to the port specified by client and
sends the data there. That means that if the client is behind firewall which
does not allow connections from outside IP addresses, it also does not allow
connection attempt from this FTP server. So, after a few years it became
clear it is necessary to modify FTP protocol so that it is able to work also
with client which it can't connect to. And at that time PASV command was
added. It works very simple: Client sends PASV command to server which
answers something like this "The data is waiting for you on my port YYYY"
and now client only connects to the specified port on the server to transfer
the data. So, connection now originates client and there is no problem with
firewall.

中文:
防火墙有很多种,其中有一些会禁止那些不是从内部网络IP发出的连接请求。
而ftp协议是个很老的东东,没有考虑这个问题。可以这样简单描述一般ftp
的工作原理:client对server发出请求:“嗨,我的xx端口正等着你传送数据
呢,sever听到这个请求,就会建立一个连接,指向这个端口,并且开始传送
数据。这就回到了我们的问题,如果发出请求的client在防火墙的后面,而这
个防火墙禁止外部IP建立连接,那么当然server(在外部)不能建立与client的
连接。
所以,过了几年,人们修改了ftp协议以应付这种情况。这就是passive mode,
工作原理如下:client向server发出passive命令,server回答说:“数据在xx
端口等你,自己来拿。” 而这回则由client建立指向server的连接,从而取得
数据。这就避免了防火墙的限制。

=====================================

FTP基础知识 
您是否正准备搭建自己的FTP网站?您知道FTP协议的工作机制吗?您知道什么是PORT方式?什么是PASV方式吗?如果您不知道,或没有完全掌握,请您坐下来,花一点点时间,细心读完这篇文章。所谓磨刀不误砍柴功,掌握这些基础知识,会令您事半功倍。否则,很可能折腾几天,最后一事无成。 

FTP基础知识 

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 

当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。 

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 

当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。 
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。 

FTP服务器端的注意事项 

一、FTP服务器是公网IP,用公网动态域名;或是内网IP,用内网专业版TrueHost 

1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。 

2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。 

3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。 

二、FTP服务器是内网IP,用内网动态域名标准版cm*natpro*y 

这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持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以上的高端端口。 

三、连接用内网标准版cm*natpro*y搭建的FTP服务,必须要用PASV方式。连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用。 

当然,使用PORT方式的时候,还要满足上面的两个条件。 

四、常见的FTP客户端软件PORT方式与PASV方式的切换方法。 

大部分FTP客户端默认使

=====================

ftp 20端口释疑

                                      

 

ftp 20端口释疑


一直都对ftpserver如何使用20端口没有概念。今天算是弄明白了。

20端口并不接受外来的连接请求,而是连接到客户端的源端口。

只是适用于port模式,passive模式不涉及20端口。

比如:
客户端发来请求
port 222,222,222,222, 5,199
那么就表示客户端打开了1399端口来等待服务器连接。

5->0x05
199->0x77
0x0577 = 1399


这时候服务器创建一个socket并且绑定到20端口,然后连接到222.222.222.222 : 1399
完成发送数据的工作。


示例代码:
SOCKET sd;
SOCKADDR_IN addr;
int ret = 0;

sd = socket(AF_INET, SOCK_STREAM, 0);

addr.sin_family = AF_INET;
addr.sin_port = htons(20); //20作为源端口。如果这里写0,那么系统将自动分配一个1024 - 5000 之间的端口(这个范围可以通过修改注册表来调整)
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
//绑定源地址
ret = bind(sd, (sockaddr *)&addr, sizeof(addr));

addr.sin_port = htons(1399);
addr.sin_addr.S_un.S_addr = inet_addr("222.222.222.222"); //当然在服务器中不需要产生字符串形式的ip地址
ret = connect(sd, (sockaddr *)&addr, sizeof(addr));

//send data.....

ret = closesocket(sd);

分享到:
评论
1 楼 b_l_east 2013-01-22  
在主动模式下,如果有多个客户端,服务器对每一个客户端均使用20端口吗?
如果这样,那20端口的连接岂不是每次都要打开和关闭,而不是长连接的方式,这种方式有没有什么弊端呢?!

相关推荐

    详解ftp创建文件权限问题

    详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...

    一个FTP客户端

    如果用本FTP客户端登录某个FTP服务器,则先必须申请一个FTP空间,申请FTP空间时,它会给你一个FTP主机地址、用户名称、用户密码。 测试步骤: 1、项目编译并运行。 2、申请一个FTP空间(这里不讨论)。 3、输入FTP...

    FTP服务器FTP服务器

    FTP服务器FTP服务器FTP服务器FTP服务器FTP服务器FTP服务器FTP服务器FTP服务器

    iis ftp 多用户隔离实现方法(根目录)

    首先需要取消“站点属性/允许匿名连接”,如图1。  接着进入“计算机管理/本地用户和组...回到IIS管理器,选择一个FTP站点“新建/虚拟目录/下一步”在别名处输入FTP01,选择“下一步”,路径选择刚刚创建的FTP01目

    windows下FTP匿名登录或弱口令漏洞及服务加固

    FTP 弱口令或匿名登录漏洞,一般指使用 FTP 的用户启用了匿名登录功能,或系统口令的长度太短、复杂度不够、仅包含数字、或仅包含字母等,容易被黑客攻击,发生恶意文件上传或更严重的入侵行为。 漏洞危害 黑客利用...

    Linux下安装卸载ftp的方法

    ftp是liunx下常用的软件之一。 1.将用户切换到root:su - ; 2.检查机器是否已经安装了ftp:rpm -qa|grep vsftpd;  如果没有返回任何结果,表示没有安装;如果返回文件包名,这表示已经安装了该服务; 3.开始安装:...

    密探ftp,多线程ftp.zip

    密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip...

    ftp4j-一个开源的支持代理的FTP组件

    ftp4j是个很年轻的开源项目,但是试用后发现很好很强大,如果你找一个纯java的FTP库,要支持socks4,socks4a,socks5,http代理,就是他了! 比apache的FTPClient(不支持代理)、半商业的edtFTPj(PRO支持代理,...

    TYPSoft FTP ServerV1.11 简体中文版

    市面上比较常见的FTP搭建工具都过于专业,例如IIS的FTP功能,SERV-U软件等。虽然使用这些软件建立的FTP在功能上非常强大,但却存在两个明显不足,第一是FTP服务器初始工作比较繁琐,需要具备一定的计算机水平才能...

    FTP服务器源码(C#版web端和后台)纯代码

    目前网络上有很多专业的FTP服务器软件,但是基于C#开发的版本很少,功能很全的源码就更少了,为此我专门将该资源分享出来,希望能给真正需要的读者提供微薄的帮助。 本软件简介: 1.具备FTP服务器的基本功能,如文件...

    (Java)FTP多线程下载源代码

    采用apache commons开发包,实现了FTP多... 另外要注意的是,输入的FTP目录和本地目录要正确,因为程序中没有处理这类异常(呵呵呵,毕竟这不是主要目的),范例 FTP目录:\FTP\hello.txt(\代表FTP根目录) 本地目录:C:\

    webftp.zip ftp源码

    webftp.zip ftp源码 webftp.zip ftp源码 webftp.zip ftp源码 webftp.zip ftp源码 webftp.zip ftp源码

    最新FTP 服务器 最新FTP 服务器

    Serv-U是一种被广泛运用的FTP服务器端软件,支持3x/9x/ME/NT/2K等全Windows系列。可以设定多个FTP服务器、限定登录用户的权限、登录主目录及空间大小等,功能非常完备。 它具有非常完备的安全特性,支持SSl FTP传输...

    计算机网络课程设计:简单FTP客户端软件开发

    而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。FTP使用客户服务器方式。 设计要求: 1) 以命令行形式运行 2) 该FTP客户端程序具有以下基本功能:能完成FTP链接的打开和关闭操作;能执行文件的上传和...

    ftp检测\ftp扫描

    ftp检测\ftp扫描

    vs2010写的一个简单的FTP客户端

    FtpC是用vs2010写的一个简单的FTP客户端,说明CFtpConnection的基本用法,大家可参照它写出长期自动获取远程FTP服务器上数据的应用。如果你用vc6.0,只要把这个工程中的原理性代码复制过去就行了。 测试时FTP服务器...

    自己收集的多个Java FTP断点续传的例子源码

    ftp上传下载 java FTPClient - - ITeye技术网站 (2012年5月21日) FTP操作类:FTPClient - 石川 - 博客园 (2012年5月21日) JAVA中使用FTPClient上传下载 - hbcui1984的专栏 - 博客频道 - CSDN.NET (2012年5月21日) ...

    除非Microsoft FTP 服务(FTPSVC)正在运行,否则无法启动FTP站点。服务目前已停止。

    当出现:除非Microsoft FTP 服务(FTPSVC)正在运行,否则无法启动FTP站点。服务目前已停止。(针对win10系统,亲测成功。其他系统应该差不多) 即如下提示时: 原因是:在自己电脑上搭建的ftp服务器,每次断电开机...

    java编写的ftp文件实时监控下载上传

    用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...

    FTP服务器单文件绿色版FTPServer

    FTP服务器单文件绿色版FTPServer

Global site tag (gtag.js) - Google Analytics