当前位置: 首页 > news >正文

文件传输之FTP协议(FTP Protocol for File Transfer)

文件传输之FTP协议

文件传送协议FTP

FTP除了提供文件传送的一些基本服务的外,还有一个主要的功能--减少或消除在不同操作系统下处理文件的不兼容性。

例如电脑的Windows系统和Linux系统就是两种不同的操作系统,类似于手机的安卓系统和苹果系统。

这个功能可以实现文件在异构的网络中任意计算机之间的传送。

接下来我们对FTP的基本原理进行了解。

FTP使用TCP可靠运输服务,且使用客户服务器方式。

客户和服务器都是指通信中所涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。

一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:

  • 主进程,负责接受新的请求;

  • 若干个从属进程。负责处理单个请求。

主进程的工作步骤:

  1. 打开熟知端口(端口号为21),使客户进程能够连接上。

  2. 等待客户进程发出连接请求。

  3. 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。

  4. 回到等待状态,继续接受其他客户进程发来的请求。主进程和从属进程的处理是并发进行的。

    以上主进程的工作步骤类似于一家大型商场(计算机)其中的一个某某销售店(进程),老板(主进程)打开门做生意(对应上面的第一步),来了客人(对应第二步),老板对店员(从属进程)说,“来贵客了,赶紧接待一下”(对应第三步),客人已被店员接待,老板继续等待看是否客人来店消费(对应第四步)。

FTP的工作情况如图所示。图中的椭圆表示在系统中进行的进程。为了简单起见,图中的服务器端主进程没有画上,只画了两个从属进程:控制进程和数据传送进程。而客户端与其相比还多了个用户界面进程用来和用户交互。

文章开头已提到FTP使用TCP的可靠传输,因此在进行文件传输时,FTP的客户和服务器之间要建立TCP连接。

FTP的客户和服务器之间要建立两个并行的TCP连接:

  • 控制连接:对客户发出的传送请求进行处理以及对文件的传输进行控制,并不用来传送文件。

  • 数据连接:传输文件。

    注意:

  1. 控制连接在整个会话期间一直保持打开,用于传送FTP的相关控制命令。

  2. 数据连接用于文件传输,在每次文件传输时才建立,传输结束后就关闭。

知识背景:

端口号就是用来标识计算机里面运行的程序(即进程)。一个计算机有很多同时运行着的程序(例如,你同时打开王者和微信),为了区分谁是谁,于是就引入了端口号的概念。

数据连接和控制连接会不会发生混乱呢?

不会!FTP使用了两个不同的端口号。

一个是服务器的熟知端口 21,便于客户进程的查找,进而建立客户和服务器的连接--即建立控制连接。

一个是服务器用自己传送数据的熟知端口 20 与客户进程所提供的端口号建立数据传送连接。

FTP的两种模式:

建立数据通道时,FTP服务器使用熟知端口号20主动连接FTP客户,此情况称为主动模式。

建立数据通道时,FTP服务器被动等待FTP客户的连接,建立时,服务器随机选择临时端口号与客户进行连接,此情况称为被动模式。

注意:

所以:

  • 服务器和客户建立数据连接使用TCP 20端口建立数据连接要在具体条件下进行对错判断。

  • 唯一确定的就是FTP服务器的控制端口 21 ,让客户进程能够找到。

FTP常见用途:

1.计算机之间传输文件,尤其是用于批量传输文件。

2.网站设计者将构成网站内容的大量文件批量上传到他们的Web服务器。

应用场景

FTP广泛应用于各种场景,包括:

    ‌文件共享‌:允许用户通过FTP客户端程序访问远程服务器上的文件。
    ‌跨平台操作‌:支持在Linux、Windows等不同操作系统之间进行文件传输。
    ‌网站开发‌:在开发网站时,通常利用FTP协议将网页或程序传到Web服务器上‌4。

安全性问题

尽管FTP在文件传输中表现出色,但它也存在一些安全性问题。由于FTP报文在传输过程中不进行加密,通过抓包软件可以直接查看报文内容,包括用户名和密码,这在一定程度上增加了安全风险‌5。

相关文章:

  • EXADATA一体机新建数据库遇到的报错ORA-00603 AND ORA-27515
  • vivo 湖仓架构的性能提升之旅
  • Cadence学习笔记之---SMD焊盘、通孔焊盘、过孔制作
  • C语言-数组指针和指针数组
  • 移动WEB开发之rem适配布局
  • 基于Jina AI的研究工作,探讨提升搜索质量的两大技术:长网页最优文本段提取与URL智能重排
  • AudioTrack
  • ​「Java-API帮助文档」
  • 如何自定义知行之桥Webhook端口返回的Response消息
  • flutter 开发web端的性能优化
  • JavaScript语法与DOM操作
  • Java 记忆链表,LinkedList 的升级版
  • AutoGluon快速上手
  • 如何在Linux环境下编译文件
  • git管理时keil项目忽略文件列表
  • 试验一 mybatis 入门操作
  • 基于 NOMOTO 模型的船舶操纵性指数研究
  • DeepSeek生成测试用例的常用Prompt
  • 边缘计算革命:重构软件架构的范式与未来
  • 钉钉机器人
  • 国台办:民进党当局刻意刁难大陆配偶,这是不折不扣的政治迫害
  • 反犹、资金与抗议:特朗普的施压如何撕裂美国大学?|907编辑部
  • 第二期人工智能能力建设研讨班在京开班,近40国和区域组织代表参加
  • 一生要出片的年轻人,买爆相机
  • 上海发布预付卡消费“10点提示”:警惕“甩锅闭店”套路
  • 首批18位!苏联籍抗日航空英烈信息更新