`
mzhj
  • 浏览: 227484 次
  • 性别: 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_Solaris ftp passive mode

    FTP有两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。主动模式下,FTP客户端打开一个随机端口(通常是1024到5000之间的端口)与FTP服务器的21号控制端口通信,并告诉服务器它使用的端口。然后,...

    flashFTP ftp软件 小巧方便

    FTP协议还有其他一些高级特性,如FTP passive模式,这是为了解决防火墙和NAT设备对FTP连接的影响。FlashFTP支持被动模式,可以在网络环境复杂的情况下保持良好的连接性能。此外,FTP还支持文件的重命名和删除,以及...

    主动模式下载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.rar_ftp_ftp.rar_ftp上传_uploader_上传ftp

    此外,FTP还支持 passive模式和active模式,解决防火墙或NAT设备可能导致的连接问题。Passive模式常用于防火墙后的客户端,服务器会主动发起数据连接,而active模式则是客户端向服务器请求数据连接。 FTP上传的步骤...

    ftp服务器FtpServer

    4. **传输模式**:FTP有两种传输模式,主动(Active)和被动(Passive)。主动模式中,客户端打开一个端口向服务器发送数据;被动模式下,服务器打开一个端口等待客户端连接,用于解决防火墙和NAT设备下的连接问题。...

    Ftp-Sever.rar_ftp_ftp sever_ftp 服务器_ftp-sev_ftp-sever

    5. ** passive模式与active模式**:FTP有两种工作模式,Passive(被动)模式和Active(主动)模式。Passive模式适用于防火墙或NAT环境,服务器会打开一个随机端口等待客户端连接,以避免被防火墙阻断。Active模式则...

    FTP客户端工具

    7. **被动模式**:对于防火墙或NAT设备,需设置FTP客户端使用PASV(Passive)模式,服务器会提供一个临时的数据连接端口给客户端连接。 8. **安全考虑**:FTP默认传输数据时不加密,可使用FTPS(FTP over TLS/SSL)...

    vb+ftp服务器管理_vb6FTP服务器_vb6_vb6ftp_

    FTP协议基于TCP/IP,分为两种模式:主动模式和被动模式。在VB6中,需要根据网络环境选择合适的模式。主动模式下,客户端告诉服务器它的数据连接端口,服务器主动建立连接;被动模式下,服务器告诉客户端一个数据连接...

    ftp-svr-clt.rar_OBJ_FTP_SVR_clt 和svr_ftp_windows ftp_简单FTP服务器

    C#中可以通过创建新的Socket或使用Pasv模式(Passive Mode)来建立数据连接。 4. 执行FTP命令:服务器需要解析并响应FTP命令,如LIST(列出目录)、STOR(上传文件)、RETR(下载文件)等。 5. 关闭连接:在完成文件...

    ftp上传demo

    2. **FTP连接模式**:FTP有两种连接模式——主动模式(Port)和被动模式(Passive)。主动模式中,服务器主动向客户端发起数据连接;被动模式下,由于防火墙或NAT设备的影响,服务器会等待客户端建立数据连接。 3. ...

    ftp连接器,经典的ftp操作

    FTP有两种工作模式:主动模式(Port)和被动模式(Passive)。主动模式中,客户端打开一个随机端口(大于1023的端口)作为数据连接,并告诉服务器这个端口号。在被动模式下,服务器会开启一个随机端口并告诉客户端,...

    ftp.rar_ftp_ftp vxworks_ftp 源码_vxworks ftp

    FTP 协议分为两种模式:主动模式(Port模式)和被动模式(Passive模式)。在主动模式中,客户端打开一个随机端口(称为数据连接)并向服务器发送这个端口号,然后服务器通过该端口发送数据。而在被动模式下,服务器...

    Apache FTPServer的配置使用

    被动模式(Passive Mode):客户端打开一个随机端口,连接到服务器的 21 号端口,然后服务器打开一个随机端口,客户端连接到服务器的随机端口,传输文件。 FTP 服务器的种类 FTP 服务器有多种,常见的有: Apache...

    FTPserver绿色工具

    FTP协议有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式下,服务器在连接建立后主动向客户端发起数据传输请求;而在被动模式中,服务器在控制连接建立后,会提供一个新的端口号给客户端,...

    FTP.rar_ vc FTP_FTP协议vc_ftp_ftp client VC_ftp vc

    FTP协议本身包含两个主要的连接模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式中,客户端选择一个随机的端口并告诉服务器,然后服务器会连接到这个端口发送数据。而在被动模式中,由于防火墙或NAT...

    Ftp.rar_ftp

    FTP有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式中,客户端打开一个随机端口(称为数据连接端口)并向服务器发送FTP命令,然后服务器使用FTP控制端口(默认21)响应并连接到客户端的...

    FTP_Server.rar_FTP SERVER_ftp

    在实际应用中,FTP服务器还涉及到许多其他重要概念,如CHMOD(改变文件权限), Passive模式(解决防火墙和NAT设备问题),以及SSL/TLS加密以增强数据传输的安全性。对于企业级FTP服务器,我们还会关注负载均衡、...

    简单实用的FTP服务器(单文件)

    5. ** Passive模式与Active模式**:FTP有两种连接模式,Passive模式用于解决防火墙和NAT设备的问题,Active模式则是服务器主动发起数据连接。"FTPserver.exe"可能默认启用其中一种,或者允许用户根据网络环境选择。 ...

    linux的FTP服务器

    而在Passive模式中,服务器在控制连接上告知客户端一个开放的数据传输端口,客户端主动连接到这个端口进行数据传输,这样解决了NAT和防火墙可能导致的问题。 理解并熟练掌握FTP服务器的配置和使用,对于在Linux环境...

Global site tag (gtag.js) - Google Analytics