ROS软路由论坛 ROSABC.com 网络方案网络工程交流

 找回密码
 会员注册

QQ登录

只需一步,快速开始

FileZilla 源代码分析9

2014-11-1 19:24| 发布者: admin| 查看: 306| 评论: 0

摘要:   摘要:FileZilla是一个免费开源的FTP客户端软件,分为客户端版本和服务器版本,具备所有的FTP软件功能。可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户端工具,而F ...

  摘要:FileZilla是一个免费开源的FTP客户端软件,分为客户端版本和服务器版本,具备所有的FTP软件功能。可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户端工具,而FileZillaServer则是一个小巧并且可靠的支持FTP&SFTP的FTP服务器软件。

  FileZilla是一种快速、可信赖的FTP客户端以及服务器端源代码程式,具有多种特色、直觉的接口。本文就给大家分析下FileZilla的源代码。

  在进一步分析代码之前,先复习一下FTP协议,下图是FTP的结构图。

  192.168.0.1是什么客户端和服务器是通过两个连接来进行通讯的:

  一个是控制连接,也就是传输些控制命令,客户端发出FTP命令,服务器给出应答,例如:USER,PASS命令等等。这个连接中,FTP服务器的端口就是熟知的21端口,连接是由客户端发起的,例如:ftp192.168.0.1。有一点注意,用户是通过“用户接口”来操作的,一般的用户接口是指cuteFTP这些FTP客户端,或者ftp.exe这种命令行程序,用户在用户接口使用的是ftp命令,如ls,get,cd等,这些ftp命令并不是真正与FTP服务器交互的命令,这些ftp命令还需要由“用户协议解释器”翻译成真正的ftp协议命令,如USER,PASS,才能与服务器进行交互。

  一个是数据连接,即真正的文件传输是在这个连接上进行的。服务器端的数据连接端口是20,客户端的数据连接端口是随机生成的。数据连接只在传输文件时存在,文件传完后,这个连接就断了,如果需要再次传送文件,会再次建立一个数据连接(客户端的端口是随机的,不一定是上次的那个)。数据连接的模式有两种,一种是主动方式,一种是被动方式,两者的区别在于数据连接是由谁发起。

  我们来看一个典型的FTP交互过程,用的是windows的ftp.exe程序,先建立一个连接,然后ls看一下文件列表,用get命令下载一个文件,最后quit关闭。下面-d选项可以显示交互的细节,注意-->开头的行是ftp客户端发给FTP服务器的请求,3个数字开头的行是服务器的应答,如220,331等开头的行:

  刚开始,客户端发出建立连接的请求:

  然后服务器发送欢迎信息,并要求输入用户名:

  客户端输入用户名robert,然后回车:

  服务器要求输入密码:

  客户端输入密码,然后回车:

  服务器通过密码验证:

  客户端键入ls命令

  ftp.exe生成FTP命令:PORT,告诉服务器客户端的随机端口是什么

  下面客户端要求下载Manual.txt文件

  最后客户端退出

  仔细阅读的交互过程,可以发现,用户手工输入的一个FTP命令,可能会被ftp.exe处理成与FTP服务器的多次交互。如ls,get命令。

  要想详细了解FTP命令的细节,可以参见FTP的RFC,或者相关的资料,不过由于我们阅读源代码的主要目的不是研究FTP细节,而在于掌握高并发的网络编程的技术,所以,我们只以这个简单的FTP交互来看一下,在代码中这个过程是如何实现的

  通过文章完整的描述,大家应该知道了FileZilla源代码,希望对大家有帮助!

  【编辑推荐】

不良信息举报Q:2000617

软路由

不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流

GMT+8, 2025-10-27 06:30 , Processed in 0.030392 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部