第9章 应用层(5)_文件传输协议FTP

时间:2021-06-24 09:58:50

6. 文件传输协议FTP

6.1 FTP主动和被动模式

(1)FTP协议

  ①与其他协议不同,FTP协议在客户端访问FTP服务器时需要建立两个TCP连接一个用来传输FTP命令,一个用来传输数据

  ②在FTP服务器上需要开放两个端口,一个命令端口(或称为控制端口)和一个数据端口。通常命令端口为21,数据端口为20。当考虑主动/被动模式时,数据端口可能不是20。

(2)主动模式(建立传输数据的TCP连接由FTP服务器主动发起)

第9章 应用层(5)_文件传输协议FTP

  ①工作过程

    A.第1步中,FTP客户端提交PORT命令并允许服务器来回连它的数据端口(1027)。

    B.第2步中,服务器返回确认。

    C.第3步中,FTP服务器向客户端发送TCP连接请求,目标端口为1027源端口为20.为传输数据发起建立连接的请求。

    D.第4步中,FTP客户端发送确认数据服文,目标端口20,源端口1027,建立传输数据的连接。

  ②主要问题

    A.主动模式下FTP服务器只需打开TCP的21端口和20端口。而FTP客户端防火墙要将TCP协议号大于1023的端口全部打开

    B.主动模式下FTP的主要问题在客户端,因为服务器为了建立传输数据的连接,会回连客户端指定的端口。对于客户端防火墙来说,这是从外部系统到内部客户端的连接,通常会被阻塞,除非关闭客户端防火墙。

(3)被动模式(命令连接和数据连接都由客户端发起,FTP服务器只是被动连接

第9章 应用层(5)_文件传输协议FTP

  ①工作过程

    A.在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。(注意:与主动模式不同,客户端不需要提交回连的数据端口)。

    B.服务器返回命令“PORT 2024”告诉客户端,服务器用哪个端口侦听数据连接。

    C.客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接

    D.服务器给客户端的数据端口返回一个“ACK”响应。

  ②主要问题

    A.被动模式解决了主动模式的问题,但同时也给服务器带来更多的问题。最大的问题就是需要允许从任意远程终端到服务器高位端口的连接,而服务器需要开放端口范围

    B.FTP服务允许管理员指定FTP服务器使用的端口范围。

6.2 实战

(1)在Win2003上搭建FTP服务器

  ①“添加/删除Windows组件”→“Windows组件”→“应用程序服务器”→双击“Internet信息服务”→“文件传输协议(FTP)服务”

  ②在D盘下建立文件夹作为FTP的根目录(如D:\homeWork)

  ③删除默认FTP,新建FTP站点,填写IP和端口(保留默认即可)。注意,当出现“FTP用户隔离”时选择“不隔离用户”。

(2)访问FTP服务器,

  ①客户端xp访问ftp服务器并上传/下载文件,然后运行netstat –an查看端口,可以看到FTP服务端使用的是两个(21端口和x端口,如果x为20说明是主动模式,否则为被动模式)

  ②更改FTP连接模式:IE→“Internet选项”→“高级”→取消或选择“使用被动FTP”。(注意,采用主动或被动模式是由客户端选择的)

(3)FTP隔离用户模式

  ①用户隔离的目的同一个FTP站点下,不同用户访问不同的目录(或文件)而不影响其他用户的目录或文件。要使用该功能,需在创建FTP站点是指定为“隔离用户”模式(如下图)

第9章 应用层(5)_文件传输协议FTP

  ②规划目录结构:隔离用户模式的FTP站点对目录的名称和结构有一定要求。首先FTP站点的主目录必须是NTFS分区,然后在主目录中创建一个名为“LocalUser”的子目录最后“LocalUser”目录下创建和用户帐号名称相一致的文件夹和一个名为Public的文件夹

第9章 应用层(5)_文件传输协议FTP

  ③创建让所有用户共享的文件夹。步骤如下:

    A.在public、Wang和Zhang目录下分别创建一个文件夹(如Share)

    B.在虚拟机中新增一块磁盘,然后右键“我的电脑”→“管理”→“磁盘管理”找到新增加的磁盘(如磁盘1),并授于“everyone”对磁盘的访问权限“完全控制”

    C.将新磁盘1映射到三个Share文件中去方法:在“磁盘管理”中右键“磁盘1”→“更改驱动号和路径”→“添加”→选择“装入以下空白NTFS文件夹中”,并浏览到上述的Share文件夹。按同样的方法将磁盘1映射其他Share文件夹去。

第9章 应用层(5)_文件传输协议FTP

  ④ 访问FTP:输入ftp站点地址后,分别以匿名、Wang和Zhang用户进行访问。(注意:必须先在FTP服务器上创建Wang和Zhang两个用户,创建命令如net user Wang 123 /add等)

6.3 FTP命令访问ftp服务器

(1)ftp的常用命令:open(连接ftp服务器)、ls(列出目录)、mkdir(创建目录)、get(下载文件)、put(上传文件)、quit(退出ftp命令行)

(2)实例分析

C:\Documents and Settings\Administrator>ftp
ftp> open 192.168.80.20 //连接到ftp服务器
Connected to 192.168.80.20.
Microsoft FTP Service
User (192.168.80.20:(none)): zhang //输入账户
Password required for zhang.
Password: //输入密码,不回显输入,不能是空密码
User zhang logged in.
ftp> ? //显示可用命令
Commands may be abbreviated. Commands are: ! delete literal prompt send
? debug ls put status
append dir mdelete pwd trace
ascii disconnect mdir quit type
bell get mget quote user
binary glob mkdir recv verbose
bye hash mls remotehelp
cd help mput rename
close lcd open rmdir
ftp> dir //列出FTP服务器上的内容
PORT command successful.
Opening ASCII mode data connection for /bin/ls.
-- :56PM <DIR> Share
-- :25PM zhang.txt
Transfer complete.
ftp: 收到 字节,用时 .00Seconds .00Kbytes/sec.
ftp> mkdir abc //创建abc子目录
"abc" directory created.
ftp> dir
PORT command successful.
Opening ASCII mode data connection for /bin/ls.
-- :49AM <DIR> abc
-- :56PM <DIR> Share
-- :25PM zhang.txt
Transfer complete.
ftp: 收到 字节,用时 .00Seconds .00Kbytes/sec.
ftp> get zhang.txt //下载文件,文件名有空格要加引号,如"Zhang hai.txt"。
//默认保存在C:\Documents and Settings\Administrator下
PORT command successful.
Opening ASCII mode data connection for zhang.txt( bytes).
Transfer complete.
ftp: 收到 字节,用时 .00Seconds .00Kbytes/sec.
ftp> put //使用命令上传文件
Local file "c:\wrar511sc.exe" //指本文件路径和名称
Remote file winrar.exe //指定上传之后的文件名
PORT command successful.
Opening ASCII mode data connection for winrar.exe.
Transfer complete.
ftp: 发送 字节,用时 .05Seconds .57Kbytes/sec.
ftp> dir
PORT command successful.
Opening ASCII mode data connection for /bin/ls.
-- :49AM <DIR> abc
-- :56PM <DIR> Share
-- :59AM winrar.exe
-- :25PM zhang.txt
Transfer complete.
ftp: 收到 字节,用时 .00Seconds .00Kbytes/sec.
ftp> quit //退出ftp命令行