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的更多相关文章

  1. 【知识强化】第六章 应用层 6.3 文件传输协议FTP

    这节课我们来学习一下文件传输协议FTP. 我们知道一个文件的传输过程呢一定需要协议的规定,那在文件传送协议这一块呢有很多个协议.比较主要的两个一个是文件传送协议FTP,一个是简单文件传送协议TFTP. ...

  2. 文件传输协议FTP、SFTP和SCP

    网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...

  3. 【传输文件】文件传输协议FTP、SFTP和SCP

    网络通信协议分层 应用层: HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页) DNS(Domain Name System) FTP(File Transf ...

  4. 文件传输协议-FTP

    一.FTP概述 FTP(File Transfer Protocol 文件传输协议)C/S结构的应用层协议.由服务端和客户端两个部分共同实现文件传输功能 FTP服务器普遍部署于内网中,具有容易部署.方 ...

  5. 文件传输协议FTP

    之前已经了解了TCP/IP这种低级别的协议,还有一些网络协议包括文件传输(FTP,STP).阅读Usenet新闻组(NNTP).电子邮件发送(SMTP).从服务器上下载电子邮件(POP3.IMAP)等 ...

  6. FTP(文件传输协议)工作原理

    目前在网络上,如果你想把文件和其他人共享.最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件. 1.FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户 ...

  7. 文件传输协议(FTP)

    文件传输协议(FTP)用于用户在两台主机之间进行远距离的文件传输,并保证传输的可靠性. FTP采用客户机/服务器的方式,由FTP服务器和FTP客户机两部分组成. FTP服务器中以目录结构保存着各种文件 ...

  8. 安全文件传输协议之SFTP的使用

    一.SFTP概述 在前几篇文章,我们讲到了文件传输协议FTP(File Transfer Protocol),那也是使用比较广泛的文件服务器,但是我们需要知道,Linux系统并不自带FTP程序 如果要 ...

  9. 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识

    第35章      FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...

随机推荐

  1. 第一个项目:Python pygame——外星人大战(心得)

    2018年12月,作为一个大学专业是物联网工程,毕业后在一家石油行业国企干了近三年,但内心依然有着一颗技术之心的我,通过一次偶然的机会(也许并不偶然),接触到了python.当时抱着玩一玩的心态开始通 ...

  2. Spring学习之SpringMVC框架快速搭建实现用户登录功能

    引用自:http://blog.csdn.net/qqhjqs/article/details/41683099?utm_source=tuicool&utm_medium=referral  ...

  3. django 初始化 介绍 生命周期

    安装好django,配置模板,静态文件 # 创建Django工程 django-admin startproject [工程名称] mysite - mysite # 对整个程序进行配置 - init ...

  4. 页面框架加载完自动执行函数$(function(){});

    页面中有一些大的资源文件,如图片,声音等,如果一个事件绑定写在这些加载资源代码的下方,那么要等资源加载完才会绑定,这样体验不够好. 于是想不等资源加载完,只要框架加载完成就绑定事件,就可以把代码放在以 ...

  5. ASP.NET Web APIs 基于令牌TOKEN验证的实现(保存到DB的Token)

    http://www.cnblogs.com/niuww/p/5639637.html 保存到DB的Token 基于.Net Framework 4.0 Web API开发(4):ASP.NET We ...

  6. 【巷子】---middleware---redux-promise-middleware---【react】

    一.Middleware的由来 单一的state是存储在store中,当要对state进行更新的时候,首先要发起一个action(通过dispatch函数),action的作用就是相当于一个消息通知, ...

  7. spring boot 热更新配置

    maven添加 spring-boot-devtools 允许自动构建 设置里面,搜索compiler,在Build,Execution,Deployment里面勾选Build project aut ...

  8. vue项目中, 字段信息为空时不渲染,是真的不渲染吗

    代码 样式,宽度pro_proj 此class设置有宽度,考虑字数如果太多就进入下一行就没有设置高度 样式改为 数据 渲染. 开始以为,null时vue不渲染,然后审查元素,发现渲染的dom是存在的, ...

  9. C/C++基础----标准库几个工具库tuple,bitset,正则表达式,随机数,IO库

    tuple tuple可以有任意多个成员 默认初始化,值初始化 构造函数是explicit,必须直接初始化 make_tuple(v1,v2,-,vn) get<i> (t) 返回第i个数 ...

  10. elasticsearch 口水篇(8)分词 中文分词 ik插件

    先来一个标准分词(standard),配置如下: curl -XPUT localhost:9200/local -d '{ "settings" : { "analys ...