FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。
(一)主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
(二)被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)
3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)
4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
(三) 主动与被动FTP优缺点:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有 限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危 险。
简而言之:
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机
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的高端端口
--------------------------------------------------------------------------------
要用主动模式来下载,请您把下载工具的被动模式(PASV)都不要打勾,用主动模式来下载就OK了,如果在出错,那就被动主动相互转换一下
常见的FTP客户端软件的PASV方式的关闭方法
大部分FTP客户端默认使用PASV方式,PASV模式的意式是被动模式。 在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”。
IE: 工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。
CuteFTP: Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
或 File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode”
FlashGet: 工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”
FlashFXP: 选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式”
或 站点管理 -> 对应站点 -> 选项 -> “使用被动模式”
或 快速连接 -> 切换 -> “使用被动模式”
LeapFTP: Option ->Preferences -> General->Proxy->Use Pasv Mode
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
分享到:
相关推荐
在FTP通信过程中,有两种主要的数据传输方式:主动模式(PORT)和被动模式(PASV)。被动模式下,客户端向服务器发起请求时,服务器会从指定的端口范围内选择一个未使用的端口与客户端建立连接。如果这个端口范围过大,...
FTPGET功能允许用户从FTP服务器上下载所需的文件。其工作流程大致如下: 1. 建立连接:客户端通过TCP连接到FTP服务器的21号端口,完成控制通道的建立。 2. 用户认证:客户端发送用户名和密码给服务器,完成身份验证...
【FTP服务介绍】 FTP(File Transfer Protocol)是互联网上一种用于...这些FTP服务器的资源更新频繁,用户需及时获取并下载所需内容。对于软件下载,特别是Adobe系列,用户可找到正式版和插件丰富的版本进行安装使用。
4. **被动模式与主动模式**: FTP有两种工作模式,主动模式和被动模式。主动模式中,服务器主动向客户端发起数据连接;被动模式下,客户端建立数据连接。根据网络环境,可能需要调整FTP服务器的工作模式。 **FTP...
主动模式中,客户端打开一个数据连接端口并向服务器发送,而被动模式则由服务器打开一个端口等待客户端连接,以解决NAT和防火墙导致的问题。 3. **数据传输**:FTP使用两个连接——控制连接和数据连接。控制连接...
6. **防火墙配置**:确保服务器的防火墙规则允许FTP服务所需的端口通信。在Linux上,可以使用`iptables`命令,而在Windows中,可以在“Windows Defender防火墙”中设置规则。 7. **测试FTP服务**:配置完成后,使用...
6. **被动模式与主动模式**:FTP有两种工作模式,主动模式和被动模式。主动模式中,服务器发起数据连接,而被动模式下,客户端开启一个随机端口等待服务器连接。被动模式常用于处理防火墙和NAT设备的问题。 7. **...
4. **被动模式(Passive Mode)**:由于防火墙和NAT设备的存在,FTP的主动模式可能无法正常工作。因此,大多数FTP服务器都支持被动模式,以绕过这些网络障碍。在被动模式下,客户端会打开一个随机端口来接收数据,而...
1. **检查FTP服务器设置**:确保服务器支持所需的FTP模式(主动或被动),并且没有防火墙或安全策略阻止连接。 2. **更新或配置IE设置**:根据需要启用或禁用“Use PASV”和“Use Web Based FTP”选项,以优化FTP...
在Visual C++中,我们可以利用Winsock库来实现FTP客户端的功能,这个库提供了与网络通信所需的所有底层接口。 首先,我们需要包含必要的头文件并初始化Winsock。这通常通过调用`WSAStartup`函数来完成,该函数会...
5. **防火墙配置**:为了确保FTP服务对外可用,可能需要在Linux防火墙(如iptables或firewalld)中打开FTP所需的端口(默认为20和21)。 6. **SSL/TLS加密**:为了增强FTP服务的安全性,可以启用FTPS(FTP over TLS...
7. `PORT`:设置数据连接端口,用于主动模式的文件传输。 8. `RETR`:下载文件,从服务器到客户端。 9. `STOR`:上传文件,从客户端到服务器。 10. `DELE`:删除文件。 11. `RMD`/`RMDIR`:删除目录。 12. `QUIT`:...
默认情况下,FTP服务使用以下端口:21端口用于监听命令请求,20端口用于数据发送(仅限于主动模式),22端口是SSL加密的FTP服务端口(FTPs)。数据传输端口范围通常设定为1024-65535,但出于安全考虑,实际使用时...
FTP采用的是主动模式和被动模式两种传输方式。在主动模式下,客户端会监听一个随机端口,并告诉服务器自己的这个端口号,服务器将通过该端口向客户端发送数据。而在被动模式下,则是由客户端主动请求服务器打开某个...
综上所述,VB提供了构建FTP客户端所需的所有工具。通过熟练掌握FtpWebRequest类及其相关方法,开发者可以创建功能完善的FTP客户端程序,实现文件的上传、下载、删除等各种操作,满足不同场景的需求。
- 发送FTP命令来执行所需的文件操作,如列出目录、下载或上传文件等。 - 根据服务器的响应,决定是否需要建立和管理数据连接。 - 关闭连接,结束会话。 4. C语言编程: 使用C语言编写FTP服务器和客户端,需要对...
在Visual C++ 6.0中,我们可以使用Winsock API来实现FTP客户端,这个API提供了TCP/IP通信所需的基本功能。 以下是实现FTP客户端的关键步骤: 1. **初始化Winsock**:调用`WSAStartup`函数启动Winsock库,并设置...
如果使用防火墙,需要打开FTP所需的端口。例如,使用firewalld: ``` sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload ``` 5. 测试FTP服务器: 可以使用FTP命令行客户端或者...
1. **主动模式(PORT)**:客户端指定一个端口供服务器使用,服务器主动连接该端口进行数据传输。 2. **被动模式(PASV)**:服务器开启一个随机端口,客户端连接到这个端口进行数据传输,解决防火墙和NAT设备的问题...
FTP支持两种连接方式:主动模式和被动模式。 - **主动模式**:在这种模式下,客户端向服务器发送PORT命令,告诉服务器自己的IP地址和端口号,然后服务器会从20号端口向客户端发起连接请求。 - **被动模式**:服务器...