第 9 章 文件传输和访问协议

42
第9第 第第 第第第第第第 第第第 第第第

description

第 9 章 文件传输和访问协议. 主讲人:刘正华. 了解 FTP 命令与应答的结构,熟悉常见的命令与应答. 3. 理解 FTP 协议的基本原理. 2. 了解常见的两种网络文件访问方式. 1. 4. 了解 TFTP 与 NFS 协议. 本章学习目标. 文件传输与存取协议. 目的在于通过网络存取、共享文件,包括的主要协议有: FTP (File Transfer Protocol ,文件传输协议 ) TFTP (Trivial File Transfer Protocol ,简单文件传输协议 ) - PowerPoint PPT Presentation

Transcript of 第 9 章 文件传输和访问协议

第 9 章 文件传输和访问协议

主讲人:刘正华

理解 FTP协议的基本原理2

了解常见的两种网络文件访问方式1

了解 TFTP 与 NFS协议4

本章学习目标

了解 FTP命令与应答的结构,熟悉常见的命令与应答3

文件传输与存取协议

• 目的在于通过网络存取、共享文件,包括的主要协议有:

• FTP (File Transfer Protocol ,文件传输协议 )

• TFTP (Trivial File Transfer Protocol ,简单文件传输协议 )

• NFS (Network File System ,网络文件系统 )

文件传输与存取协议

• FTP 是 Internet 传统的服务之一,其功能主要是在主机间高速、可靠地传输文件

9.1 文件传输与访问

• 通常可将网络文件访问方式分为两类:• 一类主要实现文件的传输功能,通常称为

“文件传送” 。特点是传输与处理完全分开,可提高在本地进行信息处理的效率。实现协议如 FTP

9.1 文件传输与访问

• 另一类则需要实现即时访问(读写)网络上文件的功能 ,而且能够处理并行访问的情况,通常称为“文件存取” 。 特点是文件做的修改能够立即生效,即访问远程文件就好像访问本地文件一样。常见的实现有两种:采用专门的数据库服务器或使用NFS 。

9.2 FTP协议

• FTP 是用于实现文件传输服务的最主要的规范,除了最主要的传输功能以外, FTP 还提供了以下功能:• 交互方式:命令行方式或图形用户界面• 数据表示:允许客户端程序指定传输数据的

类型及格式 • 身份验证:用户访问 FTP 服务器需要提供

经过授权的用户名与密码,以保证数据安全,特殊的匿名访问方式则取消了这种限制

9.2.1 FTP的工作原理

• FTP 使用客户端–服务器模式,用户执行FTP 程序,客户端程序先与远程服务器建立连接,用户登录到远程服务器后,向远程服务器发出传输命令,服务器在收到命令后就给予响应,并执行正确的命令

• FTP 会建立两种类型的连接:控制连接与数据连接。控制连接传送客户端发出的命令和服务器返回的响应信息,数据连接则负责传输文件的内容

9.2.1 FTP的工作原理

FTP 模型示意图

9.2.2 FTP的数据表示与传输模式

• 数据表示包括数据类型和文件结构两个方面

9.2.2 FTP的数据表示与传输模式

• 数据类型• ASCII 类型 • EBCDIC 类型 • IMAGE 类型 • LOCAL 类型

9.2.2 FTP的数据表示与传输模式

• 数据结构• 文件结构• 记录结构• 页结构

9.2.2 FTP的数据表示与传输模式

• FTP 协议规范中规定了三种传输模式 • STREAM 模式(流模式)• BLOCK 模式(块模式)• COMPRESSED 模式(压缩模式)

9.2.3 FTP命令

• FTP 协议规范中定义了许多 FTP 命令,用于登录 FTP 服务器、设置传输参数、浏览服务上的文件与目录列表、获取服务器上的文件、存储文件到服务器上,并管理服务器与客户端之间文件的传输过程。

• 这里所说的 FTP 命令,指的是 FTP 协议中定义的标准 FTP 命令,要特别注意不能与 FTP 程序所提供给的用户使用的操作命令混为一谈。

9.2.3 FTP命令

UNIX 下 ftp 工具提供给用户使用的命令(例子)

9.2.3 FTP命令

• FTP 协议中将标准 FTP 命令分为三类:• 存取控制命令• 传输参数命令• FTP 服务命令

9.2.3 FTP命令

