综合百科

FTP传输数据用的是TCP协议而不是UDP

文件传输协议(FTP)是一种在两个网络设备之间交换数据的常用技术,它在全球互联网服务中扮演着关键角色。FTP,即文件传输协议,是一种基于传输控制协议(TCP)的网络通信标准,其工作模式遵循客户机与服务器架构,并且不兼容用户数据报协议(UDP)。在FTP的通信过程中,存在两种主要的工作方式:PORT模式和PASV模式,它们分别对应主动模式和被动模式。与许多其他协议不同,FTP在数据传输时使用两个独立的端口号,即一个用于控制指令的端口和一个用于数据交换的端口,这两个端口通常被指定为21(控制端口)和20(数据端口),但实际使用中数据端口号可能会根据FTP的工作模式发生变化。

FTP支持两种不同的数据传输格式:文本(ASCII)格式和二进制(Binary)格式。一般来说,文本文件如程序代码或简单的文档会采用ASCII格式传输,而非文本文件如图片、音频、视频或经过加密和压缩的文件则通常使用二进制格式。当源计算机和目标计算机在处理文件时使用不同的字节序时,就需要采用特殊的传输模式,例如Tenex模式。值得注意的是,FTP默认的传输方式是ASCII格式。

在研究FTP协议时,一个重要的考虑因素是确定使用主动模式还是被动模式。在过去,FTP客户端通常默认设置为主动模式;然而,由于主动模式可能带来的安全风险,现代FTP客户端现在通常默认采用被动模式。

主动模式的工作流程如下:FTP客户端首先连接到FTP服务器的21端口,并发送认证信息(用户名和密码)进行登录。一旦登录成功,如果客户端需要获取文件列表或读取数据,它会随机选择一个高于1024的端口,并通过发送PORT命令通知FTP服务器,表明它将采用主动模式并使用该端口进行数据传输。FTP服务器接收到PORT命令和端口号后,会通过其20端口与客户端选定的端口建立连接,以传输数据。

被动模式的工作流程则有所不同:FTP客户端同样连接到FTP服务器的21端口,完成登录后,如果需要获取文件列表或读取数据,它会发送PASV命令给FTP服务器。服务器随后会在本地随机选择一个高于1024的端口,并将该端口号告知客户端。客户端接收到端口号后,会连接到服务器提供的端口以进行数据传输。

在当前的互联网工作环境中,如果必须使用FTP服务器,推荐使用被动模式进行连接和传输。对于只想了解基本信息的读者,到这里就可以停止阅读了。而对于对技术和原理有更深入兴趣的读者,请继续阅读。

从上述工作原理可以看出,主动模式和被动模式的主要区别可以总结为以下几点:

a. 在主动模式下,数据传输是由服务器端连接到客户端的端口;而在被动模式下,数据传输是由客户端连接到服务器的端口。

b. 主动模式要求客户端必须向服务器开放端口,这在客户端位于防火墙内部时可能难以实现;而被动模式只需要服务器端开放端口供客户端连接。

需要注意的是,无论是主动模式还是被动模式,登录过程都是由FTP客户端发起,连接到FTP服务器的。

为什么大多数互联网应用都采用被动模式?

这是因为大多数客户端都位于路由器后面,没有独立的公网IP地址。在这种情况下,服务器要主动连接到客户端非常困难,在当前的互联网环境中几乎是不可能完成的任务。

在部署FTP服务器时,默认情况下通常会采用主动模式。如果FTP服务器的用户都在内部网络中,即不需要为外部用户提供FTP连接服务,那么可以采用这种默认模式。但是,如果员工需要在出差或家庭办公时访问企业内部的FTP服务器,出于安全考虑或公网IP地址的限制,企业可能会将FTP服务器部署在防火墙或NAT服务器之后,这时主动模式可能就不适用了。

总之,在部署FTP服务器时,选择主动模式还是被动模式,应遵循以下原则:如果FTP服务器部署在防火墙或NAT服务器之后,那么采用主动模式的客户端将只能建立命令连接而无法进行文件传输。如果部署完成后,系统管理员发现用户可以连接到FTP服务器并查看文件目录,但却无法下载或上传文件,在排除了权限限制的可能性后,很可能就是操作模式选择不当。系统管理员指导用户选择合适的操作模式,通常可以解决文件传输问题。