当前位置 博文首页 > cyberduck历史版本列表,FTP服务器的实现

    cyberduck历史版本列表,FTP服务器的实现

    作者:kuangmeixiang 时间:2021-07-22 17:51

      我们在之前的文章中,曾经对FTP文件传输协议做过详细的介绍。本章,我们对如何用C语言实现FTP服务器做一个简单的介绍。
      概述
      FTP文件传输协议,是因特网上使用得最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的格式与类型,并允许文件具有存储权限。FTP屏蔽了不同操作系统之前的细节,因此适合在异构网络中任意计算机之间传送文件。
      FTP的基本工作原理
      FTP使用C/S方式,一个FTP服务器可以为多个客户进程提供服务,FTP服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干个从属进程,负责处理单个请求。
      主进程的工作步骤如下:
      打开端口号(一般为21),使客户端能通过此端口号访问;
      等待客户端发出连接请求;
      启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完后即终止,从属进程在运行期间可能会根据需要另外创建其他一些进程。
      回到等待状态,继续等待其他客户进程发来的连接请求。主进程和从属进程是并发进行的。
      在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但是控制连接并不会用于传输数据。实际传输文件的是“数据连接”。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后,就会创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外控制的。
      当客户进程向服务器进程发出建立连接请求时,通过服务器端口号21请求连接,同时会告诉服务器进程自己用于建立数据传送连接的另一个端口号。服务器一般使用端口号20同客户进程建立数据连接,由于FTP使用两个不同的端口号,所以数据连接和控制连接不会发生混乱。
      FTP使用的两个FTP连接
      综上所述,我们可以画出基本的算法流程图
      代码实现:
      首先是对命令的定义
      控制端口的定义
      主函数及其他功能的具体实现我们这里就不再赘述了,有兴趣的朋友可以关注并私信我,私信发送文字“FTP服务器源码”即可获得FTP服务器源码链接。