第9章 应用层(5)_文件传输协议FTP
6. 文件传输协议FTP
6.1 FTP主动和被动模式
(1)FTP协议
①与其他协议不同,FTP协议在客户端访问FTP服务器时需要建立两个TCP连接。一个用来传输FTP命令,一个用来传输数据。
②在FTP服务器上需要开放两个端口,一个命令端口(或称为控制端口)和一个数据端口。通常命令端口为21,数据端口为20。当考虑主动/被动模式时,数据端口可能不是20。
(2)主动模式(建立传输数据的TCP连接由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服务器只是被动连接)

①工作过程
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站点是指定为“隔离用户”模式(如下图)

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

③创建让所有用户共享的文件夹。步骤如下:
A.在public、Wang和Zhang目录下分别创建一个文件夹(如Share)
B.在虚拟机中新增一块磁盘,然后右键“我的电脑”→“管理”→“磁盘管理”找到新增加的磁盘(如磁盘1),并授于“everyone”对磁盘的访问权限“完全控制”
C.将新磁盘1映射到三个Share文件中去。方法:在“磁盘管理”中右键“磁盘1”→“更改驱动号和路径”→“添加”→选择“装入以下空白NTFS文件夹中”,并浏览到上述的Share文件夹。按同样的方法将磁盘1映射其他Share文件夹去。

④ 访问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命令行
第9章 应用层(5)_文件传输协议FTP的更多相关文章
- 【知识强化】第六章 应用层 6.3 文件传输协议FTP
这节课我们来学习一下文件传输协议FTP. 我们知道一个文件的传输过程呢一定需要协议的规定,那在文件传送协议这一块呢有很多个协议.比较主要的两个一个是文件传送协议FTP,一个是简单文件传送协议TFTP. ...
- 文件传输协议FTP、SFTP和SCP
网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...
- 【传输文件】文件传输协议FTP、SFTP和SCP
网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...
- 文件传输协议-FTP
一.FTP概述 FTP(File Transfer Protocol 文件传输协议)C/S结构的应用层协议.由服务端和客户端两个部分共同实现文件传输功能 FTP服务器普遍部署于内网中,具有容易部署.方 ...
- 文件传输协议FTP
之前已经了解了TCP/IP这种低级别的协议,还有一些网络协议包括文件传输(FTP,STP).阅读Usenet新闻组(NNTP).电子邮件发送(SMTP).从服务器上下载电子邮件(POP3.IMAP)等 ...
- FTP(文件传输协议)工作原理
目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...
- 文件传输协议(FTP)
文件传输协议(FTP)用于用户在两台主机之间进行远距离的文件传输,并保证传输的可靠性. FTP采用客户机/服务器的方式,由FTP服务器和FTP客户机两部分组成. FTP服务器中以目录结构保存着各种文件 ...
- 安全文件传输协议之SFTP的使用
一.SFTP概述 在前几篇文章,我们讲到了文件传输协议FTP(File Transfer Protocol),那也是使用比较广泛的文件服务器,但是我们需要知道,Linux系统并不自带FTP程序 如果要 ...
- 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识
第35章 FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...
随机推荐
- vorpal 又一个方便的cli 开发包
vorpal 是一个npm 包,我们可以用来开发专业的cli 程序 简单使用 初始化项目 yarn init -y 添加依赖 yarn add vorpal 简单demo app.js // cons ...
- nginx与Apache的优缺点
来源:http://itindex.net/detail/46414-apache-nginx 1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资 ...
- PHP 获取上月,本月,近15天,近30天日期
<?php //echo $_SERVER['PHP_SELF']; //define('ROOT_PATH',str_replace($_SERVER['PHP_SELF'],'',str_r ...
- CommonJS 规范中的 module、module.exports 区别
CommonJS 规范中的 module.module.exports 区别 CommonJS规范规定,每个模块内部,module变量代表当前模块.这个变量是一个对象,它的exports属性(即mod ...
- vue-cli 3.x 使用
vue-cli 3.x 安装:npm install -g @vue/cli vue-cli 3.x 常用命令 vue-cli 3.x 常用命令 命令含义 vue --help vue-cli 3.x ...
- python string/list转换
python的read.write方法的操作对象都是string.输入.输出和逻辑业务上很多时候都要用到string.list互转. 1.简单用法 import stringstr = 'abcde' ...
- Scrapy 爬取BOSS直聘关于Python招聘岗位
年前的时候想看下招聘Python的岗位有多少,当时考虑目前比较流行的招聘网站就属于boss直聘,所以使用Scrapy来爬取下boss直聘的Python岗位. 1.首先我们创建一个Scrapy 工程 s ...
- dashboard无法查到endpoint, counter
问题 使用Open-falcon时,Agent 推送metrics后,无法在Dashboard上显示.将Agent的hostname 修改后,却可以. 解决办法 查看Agent log,推送到tran ...
- centos6 只安装mysql client(安装包安装和yum安装mysql)
方法一下载安装: 1.在/home创建mysql目录,下载如下四个软件包 http://mirrors.sohu.com/mysql/MySQL-5.7/ wget http://mirrors.so ...
- RichEdit选中文字右键菜单的实现
procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: ...