首页 > 编程知识 正文

什么是ftp服务,什么是ftp的主动模式和被动模式

时间:2023-05-05 18:47:31 阅读:279948 作者:2029

一、FTP简介

FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一套标准协议,它属于网络传输协议的应用层。它最主要的功能是在服务器与客户端之间进行文件的传输。这个协议使用的是明文传输。

FTP服务器的功能除了单纯的进行文件的传输与管理外,依据服务器软件的配置架构,它还可以提供以下几个主要功能:

1、不同的用户:

FTP服务器在默认的情况下,依据用户登录的情况而分为三种不同的身份,分别是:实体用户,real user;访客,guest;匿名用户,anonymous。

2、命令记录与日志文件记录

FTP可以利用系统的syslogd来进行数据的记录,而记录的数据包括了用户曾经使用过的命令与用户传输数据(传输时间、文件大小等)的记录,所以可以在/var/log/里面找到各项日志信息。

3、限制用户活动的目录(change root,简称chroot)

为了避免用户在你的linux系统中随意切换目录,所以将用户的工作范围局限在用户主目录下面。FTP可以限制用户仅能在自己的用户主目录当中活动。当用户登录FTP后,由于用户无法离开自己的用户主目录,显示的根目录就是自己用户主目录的内容。这种环境称为change root,即chroot,即改变根目录的意思。

二、FTP的工作流程

FTP的传输使用的是TCP数据包协议。FTP服务器使用了两个连接,分别是命令(TCP21)通道与数据(TCP20)流通道。由于是TCP数据包,这两个连接都需要经过三次握手。

1、建立命令通道的过程

客户端会随机获取一个大于1024以上的端口来与FTP服务器端的port 21来实现连接,这个过程需要三次握手。实现连接后客户端便可以通过这个连接来对FTP服务器执行命令,查询文件名、下载、上传等命令都是利用这个通道来执行的。

2、建立数据通道的过程

FTP的连接模式:主动模式(服务端主动与客户端连接)、被动模式(客户端主动与服务端连接),主动和被动是针对服务端来说的。

(1)通知FTP服务器端使用主动连接且告知连接的端口号

FTP服务器的端口21号主要用在命令的执行,但是牵涉到数据流时,就不是使用这个连接了。客户端在需要数据的情况下,会告知服务器端要用什么方式来连接,如果是主动连接,客户端会先随机启用一个端口,且通过命令通道告知FTP服务器这两个信息,并等待FTP服务器的连接。

FTP服务器主动向客户端连接

FTP服务器由命令通道了解客户端的需求后,会主动地由port 20向客户端的数据端口连接,这个连接也会经过三次握手。此时FTP的客户端与服务器端会建立两条连接,分别用在命令的执行与数据的传递。而默认FTP服务器端使用的主动连接端口就是port 20。

数据传输通道是在有数据传输的行为时才会建立的通道,并不是一开始连接到FTP服务器就立刻建立的通道。

注意: 控制/命令链路:21端口,数据链路:20端口

(2)客户端选择被动式连接模式

客户端通过命令通道发出被动式连接要求,并等待服务器的回应。

FTP服务器启动数据端口,并通知客户端连接

如果你所使用的FTP服务器是能够处理被动式连接的,此时FTP服务器会先启动一个监听端口。这个端口号码可以是随机的,也可以自定义某一范围的端口,这要看FTP服务器软件而定。然后FTP服务器会通过命令通道告知客户端这个已经启动的端口port pasv,并等待客户端的连接。

客户端随机取用大于1024的端口进行连接

然后客户端会随机取用一个大于1024的端口号来进行对主机的port pasv连接。如果一切都没有问题的话,那么FTP数据就可以通过客户端的随机端口和服务端的port pasv来传送了。

(3)优缺点:

主动模式对ftp对服务器管理有利,是由FTP服务器主动与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞。而被动模式对客户端管理有效,它是企图与服务端的随机端口建立连接但是这个端口很可能又会被服务端的防火墙所拒绝。

一般做安全措施我们是在被动模式下做,由于主动模式是打开一个端口给客户端传送数据,我们做安全措施都是基于端口来做所以不太好做,一般也不建议去做。但是被动模式也是在不停地放端口。

三、ftp的使用以及软件的安装

为了更安全的使用FTP协议,可以使用vsftpd这个软件。vsftpd(very secure FTP daemon)。vsftpd是一个设计的较为安全的FTP服务器软件,它的特点如下:

1、vsftpd服务的启动者身份为一般用户,所以对linux系统的权限较低,对于linux系统的危害就相对降低了。此外,vsftpd也利用chroot这个函数来进行改换根目录的操作,使得系统工具不会被vsftpd这个服务所利用。

2、任何需要具有较高执行权限的vsftpd命令均以一个特殊的上层程序所控制,该上层程序享有的较高执行权限功能已经被限制的比较低,并以不影响linux系统本身的系统为准。

3、绝大部分FTP会使用到的额外命令功能(例如ls,cd等)都已经被整合到vsftpd主程序当中了,因此理论上vsftpd不需要使用到额外的系统提供的命令。

4、所有来自客户端且想要使用这个上层程序所提供的较高执行权限的vsftpd命令的需求,均被视为不可信任的要求来处理,必须要经过相当程度的身份确认后,才可以利用上层程序的功能。

5、关于上层程序,会使用chroot的功能来限制用户的执行权限。

四、SFTP

1、sftp是SSH File Transfer Protocol的缩写,SFTP是一种安全文件传输协议,要求客户端用户必须有服务器进行身份验证,并且数据传输必须通过安全通道(SSH)进行。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。

2、sftp和ftp的异同

1)相同点

SFTP和FTP都支持批量传输(一次传输多个文件),文件夹/目录导航,文件移动,文件夹/目录创建,文件删除等。

2)不同点

安全通道:

FTP 不提供任何安全通道在主机之间传输文件

SFTP 提供了一种安全通道(SSH),用于在网络上的主机之间进行文件传输。

传输协议:

FTP使用TCP / IP协议。

SFTP是SSH协议的一部分,它是一种远程登录信息。

链接方式:

FTP使用TCP端口21上的控制连接建立连接。

SFTP是在客户端和服务器之间通过SSH协议(TCP端口22)建立的安全连接来传输文件。

安全性:

FTP密码和文本以纯数据格式传输,大多数情况下是不加密的,安全性不高。

SFTP会在发送数据之前加密数据,二进制的形式传输,安全性较高

传输效率:

SFTP采用了加密/解密技术,传输效率比FTP低

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。