FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。

FTP特点

1.交互存取。大多数的FTP的实现另外提供了一个交互接口,允许用户与远程服务器之间的交互。
2.格式规范。允许客户指明存储数据的类型和表示方法。例如,用户可指明文件包含的是文本还是二进制数据吗,以及文本文件是使用的ASCII字符集还是EBCDIC字符集。
3.存取授权控制。要求客户在请求文件传送前吧登录名和口令发送给服务器,已获取存取许可。服务器将拒绝不能提供有效登录名和口令的客户的存取。

FTP进程模型

FTPc存储图片流JAVA ftp文件存储_服务器


进程只接受和处理用户来自客户的控制连接。另外,还需要使用一个额外的进程和额外的TCP连接来处理每次的数据传送

客户的控制进程使用一个TCP连接连到服务器的控制进程,而相关的 数据传送进程使用它们自己的TCP连接。一单控制连接消失,会话也就终止了,并且终止两端的软件所有的数据传送进程。

FTP端口

一个是数据端口,一个是控制端口。控制端口一般为21,而数据端口不一定是20,这和 FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定 。

匿名FTP

虽然FTP中的存取授权机制有助于保护敏感信息不被随意的存取,但是要求输入用户名和口令的措施使用户连公共文件无法存取。
为了提供对公共文件的存取,大多数TCP/IP网点使用匿名FTP。匿名FTP访问意味着不需要账号或者口令。

文件传送安全措施

1.SSL-FTP:安全套接字层FTP。在使用SSL-FTP时,所有的传送都是保密的,无论是正在传送的数据还是登陆口令。
2.sftp:安全文件传送程序。它建立在SSH隧道的基础上,不能单独的使用。因此,sftp传送要通过一条SSH连接进行复用,这条SSH连接同时也向其他应用程序提供安全性。
3.scp:安全复制。与sftp一样的是,scp使用的SSH通道,并且远程计算机上的文件存取要经过SSH服务器的中继。与sftp不一样的是,scp使用与UNIX文件复制命令cp相同的语法。因此,scp不仅可以用于命令中,也可以用于脚本中。

TFTP

FTP想对于编程来说复杂且困难。许多应用程序不需要FTP提供的全部功能,也无法承受它的复杂性。所以出现了TFTP(简单文本传送协议),基于UDP实现。它的端口号为69。
只限于简单的文件传送操作,不提供存取授权。
与FTP不同的是TFTP不需要可靠的数据流运输服务。

NFS

NFS(网络文件系统)以提供透明、一体化的共享文件存取。NFS可嵌入到操作系统中。

FTPc存储图片流JAVA ftp文件存储_FTPc存储图片流JAVA_02


当应用程序请求一个文件操作时,将自动的传给本地文件系统软件或者NFS客户,具体取决于文件是位于本地磁盘还是远程机器上。

NFS协议选择了三个独立的部分来构造:NFS本身、远程过程调用(RPC)、外部数据表示(XDR)。这样做的目的使这三部分之间相互独立,让其他软件(应用程序和其他协议)也可以使用RPC和XDR。
NFS本质是通过RPC调用实现的。