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

news/2024/2/28 18:13:21

        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: 超时时间不定,且请求量过大,一直抓了存文件里抓包文件过大。 解决学习&…

STM32 适合人群

STM32 适合各种需要进行嵌入式系统开发的人群,具体如下: 嵌入式系统工程师:嵌入式系统工程师可以使用 STM32 进行系统设计、硬件和软件编程、测试和部署等工作。学生和研究人员:学生和研究人员可以使用 STM32 进行实验、学习和研…

线性代数的本质——1 向量

向量是线性代数中最为基础的概念。 何为向量? 从物理上看, 向量就是既有大小又有方向的量,只要这两者一定,就可以在空间中随便移动。 从计算机应用的角度看,向量和列表很接近,可以用来描述某对象的几个不同…

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标 介绍准备工作数据准备计算移动平均线计算MACD指标结果展示完整代码演示 介绍 在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来…

备战蓝桥杯---组合数学基础1

让我们来几道高中的组合题吧: 1.我们一定有n个向下,为 2.我们挑最大的两个,条件是他们奇偶性相同,为2*A10,2; 3.用捆绑法即可。 4.我们用隔板法,为 5.问题等价于23个相同的球放到3个盒子里,每个盒子至少…

golang设置

golangci-lint 代码检查工具的集合,聚集了多种 Go 代码检查工具,如 golint 会自动查找项目中的 .golangci.yml 配置文件 会检查代码中潜在常见问题以及代码风格问题 # 文档:https://golangci-lint.run/ # https://github.com/golangci/golang…

[2024]常用的pip指令

[2024]常用的pip指令 HI,这里是肆十二,好久不见,大家! 新年好! pip是Python的包管理工具,它可以用来安装、升级、卸载Python包。以下是一些常用的pip指令: 安装包: bash复制代码…

【Python】洛谷P4325 [COCI2006-2007#1] Modulo

P4325 [COCI2006-2007#1] Modulo 题面翻译 给出 10 10 10 个整数,问这些整数除以 42 42 42 后得到的余数有多少种。 第一个样例的十个结果是 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 1,2,3,4,5,6,7,8,9,10 1,2,3,4,5,6,7,8,9,10,有 10 10 10 个不…

Vscode SSH使用云服务器访问内网主机

Vscode SSH使用云服务器访问内网主机 云服务器在配置策略中开放使用到的端口号,比如250和251作为使用。 首先在内网主机上使用ssh-copy-id root云服务器公网IP,将内网主机的公钥放到服务器上 这一步必须完成,不然下面的命令无法成功建立隧…

精读《js 模块化发展》

1 引言 如今,Javascript 模块化规范非常方便、自然,但这个新规范仅执行了 2 年,就在 4 年前,js 的模块化还停留在运行时支持,10 年前,通过后端模版定义、注释定义模块依赖。对经历过来的人来说,…

Hadoop:认识MapReduce

MapReduce是一个用于处理大数据集的编程模型和算法框架。其优势在于能够处理大量的数据,通过并行化来加速计算过程。它适用于那些可以分解为多个独立子任务的计算密集型作业,如文本处理、数据分析和大规模数据集的聚合等。然而,MapReduce也有…

从零开始实现消息队列(二)

从零开始实现消息队列 .核心API交换机类型持久化网络通信Connection和Channel 消息应答模块划分 . 核心API 对于Broker来说,要实现以下核心API,通过这些API来实现消息队列的基本功能. 创建队列(queueDeclare)销毁队列(queueDelete)创建交换机(exchangeDeclare)销毁交换机(exc…

QT学习文件操作类 QFile

(一)QFile QFile 是 Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能,支持文本和二进制文件。QFile 继承自 QIODevice ,因此它可以像其他 IO 设备一样使用。 (1)主要功能 1. 文件读写…
最新文章