`
mzhj
  • 浏览: 224128 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

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

控制进程21

数据连接20

原理是:
从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);

分享到:
评论

相关推荐

    主动模式下载ftp文件

    ftp服务器如果是主动模式,下载方法与被动模式有很大差异,本案例提供主动模式下载方案

    ftp可登录但是无法下载,上传问题解决

    通过 passive 开启和关闭 PASV模式,再ls 也是同样的问题, # 主动模式 $ pftp -v -A -d 211.159.185.xxx Connected to 211.159.185.198 (211.159.185.xxx). 220 (vsFTPd 3.0.2) Name (211.159.185.xxx:...

    FTP流程解析

    FTP的协议流程,讲述Active以及Passive模式如何工作

    MATLAB 中的被动模式 FTP:这些文件允许用户在 MATLAB 中使用被动模式 FTP。-matlab开发

    在防火墙后面工作的 FTP 客户端通常使用被动模式 FTP 连接到服务器,以避免防火墙出现问题。 MATLAB 的 ftp 对象没有被动模式功能。 附加文件修改此 MATLAB 类以允许此功能。 这些文件仅使用 MATLAB 使用的 ...

    FTP客户端程序--VC

    自己写的一个网络课程设计-FTP客户端程序,实现本地文件浏览和服务器端文件浏览、上传和下载、用户FTP和匿名FTP登陆、ASCII和Binary传输模式、Port和Passive连接模式,包括源程序和设计报告,有详细代码解释

    ftp协议相关文档

    根据是使用Port模式还是Passive模式,FTP使用不同的TCP端口号,在详细描述FTP前,我们来 简单讨论一下TCP端口号的一些基本概念。TCP使用端口号来标识所发送和接收的应用,端口号 可以帮助TCP来分离字节流并且帮相应...

    仿写CodeIgniter的FTP类.zip

    FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP 的客户端...Passive模式FTP的客户端发送 PASV命令到 FTP Server。

    ftp主动模式突破防火墙自动上传下载.rar

    配置实现ftp自动上传下载,支持突破本地和服务端防火墙的主动模式上传下载。

    Linux FTP服务配置

     xferlog_std_format=YES 是否使用标准的ftp xferlog模式  idle_session_timeout=600 设置默认的断开不活跃session的时间  data_connection_timeout=120 设置数据传输超时时间  nopriv_user=ftpsecure 运行...

    ftp 客户端实现

    用edtftpj.jar 实现的ftp client ... 2)具有主动(Active)模式和被动(Passive)模式,支持二进制(Binary)传输和ASCII传输  3)支持中断后恢复传输  4)支持以FTP流的方式灵活地从FTP服务器读取和写入

    BlackMoon FTP Server v3.1.8.1737.rar

    BlackMoon FTP Server是专为Win2000设计的FTP服务器软件。提供了虚拟目录、大量重覆登录自动踢除、个人/群组帐号、续传、passive传输模式、多重目录以及多重连接端口,占用内存及CPU使用率都很低。

    vsftp这主被动模式的搭建文档

    FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别。 先假设客户端为C,服务端为S. Port模式: 当客户端C向服务端S连接后,使用的是Port...

    ftpclient:PHP Ftp客户端类

    使用被动模式:### // This uses passive mode$ ftp -> passive ();// If you want to disable using passive mode then$ ftp -> passive ( false );使用二进制模式:### // This uses binary mode, required for ...

    深入PHP FTP类的详解

    Passive模式FTP的客户端发送 PASV命令到 FTP Server。下面介绍一个这两种方式的工作原理: Standard模式FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道 发送命令,客户端需要接收数据的时候在这个...

    IIS FTP PASV模式下更改端口范围的方法

    如果指定了该属性,则 FTP 将验证的有效范围从 5001 到 65535。 要限制这片超大端口的范围,可以用IIS管理实用程序Adsutil.vbs. cd c:\Inetpub\AdminScripts adsutil.vbs set /MSFTPSVC/PassivePortRange “8900-8909...

    FTP服务器 C#

    用VS编写的FTP服务器软件,C#网络程序编程学习用。 代码: using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Net; using System.Net.Sockets; using ...

    RHE5服务器管理之搭建FTP服务器步骤分享[图]

    FTP数据连接即FTP传输数据的过程,它有3种传输模式,即主动传输模式(PORT)、被动传输模式(PASSIVE,简称PASV)、单端口模式。  主动传输模式:当FTP控制连接建立,客户端提出目录列表及传输文件时,客户端发出...

    BlackMoon FTP Server v3.1.1.1731

    提供了虚拟目录、大量重覆登录自动踢除、个人/群组帐号、续传、passive传输模式、多重目录以及多重连接端口,占用内存及CPU使用率都很低。

    FTP-Class:采用PHP开发的可以支持FTP与FTPS类,简单易用,可以实现上传,下载,建立目录,获取目录,删除及改名等

    //示例:$ set= array ('host'=> '127.0.0.1' ,//服务器'port'=> '21' ,//端口'ssh'=> 1 ,//ssh 1启动,0关闭'username'=> 'test' ,//帐号'password'=> '123123' ,//密码'passive'=> 1 ,//被动模式:1启动,0关闭'...

    Backup4all(数据备份软件) v8.1.195.0.zip

    Backup4all是一款专业好用的Windows 资料备份软件。...5、FTP 备份软件:你可以透过FTP连线将文件备份到远端的电脑上(支持 SSL, active/passive transfer modes, firewall support)。 Backup4all截图

Global site tag (gtag.js) - Google Analytics