目录
协议背景
为了提高文件的共享性,在本地主机和远程主机之间高效传送数据。FTP协议被广泛使用在互联网上的文件传输。使用客户端/服务器模式,基于TCP传输;工作在OSI七层模型的应用层。
协议概述
FTP采用双TCP连接方式
控制连接使用TCP端口号21
用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息。控制连接在整个FTP会话期间一直保持打开
数据连接使用TCP端口号20
用于传输数据,包括数据上传、下载、文件列表发送等。数据传输结束后数据连接将终止。
FTP有两种文件传输模式
ASCII模式是默认的文件传输模式,主要特点是:
本地文件转换成标准的ASCII码再传输
适用于传输文本文件
二进制流模式也称为图像文件传输模式,主要特点是:
文件按照比特流的方式进行传输
适用于传送程序文件
FTP采用两种数据传输方式
主动方式
被动方式
工作过程
主动模式
在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:
- FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
- 当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输。
被动模式
在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。被动方式也称为PASV方式,被动方式的主要特点是:
- FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
- 当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输。
抓包分析
主动模式
被动模式
关于FTP的几个问题
1、从哪个角度来看待主动和被动
本质上看,这个主动被动是站在服务端的角度来定义的。是指的谁来发起数据通道的建立,如果是服务端,就是主动模式(我是服务端,我主动来与客户端发起数据通道的建立);如果是客户端来发起数据通道建立,就是被动模式(服务端被动等待客户端来发起数据通道的建立)。
2、选择模式是服务器还是客户端
一般FTP服务器都会设置两者模式都支持的。FTP在建立过程中,在命令通道建立完后,由客户端决定采用主动还是被动模式,客户端会通过发送PASS(主动)还是PORT(被动)来告知服务器。
3、主动、被动模式在边界设备做NAT连接跟踪、防火墙端口/连接控制等网络中可能会遇到不能通过的问题
采用哪种模式来解决这个问题,通常是FTP服务端来想办法,因为客户端网络边界千差万别不好控制(很难做到让服务器能主动连接客户端数据通道端口),所以服务端要解决让客户端来连接自己数据通道(被动模式),服务端边界设备要支持FTP协议ALG(应用级网关)来支持数据通道的端口识别和控制。
4、为什么会有主动模式和被动模式
主动模式对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动模式对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
5、主动被动模式会有哪些网络要求
主动模式是由服务器向客户端发起连接请求,客户端需要放开这个高位端口;被动模式中客户端要连接到服务器的一个随机高位端口,就需要服务端的防火墙放开这个FTP的高位端口。