当前位置:首页 » 文件传输 » 怎么用ftp
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

怎么用ftp

发布时间: 2022-01-12 08:37:07

1. 怎样用ftp上传

最好用ftpsmart等ftp的工具来上传,很傻瓜。
dos下命令是这样:
开始-运行-cmd
ftp xxx.xxx.xxx.xxx
输入帐号,密码
上传文件:put 本地硬盘的文件地址 ftp上的文件地址及文件名
下载文件:get ftp上的文件地址及文件名 本地硬盘的文件地址
具体命令如下:FTP 的命令行格式为: ftp -v -d -i -n -g [ 主机名 ] ,其中
-v 显示远程服务器的所有响应信息;
-n 限制 ftp 的自动登录,即不使用 .netrc 文件;
-d 使用调试方式;
-g 取消全局文件名。
& FTP 使用的内部命令如下 ( 中括号表示可选项 ) :

1.![cmd[args] :在本地机中执行交互 sh*ll , exit 回到 ftp 环境,如: !ls*.zip
2.$ macro-ame[args] : 执行宏定义 macro-name 。
3.account[password] : 提供登录远程系统成功后访问系统资源所需的补充口令。
4.append local-file[remote-file] :将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
5.ascii :使用 ascii 类型传输方式。
6.bell :每个命令执行完毕后计算机响铃一次。
7.bin :使用二进制文件传输方式。
8.bye :退出 ftp 会话过程。
9.case :在使用 mget 时,将远程主机文件名中的大写转为小写字母。
10.cd remote-dir :进入远程主机目录。
11.cp :进入远程主机目录的父目录。
12.chmod mode file-name :将远程主机文件 file-name 的存取方式设置为 mode ,如: chmod 777 a.out 。
13.close :中断与远程服务器的 ftp 会话 ( 与 open 对应 ) 。
14.cr :使用 asscii 方式传输文件时,将回车换行转换为回行。
15.delete remote-file :删除远程主机文件。
16.debug[debug-value] :设置调试方式, 显示发送至远程主机的每条命令,如: deb up 3 ,若设为 0 ,表示取消 debug 。
17.dir[remote-dir][local-file] :显示远程主机目录,并将结果存入本地文件
18.disconnection :同 close 。
19.form format :将文件传输方式设置为 format ,缺省为 file 方式。
20.get remote-file[local-file] : 将远程主机的文件 remote-file 传至本地硬盘的 local-file 。
21.glob :设置 mdelete , mget , mput 的文件名扩展,缺省时不扩展文件名,同命令行的 -g 参数。
22.hash :每传输 1024 字节,显示一个 hash 符号 (#) 。
23.help[cmd] :显示 ftp 内部命令 cmd 的帮助信息,如: help get 。 与?作用相同。
24.idle[seconds] :将远程服务器的休眠计时器设为 [seconds] 秒。
25.image :设置二进制传输方式 ( 同 binary) 。
26.lcd[dir] :将本地工作目录切换至 dir 。
27.ls[remote-dir][local-file] :显示远程目录 remote-dir , 并存入本地文件 local-file 。
28.macdef macro-name :定义一个宏,遇到 macdef 下的空行时,宏定义结束。
29.mdelete[remote-file] :删除远程主机文件。
30.mdir remote-files local-file :与 dir 类似,但可指定多个远程文件,如 : mdir *.o.*.zipoutfile 。
31.mget remote-files :传输多个远程文件。
32.mkdir dir-name :在远程主机中建一目录。
33.mls remote-file local-file :同 nlist ,但可指定多个文件名。
34.mode[modename] :将文件传输方式设置为 modename , 缺省为 stream 方式。
35.modtime file-name :显示远程主机文件的最后修改时间。
36.mput local-file :将多个文件传输至远程主机。
37.newer file-name : 如果远程机中 file-name 的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file] :显示远程主机目录的文件清单,并存入本地硬盘的 local-file 。
39.nmap[inpattern outpattern] :设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如: nmap $1.$2.$3[$1 , $2].[$2 , $3] ,则传输文件 a1.a2.a3 时,文件名变为 a1 , a2 。 该命令特别适用于远程主机为非 UNIX 机的情况。
40.ntrans[inchars[outchars] :设置文件名字符的翻译机制,如 ntrans1R ,则文件名 LLL 将变为 RRR 。
41.open host[port] :建立指定 ftp 服务器连接,可指定连接端口。
42.passive :进入被动传输方式。
43.prompt :设置多个文件传输时的交互提示。
44.proxy ftp-cmd :在次要控制连接中,执行一条 ftp 命令,该命令允许连接两个 ftp 服务器,以在两个服务器间传输文件。第一条 ftp 命令必须为 open ,以首先建立两个服务器间的连接。
45.put local-file[remote-file] :将本地文件 local-file 传送至远程主机。
46.pwd :显示远程主机的当前工作目录。
47.quit :同 bye ,退出 ftp 会话。
48.quote arg1 , arg2... :将参数逐字发至远程 ftp 服务器,如: quote syst.
49.recv remote-file[local-file] :同 get 。
50.reget remote-file[local-file] :类似于 get , 但若 local-file 存在,则从上次传输中断处续传。
51.rhelp[cmd-name] :请求获得远程主机的帮助。
52.rstatus[file-name] :若未指定文件名,则显示远程主机的状态, 否则显示文件状态。
53.rename[from][to] :更改远程主机文件名。
54.reset :清除回答队列。
55.restart marker :从指定的标志 marker 处,重新开始 get 或 put ,如: restart 130 。
56.rmdir dir-name :删除远程主机目录。
57.runique :设置文件名只一性存储,若文件存在,则在原文件后加后缀 .1 , .2 等。
58.send local-file[remote-file] :同 put 。
59.sendport :设置 PORT 命令的使用。
60.site arg1 , arg2... :将参数作为 SITE 命令逐字发送至远程 ftp 主机。
61.size file-name :显示远程主机文件大小,如: site idle 7200 。
62.status :显示当前 ftp 状态。
63.struct[struct-name] :将文件传输结构设置为 struct-name , 缺省时使用 stream 结构。
64.sunique :将远程主机文件名存储设置为只一 ( 与 runique 对应 ) 。
65.system :显示远程主机的操作系统类型。
66.tenex :将文件传输类型设置为 TENEX 机的所需的类型。
67.tick :设置传输时的字节计数器。
68.trace :设置包跟踪。
69.type[type-name] :设置文件传输类型为 type-name ,缺省为 ascii ,如 :type binary ,设置二进制传输方式。
70.umask[newmask] :将远程服务器的缺省 umask 设置为 newmask ,如: umask 3
71.user user-name[password][account] :向远程主机表明自己的身份,需要口令时,必须输入口令,如: user anonymousmy@email 。 SDDSA
72.verbose :同命令行的 -v 参数,即设置详尽报告方式, ftp 服务器的所有响 应都将显示给用户,缺省为 on.

2. 如何使用FTP上传文件

1、下载软件FileZilla(用的比较多的一款),

3. 怎么样使用FTP

一、FTP设置方法
我们这里以 CuteFTP pro 为例,简单介绍FTP软件的用法:
首先你可以 点击这里下载 CuteFTP Pro ,并将该软件装在了您的计算机上。
假设您的虚拟主机的ip地址是”61.129.64.99“,ftp用户名是“ zhang ”,ftp密码是“ zhang2008 ”,现在想将文件“ index.htm ”上传到服务器,那么请按如下步骤操做:
启动 CuteFTP 程序:
在主页面中点击 菜单“文件”选择“新建”后弹出窗口,选择“新建ftp网站”;之后会弹出一个窗口,其中的设置如下:
标题:随便起个自己喜欢的名字
主机地址: 61.129.64.99
用户名: zhang
口令: zhang2008

之后选择“类型”选项,显示如下:

设置数据连接类型为:使用port
设置完毕后,点击下面的“连接”按钮,设置窗口将会关闭, CuteFTP 工作窗口会打开,并开始连接服务器。选择要上传的文件直接上传即可。最后,在浏览器上输入你的网址,检验文件是否已正确上载。

二、上传文件注意事项
FTP登陆后目录结构如下:

根目录
|- wwwroot 网站根目录,网页文件请上传到这个目录.
|- logfiles 网站日志文件,系统自动产生,不占用您的空间.
|- database Access 数据库文件可以存放在这个目录下,

注意:
您的网页必需存放在 wwwroot 目录下才能被访问,缺省网站的文档按优先顺序为 index.htm,index.asp,defualt.htm,default.asp
本网页文件名为 index.htm 是您的主机自动开设后系统生成的,您可以删除掉或用自己的覆盖.
推荐您使用CUTEFTP或者LEAFTP等软件进行上传,
如果在上传中碰到无法列出目录等情况,请尝试着把上传软件的PASV模式关掉(或者设置为port).

4. 请问怎么用FTP啊

几乎所有的ftp工具都是这样使用的:
输入待维护站点的ip地址或域名;
输入你的密码;
输入你的端口号;
连接;
做维护操作。

5. FTP 怎么设置和使用

FTP说简单一点就是可以进行网络文件共享,可以将你电脑上的资料(一般指的是较大的文件)通过FTP的方式进行公开,也就是将你的电脑设为简单的服务器,并且你自己可以设置访问用户名和密码,只要你的电脑是开机的,不管在哪个地方的人都可以通过网络来访问并下载你共享的文件,前提是要知道你的用户名和密码以及访问的FTP地址

说得很简单了,不知明白没有,上面只是关于FTP的理解,要实际使用,则可以通过专业软件完成,如何你安装完软件,应该你不知道的也就知道了,如FTP的地址是什么,FTP的用户和密码怎么设置,需要共享的文件怎么选择等等...

实际方法,说一下简单的方法吧,自己做过的

1、下载一个Serv-UFTPServerV8的专业FTP软件,下载地址搜一下,一大堆

2、查一下它的使用说明,网络也很多,没有的话,直接安装软件,中文版的,里面都有使用说明,你仔细研究一下也就了解了

PS:总的来说,感觉要学习的东西较多,实际上你只要安装软件,问题就都可以解决了,这个软件我自己也用过,很好用,发一张操作界面让你KK吧,打了好多字噢,希望对你有所帮助,再说一下FTP上传和下载都不要钱!

6. 如何使用FTP

FTP(File Transfer Protocol)是 Internet 上用来传送文件的协议(文件传输协议)。它是为了我们能够在 Internet 上互相传送文件而制定的的文件传送标准,规定了 Internet 上文件如何传送。也就是说,通过 FTP 协议,我们就可以跟 Internet 上的 FTP 服务器进行文件的上传(Upload)或下载(Download)等动作。

和其他 Internet 应用一样,FTP 也是依赖于客户程序/服务器关系的概念。在 Internet 上有一些网站,它们依照 FTP 协议提供服务,让网友们进行文件的存取,这些网站就是 FTP 服务器。网上的用户要连上 FTP 服务器,就要用到 FPT 的客户端软件,通常 Windows 都有“ftp”命令,这实际就是一个命令行的 FTP 客户程序,另外常用的 FTP 客户程序还有 CuteFTP、Ws_FTP、FTP Explorer等。

要连上 FTP 服务器(即“登陆”),必须要有该 FTP 服务器的帐号。如果是该服务器主机的注册客户,你将会有一个 FTP 登陆帐号和密码,就凭这个帐号密码连上该服务器。但 Internet 上有很大一部分 FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,因此,不要求用户事先在该服务器进行登记注册。

Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”和“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。在具有图形用户界面的 WorldWild Web环境于1995年开始普及以前,匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名PTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。 人们只要知道特定信息资源的主机地址, 就可以用匿名FTP登录获取所需的信息资料。虽然目前使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是 Internet上传输分发软件的一种基本方法。

全有网推荐两款比较实用方便的FTP工具:Cutftp【CuteFTP Pro V7.1 Build 06.07.2005.1 官方简体中文包下载地址:http://www4.skycn.com/soft/15789.html】FlashFtp【FlashFXP V3.2.0.1080 汉化版(烈火版)下载地址:http://www4.skycn.com/soft/22415.html】

7. FTP怎么用

什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用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命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

8. FTP怎么用

输入 你的服务器定义 的固定IP 用户名,密码。 连接,如果连通了,就会有两边的窗口,一边是本地的文件 ,一边是服务器上的文件 ,把本地的文件,拖放到服务器上就行了

9. FTP怎么用啊

FTP,是上传和下摘协议,有FTP软件(免费的),申请还一个空间,他会给你一个FTP的地址,FTP服务器就是一段IP,用户,是你的用户名,FTP密码是你登陆FTP的密码,可以在你的空间管理看到,空间申请好了以后,你要把网站的文件上传到空间,需要FTP工具,(也可以用WEB方式上传,只是速度很慢),FTP工具,可以登陆所有的网站空间,只要有FTP服务器的TP和你的用户名,和密码,就可以管理你网站上的数据,

10. ftp怎么用

FTP基础知识
您是否正准备搭建自己的FTP网站?您知道FTP协议的工作机制吗?您知道什么是PORT方式?什么是PASV方式吗?如果您不知道,或没有完全掌握,请您坐下来,花一点点时间,细心读完这篇文章。所谓磨刀不误砍柴功,掌握这些基础知识,会令您事半功倍。否则,很可能折腾几天,最后一事无成。

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的话,就有画蛇添足之嫌了。