FTP文件传输协议两种方式的工作原理

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP server。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

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

Standard模式

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

Passive模式

在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

现在的FTP软件里面包括在IE5以上的版本里面也已经支持这两种模式了。一般一些FTP客户端的软件就比较好设置了,一般都有一个PASV的选项,比如CuteFTP,传输的方式都有Standard和PASV的选项,可以自己进行选择;另外在IE里面如果要设置成PASV模式的话可以选中工具-Internet选项-高级-为FTP站点启用文件夹视图,否则就采用Standard模式。

IE客户端的配置:

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以FTP的Standard模式在许多时候在内部网络的机器通过防火墙出去的时候受到了限制,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。当然也可以设置成功,首先要创建一条规则就是允许内部的IP连接外部的IP的21端口;第二条就是禁止外部IP的TCP 20端口连接内部IP的<1024的端口,这条是为了防止外部连接内部的常规端口;第三条验证ACK是否等于1,这个的原理就参见TCP建立连接的三次握手吧。所以如果安全的配置的话非常困难,这个时候就想起来了PASV模式,因为不用建立新的连接,所以也就不会涉及到后面的问题了。但是管理员可能不想使用PASV模式,因为这个时候FTP
Server会开放一个随机的高端口,尽管在IIS4和IIS5里面端口的范围是1024-5000,但是许多FTP Server的端口范围达到了1024-65535,这个时候在这个主动开放的随机端口上是有完全的访问权限的,如果IIS也要设置成开放的端口为1024-65535,具体方法如下:

1. regedt32

2. 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

3. 编辑-添加-数值

value Name: MaxUserPort Data Type: REG_DWORD value: 65534

所以如果遇到了有防火墙的话或者怕配置麻烦的话还是采用PASV模式比较好些,但是如果真的对安全的需求很高的话建议采用Standard模式。

在IIS中的FTP服务器端对两种客户端都支持,没有办法选择单独支持某一种客户端。

FTP服务端口号20(数据端口)加一就是FTP控制端口的号码21。

CUTFTP客户端:

或:

时间: 2024-10-03 12:51:51

FTP文件传输协议两种方式的工作原理的相关文章

FTP文件传输协议

文件传输协议(FTP:File Transfer Protocol)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接使用类似 TELNET 协议在主机间交换命令和消息. FTP 的主要功能如下: 提供文件的共享(计算机程序 / 数据): 支持间接使用远程计算机: 使用户不因各类主机文件存储器系统的差异而受影响: 可靠且有效的传输数据. FTP ,尽管可以直接被终端用户使用,但其应用主要还是通过程序实现. FTP

Java文件编译的两种方式以及在SpringMVC传参中带来的问题

一.基本概念 java编译成.class 有两种方式.使用javac,默认使用的release方式,而使用的MyEclipse工具,用的是debug模式.值得注意的是使用release模式下对于函数参数会改变. public class Test{  private static void sayHello(){   System.out.println("Hello world");  }  public static void main(String[] args){   sayH

FTPS(基于 SSL 的FTP)与 SFTP(SSH 文件传输协议)对比

SSH File transfer protocol(SFTP)也称为通过安全套接层的文件传输协议File Transfer protocol via Secure Socket Layer, 以及 FTPS 都是最常见的安全 FTP 通信技术,用于通过 TCP 协议将计算机文件从一个主机传输到另一个主机.SFTP 和 FTPS 都提供高级别文件传输安全保护,通过强大的算法(如 AES 和 Triple DES)来加密传输的数据. 但是 SFTP 和 FTPS 之间最显着的区别是如何验证和管理连

文件传输协议(FTP)必将消亡

文件传输协议(FTP)在RFC 959中定义,于1985年http://www.aliyun.com/zixun/aggregation/2952.html">10月发布.文件传输协议(FTP)被设计成为一个跨平台的.简单且易于实现的协议. 文件传输协议(FTP)有一个漫长的演化史,是互联网上最重要的应用之一,但时至今日,却已江河日下.本文作者从各方面列举了一些文件传输协议(FTP)为人诟病的缺点. 1.数据传输模式不合理 不考虑文件自身的内容,一味使用ASCII模式传输数据是不合理的.文

《计算机网络:自顶向下方法(原书第6版)》一2.3 文件传输协议:FTP

2.3 文件传输协议:FTP 在一个典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机传输(或接收来自远程主机的)文件.为使用户能访问它的远程账户,用户必须提供一个用户标识和口令.在提供了这种授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件,反之亦然.如图2-14所示,用户通过一个FTP用户代理与FTP交互.该用户首先提供远程主机的主机名,使本地主机的FTP客户进程建立一个到远程主机FTP服务器进程的TCP连接.该用户接着提供用户标识和口令,作为FTP命令的一部分在

Spring加载properties文件的两种方式

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51365707 目录(?)[+]         在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修改源代码,这样更加方便.在spring中也可以这么做,而且Spring有两种加载properties文件

详解springMVC两种方式实现多文件上传及效率比较_java

springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距. 1.下载相关jar包.需要引入的jar出了springMVC的jar包外,还需要引入com.springsource.org.apache.commons.fileupload-1.2.0.jar和com.s

原生ajax和iframe框架实现图片文件上传的两种方式_AJAX相关

大家应该可以举出几种常用的异步文件上传功能的实现方式,使用频率较多的有原生ajax和iframe框架,实现图片文件上传,下面就为大家分享图片文件上传的两种方式:原生ajax和iframe框架,供大家参考,具体内容如下 方法一:利用iframe框架上传图片 html代码如下: <div class="frm"> <form name="uploadFrom" id="uploadFrom" action="upload.

JS 动态加载js文件和css文件 同步/异步的两种简单方式_javascript技巧

/*动态添加js或css,URL:文件路径,FileType:文件类型(js/css)*/ function AddJsFiles(URL,FileType){ var oHead = document.getElementsByTagName('HEAD').item(0); var addheadfile; if(FileType=="js"){ addheadfile= document.createElement("script"); addheadfile