ftp协议

  • FTP 是File Transfer Protocol( 文件传输协议 )的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
    工作原理

    举例说明

      以下载文件为例,当你启动FTP从远程计算机拷贝文件时实际上启动了两个程序:一个本地机上的FTP客户程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。

    文件传输协议

      简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议。(文件传输协议)

     

      一般来说,用互联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,而连接在Internet上的计算机有上千万台,并且这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。

    服务器系统

      与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

     

      在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

     

      使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

     

      匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。

     

      通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。

     

      值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。

     

      当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。

     

      作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet上找到。这是Internet吸引我们的重要原因之一。

    匿名ftp

      匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。

     

      匿名FTP是Internet网上发布软件的常用方法。Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。像这样的程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。

     

      Internet中的有数目巨大的匿名FTP主机以及更多的文件,那么到底怎样才能知道某一特定文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie服务器所要完成的工作。Archie将自动在FTP主机中进行搜索,构造一个包含全部文件目录信息的数据库,使你可以直接找到所需文件的位置信息。

     
    FTP的用户分类及权限归属

    Real帐户

      这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。

    Guest用户

      在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。

    Anonymous(匿名)用户

      这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。

     

      在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间 带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。[1]

     

     
    FTP客户端

      ftp客户端。体积可以说是最小的了,只有330K,免费中文版不需要汉化和破解的缘故吧。功能也非常强大,应有尽有。可以支持多线程上传;还支持直接上传压缩包后在空间上直接解压。

     

      8uftp是非常精辟的ftp客户端。目前体积最小的FTP客户端工具。

     

      终身免费中文版,非汉化版,非破解版。

     

      涵盖其它FTP工具功能

     

      独家支持多线程上传,使上传速度更快更稳定。

     

      同时支持直接上传压缩包,可在空间上直接解压。也可以在空间上压缩后直接下载压缩包。

     

      8uftp 2.6 升级功能

     

      1.增加远程ftp目录的复制URL功能

     

      2.增加远程ftp目录和本地目录对比的工具

     

  • What is FTP 

     FTP是另一个常见的应用程序,属于网络协议组的 应用层 ,用于文件传输的 I n t e r n e t标准。与Te l n e t类似,F T P最早的设计是用于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同字符集。

  • FTP协议介绍

     FTP与一般应用不同,它采用 两个 T C P连接 来传输一个文件。

1) 控制连接以通常的客户服务器方式建立。服务器以被动方式打开众所周知的用于F T P的端口(21) ,等待客户的连接。客户则以主动方式打开 T C P端口2 1,来建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器,并传回服务器的应答。由于命令通常是由用户键入的,所以 I P对控制连接的服务类型就是“最大限度地减小迟延” 。

2) 每当一个文件在客户与服务器之间传输时,就创建 一个数据连接。 (其他时间也可以创建,后面我们将说到) 。由于该连接用于传输目的,所以I P对数据连接的服务特点就是“最大限度提高吞吐量” 。数据连接有以下三大用途:从客户向服务器发送一个文件、从服务器向客户发送一个文件、从服务器向客户发送文件或目录列表。

       上图描述了客户与服务器以及它们之间的连接情况。从图中可以看出,交互式用户通常不处理在控制连接中转换的命令和应答。这些细节均由两个协议解释器来完成。标有“用户接口”的方框功能是按用户所需提供各种交互界面(全屏幕菜单选择,逐行输入命令,等等) ,并把它们转换成在控制连接上发送的 F T P命令。类似地,从控制连接上传回的服务器应答也被转换成用户所需的交互格式。从图中还可以看出,正是这两个协议解释器根据需要激活文件传送功能。

  • FTP协议的details

       FTP有两种使用模式: 主动和被动 。主动模式要求客户端和服务器端 同时打开 并且 监听一个端口 以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,一般选择被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

      一般来讲,控制连接一直保持到客户-服务器连接的全过程,但数据连接可以根据需要随时开启和结束。而通用的传输方式( U n i x环境下唯一的传输方式)是流方式,并且文件结尾是以关闭数据连接为标志。这意味着对每一个文件传输或目录列表来说都要建立一个全新的数据连接。一个典型的主动方式的过程如下:

1) 客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为客户端随机端口x,远程端口为服务器21。正由于是客户发出命令要求建立数据连接,所以数据连接是在客户的控制下建立的。

2) 客户通常在客户端主机上为所在数据连接端选择一个临时端口号。客户从该端口发布一个被动的打开。

3) 客户使用PORT命令从控制连接上把端口号(数据连接)发向服务器。

4) 服务器在控制连接上接收端口号,并向客户端主机上的端口发布一个主动的打开。服务器数据连接端一直使用端口20



为了跟了解FTP的工作机制,启用wireshark进行抓包得到如下的结果:

       图中亮起的一行是本机37875端口向服务器的ftp-data(20)端口发送结束数据传输连接的【FIN,ACK】请求(在前面几行还可以见到连接同步请求SYN)。

       控制连接的两个端口号分别是40938和ftp(21)。

       此外,在百度百科中看见貌似启用数据连接时用的是控制连接的随机端口号+1,虽然在《TCP/IP详解》中所举例子都是符合这一说法,但是其在文中详细说明的时候并没有这样表述。而且从抓包实验中也可以看到,37875与40938貌似没有服从这种+1的关系。

  • FTP主被动连接(PORT和PASV )

       主动连接 PORT和被动连接 PASV 方式 他们的区别就是在连接上服务器之后创建数据通道的时候:

  1. PORT 模式是建立从服务器高端口连到客户端20端口数据连接PASV 模式是建立客户高端口连到服务器返回的数据端口的数据连接PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一条数据链路来传送数据。
  2. PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端向服务器的空闲端口发送连接请求,建立一条数据链路来传送数据。
  • FTP的IPv6扩展(EPRT和EPSV)

      FTP仅仅提供了建立在IPv4上进行数据通信的能力,它基于网络地址是32位这一假设。比如原来的PORT命令格式如下PORT n1 ,n2 ,n3 ,n4 ,n5 ,n6 那么有客户端I P地址(n1 .n2 .n3 .n4)和端口(n5×2 5 6 +n6)。但是,当IPv6出现以后,地址就比32位长许多了。原来对FTP进行的扩展在多协议环境中有时会失败。针对IPv6对FTP再次进行扩展,两个FTP命令PORT和PASV通过扩展后,我们称它们为EPRT和EPSV。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值