• 存取控制命令主要提供了用户身份验证功能和目录切换功能

命令与格式 描述USER username 向服务器提供用户名以实现用户验证PASS password 紧随 USER 命令,向服务器提供用户名相对应的密码CWD pathname 改变当前工作目录CDUP 返回到上一级目录QUIT 从 FTP 服务器上退出登录,关闭控制连接

(若文件传输未结束,则等待传输完成再响应本命令)

常用 FTP 命令( 1 ) 存取控制命令

9.2.3 FTP命令

• 传输参数命令传输参数设置后一直有效,除非用新的命令改变传输参数,或者新建立了数据连接

常用 FTP 命令( 2 ) 传输参数命令

命令与格式 描述PORT host-port 使用主动( Active )模式传输数据PASV 使用被动( Passive )模式传输数据TYPE type-code 设置文件的数据类型STRU structure-

code设置文件的数据结构

MODE mode-code 设置传输模式

9.2.3 FTP命令

• FTP 服务命令定义了一系列文件传输及文件系统操作相关的命令,这些命令的参数通常是pathname (路径名),路径名的书写必须符合服务器端的规范

常用 FTP 命令( 3 ) FTP 服务命令

命令与格式 描述LIST [pathname] 显示服务器上指定路径下的文件与目录列表RETR pathname 从服务器上检索(下载)一个文件STOR pathname 往服务器上存储(上传)一个文件APPE pathname 添加数据到服务器上的指定文件(若文件不存在则自动创

建)DELE pathname 删除服务器上的指定文件RNFR pathnameRNTO pathname

文件重命名,这两条命令需要同时使用:RNFR 命令指定旧的文件名, RNTO 命令指定新的文件名

MKD pathname 在服务器上建立指定目录RMD pathname 从服务器上删除指定目录PWD 显示当前工作目录HELP [string] 返回指定命令信息(若不指定命令名,则返回可用命令列

表)STAT 返回状态信息(如上传、下载的字节数等)SYST 返回服务器上使用操作系统的类型ABOR 中止前一命令,并中断数据传输NOOP 无动作(但服务器会回送 OK 作为响应)

9.2.4 FTP应答

• 服务器接收客户端命令并处理之后,会返回给客户端相应的命令响应信息,这种返回响应的方式称作 FTP 应答

• FTP 应答保证了文件传输过程中请求与行为的同步,并使得用户进程总是能了解服务器的状态

9.2.4 FTP应答

• 每条 FTP 命令可以产生一条或多条响应,但多数情况下,每条命令只返回一条响应

9.2.4 FTP应答

• FTP 响应与 FTP 命令一样,都是在客户端与服务器之间的控制连接上以 NVT ASCII 码形式传送,并在每行末尾以 CR-LF 标志行结束

• FTP 响应由一个 3 位的数字代码(应答码),一个字符串形式的表示命令执行成功与否的文本,以及命令执行成功后的输出组成。

9.2.4 FTP应答

• FTP 响应的格式:<3-digit code><SP><one line of text><CR-LF>• <3-digit code> 为 3 位数字的应答码• <SP> 表示空格• <one line of text> 是一行提供给用

户阅读的文本信息• <CR-LF> 是行结束符

9.2.4 FTP应答FTP 应答码中第 1 位和第 2 位的含义

应答码 描述1yz 肯定预备应答。它仅仅是在发送另一个命令前期在另一个应答时启动2yz 表示命令已执行成功,可以接受新命令(该命令同时返回命令的执行

结果)3yz 表示该命令已被接受,但还需要发送另一个命令来成功完成客户端的

请求4yz 表示命令执行时出错,但错误状态是暂时的,命令可以稍后再发送5yz 表示命令无法被接受(不能通过重新发送命令来解决)x0z 表示命令中有语法错误x1z 表示返回请求的信息(如 HELP 命令)x2z 表示响应与控制连接或数据连接有关x3z 表示响应中包含了用户账户信息x4z 暂时未指定含义x5z 表示服务器上响应客户端命令的文件系统状态

9.2.5 FTP连接管理

• 进行通信时, FTP 需要建立两个 TCP 连接• 控制连接(端口号默认值为 21 ):用于发送

指指令给服务器及接收服务器响应• 数据连接(端口号默认值为 20 ,仅 PORT

模式):数据传输的通道• FTP 协议中规定了两种连接模式• PORT (主动模式)• PASV (被动模式)

