T F T P ( Trivial File Transfer Protocol)即简单文件传送协议,最初打算用于引导无盘系统
(通常是工作站或X终端)。和将在介绍的使用T C P的文件传送协议(F T P)不同,为了
保持简单和短小,T F T P将使用U D P。T F T P的代码(和它所需要的 U D P、I P和设备驱动程序)
都能适合只读存储器。
本篇文章对T F T P只作一般介绍,因为在引导程序协议( Bootstrap Protocol)中还会遇
到T F T P。当从网络上引导 s u n主机时,也曾遇到过 T F T P,s u n主机通过R A R P获
得它的I P地址后,将发出一个T F T P请求。

协议
在开始工作时,T F T P的客户与服务器交换信息,客户发送一个读请求或写请求给服务器。
在一个无盘系统进行系统引导的正常情况下,第一个请求是读请求( R R Q)。图1 5 - 1显示了5
种T F T P报文格式(操作码为1和2的报文使用相同的格式)。
T F T P报文的头两个字节表示操作码。对于读请求和写请求( W R Q),文件名字段说明客
户要读或写的位于服务器上的文件。这个文件字段以 0字节作为结束是一个A S C I I码串n e t a s c i i或o c t e t(可大小写任意组合),同样以0字节结束。n e t a s c i i
表示数据是以成行的A S C I I码字符组成,以两个字节 — 回车字符后跟换行字符(称为C R / L F)
作为行结束符。这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转化。
o c t e t则将数据看作8 bit一组的字节流而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。以读一个文件作为例
子,T F T P客户需要发送一个读请求说明要读的文件名和文件模式 ( m o d e )。如果这个文件能被
这个客户读取,T F T P服务器就返回一个块编号为 1的数据分组。T F T P客户又发送一个块编号
为1的A C K。T F T P服务器随后发送块编号为2的数据。T F T P客户发回块编号为2的A C K。重复
这个过程直到这个文件传送完。除了最后一个数据分组可含有不足 5 1 2字节的数据,其他每个
数据分组均含有5 1 2字节的数据。当T F T P客户收到一个不足5 1 2字节的数据分组,就知道它收
到最后一个数据分组。
在写请求的情况下,TFTP 客户发送W R Q指明文件名和模式。如果该文件能被 该客户写,
TFTP 服务器就返回块编号为 0的A C K包。该客户就将文件的头 5 1 2字节以块编号为1发出。服
务器则返回块编号为1的A C K。
这种类型的数据传输称为停止等待协议。它只用在一些简单的协议如 T F T P中。在2 0 . 3节
中将看到T C P提供了不同形式的确认,能提供更高的系统吞吐量。 T F T P的优点在于实现的简
单而不是高的系统吞吐量。。模

最后一种T F T P报文类型是差错报文,它的操作码为 5。它用于服务器不能处理读请求或
写请求的情况。在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。差
错编号字段给出一个数字的差错码,跟着是一个 A S C I I表示的差错报文字段,可能包含额外的
操作系统说明的信息。
既然T F T P使用不可靠的U D P,T F T P就必须处理分组丢失和分组重复。分组丢失可通过发
送方的超时与重传机制解决(注意存在一种称为“魔术新手综合症 ( s o r c e r e r’s apprentice
s y n d r o m e )”的潜在问题,如果双方都超时与重传,就可能出现这个问题。和许多U D P应用程序一样,T F T P报文中没有检验和,
它假定任何数据差错都将被U D P的检验和检测到

TFTP简单文件传送协议的更多相关文章

  1. 计算机网络之文件传送协议FTP

    FTP 文件传送协议FTP(File Transfer Protocol)是因特网上使用最广泛的文件传送协议. FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限.FTP ...

  2. tftp简单文件传输协议搭建

    TFTP 简单文件传输协议     安装     sudo apt-get install tftp  tftpd openbsd-inetd     需要tftp tftpd openbsd-ine ...

  3. 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识

    第38章      TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...

  4. SNMP简单网络管理协议

    声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...

  5. SNMP简单网络管理协议(转载)

    SNMP SNMP 网络管理的历史 美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事.在80年 ...

  6. python使用简单http协议来传送文件

    python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...

  7. Redis 协议为例谈简单的协议分析

    怎样去研究一个协议的过程,协议的格式,好处,怎么样模拟发包等,下面是一个简单的过程记录. 研究的步骤: 协议相关的资料,RFC,官方文档等.弄清楚协议工作在4层还是7层,是二进制还是文本协议等 抓包, ...

  8. 旧文备份:简单CANOpen 协议说明

    (十年前的旧文,不舍等扔) 创建日期:2005-11-17 修改日期:2005-11-17 文件名称:简单CANOpen 协议说明.doc 作者:winshton 版本:V1.0 (注:本文以24in ...

  9. Writing a Discard Server 写个抛弃服务器 世上最简单的协议

    Netty.docs: User guide for 4.x https://netty.io/wiki/user-guide-for-4.x.html The most simplistic pro ...

随机推荐

  1. nvm 相关命令

    nvm install 安装指定版本,可模糊安装,如:安装v10.4.0,既可nvm install v10.4.0,又可nvm install 4.4 nvm uninstall 删除已安装的指定版 ...

  2. upw,c#,启用后台播放控件

    uwp音视频app,启用后台播放控件. 启用控件 SystemMediaTransportControls systemMedia_TransportControls = SystemMediaTra ...

  3. VUE创建项目

    Vue Cli项目搭建     vue项目需要自建服务器:node 什么是node: 用C++语言编写,用来运行JavaScript语言 node可以为前端项目提供server (包含了socket) ...

  4. python — 索引与pymysql模块

    1. 索引 1.1 索引原理 1.什么是索引 ?-- 目录 索引就是建立起的一个在存储表阶段就有的一个存储结构,能在查询的时候加速. 2.索引的重要性: 读写比例 为 10:1,所有读(查询)的速度就 ...

  5. css 动画(二) transition 过渡 & animation 动画

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! translate:平移:是transform的一个属性: transform:变形:是一个静态属性,可以 ...

  6. 洛谷 P1047 校门外的树(待完善)

    链接:https://www.luogu.org/problemnew/show/P1047 题目: 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是11米.我们可以把马路看 ...

  7. NHiberante从.net framework转移到.net standard(.net core 2.2)时遇到的坑及填坑

    在.net framework中的创建session代码先贴一个 public class SessionBuilder { private static ISessionFactory _sessi ...

  8. 排序算法原理及代码实现(c#)

    1.插入排序 把第一个元素看做已排序数组放在有序数组中,从第二个元素开始,依次把无序数组元素取出和有序数组中的元素逐个比较,并放在有序数组的正确位置上. /// <summary> /// ...

  9. puml 用于代码注释

    notebook 笔记本 @startuml rectangle sql_decode.py{ object SQLDataset object Name SQLDataset : meta = &q ...

  10. swiper按钮点击无效及控制器无效问题

    点击箭头图片切换的同时,下面小图标也会随着切换,同理下面小图标切换时,上面也随着滚动. 示例代码如下: <!-- Swiper --> <div class="swiper ...