FTP基础知识.docx
- 文档编号:26610838
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:35
- 大小:55.07KB
FTP基础知识.docx
《FTP基础知识.docx》由会员分享,可在线阅读,更多相关《FTP基础知识.docx(35页珍藏版)》请在冰豆网上搜索。
FTP基础知识
FTP基础知识
一、初级教程
1.FTP协议
什么是FTP呢?
FTP是TCP/IP协议组中的协议之一,是英文FileTransferProtocol的缩写。
该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。
若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。
在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
2.FTP服务器和客户端
同大多数Internet服务一样,FTP也是一个客户/服务器系统。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
用户要连上FTP服务器,就要用到FPT的客户端软件,通常Windows自带“ftp”命令,这是一个命令行的FTP客户程序,另外常用的FTP客户程序还有CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。
3.FTP用户授权
3.1用户授权
要连上FTP服务器(即“登陆”),必须要有该FTP服务器授权的帐号,也就是说你只有在有了一个用户标识和一个口令后才能登陆FTP服务器,享受FTP服务器提供的服务。
3.2FTP地址格式
FTP地址如下:
ftp:
//用户名:
密码@FTP服务器IP或域名:
FTP命令端口/路径/文件名
上面的参数除FTP服务器IP或域名为必要项外,其他都不是必须的。
如以下地址都是有效FTP地址:
ftp:
//foolish.6600.org
ftp:
//list:
list@foolish.6600.org
ftp:
//list:
list@foolish.6600.org:
2003
ftp:
//list:
list@foolish.6600.org:
2003/soft/list.txt
3.3匿名FTP
互连网中有很大一部分FTP服务器被称为“匿名”(Anonymous)FTP服务器。
这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。
用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。
许多系统要求用户将Emai1地址作为口令,以便更好地对访问进行跟综。
匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。
人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录获取所需的信息资料。
虽然目前使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是Internet上传输分发软件的一种基本方法。
如redhat、autodesk等公司的匿名站点。
4.FTP的传输模式
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命令到FTPServer。
下面介绍一个这两种方式的工作原理:
Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。
PORT命令包含了客户端用什么端口接收数据。
在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。
FTPserver必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。
FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作
6.FXP
FXP说简单点就是一个FTP客户端控制两个FTP服务器,在两个FTP服务器之间传送文件。
FXP的全称为FileExchangeProtocol――文件交换协议,可以认为FXP本身其实就是FTP的一个子集,因为FXP方式实际上就是利用了FTP服务器的Proxy命令,不过它的前提条件是FTP服务器要支持PASV,且支持FXP方式。
FXP传送时,文件并不下载至本地,本地只是发送控制命令,故FXP传送时的速度只与两个FTP服务器之间的网络速度有关,而与本地速度无关。
因FXP方式本地只发送命令,故在开始传送后,只要本地不发送停止的命令,就算是本地关机了,FXP仍在传送,直至一个文件传送完成或文件传送出错后,FTP服务器等待本地发送命令时,才会因不能接收到命令而终止FXP传送。
因为上述的原因,FXP传送出错时,本地的用户进程还留在FTP服务器中,并没有退出,如此时再次连接FTP服务器,可能会因用户线程超过允许,FTP服务器提示客户已登陆并拒绝客户端的连接,直至服务器中的傀儡进程因超时或其他原因被FTP服务器杀死后,才能再次连接FTP服务器。
成功FXP有两个必要条件:
①两个FTP服务器均支持FXP;②两个FTP服务器均支持PASV方式。
但并不是说满足这两个条件的FTP服务器均经本地*作成功FXP,这还与本地与FTP服务器的网络状况有关。
故有时会出现同样两个FTP,别人可以FXP,而你不可以的情况。
二、FTP命令
FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX*作系统下使用FTP,都会遇到大量的FTP内部命令。
熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。
cFTP的命令行格式为:
ftp-v-d-i-n-g[主机名],其中
-v显示远程服务器的所有响应信息;
-n限制ftp的自动登录,即不使用;
.netrc文件;
-d使用调试方式;
-g取消全局文件名。
ftp使用的内部命令如下(中括号表示可选项):
1.!
[cmd[args]]:
在本地机中执行交互shell,exit回到ftp环境,如:
!
ls*.zip.
2.$macro-ame[args]:
执行宏定义macro-name.
3.account[password]:
提供登录远程系统成功后访问系统资源所需的补充口令。
4.appendlocal-file[remote-file]:
将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。
5.ascii:
使用ascii类型传输方式。
6.bell:
每个命令执行完毕后计算机响铃一次。
7.bin:
使用二进制文件传输方式。
8.bye:
退出ftp会话过程。
9.case:
在使用mget时,将远程主机文件名中的大写转为小写字母。
10.cdremote-dir:
进入远程主机目录。
11.cdup:
进入远程主机目录的父目录。
12.chmodmodefile-name:
将远程主机文件file-name的存取方式设置为mode,如:
chmod777a.out。
13.close:
中断与远程服务器的ftp会话(与open对应)。
14.cr:
使用asscii方式传输文件时,将回车换行转换为回行。
15.deleteremote-file:
删除远程主机文件。
16.debug[debug-value]:
设置调试方式,显示发送至远程主机的每条命令,如:
debup3,若设为0,表示取消debug。
17.dir[remote-dir][local-file]:
显示远程主机目录,并将结果存入本地文件local-file。
18.disconnection:
同close。
19.formformat:
将文件传输方式设置为format,缺省为file方式。
20.getremote-file[local-file]:
将远程主机的文件remote-file传至本地硬盘的local-file。
21.glob:
设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。
22.hash:
每传输1024字节,显示一个hash符号(#)。
23.help[cmd]:
显示ftp内部命令cmd的帮助信息,如:
helpget。
24.idle[seconds]:
将远程服务器的休眠计时器设为[seconds]秒。
25.image:
设置二进制传输方式(同binary)。
26.lcd[dir]:
将本地工作目录切换至dir。
27.ls[remote-dir][local-file]:
显示远程目录remote-dir,并存入本地文件local-file。
28.macdefmacro-name:
定义一个宏,遇到macdef下的空行时,宏定义结束。
29.mdelete[remote-file]:
删除远程主机文件。
30.mdirremote-fileslocal-file:
与dir类似,但可指定多个远程文件,如:
mdir*.o.*.zipoutfile。
31.mgetremote-files:
传输多个远程文件。
32.mkdirdir-name:
在远程主机中建一目录。
33.mlsremote-filelocal-file:
同nlist,但可指定多个文件名。
34.mode[modename]:
将文件传输方式设置为modename,缺省为stream方式。
35.modtimefile-name:
显示远程主机文件的最后修改时间。
36.mputlocal-file:
将多个文件传输至远程主机。
37.newerfile-name:
如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file]:
显示远程主机目录的文件清单,并存入本地硬盘的local-file。
39.nmap[inpatternoutpattern]:
设置文件名映射机制,使得文件传输时,文件中的某些字符相互转换,如:
nmap$1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。
该命令特别适用于远程主机为非UNIX机的情况。
40.ntrans[inchars[outchars]]:
设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。
41.openhost[port]:
建立指定ftp服务器连接,可指定连接端口。
42.passive:
进入被动传输方式。
43.prompt:
设置多个文件传输时的交互提示。
44.proxyftp-cmd:
在次要控制连接中,执行一条ftp命令,该命令允许连接两个ftp服务器,以在两个服务器间传输文件。
第一条ftp命令必须为open,以首先建立两个服务器间的连接。
45.putlocal-file[remote-file]:
将本地文件local-file传送至远程主机。
46.pwd:
显示远程主机的当前工作目录。
47.quit:
同bye,退出ftp会话。
48.quotearg1,arg2...:
将参数逐字发至远程ftp服务器,如:
quotesyst.
49.recvremote-file[local-file]:
同get。
50.regetremote-file[local-file]:
类似于get,但若local-file存在,则从上次传输中断处续传。
51.rhelp[cmd-name]:
请求获得远程主机的帮助。
52.rstatus[file-name]:
若未指定文件名,则显示远程主机的状态,否则显示文件状态。
53.rename[from][to]:
更改远程主机文件名。
54.reset:
清除回答队列。
55.restartmarker:
从指定的标志marker处,重新开始get或put,如:
restart130。
56.rmdirdir-name:
删除远程主机目录。
57.runique:
设置文件名唯一性存储,若文件存在,则在原文件后加后缀.1,.2等。
58.sendlocal-file[remote-file]:
同put。
59.sendport:
设置PORT命令的使用。
60.sitearg1,arg2...:
将参数作为SITE命令逐字发送至远程ftp主机。
61.sizefile-name:
显示远程主机文件大小,如:
siteidle7200。
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,如:
typebinary,设置二进制传输方式。
70.umask[newmask]:
将远程服务器的缺省umask设置为newmask,如:
umask3。
71.useruser-name[password][account]:
向远程主机表明自己的身份,需要口令时,必须输入口令,如:
useranonymousmy@email。
72.verbose:
同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有响应都将显示给用户,缺省为on.
73.?
[cmd]:
同help.
三、构建自己的强力FTP
FTP是FileTransferProtocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。
FTP协议有两种工作方式:
PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:
客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:
客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。
当需要传送数据时,客户端向服务器的空闲端口发送连接请求,建立一条数据链路来传送数据。
因为PORT方式在传送数据时,由服务器主动连接客户端,所以,如果客户端在防火墙或NAT网关后面,用PORT方式将无法与Internet上的FTP服务器传送文件。
这种情况需要使用PASV方式。
几乎所有的ftp客户端软件都支持这两种方式。
特殊的典型例子是ie,ie默认是用PORT方式的。
如果要在ie里启用PASV方式,请打开ie,在菜单里选择:
工具->Internet选项->高级,在“使用被动ftp”前面打上钩(需要IE6.0以上才支持)。
在网上做过软件下载的人都知道,建立一个FTP下载服务器相对比较简单,一般用WIN2000下自带的IIS就可以,但IIS在功能上好多
都不尽人如意,下面我就介绍一款功能非常强大,但使用简单的FTP服务器构建软件-Serv-UFTPServer,让我们也来体验一下自己DIYFTP服务器的快乐!
在说明使用之前,让我先大致介绍一下Serv-U(本文中提到的Serv-U版本为3.0.0.17),Serv-U是一个可以运行于Windows95/
98/2000/ME和WindowsNT4.0下的FTP服务器程序如图所示,
有了它,你的个人电脑就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP
协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。
FTP协议规定了计算机之间的标准
通讯方式,使所有不同类型,不同*作系统,不同格式的电脑之间得以互换文件。
它可以用最简单的方式创建用户帐号,并且在硬盘空
间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。
有许多FTP服务器和客户端软件可用于不同的系统中,Serv-U是用于运行MS-Windows并且已安装了WinSock版本1.1兼容TCP/IP
协议的个人电脑中的,这几乎包括了所有的Windows*作系统。
Serv-U由两大部分组成,引擎和用户界面。
Serv-U引擎(ServUDaemon.exe)其实是一个常驻后台的程序,也是Serv-U整个软件的心
脏部分,它负责处理来自各种FTP客户端软件的FTP命令,也是负责执行各种文件传送的软件。
在运行Serv-U引擎也就是ServUDaemon.exe
文件后,我们看不到任何的用户界面,它只是在后台运行,通常我们无法影响它,但在ServUAdmin.exe中我们可以停止和开始它。
Serv-
U引擎可以在任何Windows平台下作为一个本地系统服务来运行,系统服务随*作系统的启动而开始运行,而后我们就可以运行用户界面
程序了。
在WinNT/2000系统中,Serv-U会自动安装为一个系统服务,但在Win9x/Me中,你需要在“服务器”面板中选择“自动开始”,
才能让它转为系统服务。
Serv-U用户界面(ServUAdmin.exe)也就是Serv-U管理员,它负责与Serv-U引擎之间的交互。
它可以让用户配置
Serv-U,包括创建域、定义用户、并告诉服务器是否可以访问。
启动Serv-U管理员最简单的办法就是直接点接系统栏的“U”形图标,当
然,你也可以从开始菜单中运行它。
在此有必要把Serv-U中的一些重要的概念给大家讲清楚:
每个正在运行的Serv-U引擎可以被用来运行多个“虚拟”的FTP服务器,在
管理员程序中,每个“虚拟”的FTP服务器都称为“域”,因此,对于服务器来说,不得不建立多个域时是非常有用的。
每个域都有各自
的“用户”、“组”和设置。
一般说来,“设置向导”会在你第一次运行应用程序时设置好一个最初的域和用户帐号。
服务器、域和用
户之间的关系大家可以参考下表:
*Serv-U服务器
*域1
*用户帐号1
*用户帐号2
*用户帐号3
*域2
*用户帐号1
*用户帐号2
*域3
*用户帐号1
*用户帐号1
这个表有点类似与Serv-U管理员中服务器、域和用户的排列。
Serv-UFTPServer是试用软件,安装后三十天内,你可以作为“专业版本”使它,但试用期过后,你就只能作为免费的“个人版
本”使用了,只有基本功能了。
好了,说了这么多,还没到关键部分-如何自己来建立FTP服务器。
下面我就一步一步来说明。
一、安装原版软件和汉化补丁
这个过程就不多说了,想必没人不会的。
二、建立第一个本地FTP服务器
安装完成后程序会自动运行,你也可以在菜单中选择运行。
1、第一次运行程序,它会弹出设置向导窗口
将会带你完成最初的设置,
2、单击“下一步”,出现“显示菜单图像”的窗口,问你是否在菜单中显示小图像,看各人喜欢了;
3、单击“下一步”,这个窗口是让你在本地第一次运行FTP服务器,只要“下一步”就行了。
4、接下来要你输入你的IP地址
如果你自己有服务器,有固定的IP,那就请输入IP地址,如果你只是在自己电脑上建立FTP,而且又是拨号用户,有的只是动态IP,没
有固定IP,那这一步就省了,什么也不要填,Serv-U会自动确定你的IP地址,“下一步”;
5、在这儿要你输入你的域名
如果你有的话,如:
,没有的话,就随便填一个;
6、“下一步”,询问你是否允许匿名访问
一般说来,匿名访问是以Anonymous为用户名称登录的,无需密码,当然如果你想成立一个会员区什么的,就应该选择“否”,不让随便
什么人都可以登录,只有许可用户才行,在此我们填“是”;
7、“下一步”,问你匿名用户登录到你的电脑时的目录,
你可以自己指定一个硬盘上已存在的目录,如F:
\temp\xyz;
8、“下一步”,询问你是否要锁定该目录,锁定后,匿名登录的用户将只能认为你所指定的目录(F:
\temp\xyz)是根目录,也就是
说他只能访问这个目录下的文件和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FTP 基础知识
![提示](https://static.bdocx.com/images/bang_tan.gif)