邓毓
作者邓毓2020-04-08 10:38
系统工程师, 江西农信

技术技巧---FTP工作原理介绍

字数 1143阅读 646评论 2赞 4

摘要

本文主要介绍FTP的工作原理,FTP主动与被动两种工作模式。

FTP 简介

FTP协议就是文件传输控制协议。它可以使文件通过网络从一台主机传送到同一网络的另一台主机上,而不受计算机类型和操作系统类型的限制。服务器、大型机,还是DOS操作系统、Windows操作系统、Linux操作系统,只要双方都支持FTP协议,就可以方便地传送文件。

FTP 的两种模式

FTP分为两种工作模式:主动模式(Active)与被动模式(Passive)

FTP 主动工作模式(PORT)原理

FTP客户端首先会随机开启一个大于1024的端口N(1032),并连接服务端的21号端口,然后开放M端口(与端口N没直接联系)进行监听, 同时向服务器发出PORT 1033命令通知服务器自己的在接收数据时所使用的端口号。服务器在传输数据的时候,服务端通过自己的20端口去连接客户端的端口M。当不需要传输时,此连接会自动断开。如下图(图中端口号仅为示例):

FTP 被动模式(PASV)原理

FTP客户端随机开启一个大于1024的端口X向服务器的21端口发起连接,同时会开启X+1端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口Y进行监听,然后在ACK回复中通知客户端,自己的数据端口是Y。客户端收到命令后,会通过X+1号端口连接服务器的端口Y,然后在两个端口之间进行数据传输。这样就能使防火墙知道用于数据连接的端口号,而使数据连接得以建立 。如下图:

主动模式与被动模式区别

在主动模式中,传输数据时,服务器是主动连接客户端的数据端口。但如果客户端存在防火墙,那么当服务端在连接客户端数据端口的时,就有可能被防火墙阻挡。所以FTP主动模式在许多时候用于没有防火墙隔离的内部网络机器。一但有防火墙的存在,那么一般就不会在使用主动模式,而是被动模式。因为在被模式中,命令连接与数据连接,都是由客户端发起的,而防火墙一般不会对出去的数据包进行阻挡。

同时,FTP的主动模式(PORT)和被动模式(PASV)都只ipv4,在针对IPV6扩展后就出现EPRT、EPSV相对应。

简而言之,客户端被防火墙保护时,尽量使用被动模式;服务端被保护时,尽量使用主动模式。但不管使用哪种模式,数据连接的目标端口都不固定,无法简单配置基于端口的策略,当前防火墙一般通过解析FTP控制连接数据,临时开启数据连接访问权限的方式实现(经测试确认H3C防火墙确实采用此方式支持FTP协议,且V5版本不支持EPSV、EPRT)。

常见FTP客户端支持的连接方式:

PORT:主动模式

EPRT:增强主动模式

PASV:被动模式

EPSV:增强被动模式

FTP与其他文件传输类型对比

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论2 条评论

匿名用户
2021-04-02 14:59
很实用的
#王大锤网络工程师, 杭州
2021-03-30 18:15
主动模式还是被动模式都是对于服务器端而言。被动模式服务器端口也可以设置到某一个区间。
Ctrl+Enter 发表