FTP协议(File Transfer Protocol,文件传输协议)是一个用于在计算机网络上客户端和服务器之间进行文件传输的应用层协议,包括FTP服务器和FTP客户端两个组成部分。FTP能操作任何类型的文件而不需要进—步处理,但有着极高的延时,从开始请求到第一次接收需求数据之间的时间较长,并不时地执行一些冗长的登录进程。
一、FTP简介
1.基本定义及工作原理
FTP工作在OSI模型的第七层,TCP模型的第四层,即应用层,使用TCP传输而不是UDP。
在建立连接前,客户与服务器之间会经过一个“三次握手”的过程,确保连接的可靠性和面向连接的数据传输。
FTP采用客户-服务器(C/S)模型设计,客户与服务器之间建立两个连接:一个控制连接用于传输控制信息(命令和响应),一个数据连接用于实际的数据传输。
2.FTP的主要功能和作用
文件上传和下载:FTP允许用户通过网络将文件上传或下载到指定的服务器和客户端中。
管理文件和目录:FTP可以创建、删除、重命名、移动文件和目录。
断点续传:支持在文件传输过程中断点续传,避免重新开始。
支持多线程:提高文件传输效率。
安全传输:支持SSL/TLS加密传输,保证数据安全。
3.端口使用
FTP默认使用TCP端口中的20和21。其中,21用于传输控制信息,而20用于数据传输(在主动模式下)。被动模式下,具体使用的数据端口需要由服务器和客户端协商决定。
【考点】默认端口和基于TCP要记住。
二、FTP工作模式
FTP工作模式分为主动模式(也叫Standard模式;PORT模式)和被动模式(也叫Passive模式;PASV模式)。
首先说明不管主动模式和被动模式,FTP控制连接都是客户端主动发起。
主动模式:
FTP服务器端口:控制端口21,数据端口20
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。
-
主动模式(PORT):客户端连FTP的默认21端口,先验证用户名密码,然后服务器会开放20端口,再去主动连客户端,连上后进行数据传输。
-
被动模式(PASV):客户端连FTP的默认21端口,先验证用户名密码,然后服务器会开放一个随机端口(大于1024)告诉客户端,等着客户端来连自己,连上后进行数据传输。
FTP客户端使用随机端口N(大于1024)连接FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地开放一个端口(大于1024),然后把开放的端口告诉客户端, 客户端再通过N+1端口连接到服务器开放的端口进行数据传输。
三、FTP命令
get:下载文件,文件名不可以自动补全
mget:下载多个文件
put:上传文件,文件名可以补全,因为文件在本地
send :上传文件,send上传速度比put快
type:查看当前的传输方式(bin或者asc)
binary:以二进制方式传送文件
ascii:使用ASCII方式传送文件(默认方式)
ls :查看目录下的文件
cdup:返回上一级目录
lcd:改变当前本地主机的工作目录
dir:显示服务器目录和文件列表
bye或exit:退出ftp
四、FTP状态码
230 - 登录成功
200 - 命令执行成功
150 - 文件状态正常,开启数据连接端口
250 - 目录切换操作完成
226 - 关闭数据连接端口,请求的文件操作成功
530 Login incorrect.:可能是因为用户被加入黑名单
550 Failed to open file.:chmod给文件赋权就可以下载
五、软考真题
2023年5月网络工程师
FTP服务可以开启匿名登录功能,其用户名是(1),若要上传文件,应使用()命令。
第一问选择:
A.root
B.user
C.guest
D.anonymous
第二问选择:
A.copy
B.paste
C.put
D.get
【解析】答案是D、C。第一问匿名登录用户记忆即可,第二问基础上传命令。
2021年11月网络工程师
用户使用ftp://zza.com访问某文件服务,默认通过目标端口为(1)的请求建立(2)连接。
第一问选择:
A.20
B.21
C.22
D.23
第二问选择:
A.TCP
B.UDP
C.HTTP
D.FTP
【解析】答案是B、A。FTP首先建立的是控制连接,默认端口是21,FTP建立连接时首先建立TCP连接,所以第二问选择TCP。