FTP基础知识详解

本文主要介绍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基础知识详解

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

文章插图
 
【FTP基础知识详解】 
主动模式与被动模式区别
在主动模式中 , 传输数据时 , 服务器是主动连接客户端的数据端口 。但如果客户端存在防火墙 , 那么当服务端在连接客户端数据端口的时 , 就有可能被防火墙阻挡 。所以FTP主动模式在许多时候用于没有防火墙隔离的内部网络机器 。一但有防火墙的存在 , 那么一般就不会在使用主动模式 , 而是被动模式 。因为在被模式中 , 命令连接与数据连接 , 都是由客户端发起的 , 而防火墙一般不会对出去的数据包进行阻挡 。
同时 , FTP的主动模式(PORT)和被动模式(PASV)都只ipv4 , 在针对IPV6扩展后就出现EPRT、EPSV相对应 。
简而言之 , 客户端被防火墙保护时 , 尽量使用被动模式;服务端被保护时 , 尽量使用主动模式 。但不管使用哪种模式 , 数据连接的目标端口都不固定 , 无法简单配置基于端口的策略 , 当前防火墙一般通过解析FTP控制连接数据 , 临时开启数据连接访问权限的方式实现(经测试确认H3C防火墙确实采用此方式支持FTP协议 , 且V5版本不支持EPSV、EPRT) 。
常见FTP客户端支持的连接方式:PORT:主动模式EPRT:增强主动模式PASV:被动模式EPSV:增强被动模式
FTP基础知识详解

文章插图
 
FTP与其他文件传输类型对比
FTP基础知识详解

文章插图
 
 




    推荐阅读