FTP原理及部署

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
简介: FTP原理及部署

FTP原理简介

FTP有两种模式,即主动模式(Active Mode)被动模式(Passive Mode)主要区别在谁在监听数据端口

具体见RFC959

 

-------------
                                            |/---------\|
                                            ||   User  ||    --------
                                            ||Interface|<--->| User |
                                            |\----^----/|    --------
                  ----------                |     |     |
                  |/------\|  FTP Commands  |/----V----\|
                  ||Server|<---------------->|   User  ||
                  ||  PI  ||   FTP Replies  ||    PI   ||
                  |\--^---/|                |\----^----/|
                  |   |    |                |     |     |
      --------    |/--V---\|      Data      |/----V----\|    --------
      | File |<--->|Server|<---------------->|  User   |<--->| File |
      |System|    || DTP  ||   Connection   ||   DTP   ||    |System|
      --------    |\------/|                |\---------/|    --------
                  ----------                -------------
                  Server-FTP                   USER-FTP


User PI(user-protocol interpreter):用户协议解释器

Server PI(server-protocol interpreter):服务协议解释器

DTP(data transfer process):数据传输过程,建立和管理数据连接。 DTP 可以是被动的或主动的。


1.主动模式

1.1 主动模式的过程

FTP服务器在开启后一直在监听21号端口等待客户端通过任意端口进行连接,客户端通过任意端口port1连接服务器21号端口成功后,服务器通过该命令套接字发送各种FTP命令(CD、DIR、QUIT...)。当要发送的命令涉及到数据传输的时候,服务器和客户端间就要开启数据通道,如果此时客户端处于主动模式时,客户端开启并监听一个大于1024的随机端口port2,并通过命令套接字向服务器发送PORT命令通告客户端处于主动模式且正在监听port2。服务器在收到客户端的PORT命令后,使用端口20连接客户端port2(数据端口使用20只是个惯例,其实不适用影响不大),并完成数据传输。

1.2 报文交互

PORT命令说明:(通常格式为【PORT A1,A2,A3,A4,P1,P2】,其中A1,A2,A3,A4为客户端IP地址,P1,P2为随机的一个数据连接端口号,端口号等于P1*256+P2)

比如” PORT 223,3,123,41,99,165 “,指示客户端ip为223.3.123.41,客户端开启的随机端口port2 = 99 * 265 + 165 = 26400,在服务器返回200 PORT command successful之后,客户端才发送获取文件命令RETR。

1.3 注意事项

主动模式需要在客户端开放数据通道端口,建立数据通道依赖与客户端本地网络,如果本地网络没有放行端口或者有防火墙会导致连接无法建立。


2.被动模式

2.1 被动模式的过程

为了给客户端带来方便,FTP被动模式下,客户端发送Request: Pasv命令,服务器在接收到命令后,主动开启一个大于1024的端口port并发送响应Response: 227 Entering Passive Mode(...),客户端主动发起连接到服务器的port,并完成数据传输。在被动模式下客户端不需要监听任何端口,因此在客户端存在某些防火墙规则的情况下会更加适合。

2.2 报文交互

PASV命令说明:(通常格式为【PASV A1,A2,A3,A4,P1,P2】,其中A1,A2,A3,A4为服务端IP地址,P1,P2为随机的一个数据连接端口号,端口号等于P1*256+P2)

比如” PASV 104,255,221,41,113,102 “,指示客户端ip为104.255.221.41,服务端开启的随机端口random port = 113 * 265 + 102 = 30047

2.3 注意事项

被动模式下,服务端的被动端口通常由被动端口范围参数指定,服务端的被动端口范围的端口,需要在防火墙中放行。

:VPC网络环境下,服务端IP地址返回的是私网网卡的私网IP地址,通常需要在FTP软件中指定pasv ip为服务器的公网IP地址,否则可能会导致客户端去连接一个私网地址,无法连接上。


以下均以安装被动模式FTP为例

【windows】

1.通过IIS部署FTP

具体部署过程见:https://help.aliyun.com/document_detail/92046.html

2.通过filezilla server部署FTP(第三方软件)

环境:Windows Server 2016 数据中心版 64位中文版

2.1安装filezilla server
  1. 在实例内部访问如下FileZilla官网,下载FileZilla Server软件,然后安装并运行FileZilla Server。

2.2配置filezilla server
  1. 选择configure进行配置

  1. 设备被动端口范围和被动IP

  1. 设备FTP用户,密码及FTP路径,并保存

  1. 测试FTP连接

【linux】

通过vsftp搭建FTP

官网文档:https://help.aliyun.com/document_detail/142212.html




相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
6月前
|
安全 数据安全/隐私保护
直播系统源码部署,高效文件管理与传输的FTP协议
在直播系统源码部署后的每天要处理大量媒体文件的情况下,FTP协议可以依靠自身的强大文件传输管理机制、备份与恢复与自动化任务来帮助平台用户更好的操作体验,通过FTP协议,也确保直播系统源码媒体文件传输的可靠性与安全性,让直播系统源码成为了更优质的平台。
直播系统源码部署,高效文件管理与传输的FTP协议
|
4月前
|
网络协议 安全 网络安全
windows搭建ftp及原理(小白向)
windows搭建ftp及原理(小白向)
61 0
|
6月前
|
网络协议 安全 网络安全
FTP服务器原理及FTP服务器搭建
FTP服务器原理及FTP服务器搭建
129 0
|
7月前
|
网络安全 数据安全/隐私保护 Windows
部署FTP服务-2
使用浏览器访问FTP服务,其基本的URL格式如下: ftp://FTP服务器IP地址或域名(如ftp://1000170),如图7.32所示。
49 0
|
7月前
|
存储 安全 网络安全
部署FTP服务-1
FTP (File Transfer Protocol文件传输协议)是一种应用层协议采用“C/S”结构设计 在其 结构的中心有一台FTP服务器,如图71所示,为用户提供上传和下载文件的服务。很多企业,大 学及其他组织都建有自己的FTP服务器,有的还会对外开放,提供丰富的教学,娱乐资源。
117 0
部署FTP服务-1
|
7月前
|
存储 安全 测试技术
部署FTP服务(一)
部署FTP服务(一)
116 0
|
8月前
|
网络协议 Linux 网络安全
Linux系统之部署FTP服务器
Linux系统之部署FTP服务器
171 0
|
10月前
|
弹性计算 安全 网络协议
阿里云服务器部署FTP站点和Web环境教程
对于建站用户来说,在购买阿里云服务器之后,下面要做的就是部署FTP站点和Web环境教程,然后上传并运行我们的网站,这篇文章详细介绍了部署阿里云服务器全过程,对大家的学习或者工作具有一定的参考学习价值,不懂如何在阿里云服务器上部署网站运行环境的用户不妨随着小编来一起学习学习吧。
409 0
阿里云服务器部署FTP站点和Web环境教程
|
Cloud Native Linux Docker
云原生之使用Docker部署ftp服务器
云原生之使用Docker部署ftp服务器
535 0