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. madlib 集成 hasura graphql-engine 试用

    madlib 可以让我们直接在sql 中进行机器学习,集成了强大的sql 能力,以及分析能力,后边会尝试 集成graphql engine ,让功能更强大 docker 镜像准备 使用了一个别人的写好 ...

  2. node ->rman to RAC (迁移)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/lmocm/article/details/34435699 *.audit_file_dest='/ ...

  3. spring-boot-dependencies jar 不完整的问题

    集成 springboot 有两种方式. 1 直接 父项目指向  springboot <parent> <groupId>org.springframework.boot&l ...

  4. Oracle ID 自增

    实现Oracle Id自增 1.方法一(Oracle Version Oracle 12c版本支持) create table app_student( id integer generated by ...

  5. Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(2)

    Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(2) 1.实验目的 2.启动命令行  将命令行切换 ...

  6. Opencv 视频保存为图像

    // 视频存为图片.cpp : 定义控制台应用程序的入口点. // /*================================================================ ...

  7. Python单元测试框架之pytest 4 -- 断言

    From: https://www.cnblogs.com/fnng/p/4774676.html Python单元测试框架之pytest -- 断言 2015-08-31 23:57 by 虫师, ...

  8. draftsight的热补丁

    http://www.piaodown.com/soft/134200.htm DraftSight HotFix 2017R3热修复补丁下载.DraftSight,一个非常好用的2D制图软件,由开发 ...

  9. 【linux】centos6.9设置etc0网卡开机自动获取ip

    在vm新安装的centos系统中,一般选择NAT来设置和主机共享局域网,通过ifconfig etc0 192.168.xx.xx 这种作法机器重启之后就会失效,所以可以使用更改文件的方式完成设置ce ...

  10. C++进阶--命名空间和关键字using

    //############################################################################ /* * C++关键字:using * * ...