文件传输协议(FTP)

因特网上使用的最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存储权限。它屏蔽了各个计算系统的细节,因而适合于在异构网络中的任意计算机之间传输文件。

FTP提供以下功能:

  1. 提供不同种类的主机系统之间的传输能力(主机之间的软硬件可以不同)

  2. 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力

  3. 以匿名FTP的方式提供共用文件共享的能力

工作原理

FTP采用的是客户/服务器模式(C/S模式),它使用TCP可靠的传输服务。一个FTP进程可以同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求

FTP工作步骤如下:

  1. 打开熟知端口21(控制端口),使客户进程能连接上

  2. 等待客户进程发送连接请求

  3. 启动从属进程来处理客户进程发来的请求(文件的增删查改)。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。

  4. 回到等待状态,继续接受其他客户进程的请求

FTP服务器必须在整个会话期间内保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来。服务器必须追踪用户在远程目录树上当前的位置。

控制连接与数据连接

 文件传输协议(FTP)_第1张图片

FTP在工作时会使用两个并行的TCP连接,其中一个是控制连接(端口号21),另一个是数据连接(端口号20)。使用两个不同的端口号可以使协议更加简单和容易实现。

控制连接

服务器监听21号端口,等待端口的连接。控制连接用来传输控制信息(如连接请求、传送请求),控制信息都以7位ASCII格式传送。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程。控制连接不用来传输文件。在文件传输时还可以使用控制连接(如客户在传输中途发送一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态

 

数据连接

服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建"数据传送进程"和"数据连接"数据连接用来连接客户端和服务器端的数据传输进程,数据传送进程实际完成文件的传送,在传送完毕后关闭"数据传送连接"并结束运行(而控制连接仍然保持打开状态)

数据连接有两种方式:主动模式PORT和被动模式PASV

主动模式 PORT

客户端连接到服务器的21端口,登陆成功后要读取数据时,客户端随即开放一个端口,并发送命令告诉服务器,服务器收到PORT命令和端口号之后,通过20端口和客户端开放的端口连接,发送数据

被动模式 PASV

客户端连接到服务器的21端口,登陆成功后要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端。客户端再连接到服务器开放的端口进行数据传输。

我们可以看到:服务器是使用主动模式还是被动模式,选择权在客户端而不是服务器端。主动模式是客户端连接到固定的熟知端口号20,被动模式是客户端连接到服务器端的随机的端口号(该端口号大于1023)

FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外传送的。使用FTP时,如果要修改服务器上的文件,则需要先将这个文件放到本地,之后再把修改后的副本传送到服务器。这样来回很浪费时间,所以来了个NFS协议,这个协议允许进程打开一个远程文件。并且能在该文件的特定位置开始读写数据。这样NFS可以使用户复制一个大文件中的一个很小的片段。

主机A想下载文件ftp://ftp.abc.edu.cn/file,大致描述下载过程中主机和服务器的交互过程

  1. 建立一个TCP连接,连接到服务器ftp.abc.edu.cnd的21号端口,然后发送登陆账号和密码

  2. 服务器返回登陆成功信息后,主机A打开一个随机的端口,将该端口号发送给服务器

  3. 主机A发送读取文件命令,内容为 get file 服务器使用20号端口建立一个TCP连接到主机A的随机打开端口

  4. 服务器把文件内容通过第二个连接发送给主机A,传输完毕后关闭连接(21号端口建立的控制连接不会断开)

你可能感兴趣的:(网络,服务器,tcp/ip)