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

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

基本原理

是一种用于在网络上进行文件传输的标准协议。它基于客户端-服务器模型,通过控制连接数据连接实现文件的上传和下载操作

连接建立的过程

  • 服务器首先运转起来,守候在TCP的21号端口,等待用户通过21号端口与FTP服务器建立连接。
  • 客户端请求建立连接:客户端发起建立连接的请求,这个请求通常是TCP SYN包,用来建立TCP连接
  • 登录过程:建立控制连接后,客户端通过USER和PASS命令来完成登录的过程,服务器会验证客户端提供的用户名和密码。
  • 服务器响应连接:服务器接收连接后,会发送一个TCP SYN-ACK包作为响应,客户端收到后会发送一个TCP ACK包来完成三次握手的过程,从而建立控制连接
  • 控制连接:用于发送FTP命令和接收服务器响应。控制连接使用TCP的21端口,整个会话期间一直保持打开状态。

  • 数据传输:用于实际的文件数据传输。数据连接的端口和建立方式取决于FTP的工作模式。

工作模式

  • 主动模式(PORT):客户端向FTP服务器的数据端口(默认为20)发起连接请求,服务器接收到请求后,从自己的数据端口向客户端发送数据。

  • 被动模式(PASV):客户端向FTP服务器的控制端口(默认为21)发送PASV命令,请求服务器开启一个随机的数据端口进行监听,服务器会返回一个包含该数据端口号的响应给客户端,客户端接收到响应后,主动向服务器返回的数据端口发起连接请求。

主动模式和被动模式的本质区别

  • 控制和数据连接的发起方:
    • 主动模式:服务器发起数据连接。
    • 被动模式:客户端发起数据连接。
  • 端口使用:
    • 主动模式:服务器使用20号端口,客户端使用本地临时端口。
    • 被动模式:服务器返回一个临时端口,客户端使用这个临时端口。
  • 适用场景:
    • 主动模式:适用于客户端在防火墙或NAT(网络地址转换)后面的情况,但服务器必须能够主动连接到客户端的临时端口。
    • 被动模式:适用于客户端和服务器都在防火墙或NAT后面的情况,客户端可以主动连接到服务器的临时端口,避免了复杂的端口映射和防火墙规则。
  • 总结
    • 主动模式:服务器主动发起数据连接,使用20号端口连接到客户端的临时端口。
    • 被动模式:客户端主动发起数据连接,使用服务器返回的临时端口连接到服务器的21号端口。

补充说明

  • 缺点:用户名和口令都是明文传输的
  • 特点:控制连接和数据传输是在两个不同的TCP上进行的
  • ftp是有状态的协议,服务器需要维护客户端的状态
  • 21端口:用于控制连接,控制连接用于传输FTP命令和服务器响应
  • 20端口:用于主动模式下的数据传输
  • 随机端口:用于被动模式的数据传输
  • FTP使用两条TCP连接完成文件的传输,一条是控制连接,一条是数据连接

http://www.kler.cn/a/542455.html

相关文章:

  • DeepSeek投喂数据(训练AI)
  • 波导阵列天线学习笔记8 高增益、低轴比的3D打印Ka波段圆极化单脉冲天线阵列
  • elasticsearch实战应用从入门到高效使用java集成es快速上手
  • 网易日常实习一面面经
  • 练习题(2.10)
  • jemalloc的malloc案例来分析GOT表和PLT表有关流程
  • C++引用深度详解
  • Unity做2D小游戏5------多个动画互相转换
  • docker配置国内源
  • 【unity实战】实现摄像机跟随效果
  • 【AI知识点】大模型开源的各种级别和 deepseek 的开源级别
  • Java 大视界 -- 5G 与 Java 大数据融合的行业应用与发展趋势(82)
  • ArcGIS Pro SDK (二十六)自定义配置
  • 基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试
  • 25考研电子信息复试面试常见核心问题真题汇总,电子信息考研复试没有项目怎么办?电子信息考研复试到底该如何准备?
  • 进阶版MATLAB 3D柱状图
  • 【系统架构设计师】操作系统 - 进程管理 ① ( 进程概念 | 进程组成 | 进程 与 程序 | 进程 与 线程 | 线程 可共享的资源 - ☆考点 )
  • 工具模块新增JSON格式化打印工具类
  • 什么是容器化,它有什么好处,对后端开发有什么影响?
  • 【2025-ICLR-未中】教授多模态大语言模型理解心电图图像
  • 【C#零基础从入门到精通】(五)——C# {n:format} 占位符
  • C#调用Python的函数(编译为pyd,避免源码泄露)
  • 朝天椒USB服务器:破解银企直连中Ukey管理难题
  • 算法-反转链表
  • MATLAB电机四阶轨迹规划考虑jerk、Djerk
  • MarsCode AI插件在IntelliJ IDEA中使用