iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何进行FileZilla的源代码分析
  • 308
分享到

如何进行FileZilla的源代码分析

2023-06-16 21:06:18 308人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关如何进行FileZilla的源代码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,

这篇文章将为大家详细讲解有关如何进行FileZilla的源代码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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

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

如何进行FileZilla的源代码分析

图1

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

一个是控制连接,也就是传输些控制命令,客户端发出FTP命令,服务器给出应答,例如:USER,PASS命令等等。这个连接中,FTP服务器的端 口就是熟知的21端口,连接是由客户端发起的,例如:ftp 192.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等开头的行:

C:\>ftp -d localhost

Connected to dell.

220-FileZilla Server version 0.9.18 beta

220-written by Tim Kosse (Tim.Kosse@gmx.de)

220 Please visit Http://sourceforge.net/projects/filezilla/

User (dell:(none)): robert

---> USER robert

331 PassWord required for robert

Password:

---> PASS test

230 Logged on

ftp> ls

---> PORT 127,0,0,1,4,173

200 Port command successful

---> NLST

150 Opening data channel for directory list.

Manual.txt

226 Transfer OK

ftp: 收到 175 字节,用时 0.00Seconds 175000.00Kbytes/sec.

ftp> get Manual.txt

---> PORT 127,0,0,1,4,174

200 Port command successful

---> RETR Manual.txt

150 Opening data channel for file transfer.

226 Transfer OK

ftp: 收到 17319 字节,用时 0.09Seconds 192.43Kbytes/sec.

ftp> quit

---> QUIT

221 Goodbye

C:\>

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

C:\>ftp -d localhost // 建立连接

Connected to dell. // 连接已建立

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

220-FileZilla Server version 0.9.18 beta

220-written by Tim Kosse (Tim.Kosse@gmx.de)

220 Please visit http://sourceforge.net/projects/filezilla/

User (dell:(none)):

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

---> USER robert // ftp.exe生成FTP命令:USER,发送给服务器

服务器要求输入密码:

331 Password required for robert

Password:

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

---> PASS test // ftp.exe生成FTP命令:PASS,发送给服务器

服务器通过密码验证:

230 Logged on

客户端键入ls命令

ftp> ls

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

---> PORT 127,0,0,1,4,173 // 127,0,0,1是IP地址,4 * 256 + 173 = 1197是随机端口号

200 Port command successful // 服务器响应PORT命令

---> NLST // 客户端发出NLST命令,要求列出文件列表

150 Opening data channel for directory list. // 服务器会在20端口与客户端的1197端口建立数据连接,传输数据,注意ls命令的结果是在“数据连接”中传输的

Manual.txt // 只有一个文件

226 Transfer OK // FTP服务器响应,传输完毕

ftp: 收到 175 字节,用时 0.00Seconds 175000.00Kbytes/sec. // FTP客户端显示的传输结果

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

ftp> get Manual.txt

---> PORT 127,0,0,1,4,174 // 告诉服务器客户端新的随机端口4 * 256 + 174 = 1198

200 Port command successful // // 服务器响应PORT命令

---> RETR Manual.txt // 告诉服务器下载Manual.txt文件

150 Opening data channel for file transfer. // 服务器会在20端口与客户端的1198端口建立数据连接,传输数据

226 Transfer OK // FTP服务器响应,传输完毕

ftp: 收到 17319 字节,用时 0.09Seconds 192.43Kbytes/sec. // FTP客户端显示的传输结果

***客户端退出

ftp> quit

---> QUIT // 发出QUIT命令

221 Goodbye // 服务器***响应

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

关于如何进行FileZilla的源代码分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行FileZilla的源代码分析

