什么是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无法与内网客户端建立新的连接,导致无法工作。