FTP协议连接模式详解

简介: FTP分主动模式(Port)和被动模式(Passive)

FTP(File Transfer Protocol)是文件传输协议的简称。正如其名所示:FTP的主要作用,就是让一个用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP支持两种方式的传输:文本(ASCII)方式和二进制(Binary)方式。通常文本文件的传输采用ASCII方式,而图像、声音文件、加密和压缩文件等非文本文件采用二进制方式传输,如果为了从一个系统上传输文件而使用了与本地系统不同的计算机字节位数,那么就必须使用Tenex模式。FTP以ASCII方式作为缺省的文件传输方式。

二、ftp的两种传输模式:

主动(FTP Port)模式和被动(FTP Passive)模式。
当我们对FTP协议进行学习的时候,你首先要考虑到一个问题是使用的是port模式(主动)的还是passive模式(被动)。在过去,客户端缺省为主动模式,进来,由于Port模式的存在安全问题,许多客户端的FTP应用缺省变为了被动模式。FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用两个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口时21-命令端口,20-数据端口。

详细分解一:FTP Port(主动)模式

客户端从一个任意的大于1023(N)的端口连接到FTP服务器的命令端口(21)。然后客户端开始监听端口N+1,并发送FTP命令"Port
 N+1"到 FTP 服务器。接着针对FTP服务器前面的防火墙来说,必须允许一下通讯才能支持主动方式FTP:任何端口到FTP服务器的21端口(客户端初始化的连接到FTP的服务器);FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口);FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口);大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

Port模式的FTP详细步骤如下:
1、客户端发送一个 TCP SYN (TCP同步)包给服务器端众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;
2、服务器端发送 SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;
3、客户端发送一个ACK(确认)包;客户端使用这个链接来发送FTP命令,服务器端使用这个连接来发送FTP应答;
4、当用户请求一个列表(List)请求或者发起一个要求或者接受文件的请求,客户端软件使用PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器再打开一个数据连接时候使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户端自己的IP地址,而且FTP也支持第三方(thirdparty)模式,第三方模式时客户端告诉服务器端打开与另一台主机的连接;
5、服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中发送给服务器端的暂时端口;

6、客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包;
7、服务器发送一个ACK包;

8、 发送数据的主机以这个链接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端发送数据,RETR表示服务器端发送数据),这些TCP段都需要对方进行ACK确认(注:因为TCP协议是一个面向连接的协议)

9、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认。

10、客户端能在控制连接上发送更多的命令。这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN。客户端用ACK来确认。

详细分解二: FTP PASV(被动)模式

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都有客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP链接时,客户端打开两个任意的本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连他的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(端口号大于1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP。从任何端口到服务器的21端口(客户端初始化的连接);服务器端的21端口到任何大于1023的端口(服务器响应到客户单的控制端口的连接);从任何端口到服务器的大于1023端口(客户端初始化数据连接到服务器指定的任意端口);服务器的大于1023端口到远程的大于1023的端口(出,服务器发送ACK响应和数据到客户端的数据端口)。

对比主动模式,被动模式在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令"PASV" 。然后在第二步中,服务器返回命令"PORT N(N为端口号)",告诉客户端(服务器)用哪个端口侦听数据连接。在第三步中,客户端树池化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器再第四步中给客户端的数据端口返回一个"ACK"响应。

被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP程序允许管理员指定FTP服务器使用的端口范围。

另外客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如:Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。

FTP报文段里显示了被动模式(Passive Mode)以及发送客户端自己的IP地址和提供给对方的一个随机端口号。并打开由计算得出的随机端口号,使其处于监听状态。等待客户端发起数据连接请求。

FTP报文段显示的是FTP Data,说明传输的是数据。当某几段数据传输完成之后,客户端或服务器会向对方发送一个FIN来关闭这条链路。image.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
安全 数据安全/隐私保护
直播系统源码部署,高效文件管理与传输的FTP协议
在直播系统源码部署后的每天要处理大量媒体文件的情况下,FTP协议可以依靠自身的强大文件传输管理机制、备份与恢复与自动化任务来帮助平台用户更好的操作体验,通过FTP协议,也确保直播系统源码媒体文件传输的可靠性与安全性,让直播系统源码成为了更优质的平台。
直播系统源码部署,高效文件管理与传输的FTP协议
|
2月前
|
Linux 网络安全
FTP被动模式配置
FTP被动模式配置
131 1
|
2月前
|
网络安全 Windows
Jetson 学习笔记(十五):FTP协议传输文件
本文介绍了如何使用WinSCP软件通过FTP协议在Windows和Jetson设备之间传输文件,并分享了一些操作经验和技巧。
38 0
Jetson 学习笔记(十五):FTP协议传输文件
|
5月前
|
存储 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传
基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传
|
4月前
|
网络安全 C#
FTP 被动模式配置
FTP 被动模式配置
78 0
FTP 被动模式配置
|
4月前
|
网络协议 Linux 网络安全
在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?
在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?
|
4月前
|
Linux 网络安全 数据安全/隐私保护
在Linux中,FTP 的主动模式和被动模式是什么?有何区别?
在Linux中,FTP 的主动模式和被动模式是什么?有何区别?
|
7月前
|
网络协议
FTP(文件传送协议)和TELNET(远程终端协议)
FTP(文件传送协议)和TELNET(远程终端协议)
194 1
|
JavaScript 网络安全
js ftp连接
js ftp连接