本文链接: https://www.lsjlt.com/news/285340.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何进行FileZilla的源代码分析
    这篇文章将为大家详细讲解有关如何进行FileZilla的源代码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,...
    99+
    2023-06-16
  • 怎么进行FileZilla源代码分析
    怎么进行FileZilla源代码分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色...
    99+
    2023-06-16
  • 怎样进行FileZilla的源代码分析
    本篇文章为大家展示了怎样进行FileZilla的源代码分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色、直...
    99+
    2023-06-16
  • 如何用源代码分析FileZilla
    这期内容当中小编将会给大家带来有关如何用源代码分析FileZilla,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色...
    99+
    2023-06-16
  • 怎么用源代码分析FileZilla
    本篇文章给大家分享的是有关怎么用源代码分析FileZilla,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代...
    99+
    2023-06-16
  • 如何进行Nginx内核优化的源代码分析
    如何进行Nginx内核优化的源代码分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Nginx内核优化在不断的使用中有很多的问...
    99+
    2024-04-02
  • 如何进行Netlink源码及实例的分析
    本篇文章给大家分享的是有关如何进行Netlink源码及实例的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言这几天在看 ipvs 相关代码的时候又遇到了 netlink ...
    99+
    2023-06-15
  • 如何进行C++代码的性能分析?
    如何进行C++代码的性能分析在开发C++程序时,性能是一个重要的考量因素。优化代码的性能可以提高程序的运行速度和效率。然而,想要优化代码,首先需要了解它的性能瓶颈在哪里。而要找到性能瓶颈,首先需要进行代码的性能分析。本文将介绍一些常用的C+...
    99+
    2023-11-02
    代码 C++ 性能分析 C++性能分析的关键词:
  • 如何进行Redux的源码解析
    如何进行Redux的源码解析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。预热redux 函数内部包含了大量柯里化函数以及代码...
    99+
    2024-04-02
  • 如何进行jQuery源码的整体框架分析
    这篇文章将为大家详细讲解有关如何进行jQuery源码的整体框架分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。先附上jQuery的代码结构。JS代码(fu...
    99+
    2024-04-02
  • 如何进行jQuery EasyUI 1.2.6源码合集的分析
    如何进行jQuery EasyUI 1.2.6源码合集的分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。相信关注过jQuer...
    99+
    2024-04-02
  • 如何进行HashMap扩容机制源码分析
    这期内容当中小编将会给大家带来有关如何进行HashMap扩容机制源码分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体看源码之前,我们先简单的说一下HashMap的底层数据结构  1、HashMap底...
    99+
    2023-06-02
  • 怎么进行ActionInvoker源码分析
    本篇内容介绍了“怎么进行ActionInvoker源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!throw new&nbs...
    99+
    2023-06-17
  • 如何进行C++代码的资源管理?
    如何进行C++代码的资源管理以C++为例,资源管理是程序开发中非常重要的一环。良好的资源管理可以提高程序的性能和稳定性,减少内存泄漏和资源浪费。本文将介绍一些常用的C++资源管理技术和最佳实践。1.使用智能指针:C++11引入了智能指针的概...
    99+
    2023-11-02
    内存管理 资源分配 C++资源管理
  • 如何进行C++代码的资源优化?
    如何进行C++代码的资源优化在计算机编程中,资源优化是一项非常重要的工作。资源的优化可以帮助我们提高程序的性能、减少内存占用以及节省宝贵的计算资源。在C++编程中,我们可以采取一些方法来进行代码的资源优化,本文将介绍一些常用的方法和技巧。一...
    99+
    2023-11-04
    内存管理(Memory Management)
  • 如何进行Kafka 1.0.0 d代码示例分析
    这篇文章将为大家详细讲解有关如何进行Kafka 1.0.0 d代码示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。package kafka.demo;import ...
    99+
    2023-06-02
  • 如何进行C#打印设置实现源码的分析
    本篇文章为大家展示了如何进行C#打印设置实现源码的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#打印设置是如何在实际编程开发中体现的呢?C#打印设置需要注意什么呢?C#打印设置常用属性是如何...
    99+
    2023-06-17
  • PHP中如何进行代码分析和重构?
    PHP作为一门非常流行的Web开发语言,拥有丰富的开源框架和工具。然而,由于PHP比较灵活,开发人员的编码风格和习惯各不相同,可能导致代码的可读性、可维护性和安全性等方面存在一定的问题。为此,本文将着重介绍如何进行PHP代码分析和重构,来提...
    99+
    2023-05-21
    PHP 重构 代码分析
  • 如何进行CCleaner恶意代码分析预警
    如何进行CCleaner恶意代码分析预警,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。2017年9月18日,Piriform 官方发布安全公告,公告称旗下的CCleaner v...
    99+
    2023-06-19
  • 如何进行数据库中间件 MyCAT 源码分析
    这篇文章将为大家详细讲解有关如何进行数据库中间件 MyCAT 源码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 概述可能你在看到这个标题会小小的吃...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作