FTP

了解 FTP 的工作原理和两种连接方式,可能在选择题中考察。

工作原理

FTP 的传输流程如下:

  1. 建立连接
    • FTP 基于 TCP 协议运行。客户端与服务器之间首先建立一条 控制连接(默认端口 21),用于命令与响应的传输。
    • 在实际传输数据时,还需要建立一条 数据连接
  2. 身份验证
    • 建立控制连接后,客户端需提供用户名和密码完成身份验证。
    • 部分服务器支持 匿名 FTP,允许用户以通用用户名(通常为 anonymous)和邮箱地址作为密码进行访问。
  3. 命令与响应
    • 所有的 命令与响应 都通过控制连接完成。
    • 客户端发送命令(如上传、下载、列目录等),服务器返回 状态码(如成功、失败、权限不足),用于指示执行结果。
  4. 数据连接的建立
    • 当需要传输文件或目录列表时,FTP 会额外建立数据连接。
    • 常见的两种模式:
      • 主动模式(Active Mode):客户端开放端口,等待服务器回连进行数据传输。
      • 被动模式(Passive Mode):服务器开放端口,等待客户端发起连接。
  5. 文件传输
    • 数据连接建立后即可传输数据,包括文件内容或目录信息。
    • 支持两种传输模式:
      • ASCII 模式:适合文本文件,自动进行换行符转换。
      • 二进制模式:适合图像、音频、压缩包等二进制文件,逐字节传输,避免数据损坏。
  6. 关闭会话
    • 文件传输完成或用户退出时,客户端通过 QUIT 命令请求关闭会话。
    • 服务器响应后,释放控制连接与数据连接。

控制连接

Client Process
Server Process
控制连接
数据连接
FTP Client
FTP Server
随机端口
21 端口
  • 控制连接 是 FTP 会话中首先建立的连接,通常使用 TCP 端口 21
  • 主要作用是传输 命令和响应,用于 控制 FTP 会话的行为
  • 客户端通过控制连接发送命令(如登录、列目录、切换目录)。
  • 服务器通过控制连接返回 状态码 和响应消息,指示命令执行结果(成功、失败、权限不足等)。
  • 控制连接始终保持打开(持久连接),直到用户退出会话或发送 QUIT 命令。

数据连接

  • 数据连接 专用于 文件内容和目录列表的传输,端口号由控制连接中的命令协商确定。
  • 建立方式有两种模式:
    • 主动模式(Active Mode)
      • 客户端开放一个本地端口,并通过控制连接通知服务器。
      • 服务器主动连接到客户端该端口完成数据传输。
    • 被动模式(Passive Mode)
      • 服务器开放一个本地端口,并通过控制连接告知客户端。
      • 客户端主动连接到服务器该端口完成数据传输。
    • 数据连接 在需要时建立,用于 上传文件(客户端 → 服务器)或 下载文件(服务器 → 客户端)。
sequenceDiagram
    participant Client as 客户端
    participant Server as 服务器

    Note over Client,Server: 主动模式 (Active Mode)
    Client->>Server: 建立控制连接 (端口 21)
    Client->>Server: PORT 命令 (告知客户端开放的端口)
    Server-->>Client: 建立数据连接 (连接到客户端指定端口)
    Client->>Server: 发起数据传输请求 (如 LIST/RETR)
    Server-->>Client: 通过数据连接传输数据

    Note over Client,Server: 被动模式 (Passive Mode)
    Client->>Server: 建立控制连接 (端口 21)
    Client->>Server: PASV 命令 (请求服务器开放数据端口)
    Server-->>Client: 返回数据端口号
    Client->>Server: 连接到服务器指定端口(数据连接)
    Client->>Server: 发起数据传输请求
    Server-->>Client: 通过数据连接传输数据