




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP IP基本原理第九章文件传输 本章学习要求 掌握 FTP的概念掌握 FTP的两种文件传输的数据格式掌握 FTP的两种工作模式及其工作原理掌握 FTP的连接了解 TFTP协议的基本概念及其分组结构 9 1FTP FTP的概念FTP是TCP IP协议组中的协议之一 是FileTransferProtocol的缩写 该协议是Internet文件传送的基础 它由一系列规格说明文档组成 目标是提高文件的共享性 提供非直接使用远程计算机 使存储介质对用户透明和可靠高效地传送数据 简单的说 FTP就是完成两台计算机之间的拷贝 从远程计算机拷贝文件至自己的计算机上 称之为 下载 download 文件 若将文件从自己计算机中拷贝至远程计算机上 则称之为 上载 upload 文件 在TCP IP协议中 FTP标准命令TCP端口号为21 Port方式数据端口为20 FTP服务器和客户端同大多数Internet服务一样 FTP也是一个客户 服务器系统 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序 依照FTP协议提供服务 进行文件传送的计算机就是FTP服务器 而连接FTP服务器 遵循FTP协议与服务器传送文件的电脑就是FTP客户端 用户要连上FTP服务器 就要用到FPT的客户端软件 通常Windows自带 ftp 命令 这是一个命令行的FTP客户程序 另外常用的FTP客户程序还有CuteFTP Ws FTP Flashfxp LeapFTP 流星雨 猫眼等 FTP用户授权用户授权 要连上FTP服务器 即 登录 只有在有了一个用户标识和一个口令后才能登陆FTP服务器 享受FTP服务器提供的服务 FTP地址格式 ftp 用户名 密码 FTP服务器IP或域名 路径 文件名上面的参数除FTP服务器IP或域名为必要项外 其他都不是必须的 如以下地址都是有效FTP地址 ftp foolish 6600 orgftp list list foolish 6600 orgftp list list foolish 6600 org 2003ftp list list foolish 6600 org 2003 soft list txt匿名FTP 互连网中有很大一部分FTP服务器被称为 匿名 Anonymous FTP服务器 它不要求用户事先在该服务器进行登记注册 也不用取得FTP服务器的授权 Anonymous 匿名文件传输 能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件 而不必是该远程主机的注册用户 用户使用特殊的用户名 anonymous 登录FTP服务 就可访问远程主机上公开的文件 虽然目前使用WWW环境已取代匿名FTP成为最主要的信息查询方式 但是匿名FTP仍是Internet上传输分发软件的一种基本方法 9 1 1FTP文件传输的数据格式 假设两台计算机通过ftp协议对话 并且能访问Internet 就可以用ftp命令来传输文件 每种操作系统使用上有某一些细微差别 但是每种协议基本的命令结构是相同的 FTP的文件传输有两种数据格式 ASCII传输格式和二进制数据传输格式 ASCII传输格式 用于传输ASCII码文本 如果在远程机器上运行的不是UNIX 当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式 如果用户传输的文件不是文本文件 在拷贝任何非文本文件之前 用binary命令告诉ftp逐字拷贝 不要对这些文件进行处理 这也是下面要讲的二进制传输 二进制传输格式 在二进制传输中 保存文件的位序 以便原始和拷贝的是逐位一一对应的 即使目的地机器上包含位序列的文件是没意义的 如果你在ASCII方式下传输二进制文件 即使不需要也仍会转译 这会使传输稍微变慢 也会损坏数据 使文件变得不能用 在大多数计算机上 ASCII方式一般假设每一字符的第一有效位无意义 因为ASCII字符组合不使用它 FTP支持两种模式 一种方式叫做Standard 也就是PORT方式 主动方式 一种是Passive 也就是PASV 被动方式 Standard模式FTP的客户端发送PORT命令到FTP服务器 Passive模式FTP的客户端发送PASV命令到FTPServer 下面介绍一个这两种方式的工作原理 Port模式FTP客户端首先和FTP服务器的TCP21端口建立连接 通过这个通道发送命令 客户端需要接收数据的时候在这个通道上发送PORT命令 PORT命令包含了客户端用什么端口接收数据 在传送数据的时候 服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据 FTPserver必须和客户端建立一个新的连接用来传送数据 Passive模式在建立控制通道的时候和Standard模式类似 但建立连接后发送的不是Port命令 而是Pasv命令 FTP服务器收到Pasv命令后 随机打开一个高端端口 端口号大于1024 并且通知客户端在这个端口上传送数据的请求 客户端连接FTP服务器此端口 然后FTP服务器将通过这个端口进行数据的传送 这个时候FTPserver不再需要建立一个新的和客户端之间的连接 9 1 2FTP的工作方式 9 1 3FTP服务命令 FTP服务命令定义用户请求的文件传输或文件系统功能 此命令的参数通常是路径名 其语法要和服务器的规范一致 推荐的默认值是最近指定的设备目录或目录 命令顺序通常没有限制 只有 renamefrom 命令后面必须是 renameto 重新启动命令后面必须是中断服务命令 服务命令的响应通常在数据连接上传输 下面是具体的命令 获得文件 RETR 使服务器DTP传送指定路径内的文件复制到服务器或用户DTP 服务器上文件的状态和内容不受影响 保存 STOR 使服务器DTP接收数据连接上传送过来的数据 并将数据保存在服务器的文件中 如果文件已存在 原文件将被覆盖 如果文件不存在 则新建文件 唯一保存 STOU 此命令和STOR差不多 要求在此目录下的文件名是唯一的 对此命令的响应必须包括产生的用户名 附加 APPE 它和STOR的功能差不多 但是如果文件在指定路径内已存在 则把数据附加到原文件尾部 如果不存在则新建文件 分配 ALLO 此命令用于在主机上为新传送的文件分配足够的存储空间 参数是十进制的逻辑字节数 如果是记录或页结构 页或记录的最大大小也需要 这在第二个参数内以十进制指定 第二个参数是可选的 如果有它 它和第一个参数以Telnet字符R分隔 此命令在STOR或APPE命令后 对于不需要分配存储空间的机器 它的作用等于NOOP 重新开始 REST 参数域代表服务器要重新开始的那一点 此命令并不传送文件 而是略过指定点后的数据 此命令后应该跟其它要求文件传输的FTP命令 重命名 RNFR 这个命令和我们在其它操作系统中使用的一样 只不过后面要跟 renameto 指定新的文件名 重命名为 RNTO 此命令和上面的命令共同完成对文件的重命名 放弃 ABOR 此命令通知服务中止以前的FTP命令和与之相关的数据传送 如果先前的操作已经完成 则没有动作 返回226 如果没有完成 返回426 然后再返回226 关闭控制连接 数据连接不关闭 删除 DELE 此命令删除指定路径下的文件 用户进程负责对删除的提示 删除目录 RMD 此命令删除目录 创建目录 MKD 此命令在指定路径下创建新目录 显示工作目录 PWD 返回当前工作目录 列表 LIST 服务器传送列表到被动DTP 如果路径指定一个目录或许多文件 返回指定路径下的文件列表 如果路径名指定一个文件 服务器返回文件的当前信息 参数为空表示用户当前的工作目录或默认目录 数据传输在ASCII或EBCDIC下进行 用户必须确认这一点 因为文件信息因系统不同而不同 所以不可能被程序自动利用 但是人类用户却很需要 名字列表 NLST 服务器传送目录表名到用户 路径名应指定目录或其它系统指定的文件群描述子 空参数指当前目录 服务器返回文件名数据流 以ASCII或EBCDIC形式传送 并以或分隔 这里返回的信息有时可以供程序进行进一步处理 站点参数 SITE 服务器用来提供服务器系统信息 信息因系统不同而不同 格式在HELPSITE命令应答中给出 系统 SYST 用于确定服务器上运行的操作系统 状态 STAT 此命令返回控制连接状态 它可以在文件传送过程中发送 服务器返回操作进行的状态 也可以在文件传送之间发送 这时命令有参数 参数是路径名 此命令的功能除了数据在控制连接上传送以外和列表命令相似 如果指定部分路径 服务器以文件名或与说明相关的属性返回 如没有参数 服务器返回服务器FTP进程的状态信息 包括传输参数的当前值和连接状态 帮助 HELP 这条命令我们在平常系统中得到的帮助没有什么区别 响应类型是211或214 建议在使用USER命令前使用此命令 等待 NOOP 此命令不产生什么实际动作 它仅使服务器返回OK FTP在控制连接上使用Telnet通信 FTP命令可分为访问控制标记 数据传输参数或FTP服务请求 特定的命令 如ABOR STAT 可以在数据传输过程中在控制连接上传输 有些服务器不能同时监视数据和控制链路 那就要另外采取措施了 请注意下面的几点建议 用户系统将Telnet的 InterruptProcess IP 信息插入Telnet流 用户系统发送Telnet的 Synch 信号 用户系统将命令 如ABOR 插入Telnet流 服务器PI在接收到IP后 在Telnet流中寻找仅有一个的FTP命令 9 1 4FTP客户和服务器连接 我们以标准的FTP端口号为例 介绍FTP客户和服务器连接过程 首先 FTP并不像HTTP协议那样 只需要一个端口作为连接 HTTP的默认端口是80 FTP的默认端口是21 FTP需要2个端口 一个端口是作为控制连接端口 也就是21这个端口 用于发送指令给服务器以及等待服务器响应 另一个端口是数据传输端口 端口号为20 仅PORT模式 是用来建立数据传输通道的 主要有3个作用 从客户向服务器发送一个文件 从服务器向客户发送一个文件 从服务器向客户发送文件或目录列表 其次 FTP的连接模式有两种 PORT和PASV PORT模式是一个主动模式 PASV是被动模式 这里都是相对于服务器而言的 为了让大家清楚的认识这两种模式 分别举例说明 PORT模式当FTP客户以PORT模式连接服务器时 他动态的选择一个端口号 本次试验是6015 连接服务器的21端口 注意这个端口号一定是1024以上的 因为1024以前的端口都已经预先被定义好 被一些典型的服务使用 当然有的还没使用 保留给以后会用到这些端口的资源服务 当经过TCP的三次握手后 连接 控制信道 被建立 如图1和图2 图1 FTP客户使用FTP命令建立于服务器的连接图2 用netstat命令查看 控制信道被建立在客户机的6015和服务器的20端口 现在用户要列出服务器上的目录结构 使用ls或dir命令 那么首先就要建立一个数据通道 因为只有数据通道才能传输目录和文件列表 此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道 这个命令由控制信道发送给服务器 当服务器接到这一指令时 服务器会使用20端口连接用户在PORT指令中指定的端口号 用以发送目录的列表 如图3 图3 ls命令是一个交互命令 它会首先与服务器建立一个数据传输通道 经验证本次试验客户机使用6044端口 当完成这一操作时 FTP客户也许要下载一个文件 那么就会发出get指令 请注意 这时客户会再次发送PORT指令 告诉服务器连接他的哪个 新 端口 你可以先用netstat na这个命令验证 上一次使用的6044已经处于TIME WAIT状态 如图4 图4 使用netstat命令验证上一次使用ls命令建立的数据传输通道已经关闭当这个新的数据传输通道建立后 在微软的系统中 客户端通常会使用连续的端口 也就是说这一次客户端会用6045这个端口 就开始了文件传输的工作 PASV模式在初始化连接服务器这个过程和PORT模式是一样的 不同的是 当FTP客户发送ls dir get等这些要求数据返回的命令时 他不向服务器发送PORT指令而是发送PASV指令 在这个指令中 用户告诉服务器自己要连接服务器的某一个端口 如果这个服务器上的这个端口是空闲的可用的 服务器会返回ACK的确认信息 之后数据传输通道被建立并返回用户所要的信息 根据用户发送的指令 如ls dir get等 如果服务器的这个端口被另一个资源所使用 那么服务器返回UNACK的信息 那么这时 FTP客户会再次发送PASV命令 这也就是所谓的连接建立的协商过程 为了验证这个过程我们不得不借助CuteFTPPro这个常用FTP客户端软件 因为微软自带的FTP命令客户端 不支持PASV模式 虽然你可以使用QUOTEPASV这个命令强制使用PASV模式 但是当你用ls命令列出服务器目录列表 你会发现它还是使用PORT方式来连接服务器的 现在我们使用CUTEFTPPro以PASV模式连接服务器 请注意连接LOG里这几句话 其中 227EnteringPassiveMode 127 0 0 1 26 80 代表客户机使用PASV模式连接服务器的26x256 108 6764端口 当然服务器要支持这种模式 125Dataconnectionalreadyopen Transferstarting 说明服务器的这个端口可用 返回ACK信息 再让我们看看用CUTEFTPPro以PORT模式连接服务器的情况 其中在LOG里有这样的记录 其中 PORT127 0 0 1 28 37告诉服务器当收到这个PORT指令后 连接FTP客户的28x256 37 7205这个端口 Acceptingconnection 127 0 0 1 20表示服务器接到指令后用20端口连接7205端口 而且被FTP客户接受 9 1 6FTP应答 FTP命令的响应是为了对数据传输请求和过程进行同步 也是为了让用户了解服务器的状态 每个命令必须有最少一个响应 如果是多个 它们要易于区别 有些命令是有顺序性的 因此其中任何一个命令的失败会导致从头开始 FTP响应由三个数字构成 后面是一些文本 数字带有足够的信息命名用户PI不用检查文本就知道发生了什么 文本信息与服务器相关 用户可能得到不同的文本信息 文本和数字以间隔 文本后以Telnet行结束符结束 三位数字每位都有一定的意义 第一位确定响应是好的 坏的还是不完全的 通过检查第一位 用户进程通常就能够知道大致要采取什么行动了 如果用户程序希望了解出了什么问题 可以检查第二位 第三位留表示其它信息 第一位有五个值 1 确定预备应答请求的操作正在被初始化 在进入下一个命令前等待另外的应答 这类响应用于说明命令被接受 在实现中如何同步监视有困难 用户进程现在可以关注数据连接了 服务器FTP进程对第个命令几乎都返回1yz响应 2 确定完成应答要求的操作已经完成 可以执行新命令 3 确定中间应答命令已接受 但要求的操作被停止 停止接收更新的信息 4 暂时拒绝完成应答未接受命令 要求的操作未执行 但错误是临时的 过一会儿可以再次发送消息 用户应该返回命令序列的开始 这个暂时可是不好确定 此命令的意思就是让用户进程再次尝试使用此命令 5 永远拒绝完成应答它与暂时拒绝完成应答的区别就在于错误条件是一时半会不会消失 下面我们来看看第二位所代表的意义 0 格式错误 1 此类应答是为了请求信息的 2 此类应答是关于控制和数据连接的 3 关于认证和帐户登录过程 4 未使用 5 此类应答是关于文件系统的 第三个数字是在第二个数字的基础上对应答内容的进一步细化 一般来说 数字代码后要有文本信息 实现时应该尽量使用现有的代码 而不要随便添加新的意义不大的代码 下面我们根据数字顺序列出各个应答码及其意义 9 2普通文件传输协议TFTP TFTP是网络应用程序 它比FTP简单也比FTP功能少 它在不需要用户权限或目录可见的情况下使用 它使用UDP协议而不是TCP协议 TFTP在RFC1350内得到详细说明 计算机 网络设备或外围设备 可能需要在不使用FTP建立控制或数据连接时情况下传输小文件 例如打印机 集线器或交换机等硬件设备在启动时可能需要从服务器上下载固件信息 无盘计算机可能需要从服务器上下载自举系统文件 在这些情况下 在无连接UDP协议上实现的普通文件传输协议是最好的选择 普通文件传输协议 TFTP TrivialFileTransferProtocol 提供了这样的简单文件传输机制 9 2 1TFTP的分组结构我们先了解TFTP分组的结构 它是该协议中的基本数据传输单元 TFTP分组按照结构的不同有5种分类方法 前两种类型是读请求分组和写请求分组 读请求分组或写请求分组是在连续分组流中发送的初始分组 当客户端需要从服务器下载文件时 就向服务器发送一个读请求分组 当客户端需要向服务器传输文件时 就向服务器发送一个写请求分组 第三种分组类型被称为数据分组 它携带着客户端计算机或设备所需的实际数据 连接在一起的设备还交换确认分组 即第四种分组类型 为了表示错误的发生 可以在设备间交换第5种分组类型 即错误分组 Filename 传送的字段名称 Mode 数据模式 协议传输的文件数据格式 可以是NetASCII 也可以是标准ASCII 八位二进制数据或邮件标准ASCII 所有分组类型都有一个操作码 Opcode 字段 里面包含一个表示该分组性质的数字值 例如 0表明该分组是一个读请求分组 请求分组也包含了用来描述文件名和传输模式的字段 数据分组包含了一个被称为块号门lockNumber 的附加字段 该字段通过指定一个块号来惟一标识分组 除了块号字段外 数据分组还包含存储了传输所需数据的数据字段 确认分组也包含块号字段 以表示有着相同块号的特定数据分组已经被确认了 确认分组中的操作码字段表示该分组的性质 错误分组除了包含操作码字段 还包括一个错误码 Errorcode 字段和一个错误报文 ErrorMessage 字段 在TFTP中实现的文件传输过程非常简单 首先 客户端设备向服务器发送一个读或写请求分组 以表示客户端需要读或者写一个特定的文件 接着 实际的传输过程通过交换数据分组而实现 各个分组一经收到就被确认 如果分组的确认没有在指定的时间内到达 服务器和客户端上的定时器将控制数据分组的重传 如果在传输过程中出现了错误 就通过错误报文分组来通告错误报文 9 2 2与其它协议的联系 因为TFTP使用UDP 而UDP使用IP IP可以还使用其它本地通信方法 因此一个TFTP包中会有以下几段 本地媒介头 IP头 数据报头 TFTP头 剩下的就是TFTP数据了 TFTP在IP头中不指定任何数据 但是它使用UDP中的源和目标端口以及包长度域 由TFTP使用的包标记 TID 在这里被用做端口 因此TID必须介于0到65 535之间 对它的初始化我们在后面讨论 TFTP头中包括两上字节的操作码 这个码指出了包的类型下面我们看看大体上的TFTP包格式 相关的内容我们在后面的章节中进行讨论 LocalMedium Internet Datagram TFTP 包头次序 9 3网络文件访问 NFS在运行不同操作系统的计算机间提供了一种访问文件的无缝环境规范 这个协议的正式规范在RFC1094中可以找到 RFC1813中提出了NFS第三版 旨在实现基于Web的文件访问机制 NFS最初是为了在运行UNIX操作系统 或Windows这样的操作系统的计算机之间建立连接而设计的 NFS由一些子协议组成 比如NFS核心协议 外部数据表示 XDR 则和远程过程调用 RPC 当计算机访问另一台机器上的文件时 它使用NFS客户端以RPC数据分组的形式来发送请求 其中这些RPC分组包含在KP段或UDP数据报中 RPC分组是NFS应用提
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年职业技能保安员保安员(中级)-保安员(初级)参考题库含答案解析
- 2025年特种作业类特种设备作业-锅炉操作工参考题库含答案解析
- 2025年特种作业类危险化学品安全作业过氧化工艺作业-光气及光气化工艺作业参考题库含答案解析
- 2025年静脉输液耗材项目立项申请报告模板
- 2025年特种作业类危险化学品安全作业加氢工艺作业-聚合工艺作业参考题库含答案解析
- 宁波华光学校数学试卷
- 2025年建筑工程类注册安全工程师安全生产法律法规-安全生产专业实务(建筑施工安全)参考题库含答案解析
- 2025年康养政策项目申请报告
- 2025年建筑工程类注册安全工程师安全生产专业实务(道路运输安全)-安全生产技术基础参考题库含答案解析
- 2025年学历类自考公共课马克思主义基本原理-马克思主义基本原理参考题库含答案解析
- GB/T 29790-2020即时检验质量和能力的要求
- GB/T 26358-2010旅游度假区等级划分
- GB/T 24218.3-2010纺织品非织造布试验方法第3部分:断裂强力和断裂伸长率的测定(条样法)
- 2023年版下肢动脉硬化闭塞症诊治指南
- 决奈达隆在心房颤动治疗中的应用培训课件
- 华为IPD流程管理全部课件
- 涂料行业企业风险分级管控体系实施指南+生产安全事故隐患排查治理体系实施指南
- 2021年唐山迁安市教师进城考试笔试试题及答案解析
- 2020进口关税税率表
- 涉外导游英语口语实训教程整套课件完整版PPT教学教程最全电子讲义教案(最新)
- 工伤知识培训(工伤待遇篇)课件
评论
0/150
提交评论