什么是FTP?

什么是FTP?FTP是TCP/IP协议组中的协议之一,是英文文件传输协议的缩写。该协议是互联网文件传输的基础,它由一系列规范文档组成。它的目标是改善文件共享,提供远程计算机供间接使用,并使存储介质透明、可靠和高效地供用户传输数据。简单来说,FTP就是在两台电脑之间拷贝文件,从一台远程电脑拷贝到你自己的电脑上,也就是所谓的“下载”文件。如果您将文件从您自己的计算机复制到远程计算机,它被称为“上传”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,端口模式数据端口为20。FTP协议的任务是将文件从一台计算机传输到另一台计算机,这与两台计算机的位置、连接方式甚至是否使用相同的操作系统无关。假设两台计算机通过ftp协议进行通信,并且可以访问互联网,您可以使用ftp命令来传输文件。每个操作系统的使用都有一些细微的差别,但是每个协议的基本命令结构是相同的。

FTP传输有两种模式:ASCII传输模式和二进制数据传输模式。

1.ASCII传输模式:假设用户正在复制的文件包含简单的ASCII代码文本,如果远程机器没有运行UNIX,ftp通常会在文件传输时自动调整文件的内容,以便将文件解释为存储在另一台计算机上的文本文件的格式。

然而,经常出现的情况是,用户正在传输的文件不包含文本文件,而可能是程序、数据库、字处理文件或压缩文件(虽然字处理文件包含的大部分是文本,包括指示页面大小、字体和其他信息的非打印字符)。在复制任何非文本文件之前,用binary命令告诉ftp逐字复制,不要处理这些文件,这也是下面要讨论的二进制传输。

2.二进制传输模式:在二进制传输中,保存文件的位序,使原文件和复制文件一一对应。即使包含目标机器上的位序列的文件是无意义的。例如,macintosh以二进制模式向Windows系统发送一个可执行文件,但是这个文件不能在另一个系统上执行。

如果以ASCII模式传输二进制文件,即使不需要,仍然会进行翻译。这样会稍微减慢传输速度,也会损坏数据,使文件无法使用。(在大多数计算机上,ASCII一般假设每个字符的第一个有效位是无意义的,因为ASCII字符组合不使用它。如果你传输一个二进制文件,所有的位都是重要的。如果您知道两台机器是相同的,那么二进制模式对文本文件和数据文件都有效。

5.FTP如何工作

FTP支持两种模式,一种叫标准(即端口模式,主动模式),一种叫被动(即PASV,被动模式)。标准模式FTP的客户端向FTP服务器发送PORT命令。被动FTP客户端向FTP服务器发送PASV命令。

以下是这两种方法的工作原理:

端口模式FTP客户端首先与FTP服务器的TCP 21端口建立连接,通过该通道发送命令。当客户端需要接收数据时,它在这个通道上发送端口命令。PORT命令包含客户端用来接收数据的端口。传输数据时,服务器通过自己的TCP 20端口连接到客户端的指定端口发送数据。FTP服务器必须与客户端建立新的连接来传输数据。

被动模式在建立控制通道时类似于标准模式,但它在建立连接后发送Pasv命令而不是Port命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024),通知客户端在该端口上传输数据的请求。客户端连接到FTP服务器的这个端口,然后FTP服务器会通过这个端口传输数据。此时,FTP服务器不再需要与客户端建立新的连接。

很多防火墙在设置的时候是不允许接受外部连接的,所以很多位于防火墙或者内网后面的FTP服务器都不支持PASV模式,因为客户端无法通过防火墙打开FTP服务器的高端端口;但是内网很多客户端无法以端口模式登录FTP服务器,因为来自服务器的TCP 20无法与内网客户端建立新的连接,导致无法工作。