FTP(File Transfer Protocol),文件传输协议。阅读此文前,请先自行了解和准备以下内容。
1.了解FTP基本知识。
2.下载安装FTP客户端(这里使用cuteftp)和服务器(这里使用serv-u)软件。
首先说明FTP协议是基于TCP协议的应用,类似HTTP协议也是基于TCP协议的应用一样。但是FTP协议是采用两个TCP连接,命令连接端口号是21,数据连接端口号是20。这一点很重要,后面会详细说明原因。
众所周知,每一个连接到网络上的计算机都有一个唯一的IP地址,因而通过IP地址和端口号就可以访问这台计算机。但是位于内网中的计算机都公用一个公网IP,通过网关连接到互联网上。那么要访问内网中的计算机必然就要知道这台计算机在内网中的IP地址。然而这还不是问题的关键。大多数人都采用ADSL拨号的方式上网,经常上网的人知道,网络运营商为了减少IP地址的浪费,会动态的为ADSL拨号上网的用户分配一个IP地址,也就是说,用户在每一次拨号上网的时候,他的IP地址是动态分配的,是在不断变化的。这就是我们内网建FTP站点首先要解决的一个大问题。
显然,这个问题的解决方案肯定不是每次拨号后都查询自己的IP,然后把IP告诉别人,这当然是可行的,但是是不现实的。这个时候域名就为解决问题带来了帮助。我们访问网站一般都会在浏览器中输入站点的域名,而站点的IP地址我们并不用关心。这样如果站点计算机需要更改IP,只需要把新的IP地址绑定到原来的域名上就可以了,我们通过原来的域名仍然可以正确访问。
同样的道理,既然我们采用ADSL拨号上网的IP地址是不断变化的,我们就可以采用域名绑定的方式让用户正确访问,当然,这种绑定是动态的,所以称为动态域名。因此,在内网建立FTP站点前,我们需要一个动态域名。好在有几个著名的动态域名提供网站可以让我们申请到免费的动态域名。下面列出了两个,只要上去申请一个动态域名就行,我申请的是花生壳的。
花生壳:http://www.oray.com
希网:http://www.3322.org/
下面我们采用配置网关的方式建立内网FTP站点。网关通常是一台计算机或者路由器,我这里使用的是路由器。
首先打开路由器的管理页面(在浏览器中输入192.168.1.1),找到动态DNS设置页面,输入你申请到的动态域名和账号密码,并启用DDNS,登录成功后保存到路由器中。在路由器的虚拟服务器设置中输入你的内网中的IP地址和服务类型,(ftp服务端口号21),保存生效。然后检查你的域名是否已经可用,只要ping通就说明网关这里已经设置成功。如下图。
下一步,在安装好的FTP服务器ser-u中建立服务站点,并作相应配置。关于ser-u的基本使用方法请自行了解。这里只说明几个关键点。新建一个站点和一个测试账号。
1.在站点启用动态域名,即在站点domain选项卡中勾选Enable dynamic DNS。
2.在站点setting的advanced选项卡中勾选Allow passive mode data transfers,即启用被动模式数据传输。前面已经提到FTP协议是采用两个TCP连接,数据传输的端口号不是固定的。要使内网FTP站点的数据能成功传送到外网客户端必须采用被动传输方式,这种方式是由客户端告诉服务器客户端接收数据的端口,然后由服务器被动的将数据发往客户端的指定数据接收端口。PORT模式,即主动模式不能这样接收数据的原因就是服务器无法确定客户端的数据接收端口。
3.设置PASSIVE模式使用的端口范围。在local server的setting的advanced选项卡中,一般设置得大一些(1000以上),避免占用常用端口和固定用途的端口。
4.除此之外,客户端软件也需要启用被动ftp模式,在cuteftp软件中已经默认启用了。但是如果想通过资料管理器或者浏览器访问ftp服务器就需要手动更改设置,IE的设置在高级选项卡中。
至此,就可以使用客户端软件或者dos命令访问测试了。
关于serv-u 的几个使用:
虚拟路径映射:serv-u中可以配置虚拟路径映射,使其他驱动器或文件夹映射到指定站点目录中,以合并扩大站点内容。
组管理:可以建立用户组,使某个用户拥有组用户的权限。
建立匿名访问:匿名用户访问账号只需要将用户名设置为anonymous,大小写不影响,不会提示输入用户密码。
另外,提供使用命令行的方式访问FTP站点的方法:
1.打开一个命令行窗口,使用ftp命令;
2.open命令连接一个ftp站点,如: open wyang1991.gicp.net
3.输入你的ftp账号
4.输入密码
5.使用dir命令查看目录文件和文件夹信息等。
6.quit退出。
附常用FTP命令:
open[host_name]:与远程主机建立ftp连接。 close:结束与远程主机的连接,但不离开ftp,可再用open命令与其它主机连接。 bye或者quit:结束与远程主机的连接,且退出ftp客户端程序。 get rfile[lfile]:下载远程主机的文件。 put rfile[lfile]或者send rfile[lfile]:上载文件到远程主机。 mget rfile[lfile]:一次下载多个远程主机的文件,可用通配符(如mget *.zip)。 mput rfile[lfile]:一次上载多个文件到远程主机,可以是使用通配符。 pwd:显示远程主机当前工作目录。 lcd ldir:变换本地主机的工作目录 cd rdir:变换远程主机的工作目录。 ls [rdir]:显示远程主机当前目录的内容。 dir [rdir]:显示远程主机当前目录的详细内容。 ascii:设定文件传输方式为ascii。 binary:设定文件传输方式为binary。 prompt:设定在用mget/mput传送文档是,是否需要询问使用老的回应。
http://user.qzone.qq.com/773555877/blog/1297180343