FTP服务简介(工作原理、连接模式、流行服务器软件)

news/2024/12/4 17:58:12/

        FTP(File Transfer Protocol,文件传输服务)提供在Internet上的任意两台计算机之间相互进行的文件传输。只要双方主机都支持FTP协议,就可以利用FTP来进行文件传输。

工作原理

        FTP服务是客户/服务器模式,用户通过客户机程序连接远程计算机上运行的服务器程序。FTP协议需要两个端口,一个作为控制连接端口(端口号为21),用于发送指令给服务器以及等待服务器响应;另一个作为数据传输端口(端口号为20),用于建立数据通道。

        FTP服务具体过程如下:

  • 客户端向服务器发出连接请求,同时客户端系统动态打开一个大于1024的端口等候服务器连接。
  • 若FTP服务器在端口21侦听到该请求,则在客户端1031端口和服务器的21端口之间建立起一个FTP会话连接。
  • 需要传输数据时,FTP客户端再动态打开一个大于1024的端口,连接到服务器的20端口,并在这两个端口之间进行数据的传输。
  • 传输完毕后,这两个端口会自动关闭。

匿名用户

        FTP服务要求先登录服务器,再进行文件传输,这对于很多公开提供软件下载的服务器来说十分不便。匿名用户访问就是在这样的环境中诞生的,通过使用一个公用的用户名Anonymous,密码不限的管理策略(一般使用用户的邮箱作为密码即可),让任何用户都可以很方便地从这些服务器上下载软件。匿名文件传输使用户以匿名身份与远程主机建立起连接,并被允许从远程主机上拷贝文件。

FTP服务的连接模式

主动模式

        FTP客户端会随机开启一个大于1024的端口N,并和服务器的21号端口建立连接,然后开放N+1号端口进行监听,同时向服务器发出PORT 1026命令(PORT命令包括客户端用什么端口接收数据)。服务器端在传送数据的时候,通过自己的TCP 20端口发送数据,因此FTP必须和客户端建立一个新的连接用于数据传输。

被动模式

        在建立控制通道的时候和主动模式类似,只是向服务器发送的命令是PASV,通知服务器之间处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是1521。客户端收到命令后,会通过1026号端口连接服务器的端口1521,然后在两个端口之间进行数据传输。

        主动模式的FTP是服务器主动连接客户端的数据端口,被动模式的FTP是服务器被动地等待客户端连接自己的数据端口。

流行FTP服务器软件介绍

FileZilla

        FileZilla是一种免费的FTP客户端以及服务器端开放源代码程序,具有多种平台的软件包,可以在Windows,Linux和macOS平台上运行。服务器和客户端都支持FTP和FTPS(FTP over SSL/TLS),而客户端还可以连接到SFTP服务器。

特点

  • 跨平台,在Windows,Linux,Mac OS X和其他平台下运行more;
  • 多种可用的语言(包含中文);
  • 多标签用户界面;
  • 功能强大的站点管理器(Site Manager)和传输队列管理;
  • 上传下载速度限制,并可以限定某个特定的时间段的速度;
  • 支持虚拟目录,可以映射不同的盘符的文件到根目录下。

 其官网为:FileZilla - The free FTP solution (filezilla-project.org)​​​​

ProFTPd

        ProFTPd是一套可配置性强的开放源代码的FTP服务器软件,名称最后的d字是因为在Linux中是用daemon来称呼。ProFTPd与Apache的配置方式类似,因此十分容易配置和管理。

        ProFTPd亦开发了有图形用户界面的FTP服务器软件称为gProFTPd。

特点

  • 可设定多个虚拟FTP服务器,匿名FTP服务更是十分容易;
    • 单配置文档,容易配置,其配置指示和apache的有类似之处;
      • 基于单个目录的.ftpaccess配置文档,类似于Apache的.htaccess文档;
        • 能够配置为从inetd启动,或是单独FTP服务器两种运行方式;
          • 匿名FTP的根目录无需任何特别的目录结构,或系统程式或其他系统文档;
            • 以非root身份运行以及不执行任何外部程式,从而减少了安全隐患;
              • 能够根据文档属主情况或UNIX风格的访问控制来隐藏文档或目录;
                • 支持Shadow密码,包括支持密码过期机制;
                  • 强大的Log功能,支持utmp/wtmp及Wu-ftpd格式的记录标准,并支持扩展功能的日志记录。

 其官网为:The ProFTPD Project: Home

