首页 > 系统相关 >在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?

在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?

时间:2024-07-13 22:55:10浏览次数:13  
标签:FTP 端口 工作 Linux 服务器 数据 连接 客户端

在Linux中,FTP(File Transfer Protocol,文件传输协议)协议支持两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。这两种模式在数据传输的发起和连接建立的方式上存在显著差异。以下分别详细说明这两种模式的工作流程:

一、主动模式(Active Mode)
  1. 建立控制连接:
    • 客户端首先通过TCP协议连接到FTP服务器的21端口,建立起控制连接。这个连接用于传输控制信息,如登录认证、命令和响应等。
  2. 认证:
    • 客户端向服务器发送用户名和密码进行身份验证。只有认证成功后,客户端才能进行后续的文件操作。
  3. 请求数据连接:
    • 当客户端需要下载或上传文件时,它会向服务器发送一个PORT命令。PORT命令中包含了客户端为即将接收数据而打开的端口号信息(通常是一个大于1023的随机端口号N)。此外,客户端通常会在N+1端口上进行监听,等待来自服务器的连接。
  4. 服务器建立数据连接:
    • FTP服务器收到PORT命令后,使用其固定的20号端口主动发起一个TCP连接到客户端指定的端口N。这个连接就是用于数据传输的数据连接。
  5. 数据传输:
    • 一旦数据连接建立,服务器就可以开始通过这个连接向客户端发送文件数据(下载)或从客户端接收文件数据(上传)。
  6. 数据连接关闭:
    • 数据传输完成后,数据连接会被关闭,但控制连接仍然保持,以便客户端可以继续发送其他命令,如请求更多文件传输或其他FTP操作。
二、被动模式(Passive Mode)
  1. 建立控制连接:
    • 与主动模式相同,客户端首先通过TCP连接到FTP服务器的21端口,建立起控制连接。
  2. 认证:
    • 客户端向服务器发送用户名和密码进行身份验证。
  3. 请求被动连接:
    • 当客户端准备进行文件传输时,它会发送一个PASV命令给服务器,请求进入被动模式。
  4. 服务器开放端口并通知客户端:
    • 服务器收到PASV命令后,会在本地打开一个临时的、未使用的端口(通常大于1024的端口Y),并通过控制连接告知客户端这个端口号以及服务器的IP地址。
  5. 客户端建立数据连接:
    • 客户端收到服务器的响应后,通过控制连接之外的另一个TCP连接(如使用随机端口X+1)主动发起一个连接到服务器指定的端口Y。这个连接就是用于数据传输的数据连接。
  6. 数据传输:
    • 数据连接建立后,服务器开始通过这个连接向客户端发送文件数据(下载)或从客户端接收文件数据(上传)。
  7. 数据连接关闭:
    • 数据传输完成后,数据连接会被关闭,控制连接继续保持,以便客户端可以继续发送其他FTP命令。
三、总结
  • 主动模式下,服务器主动发起数据连接到客户端的指定端口,这可能导致在客户端位于防火墙或NAT后面时连接失败。
  • 被动模式下,所有连接都是由客户端发起的,因此更适合穿越防火墙和NAT的场景,是现代网络环境中更常用的模式。

综上所述,以上信息基于FTP协议的工作原理和广泛使用的实践,确保了准确性和可靠性。

标签:FTP,端口,工作,Linux,服务器,数据,连接,客户端
From: https://www.cnblogs.com/huangjiabobk/p/18300868

相关文章

  • 在Linux中,如何改IP、主机名、DNS?
    在Linux系统中,更改IP地址、主机名和DNS设置通常涉及到几个关键的配置文件和命令。具体步骤会根据你的Linux发行版有所不同,但这里我将以常见的CentOS/RHEL系统为例,说明这些操作的一般流程。1.更改IP地址检查当前的网络接口:ipaddrshow找到你要修改的网络接口配置文件。......
  • 在Linux中,如何添加路由?
    在Linux中,添加路由是一个常见的网络配置任务,可以通过多种方法实现。以下是详细的步骤和说明:一、使用route命令添加路由(临时路由)route命令是Linux中用于显示和操作IP路由表的工具。使用route命令添加的路由是临时的,即在系统重启或网络接口重启后路由将失效。1.添加到主机的路由......
  • Linux hwspinlock子系统(STM32MP157 HSEM)
    hwspinlock(硬件自旋锁)是Linux内核中的一个同步机制,它提供了一种在多核处理器系统中保护共享资源的方法。hwspinlock分为三部分:hwspinlockcore提供注册注销以及对hwspinlock获取和释放接口。hwspinlockController驱动。hwspinlockClient驱动,使用hwspinlock提供的同步机制......
  • Linux常用文件操作命令
    本章将和大家分享Linux常用的文件操作命令。废话不多说,下面我们直接进入主题。一、目录切换(cd命令)在Linux系统中,cd是一个用于切换当前工作目录的命令,它是"changedirectory"的缩写。基本用法如下所示:1、不带参数示例:cd或cd~如果cd命令后没有跟任何参数,它会将当前用户的......
  • Android C++系列:Linux常用函数和工具
    1.时间函数1.1文件访问时间#include<sys/types.h>#include<utime.h>intutime(constchar*name,conststructutimebuf*t);返回:若成功则为0,若出错则为-1如果times是一个空指针,则存取时间和修改时间两者都设置为当前时间;如果times是非空指针,则存取时......
  • Android C++系列:Linux进程间关系
    1.终端在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(ControllingTerminal),在前面文章我们说过,控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况......
  • Linux磁盘-格式化&挂载
    作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。Linux磁盘涉及到的命令不是很多,但是在实际运维中的作用却很大,因为Linux系统及业务都会承载到硬盘上。如果磁盘使用和配置不合理,可能会引起系统无法启......
  • 推荐一个Elasticsearch ES可视化客户端工具:ES-King,支持win、mac、linux
    ES-King:开源免费,一个现代、实用的ESGUI客户端,支持多平台。下载地址:https://github.com/Bronya0/ES-King我之前开源的kafka客户端kafka-king(https://github.com/Bronya0/Kafka-King)已经有二百多star了,2k下载,后来又花了不少精力写了一个ES客户端,不过没怎么推广,于是写个文章介绍下......
  • GPT - 5 即将到来:对未来工作与生活的影响及应对策略
    文章目录......
  • 如何对Linux系统进行基准测试4工具Sysbench
    Sysbench简介Sysbench是一款多用途基准测试工具,可对CPU、内存、I/O甚至数据库性能进行测试。它是一个基本的命令行工具,提供了直接、简便的系统测试方法。github地址:https://github.com/akopytov/sysbench。主要功能:CPU:衡量CPU执行计算密集型任务的能力。内存:衡量内存子......