FTP协议基本介绍

基本介绍

FTP(File Transfer Protocol,文件传送协议)是互联网上使用得最广泛的文件传送协议,FTP提供交互式的访问,允许客户指明文件的类型与格式(例如:指明是否使用ASCII码)并允许文件具有存取权限(例如:访问文件的用户必须经过授权并输入有效的口令),FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件,RFC959很早就成为了互联网的正式标准,在互联网发展的早期阶段,用FTP传送文件约占整个互联网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还小于FTP所产生的通信量,到了1995年WWW的通信量才首次超过了FTP

协议介绍

网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中,初看起来在两台主机之间传送文件是很简单的事情,其实这往往非常困难,原因是众多的计算机厂商研制出的文件系统多达数百种且差别很大,经常遇到的问题是:

  • 访问控制方法不同
  • 计算机存储数据的格式不同
  • 文件的目录结构和文件命名的规定不同
  • 对于相同的文件存取功能,操作系统使用的命令不同

文件传送协议FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务,FTP的服务器进程由两大部分组成:主进程负责接受新的请求,另外有若干个从属进程负责处理单个请求,主进程工作步骤如下:

  • 开启端口(21),使客户进程能够连接上
  • 紧接着就是等待客户进程发出连接请求
  • 启动从属进程处理客户进程发来的请求,从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程
  • 回到等待状态,继续接受其他客户进程发来的请求,主进程与从属进程的处理是并发进行的

FTP的工作情况如下图所示,图中的椭圆圈表示在系统中运行的进程,图中的服务器端有两个从属进程:控制进程和数据传送进程,为简单起见,服务器端的主进程没有画上,客户端除了控制进程和数据传送进程外还有一个用户界面进程用来和用户接口,在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:"控制连接"和"数据连接",控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件,实际用于传输文件的是"数据连接",服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建"数据传送进程"和"数据连接",用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭"数据传送连接"并结束运行,由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外(out of band)传送的

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口21,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接,接着服务器进程用自己传送数据的熟知端口20与客户进程所提供的端口号建立数据传送连接,由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱,使用两个独立的连接的主要好处是使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制。例如:客户发送"请求终止传输"。FTP并非对所有的数据传输都是最佳的,例如:计算机A上运行的应用程序要在远地计算机B的一个很大的文件末尾添加一行信息,若使用FTP则应先将此文件从计算机B传送到计算机A,添加上这一行信息后,再用FTP将此文件传送到计算机B,来回传送这样大的文件很花时间,实际上这种传送是不必要的,因为计算机A并没有使用该文件的内容,然而网络文件系统NFS则采用另一种思路,NFS允许应用进程打开一个远地文件并能在该文件的某一个特定的位置上开始读写数据,这样NFS可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。对于上述例子,计算机A中的NFS客户软件把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机B中的NFS服务器,NFS服务器更新文件后返回应答信息,在网络上传送的只是少量的修改数据。

协议扩展

TCP/IP协议族中还有一个简单文件传送协议TFTP(Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议,TFTP的版本2是互联网的正式标准[RFC 1350]。虽然TFTP也使用客户服务器方式,但它使用UDP数据报,因此TFTP需要有自己的差错改正措施,TFTP只支持文件传输而不支持交互,TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

TFTP可用于UDP环境,例如:当需要将程序或文件同时向许多机器下载时就往往需要使用TFTP,同时TFTP代码所占的内存较小,这对较小的计算机或某些特殊用途的设备是很重要的,这些设备不需要硬盘只需要固化了TFTP、UDP和IP的小容量只读存储器即可,接通电源后设备执行只读存储器中的代码,在网络上广播一个TFTP请求,网络上的TFTP服务器就发送响应其中包括可执行二进制程序,设备收到此文件后将其放入内存,然后开始运行程序,这种方式增加了灵活性,也减少了开销

TFTP的主要特点是:

  • 使用很简单的首部
  • 可对文件进行读或写
  • 支持ASCII码或二进制传送
  • 数据报文按序编号,从1开始
  • 每次传送的数据报文中有512字节的数据,但最后一次可不足512字节

TFTP的工作很像停止等待协议,发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号,发完数据后在规定时间内收不到确认就要重发数据PDU,发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU,这样就可保证文件的传送不致因某一个数据报的丢失而告失败

文末小结

在本篇文章中我们对FTP协议进行了简单的介绍说明,讨论了其工作原理并引申出了TFTP协议,后期我们将介绍如何搭建FTP服务端以及FTP客户端的使用方法

猜你喜欢

转载自blog.csdn.net/Fly_hps/article/details/135012051