vsFTPd

        vsFTPd的最初发展理念是为了建构一个安全为主的 FTP 服务器,针对操作系统的程序的权限 (privilege) 概念来设计,具有很多独有的特性,有非常高的安全性需求、带宽限制、良好的可伸缩性、创建虚拟用户的可能性、IPv6支持、中等偏上的性能、分配虚拟IP的可能性等。

特点

  • 匿名服务设置十分方便;
  • 匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;
  • 不执行任何外部程序,从而减少了安全隐患;
  • 支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;
  • 可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;
  • 支持两种认证方式(PAP或xinetd/ tcp_wrappers);
  • 支持带宽限制。

 PureFTPd

        PureFTPd 是一款专注于程序健壮和软件安全的免费FTP服务器软件。

特点

  • 轻量级的 FTP 服务器软件,它具有优化的代码和高效的处理机制,可以提供快速的文件传输和响应速度;
  • 采用了多种安全措施来保护 FTP 服务器,包括 chroot 限制、用户权限控制、密码加密等;
  • 支持多种扩展模块,可以满足不同用户的需求;
  • 提供了一个 Web 管理界面,可以方便地管理 FTP 服务器;
  • 允许创建虚拟用户,并可以为每个用户设置独立的目录和权限。这样可以灵活地控制用户的访问权限和文件操作权限,实现更精细的权限管理。

其官网为:Pure-FTPd :: Pure-FTPd (pureftpd.org)


http://www.ppmy.cn/news/1350027.html

相关文章

[C#] 如何使用ScottPlot.WPF在WPF桌面程序中绘制图表

什么是ScottPlot.WPF? ScottPlot.WPF 是一个开源的数据可视化库,用于在 WPF 应用程序中创建高品质的绘图和图表。它是基于 ScottPlot 库的 WPF 版本,提供了简单易用的 API,使开发人员能够通过简单的代码创建各种类型的图表&#…

第三百一十五回

文章目录 1. 概念介绍2. 基本用法3. 补充用法4. 内容总结 我们在上一章回中介绍了"再谈ListView中的分隔线",本章回中将介绍showMenu的用法.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容…

【设计模式】23中设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法,和大量抽象的方法,具体的方法是为外界提供服务的点,具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A,希望A的a方法被修饰 …

MySQL-----DCL基础操作

▶ DCL简介 DCL英文全称是Data ControlLanguage(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 DCL--管理用户 ▶ 查询用户 use mysql; select * from user; ▶ 创建用户 ▶ 语法 create user 用户名主机名 identified by 密码 设置为在任意主机上访问…

[自然语言处理|NLP] 文本分类与情感分析,数据预处理流程,包括了同义词替换和拼写纠正,以及使用NLTK库和TextBlob库进行标记化和情感分析(附代码)

[自然语言处理|NLP] 文本分类与情感分析,数据预处理流程,包括了同义词替换和拼写纠正,以及使用NLTK库和TextBlob库进行标记化和情感分析(附代码)。 自然语言处理(Natural Language Processing,简称NLP)是人工智能领域的一个重要分支,涉及了处理和理解人类语言的技术…

快速手动完成 VS 编写脚本自动化:如何选取最高效的工作方式?

那些不懂技术的朋友们可能会觉得,写代码写脚本不就是敲敲键盘嘛,搞那么高科技做什么,直接手工点点鼠标不就完事了。 这种看法很常见,但实际情况要复杂得多。 首先,手工操作虽然对于短期和小规模的任务来说似乎更快&am…

springboot177健身房管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

wireshark抓包问题及学习

wireshark抓包问题及学习 【场景1】服务A请求服务B经常超过3s,报错i/o timeout,想看下是否网络波动或者负载太高。需要抓包分析。 问题1: 超时时间不定,且请求量过大,一直抓了存文件里抓包文件过大。 解决学习&…