FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。 该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性, 提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。 其实,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载”文件。 若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载”文件。 在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。 FTP可用多种格式传输文件,通常由系统决定,大多数系统(包括UNIX系统)只有两种模式: 文本(ASCII)模式和二进制模式。 (一)文本(ASCII)传输方式: 假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程服务器上运行的不是UNIX, 当文件传输时FTP通常会自动地调整文件的内容以便于把文件解释成远程服务器存储文本文件的格式。 ASCII模式会把回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\r。 一般来说用HTML和文本编写的文件必须用ASCII传输模式上传,用二进制模式上传会破坏文件,导致文件执行出错,原因在于不同系统中行结束字符不同的问题,当然也有一些设计网页的童鞋会要求其他童鞋上传时使用二进制传输模式,这属个别情况。 (二)二进制(Binary)传输模式: 二进制传输模式则不会对数据进行任何处理,完全不理会文件在远程服务器上是否可运行。 一般来说二进制传输模式用来传送可执行文件,压缩文件,和图片文件。 如果你用ASCII传输模式上传,会显示一堆乱码,你必须重新用二进制传输模式上传。 当然现在很多的FTP服务器和客户端软件能自动识别文件类型,并采取相应的传输方式。 备注: Unix系统下行结束字符是一个字节,即十六进制的0A。 而Windows系统的却是两个字节,即十六进制的0D0A。 可能你会说在Windows上看某个文件是没有换行的,里面是一个个的黑方块, 但其实是因为Windows辨识行结束字符的问题,只要你换上Notepad2等加强型的记事本就能一目了然。