FTP文件传输协议

时间:2021-03-02 18:48:57

FTP工作在TCP/IP模型的应用层,基于的传输协议是TCP,FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。


FTP的主要特征:

1.控制连接是建立在客户协议解释器和服务器协议解释器之间用于交换命令与应答的通信链路。

2.数据连接是传输数据的全双工连接。传输数据可以发生在服务器数据传输过程DTP和客户DTP之间,也可以发生在两个服务器的DTP之间。


文件类型:

1.ASCII码文件类型(默认选择),以NVT ASCII码形式通过数据连接传输;

2.EBCDIC文件类型。该文本文件传输方式要求两端都是EBCDIC系统;

3.图像文件类型(也成为二进制文件类型),数据发送形式呈现为一个连续的比特流。


数据结构:

1.文件结构(File Structure)字节流,无结构;

2.记录结构(Record Structure)文件被划分为记录,用于文本文件;

3.页结构(Page Structure)文件被划分为页,每页有页号和页头。可以进行随机存取或顺序存取。


传输方式:

FTP的传输模式有流模式、块模式和压缩模式:

1.流模式:数据以字节流的形式传送

-记录结构

-文件结构

2.块模式:文件以块的形式传送,块带有自己的头部分。头字节包括16位计数域和8位描述子代码

3.压缩模式:压缩模式中,因为数据是压缩过的,对于增加带宽有很多好处。


块模式头字节的结构

FTP文件传输协议


描述子代码在描述子字节中的位标记说明

FTP文件传输协议


FTP中的客户端-服务器模型

FTP客户端与服务器之间要建立双重连接,一个是控制连接,一个是数据连接。

控制连接:NVT ASCII

数据连接:文件类型、数据结构、传输方式

FTP文件传输协议

    建立双重连接的原因是:FTP是一个交互式会话系统,某客户每次调用FTP,便与服务器建立一次会话,会话以控制连接来维持。

    客户端每提出一个请求,服务器与客户端建立一个数据连接,进行实际的数据(比如文件)传输,一旦数据传输结束,数据连接相继撤销,但控制连接依然存在,客户端可以继续发出命令。

    客户可以撤销控制连接(close命令),也可以退出FTP会话(quit命令)。


FTP服务器的实现是由一组FTP进程完成的。

服务器FTP进程:由协议解释器PI和数据传输过程DTP组成。

客户端FTP进程:由PI、DTP和用户接口组成。


传输和控制采用独立的连接方式具有以下三方面的优点:

1.使FTP协议更加简单并且更容易实现,例如控制连接可以直接采用Telnet协议实现,FTP数据连接不会与FTP命令混淆起来;

2.在数据连接结束后,控制连接仍然保留着,它能够在新的传输连接时被使用;

3.发送方与接收方在所有的数据都到达时可以在数据连接上用文件结束来通知另一方,从而达到命令传输的功能。


FTP使用Telnet协议进行控制连接。


FTP文件传输协议

通信:

    FTP使用客户端/服务器模式,涉及到五个进程和两个相关。

    服务器首先运行一个本地FTP主服务进程,当客户端用户输入open或ftp命令后,客户端指定一个远程计算机时,建立一个客户端控制进程,本地应用成为一个FTP客户端,建立了与自己的半相关。

    然后,客户端用TCP建立与指定计算机上的FTP服务器之间的控制连接。

    服务器接收到客户端的请求后,派生一个服务器控制进程,该进程与客户端控制进程建立起控制连接,即相关,双方进入会话状态。

    客户端要进行数据传输时,派生一个客户端数据传输进程,并在一个非默端口上被动打开,通过控制连接,客户端用port将端口号发送给服务器控制进程。

    服务器控制进程接收到后,派生一个服务器数据传输进程,该进程建立一个自己的半相关(20),并向客户端数据进程发出连接请求,与客户端数据传输进程建立相关,双方建立数据传输。

    数据传输结束后,关闭数据连接,双方数据传输进程结束,但控制进程仍然存在,然后可以再重新发起新的数据传输服务。


FTP命令与响应

    FTP命令主要用于控制连接,可以直接采用Telnet协议实现,所以FTP命令同Telnet命令包括中断进程、Telnet的同步信号、查询服务器、带选项的Telnet命令等。

    命令以NVT ASCII码形式传送,要求在每行结尾都要CR、LF对。

FTP文件传输协议

FTP文件传输协议


    FTP响应都是ASCII码形式的3位数字,响应也是以NVT ASCII码形式传送,要求在每行结尾都要返回CR、LF对。

FTP文件传输协议

匿名FTP的用途:

    从前面的讲解可知,使用FTP时必须首先利用Telnet协议登录,获得远程主机相应的权限,才能上传和下载文件。

    本地主机必须具有用户ID和口令,获得远程计算机的适当授权,否则便无法传送文件,Internet上的FTP主机很多,不可能要求每个用户在每一台主机上拥有帐号。

    匿名FTP无需本地主机成为远程计算机的注册用户,从而解决了这个问题。


匿名FTP机制:

    远程计算机建立了名为anonymous的用户特殊ID,这样Internet上的任何人在任何地方都可使用该用户ID,下载文件,而无需成为其注册用户。

    匿名FTP主机的连接使用方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,其口令可以是客户端自己喜欢的任意字符串。