先决条件:应用层协议
文件传输协议 (FTP) 是一种应用层协议,用于在本地和远程文件系统之间移动文件。它运行在 TCP 之上,就像 HTTP 一样。为了传输文件,FTP 并行使用 2 个 TCP 连接:控制连接和数据连接。
什么是控制连接?
为了发送用户标识、密码、更改远程目录的命令、检索和存储文件的命令等控制信息,FTP 使用控制连接。控制连接在端口号 21 上启动。
什么是数据连接?
为了发送实际文件,FTP 使用数据连接。数据连接在端口号 20 上启动。
FTP 在带外发送控制信息,因为它使用单独的控制连接。一些协议在同一个 TCP 连接中发送它们的请求和响应头行以及数据。出于这个原因,据说他们在带内发送他们的控制信息。 HTTP 和 SMTP 就是这样的例子。
FTP 会话:
当客户端和服务器之间开始FTP会话时,客户端发起与服务器端的控制TCP连接。客户端通过此发送控制信息。当服务器收到此消息时,它会向客户端发起数据连接。通过一个数据连接只能发送一个文件。但控制连接在整个用户会话期间保持活动状态。正如我们所知,HTTP 是无状态的,即它不必跟踪任何用户状态。但是 FTP 需要在整个会话期间维护有关其用户的状态。
数据结构: FTP 允许三种类型的数据结构:
- 文件结构——在文件结构中没有内部结构,文件被认为是一个连续的数据字节序列。
- 记录结构——在记录结构中,文件由连续记录组成。
- 页面结构——在页面结构中,文件由独立的索引页面组成。
FTP 命令 –一些 FTP 命令是:
USER – 此命令将用户标识发送到服务器。
PASS – 此命令将用户密码发送到服务器。
CWD – 此命令允许用户使用不同的目录或数据集进行文件存储或检索,而无需更改其登录或帐户信息。
RMD – 此命令将路径名中指定的目录作为目录删除。
MKD – 此命令将路径名中指定的目录创建为目录。
PWD – 此命令导致在回复中返回当前工作目录的名称。
RETR – 此命令使远程主机启动数据连接并通过数据连接发送请求的文件。
STOR – 此命令导致将文件存储到远程主机的当前目录中。
LIST – 发送请求以显示目录中存在的所有文件的列表。
ABOR – 此命令告诉服务器中止先前的 FTP 服务命令和任何相关的数据传输。
QUIT – 此命令终止用户,如果文件传输不在进行中,服务器将关闭控制连接。
FTP 回复 –一些 FTP 回复是:
200 命令没问题。
530 未登录。
331 用户名好吧,需要密码。
225 数据连接打开;没有正在进行的转移。
221 服务关闭控制连接。
551 请求的操作中止:页面类型未知。
502 命令未执行。
503 命令序列错误。
504 命令未针对该参数实现。
- 普通文件传输协议 (TFTP):它也是没有 FTP 复杂功能的文件传输协议。
- 它适用于简单的文件传输,例如在启动期间。
- 它使用 UDP 作为传输层协议。传输中的错误(丢失数据包、校验和错误)必须由 TFTP 服务器处理。
- 它只使用一个通过众所周知的端口 69 的连接。
- TFTP 使用简单的锁步协议(每个数据包都需要确认)。因此吞吐量是有限的
匿名FTP:
在某些文件可供公众访问的站点上启用了匿名 FTP。用户无需任何用户名或密码即可访问这些文件。相反,默认情况下,用户名设置为匿名,密码设置为来宾。在这里,用户访问非常有限。例如,可以允许用户复制文件但不能浏览目录。
参考:https://en.wikipedia.org/wiki/File_Transfer_Protocol