FTP简介
-
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层,TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
-
FTP也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。可以使用FTP进行下载和上传。
-
文件传送协议FTP(File Transfer Protocol)是Internet上使用比较广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP屏蔽了各种计算机系统的细节,因此适用于在异构网络中任意计算机之间传送文件。它的基本应用就是将文件从一台计算机复制到另一台计算机中。它要存取一个文件,就必须先获得一个本地文件的副本,如果修改文件,也只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。
您只要记住几个关键词:交互式、存取权限和副本。 -
简单文件传送协议TFTP(Trivial File Transfer Protocol)是一个小而易于实现的文件传送协议。TFTP是基于UDP数据报,需要有自己的差错改正措施。TFTP只支持文件传输,不支持交互,没有庞大的命令集。也没有目录列表功能,以及不能对用户进行身份鉴别。但它的代码所占内存较小,不需要硬盘就可以固化TFTP代码,很适合较小的计算机和特殊用途的设备。
-
您会发现TFTP和FTP一个主要的区别就是它没有交互式,且不进行身份验证。
-
FTP的客户可以是任意平台
-
FTP标准端口:
20 数据接口
21 指令接口
FTP架构
- FTP监听于TCP的21号端口,是一种C/S架构的应用程序。在Linux中常用的服务端软件和客户端软件一般如下表所示:
FTP数据连接模式
-
FTP有2种数据连接模式:命令连接和数据连接
- 命令连接:是指文件管理类命令,始终在线的持久性连接,直到用户退出登录为止(可以简单的理解为建立连接)
- 数据连接:是指数据传输,按需创建及关闭的连接(可以简单的理解为传输数据)
-
数据连接需要关注的点有:
- 数据传输格式
文件传输
二进制传输 - 数据传输模式
主动模式:由服务器端创建数据连接
被动模式:由客户端创建数据连接
- 数据传输格式
-
两种数据传输模式的建立过程:
-
主动模式
- 命令连接(建立连接通道)
Client端以一个1024以上的随机端口(端口号大于1023小于65535)来连接Server端的21号端口 - 数据连接(传输数据)
Server端以20号端口去连接Client创建命令连接时使用的随机端口+1的端口 - 示例:
命令连接:Client(9527)–> Server(21),数据连接:Server(20/tcp) --> Client(9527+1)
- 命令连接(建立连接通道)
-
被动模式
- 命令连接
Client以一个1024以上的随机端口号(端口号大于1023小于65535)来连接Server端的21号端口,命令连接建立完毕后,Server端会告知Client端用于创建数据连接的随机端口号(端口号大于1023小于65535) - 数据连接
Client以创建命令连接时使用的随机端口号+1去连服务器端通过命令连接告知自己的一个随机端口号来创建数据连接 - 示例:
命令连接:Client(9527) --> Server(21),数据连接:Client(9527+1) --> Server(随机端口)
- 命令连接
-
-
注意:
主动模式存在弊端,因为客户端的端口是随机的,客户端如果开了防火墙,则服务器端去连客户端创建数据连接时可能会被拒绝
用户认证
- Ftp的用户认证主要有三种:
- 虚拟用户:仅用于访问某特定服务中的资源
- 虚拟用户通过ftp访问的资源位置为给虚拟用户指定的映射成为的系统用户的家目录
- 系统用户:可以登录系统的真实用户(出于对安全性的考虑,这种认证很少使用)
- 系统用户通过ftp访问的资源位置为用户的家目录
- 匿名用户
- 匿名用户(映射为ftp用户)的共享资源位置是/var/ftp
- 虚拟用户:仅用于访问某特定服务中的资源
服务端
-
/etc/pam.d/vsftpd #vsftpd用户认证配置文件
-
/etc/vsftpd/ #配置文件目录
-
/etc/vsftpd/vsftpd.conf #主配置文件
-
vsftpd常见的配置参数
客户端
lftp工具 支持指定用户名和密码登录