FTP
了解 FTP 的工作原理和两种连接方式,可能在选择题中考察。
工作原理
FTP 的传输流程如下:
- 建立连接
- FTP 基于 TCP 协议运行。客户端与服务器之间首先建立一条 控制连接(默认端口 21),用于命令与响应的传输。
- 在实际传输数据时,还需要建立一条 数据连接。
- 身份验证
- 建立控制连接后,客户端需提供用户名和密码完成身份验证。
- 部分服务器支持 匿名 FTP,允许用户以通用用户名(通常为
anonymous
)和邮箱地址作为密码进行访问。
- 命令与响应
- 所有的 命令与响应 都通过控制连接完成。
- 客户端发送命令(如上传、下载、列目录等),服务器返回 状态码(如成功、失败、权限不足),用于指示执行结果。
- 数据连接的建立
- 当需要传输文件或目录列表时,FTP 会额外建立数据连接。
- 常见的两种模式:
- 主动模式(Active Mode):客户端开放端口,等待服务器回连进行数据传输。
- 被动模式(Passive Mode):服务器开放端口,等待客户端发起连接。
- 文件传输
- 数据连接建立后即可传输数据,包括文件内容或目录信息。
- 支持两种传输模式:
- ASCII 模式:适合文本文件,自动进行换行符转换。
- 二进制模式:适合图像、音频、压缩包等二进制文件,逐字节传输,避免数据损坏。
- 关闭会话
- 文件传输完成或用户退出时,客户端通过 QUIT 命令请求关闭会话。
- 服务器响应后,释放控制连接与数据连接。
控制连接
- 控制连接 是 FTP 会话中首先建立的连接,通常使用 TCP 端口 21。
- 主要作用是传输 命令和响应,用于 控制 FTP 会话的行为。
- 客户端通过控制连接发送命令(如登录、列目录、切换目录)。
- 服务器通过控制连接返回 状态码 和响应消息,指示命令执行结果(成功、失败、权限不足等)。
- 控制连接始终保持打开(持久连接),直到用户退出会话或发送 QUIT 命令。
数据连接
- 数据连接 专用于 文件内容和目录列表的传输,端口号由控制连接中的命令协商确定。
- 建立方式有两种模式:
- 主动模式(Active Mode)
- 客户端开放一个本地端口,并通过控制连接通知服务器。
- 服务器主动连接到客户端该端口完成数据传输。
- 被动模式(Passive Mode)
- 服务器开放一个本地端口,并通过控制连接告知客户端。
- 客户端主动连接到服务器该端口完成数据传输。
- 数据连接 在需要时建立,用于 上传文件(客户端 → 服务器)或 下载文件(服务器 → 客户端)。
- 主动模式(Active 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: 通过数据连接传输数据