<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
虽然几乎每天都在使用FTP,但是原来对FTP的理解比较少,只知道它是一种用于不同系统间的文件传输协议,默认使用TCP的20 /21端口。现在觉得有必要再进一步了解它了。
1. FTP是什么
FTP是File Transfer Protocol的缩写,几乎是和Internet本身一样古老的协议。它用于将一个完整的文件从一个系统传送到另外一个系统。如何处理不同系统主机之间的差异对于FTP是非常重要的。
引用《TCP/IP详解》中的话说,FTP在设计之初就是要用于两个不同的主机,他们很可能运行不同的操作系统,使用不同的文件结构,不同的字符集。Telnet通过强制两端都采用同一个标准,7 bit的ASCII NVT来处理这种差异,而FTP采用的是另外的方式。下面会再详细解释。
2. FTP的端口
与其他协议不同的是,FTP使用两个端口来完成数据传输。服务器端被动打开TCP 21端口等待客户连接,而客户端则主动打开21端口建立连接。这个就是控制连接,实际的数据传输则会使用另外的连接完成。控制连接始终等待客户与服务器之间的通信。该链接将命令从客户传给服务器,并传回服务器的应答。
每当一个文件需要在客户于服务器之间传输时,就创建一个数据连接。传输完成后就关闭该连接。之所以这样,是因为数据连接和控制连接需求和特点都不相同。一般控制连接之间的数据传输量非常小,但是对延迟要求比较高,所以IP对控制连接的服务类型就是“最大限度减小延迟”;而数据连接通常传输量大,所以IP对它的服务类型是“最大限度提高吞吐量”。两个连接之间可以使用最合适自己的路由选项而互不影响。
3. FTP的数据表示
为了处理不同主机之间的各种差异,FTP规范提供了控制文件传输与存储的多种选择。主要有一下四个方面:
a. 文件类型
i)ASCII码文件类型(默认选择)。文本文件以NVT ASCII码形式在数据连接中传输。这要求发送方将本地文件转成NVT ASCII码格式,而接收方再将其转换成本地文件格式。其中NVT ASCII码传输的每一行都带有一个回车和换行字符对。这意味着接收方必须扫描每个字节,查找CR、LF字符对。
待续........