`
megocdy
  • 浏览: 25843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ftp理论

    博客分类:
  • java
 
阅读更多

当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。

当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。

 

用户通过C程序向S程序发出命令,S程序执行用户所发出的命令,并将执行的结果返回到C。比如说,用户发出一条命令,要求S向用户传送某一个文件的一份拷贝,S会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序

功能很简单:回复inetd收到的连接请求,并满足这些要传输文件的请求。

在windows操作系统的安装过程中,通常都安装了tcp/ip协议软件,其中就包含了ftp客户程序。

 

FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

 

  1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

 

  但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。

 

  2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

 

  如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

 

  5. FTP的工作方式

 

  FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

 

  下面介绍一个这两种方式的工作原理:

 

  Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

 

  Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

 

  很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

 

 FTP协议需要两个端口,一个端口是作为控制连接端口,也就是FTP的21端口,用于发送指令给服务器以及等待服务器响应;另外一个端口用于数据传输端口,PORT模式(端口号为20),是用建立数据传输通道的,主要作用是从客户向服务器发送一个文件,从服务器向客户发送一个文件,从服务器向客户发送文件或目录列表。

分享到:
评论

相关推荐

    FTP服务器理论详解

    FTP服务器理论详解 FTP(File Transfer Protocol,文件传输协议)是一种古老的协议,在Internet处于实验的时候就已出现了。FTP协议是TCP/IP应用层的子协议,主要用于文件传输。FTP协议的出现可以追溯到1971年,当时...

    银行FTP系统业务介绍

    FTP理论的理解: FTP的核心概念是对内部资金设定价格,分为负债(存款)的收购价和资产(贷款)的成本价。具体操作中,银行设立内部资金中心,遵循一定的定价规则,例如基于资金期限和利率属性,对每一笔资金的流入...

    ftp搭建服务器

    #### 一、FTP理论理解 FTP(File Transfer Protocol),即文件传输协议,是一种用于在网络上进行文件传输的标准协议。FTP的核心功能是让用户可以上传与下载文件到远程计算机上,实现文件共享的目的。 - **工作原理**...

    二级分行内部资金转移定价机制研究.doc

    FTP理论价格作为实际价格的基准,实际执行的价格会围绕基准上下浮动。文档深入分析了定价模型的形成机理,提出了如何确定上存资金和借用资金的基准利率和执行利率的模型,以及解决定量因素和相关问题的方法。 在...

    ftp 上传文件及ftp开发文档

    通过研究这个文件,你可以看到如何将上述理论知识应用到实践中。它可能包含了实现FTP命令的函数,以及与服务器交互的逻辑。通过阅读和分析这段代码,你可以加深对FTP上传文件过程的理解,并学习如何在C语言中编写...

    FtpServer_源码

    FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件传输。FTP Server是实现FTP服务的...通过阅读和研究源码,我们可以了解到如何将理论知识应用于实际项目中,提升自己的编程能力。

    FTP客户端服务端源码

    "VC++FTP编程实例"很可能包含了上述概念的实际应用,通过分析源码,我们可以学习如何将理论知识转化为实际代码。 FTP服务器端则负责接收客户端的连接请求,处理FTP命令,并执行相应的操作。"SFTP"可能是指Secure ...

    FTP.rar_FTP服务器_ftp_ftp vc_ftp 服务器

    FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在...同时,查阅相关的FTP协议文档,如RFC 959,以加深理论理解。对于VC编程,熟悉MFC(Microsoft Foundation Classes)库将有助于理解和修改代码。

    完整FTP客户端程序源码

    FTP(File Transfer Protocol)是...通过研究这个源码,开发者可以学习到如何将理论知识应用于实际项目,提升网络编程、C++编程和GUI设计的能力。对于想要深入了解FTP协议或MFC框架的人来说,这是一个很好的学习资源。

    ftp(VC).rar_FTP 下载_c++ ftp_ftp_ftp vc_vc ftp

    FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件传输。在本项目中,"ftp(VC).rar" 是一个压缩包,其中...同时,这也是一个很好的实战练习,有助于将理论知识应用到实际开发中。

    C#FTP服务器源码

    总的来说,C#FTP服务器源码是一个很好的学习项目,它将理论知识与实际编程相结合,有助于提升C#程序员在网络编程领域的专业能力。通过这个项目,初学者不仅可以深入了解FTP协议,还能熟练掌握C#语言和.NET框架的...

    FTP协议的实现程序

    在描述中提到的PDG文件可能是某个电子书或文档的格式,可能包含FTP协议的详细理论讲解以及代码示例。这些文件可能涵盖了FTP协议的基础概念、工作原理、命令结构、数据传输模式,甚至可能深入到FTP库的使用,如Python...

    FTP客户端的设计与实现

    ### FTP客户端的设计与实现 ...此外,对 FTP 协议的基础理论和工作原理的理解也是实现这一目标的关键。随着技术的发展,虽然有更多现代化的文件传输方式出现,但 FTP 依然因其简单性和可靠性而在某些场景下被广泛应用。

    FTP工具32位和64位

    - **64位系统**:基于x86-64架构,能够处理更宽的64位数据,提供更大的内存寻址能力,理论上最高可达16EB。64位系统适合运行大型应用、多任务处理以及需要大量内存的工作环境。 2. **FTP工具的选择**: - **32位...

    qt ftp上传下载

    在IT领域,Qt是一个强大的C++图形用户界面应用程序框架,广泛用于开发跨平台的...同时,解压并分析`myftp`这个文件,它可能是作者提供的示例代码,通过阅读和运行这些代码,将有助于巩固理论知识并提高实际编程技能。

    FTP协议分析

    FTP(文件传输协议)是网络协议中的重要组成部分,它允许用户在客户端和服务器之间进行文件传输。FTP协议是基于TCP/IP协议的应用层协议,...通过综合分析和实验操作,能够全面掌握FTP协议的理论知识和实际应用技能。

    ftpserver mina框架,适合学习

    7. **实战项目**:创建一个简单的FTP服务器并进行测试,实践是检验理论的最好方式。你可以尝试添加自定义功能,如限制并发连接数、文件大小限制等。 8. **异常处理**:理解如何处理网络通信中的各种异常情况,如...

    基于MFC编写的FTP客户端(使用VS)

    在这个FTP客户端项目中,你将学习到网络编程的基本原理,如套接字API的使用,以及如何将理论知识应用于实际问题。 总的来说,这个基于MFC的FTP客户端项目涵盖了计算机网络、Socket编程、MFC GUI设计和FTP协议实现等...

    java ftp服务器实例

    Java FTP服务器实例是一个非常实用的学习资源,特别是对于那些初次接触FTP(文件传输协议)服务器开发的Java程序员。...通过阅读和分析源代码,你可以学习到如何将理论知识应用到实际项目中,提升你的编程能力。

    ftp.rar_ftp_java ftp

    FTP(File Transfer Protocol)是一种用于在互联网上进行文件传输的标准协议。在Java中,我们可以使用Apache Commons ...如果你需要进一步的帮助,建议直接打开"ftp.txt"查看源代码并根据上述理论知识进行理解和应用。

Global site tag (gtag.js) - Google Analytics