一、什么是FTP
FTP(File Transfer Protocol)是文件传送协议的英文缩写,是用于Internet上的控制文件的双向传输的协议。同时,它也是一个应用程序。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,允许用户在计算机之间传送文件,并且文件的类型不限,可以是文本文件也可以是二进制可执行文件、声音文件、图像文件、数据压缩文件等等。
二、FTP的服务端口
FTP与其他应用不同,它采用两个TCP连接来传输一个文件:
Ø 命令连接:通常TCP端口为21
用来在FTP客户端与服务器之间传递命令
Ø 数据连接:通常TCP端口为20
用来上传或下载数据
三、FTP文件传输过程
1在本地电脑上登陆到国际互联网,
2搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径)
3当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑.
4在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的文件或者下载别人授权共享的文件
5完成工作后关闭FTP,切断连接.
四、FTP服务搭建
实验拓扑图
实验用VBox虚拟机来模拟FTP服务器与客户机,虚拟机之间采用内部网络的网络连接方式,其中Win2012-1(系统Windows Server 2012r2)来充当FTP服务器,Win2012-2为客户机

1.准备工作
Win2012-1:
配置DNS
两个目录

Win2012-2(作为客户端)

2.安装FTP服务器
下一步直到安装完成

打开IIS管理器,右键网站添加FTP站点

建立简单FTP站点

认证和授权(稍后进一步介绍)

完成

客户端测试(如果连接不上,请在在服务器和客户端关闭防火墙)

3.FTP站点基本配置
3.1.目录浏览

FTP目录浏览样式,IE浏览器中看不到效果

3.2.IP限制
可添加允许或拒绝的特定IP地址或者范围

3.3.日志

3.4.站点信息设置
设置完后右侧应用
这里用CMD命令来测试(注意:IE浏览器中看不到效果)
3.5.查看当前连接用户
3.6.FTP认证
FTP服务的种类:
Ø 普通FTP服务
普通的FTP服务需要在登录时提供相应的用户名和口令,当用户不知道对方计算机的用户名和口令时就无法使用FTP服务。
Ø 匿名FTP服务(用户名:anonymous)
不需要用户名和口令就可以使用的FTP服务。
主要是一些信息服务机构为了方便Internet的用户通过网络使用他们公开发布的信息
匿名用户实际上也是要登录的,不过客户端软件通常自动登录,密码是随意的字符。
FTP认证配置
在FTP服务器上创建windows 用户、组

建立两个用户(密码永不过期)

禁用匿名启用基本身份验证

测试

4.FTP授权
创建两个目录
添加两个虚拟目录
授权规则
允许指定用户
dir2一样
客户端测试
用user1用户登陆

进入dir1文件夹试着新建文件夹(刚刚授权的是读写)

成功

进入dir2的文件夹(在授权里有个默认所有用户读的权限)

试着新建文件夹(因为刚刚在dir2虚拟目录中授权的是user2能读写,发生错误说明授权成功)

这次用user2来登陆(注意不能用导航栏的刷新按钮切换,因为缓存里还有上一个用户登录的记录。)

同理在dir1中能读不能写

在dir2中则能读写

5.用户隔离
用户隔离的不用功能

在服务器上的ftp目录创建 ”localuser\用户名” 目录

匿名用户的目录名为”public”,但必须启用匿名认证。

隔离用户并且启用全局虚拟目录,配置后记得右侧应用
客户端测试(可以直接匿名登陆看到public下的1.txt和两个虚拟目录)
右键登陆,用user1用户登陆
可以访问自己文件下的bmp图像和两个虚拟目录
退出,用user2用户登陆
同样可以访问自己文件下的文件夹和两个虚拟目录
6.FTP的工作模式
Ø FTP两种工作模式:
} 主动模式(ActiveFTP)
} 被动模式(PassiveFTP)
Ø 两种模式的区别
n 在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
n 在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
FTP两种工作模式(总结)
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
防火墙对FTP工作模式的影响
} FTP服务器如果启用防火墙,则不能工作在被动模式
} 客户端如果启用防火墙,则不能工作在主动模式
防火墙对FTP的影响演示(被动模式)
服务器支持两种模式,使用哪种模式取决于客户端。
把客户端使用被动FTP模式ftp服务器上启用防火墙

客户端无法访问

防火墙对FTP的影响演示(主动模式)
服务器关闭防火墙

客户端启用防火墙

客户端使用ftp命令测试
} ftp总是使用主动模式
} 可以登录,但是无法看到内容!