PORT模式

• 数据连接由服务器初始化完成• 客户端选择一个大于 1024 的端口连接服务器

的 21 端口• 需传输数据时,客户端会送出 PORT 命令告诉

服务器连接到自己的某一端口来建立数据连接,同时侦听该端口

• 服务器收到 PORT 命令时,会使用 20 端口连接客户端在 PORT 命令中指定的端口号,然后传输数据

PORT模式

使用 PORT 模式的 FTP 连接示意图

PASV模式

• 数据连接由客户端初始化• 客户端选择一个大于 1024 的端口连接服务

器的 21 端口• 需传输数据时,客户端向服务器发送 PASV

命令,通知服务器自己希望连接到服务器的某一个端口

• 如果服务器上这个端口是空闲可用的,则服务器返回 ACK 作为确认信息,然后返回用户所需的信息;若端口已被占用,服务器会返回 UNACK 的信息, FTP 客户端会再次发送PASV 命令重复上述过程

PASV模式

使用 PASV 模式的 FTP 连接示意图

9.3 TFTP

• TFTP 是 TCP/IP 协议族中的一个用于在网络上的计算机之间进行文件传输的协议,提供功能单一、开销不大的文件传输服务。

9.3 TFTP

• TFTP 的主要特征如下:• 基于 UDP 协议(用户数据报协议),使

用超时重传方式来保证数据的到达• 只提供文件的上传与下载功能,不提供获

取文件和目录列表的功能• 不提供存取授权与用户认证机制• 多用于局域网以及远程 UNIX计算机中( FTP 则多用于互联网中)

9.3.1 TFTP协议

← TFTP 报文的封装

5 种 TFTP 报文的格式 →

9.3.1 TFTP协议

• 在 TFTP 中文件传输的过程如下:客户端向服务器的 69 端口发送一个读请求或者写请求分组,同时建立一个连接,客户端使用的端口是随机产生的。如果服务器同意请求,则连接成功,接着就是文件数据的传输过程。

• 除了最后一个 TFTP 数据分组,每个数据分组包含固定 512 字节长度的文件数据

9.3.1 TFTP协议

• 在发送下一个数据分组之前,必须得到确认响应,如果未收到确认,则必须一直等待 (停止等待方式 )

• 如果分组在网络中丢失,接收端在计时器超时之后会重新发送分组

• 如果传输过程中出现错误,就通过差错报文分组来通告错误发生

9.3.2 TFTP规范中的问题

TFTP 中的 Sorcerer’s Apprentice Bug 示意图

9.4 NFS

• NFS (网络文件系统 ) 最初是由 Sun Microsystems公司设计开发的,目前已经成为 Internet网络上进行分布式访问的一种事实上的标准

• NFS 主要具有以下特点:• 共享文件访问 • 信息访问的透明性 • 简化管理工作 • 良好的扩展性 • 可靠性 • 操作的简易性

9.4 NFS

• RPC ( Remote Procedure Call ,远程过程调用)和 XDR( External Data Representation ,外部数据表示)为 NFS提供所需的网络连接及解释基于这些连接发送的数据格式

9.4 NFS

• RPC运行在 OSI 模型的会话层,它提供一组过程库,使远程计算机系统可像调用本地过程一样调用这些过程,无需了解于远程系统的底层细节,才使得 NFS 与平台无关。

• XDR运行在 OSI 模型的表示层,负责在不同的计算机系统间转换 RPC 数据, XDR 设计了一种标准的数据表示,使得所有计算机均可理解

小结

• FTP 是实现文件传输的最基本的应用层协议• FTP 使用户能在两个联网的计算机之间传输

文件,是互联网上文件传输的主要方式• FTP 提供身份验证服务,用户需要提供有效

的用户名与密码,匿名 FTP 取消了这种限制,允许所有用户访问

小结

• TFTP 是一种很简单的文件传输协议,只提供文件的上传与下载功能,不提供获取文件和目录列表的功能,也不提供用户验证机制

• TFTP 工作在 UDP 上,用超时重传方式来保证数据的到达

• 利用 NFS 可以建立一个分布式的文件系统,提供在多机环境中对网络的透明访问。用户可以像存取本地计算机上的文件一样,方便快捷地访问网络上其他计算机中的文件