`

FTP基础知识

 
阅读更多
FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。

当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。

当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。

FTP服务器端的注意事项

一、FTP服务器是公网IP,用公网动态域名;或是内网IP,用内网专业版TrueHost

1、服务器如果安装了防火墙,请记住要在防火墙上打开FTP端口(默认是21)。

2、所有FTP服务器软件都支持PORT方式。至于PASV方式,大部分FTP服务器软件都支持。支持PASV方式的FTP服务器软件,也可以设置为只工作在PORT方式上。

3、为了PASV方式能正常工作,需要在FTP服务器软件上为PASV方式指定可用的端口范围(设置方法)。此外,还要在服务器的防火墙上打开这些端口。当客户端以PASV方式连接服务器的时候,服务器就会在这个端口范围里挑选一个端口出来,给客户端连接。

二、FTP服务器是内网IP,用内网动态域名标准版cm*natpro*y

这种情况下,FTP服务器不需要做特殊设置,只要支持PASV方式就可以了。大部分FTP服务器软件都支持PASV方式。

FTP客户端的注意事项

请注意:选择用PASV方式还是PORT方式登录FTP服务器,选择权在FTP客户端,而不是在FTP服务器。

一、客户端只有内网IP,没有公网IP

从上面的FTP基础知识可知,如果用PORT方式,因为客户端没有公网IP,FTP将无法连接客户端建立数据链路。因此,在这种情况下,客户端必须要用PASV方式,才能连接FTP服务器。大部分FTP站长发现自己的服务器有人能登录上,有人登录不上,典型的错误原因就是因为客户端没有公网IP,但用了IE作为FTP客户端来登录(IE默认使用PORT方式)。

作为FTP站长,有必要掌握FTP的基础知识,然后指导您的朋友如何正确登录您的FTP。

二、客户端有公网IP,但安装了防火墙

如果用PASV方式登录FTP服务器,因为建立数据链路的时候,是由客户端向服务器发送连接请求,没有问题。反过来,如果用PORT方式登录FTP服务器,因为建立数据链路的时候,是由服务器向客户端发送连接请求,此时连接请求会被防火墙拦截。如果要用PORT方式登录FTP服务器,请在防火墙上打开 1024以上的高端端口。

三、连接用内网标准版cm*natpro*y搭建的FTP服务,必须要用PASV方式。连接任何公网FTP服务器、或用内网专业版TrueHost搭建的FTP服务器,PORT方式和PASV方式都可以使用。

当然,使用PORT方式的时候,还要满足上面的两个条件。

四、常见的FTP客户端软件PORT方式与PASV方式的切换方法。

大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。

在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。

IE:

工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。

CuteFTP:

Edit -> Setting -> Connection -> Firewall -> “PASV Mode”

File -> Site Manager,在左边选中站点 -> Edit -> “Use PASV mode”
FlashGet:
工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”

FlashFTP:

选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式”

站点管理 -> 对应站点 -> 选项 -> “使用被动模式”

快速连接 -> 切换 -> “使用被动模式”

LeechFTP:

Option -> Firewall -> Do not Use

五、请尽量不要用IE作为FTP客户端

IE只是个很粗糙的FTP客户端工具。首先,IE6.0以下的版本不支持PASV方式;其次,IE在登录FTP的时候,看不到登录信息。在登录出错的时候,无法找到错误的原因。在测试自己的FTP网站的时候,强烈建议不要使用IE。

FTP建站的详细配置过程

请参考这个网页的说明来配置:

使用Serv-U建立FTP网站

高级话题

一、为什么没有公网IP,也能使用PORT方式登录FTP?

NAT 网关的工作方式是在TCP/IP数据包的包头里找局域网的源地址和源端口,替换成网关的地址和端口。对数据包里的内容,是不会改变的。而使用PORT方式登录FTP的时候,IP地址与端口信息是在数据包里面的,而不是在包头。因此,没有公网IP,使用PORT方式是无法从internet上的ftp服务器下载数据的。

但是,极少数的NAT网关也支持PORT方式。这些NAT网关连数据包里面的内容都扫描,扫描到 PORT指令后会替换PORT方式的IP和端口。在这种NAT网关下面,用PORT方式就没问题了。不过,这些网关也只扫描21端口的数据包,如果FTP 服务器不是用默认的21端口,也无法使用PORT方式。

二、内网可以用PORT访问其他FTP,为什么不能用PORT访问自己的TrueHost FTP?

下面要讨论的问题,只是为了说明一些原理,是不影响实际使用的。如果您没有兴趣深究这些原理,不必花时间看。

内网用户通过支持PORT方式的NAT网关,访问自己本机利用TrueHost建立的FTP服务器,FTP命令链路的建立过程如下:

FTP客户端

10.10.0.1
端口*** <==> ISP NAT网关
61.144.1.2
端口**** <==> TH服务器
*.*.*.*
端口21 <==> TH客户端 <==> 用户FTP服务器
10.10.0.1
端口21

FTP客户端通过ISP的NAT网关、科迈TrueHost服务器、TrueHost客户端,连接用户本机的FTP服务器的21端口。

当需要下载数据的时候,FTP客户端通过这条命令链路,向FTP服务器发送PORT命令。假设命令为:

PORT 10,10,0,1,30,4 (即IP=10.10.0.1 端口=30*256+4=7684)
当命令通过ISP的NAT网关的时候,NAT网关判断目的端口是21,并且是PORT命令,于是,修改命令里的IP和端口,替换为自己的IP和端口,比如:
PORT 61,144,1,2,50,6 (即IP=61.144.1.2 端口=50*256+6=12806)
用户的FTP服务器最终收到的是上面这个PORT命令。于是,FTP服务器向这个IP和端口发送连接请求,建立数据链路。

用户FTP服务器

10.10.0.1
端口20 <==> ISP NAT网关
61.144.1.2
端口12806 <==> FTP客户端
10.10.0.1
端口7684

但是,因为NAT网关的公网IP只能接收外来的连接请求。就是说,61.144.1.2:12806只能接收其他公网IP的连接请求,对于从NAT内部(10.10.0.1:20)发起的连接请求,是无法建立连接的。为什么?原因很简单,因为内网IP要访问外网,必须要通过NAT建立映射。于是FTP数据链路无法建立。于是,用户无法在自己的机器上通过21端口访问自己的TrueHost FTP。

我们再来看看,如果FTP端口不是21,比如是22,会发生什么情况呢?在FTP客户端发送PORT命令的时候,NAT网关检测到目标端口是22,因为支持PORT的 NAT网关只监视目的端口是21的数据包,发现目的端口是22的数据包,不做任何处理,完全放行。于是FTP服务器收到的PORT命令依然是PORT 10,10,0,1,30,4。于是FTP服务器向这个IP和端口发送连接请求。

用户FTP服务器

10.10.0.1
端口20 <==> FTP客户端
10.10.0.1
端口7684

这种情况下命令链路就可以建立起来了。而且是等于本机连接本机,速度飞快。
综上所述,内网用户无法用PORT方式通过21端口访问自己的TrueHost FTP服务器。如果FTP端口不是21,则可以访问,而且实际上是本机连接本机。

上面的文字,仅仅是为了说明一些原理,不影响实际使用。如果本机访问本机,还要通过FTP的话,就有画蛇添足之嫌了。
分享到:
评论

相关推荐

    FTP大全FTP大全FTP大全

    ### FTP基础知识 FTP(File Transfer Protocol)即文件传输协议,是一种用于在网络上进行文件传输的标准协议。它主要用于在不同计算机系统之间传输文件。FTP服务通常基于客户端/服务器模式,其中FTP服务器存储文件...

    学习FTPftp实战

    ### FTP基础知识 FTP基于TCP/IP协议族,通过两个连接——控制连接和数据连接——实现文件传输。控制连接负责发送命令和接收响应,而数据连接则用于实际的文件传输。FTP有两种工作模式:主动模式和被动模式。主动...

    j-ftp实现ftp

    1. **FTP基础知识**: FTP是一种应用层协议,基于TCP/IP协议族。它允许用户从远程服务器获取文件(下载)或向远程服务器发送文件(上传)。FTP通常用于Web开发、系统管理以及在不同计算机之间分享大文件。 2. **...

    python网络编程基础FTP

    ### FTP基础知识 FTP是一种用于在网络上进行文件传输的标准协议,主要功能是在两台计算机之间交换文件。它使用客户机/服务器模型,其中客户机发起FTP会话请求,而服务器响应并处理这些请求。FTP协议通常使用两个TCP...

    C#Ftp文件目录展示,文件下载

    1. FTP基础知识:FTP是一种用于在Internet上进行文件传输的标准协议。它允许用户上传、下载或删除远程服务器上的文件,并提供了两种主要的连接模式:主动模式和被动模式。 2. C#中的FTP库:在C#中,我们可以使用`...

    ftp资源表格免费的FTP

    #### 一、FTP基础知识概述 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议和应用。它最初由Abhay Bhushan在1971年设计,后来由Jon Postel和Raymond J. Lidl在1985年的RFC 959中进行了标准...

    PHP实现FTP客户端,开源

    1. **FTP基础知识** FTP工作于TCP/IP协议栈的第4层,即传输层。它提供了两种传输模式:主动模式和被动模式,用于处理客户端与服务器之间的连接问题。主动模式中,服务器主动连接客户端的指定端口;被动模式则由...

    教育网内FTP大全资料

    【FTP基础知识】 FTP,全称为“File Transfer Protocol”,即文件传输协议,是一种用于在网络上进行文件传输的标准协议。它允许用户从远程服务器上下载文件或上传文件到服务器,是互联网上最早被广泛使用的应用之一...

    ftp命令--简单的ftp命令共菜鸟学习参考

    #### 二、FTP基础知识 FTP协议主要分为两种连接模式:主动模式和被动模式。在实际操作过程中,FTP客户端会与FTP服务器建立连接,并通过命令来进行文件的上传或下载等操作。 #### 三、FTP命令详解 1. **AUTH ADAT*...

    绿卡FTP扫描工具

    【FTP基础知识】 FTP,全称为“File Transfer Protocol”,即文件传输协议,是一种用于在网络上进行文件传输的标准协议。它允许用户从远程服务器上下载文件或上传文件到服务器,是互联网上最早的服务之一。FTP使用...

    读研三年珍藏的ftp资源

    #### FTP基础知识概述 FTP(File Transfer Protocol)即文件传输协议,是一种用于在网络上进行文件传输的标准协议和服务。FTP的工作原理基于客户端/服务器模式,用户可以通过客户端软件连接到提供FTP服务的服务器,...

    指定FTP地址上传下截

    1. FTP基础知识: FTP基于TCP协议工作,使用两个独立的连接:控制连接和数据连接。控制连接用于发送命令和接收响应,而数据连接则用于传输实际的文件内容。FTP有两种工作模式:主动(PORT)模式和被动(PASV)模式...

    FTP教程

    #### 一、FTP基础知识 FTP(File Transfer Protocol)即文件传输协议,是一种用于在网络上进行文件传输的标准协议。它最初由Abhay Bhushan在1971年提出,并在1985年由Tim Postel正式标准化。FTP允许用户在一个...

    免费FTP一键注册一键查询

    8. **教程和帮助**:为了帮助初学者,软件可能包含了关于FTP基础知识的教程,以及遇到问题时的常见解决方案。 免费FTP工具对于个人用户和小型企业来说非常有用,因为它们可以节省购买和管理FTP服务器的费用。然而,...

    FTP配置与安全

    #### 一、FTP基础知识 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议和服务。FTP采用客户机/服务器模式,即客户端通过FTP客户端软件与FTP服务器建立连接,实现文件的上传和下载。FTP是...

    批处理实现自动传输FTP服务器文件

    #### 一、FTP基础知识概览 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的协议,它允许用户在不同的计算机之间上传和下载文件。无论是DOS还是UNIX操作系统,FTP都提供了丰富的命令集来帮助用户...

    redhat6的ftp

    ### 一、FTP基础知识 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,它支持用户登录到远程服务器上进行文件的上传和下载操作。在Red Hat 6系统中,常用的FTP服务软件是vsftpd,它具有...

    domino实现ftp上传和下载的案例

    ### 二、FTP基础知识 1. **FTP协议**:FTP是一种用于在网络上进行文件传输的标准协议,主要用于将文件从一台计算机传输到另一台计算机上。FTP客户端通过特定端口连接到FTP服务器,并通过命令行或图形界面操作文件的...

    wm windows mobile ftp手机版

    1. FTP基础知识 FTP是一种用于在互联网上传输文件的协议,它允许用户在不同计算机之间进行文件的上传和下载。FTP客户端是用户与FTP服务器交互的界面,而FTP服务器则负责存储和提供文件访问服务。 2. WM Windows ...

Global site tag (gtag.js) - Google Analytics