TFTP简单文件传送协议
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简单文件传送协议的更多相关文章
- 计算机网络之文件传送协议FTP
FTP 文件传送协议FTP(File Transfer Protocol)是因特网上使用最广泛的文件传送协议. FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限.FTP ...
- tftp简单文件传输协议搭建
TFTP 简单文件传输协议 安装 sudo apt-get install tftp tftpd openbsd-inetd 需要tftp tftpd openbsd-ine ...
- 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
第38章 TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- SNMP简单网络管理协议(转载)
SNMP SNMP 网络管理的历史 美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事.在80年 ...
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- Redis 协议为例谈简单的协议分析
怎样去研究一个协议的过程,协议的格式,好处,怎么样模拟发包等,下面是一个简单的过程记录. 研究的步骤: 协议相关的资料,RFC,官方文档等.弄清楚协议工作在4层还是7层,是二进制还是文本协议等 抓包, ...
- 旧文备份:简单CANOpen 协议说明
(十年前的旧文,不舍等扔) 创建日期:2005-11-17 修改日期:2005-11-17 文件名称:简单CANOpen 协议说明.doc 作者:winshton 版本:V1.0 (注:本文以24in ...
- 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 ...
随机推荐
- 乐字节Java学习01-Java语言概述,Java发展前景,Java的特点
从这篇文章开始,小乐准备写一整系列的Java学习文章,一步一步带您进入Java的神奇世界! 这是第一篇:Java语言概述以及Java的发展前景 1.SUN公司介绍 SUN公司全称是Stanford U ...
- 基于nginx与zookeeper的API Gateway实现笔记 - 环境搭建
为了简化操作,采用操作系统为CentOS 8. 首先需要编译出libzookeeper,在官网下载最新的zookeeper源码,或者github上clone一个,地址为:https://github. ...
- HNUSTOJ-1617 Graph(费马数)
1617: Graph 时间限制: 1 Sec 内存限制: 32 MB提交: 31 解决: 5[提交][状态][讨论版] 题目描述 Your task is to judge whether a ...
- spring cloud微服务实践六
本片我们就来认识下spring cloud中的zuul组件. 注:这一个系列的开发环境版本为 java1.8, spring boot2.x, spring cloud Greenwich.SR2, ...
- MogileFS安装
MogileFS是一款开源的.高性能的.分布式的文件系统,用于组建分布式文件集群.用来存取海量文件,而不用关心具体的文件存放位置.存储容量大小,以及文件损坏和丢失等问题 MogileFS有三大部分:存 ...
- (七)Activiti之历史活动查询和历史任务查询和流程状态查询
一.历史活动查询 本章案例是基于上一章节案例的基础上,流程走完后进行测试的,也就是下图的流程从学生请假到班主任审批都已经完成,本章用来测试查询历史活动和历史任务的 activiti5的历史活动包括所有 ...
- Rider开发开发.NET Framework 4.5项目遇到的一些问题
使用rdier自带resharper功能,蛮爽的但是编译旧的项目时一直报错:Invalid option 'portable' for /debug; must be full or pdbonly' ...
- luogu题解P1967货车运输--树链剖分
题目链接 https://www.luogu.org/problemnew/show/P1967 分析 NOIp的一道裸题,直接在最大生成树上剖分取最小值一下就完事了,非常好写,常数也比较小,然而题解 ...
- VBA宏注释(四)
注释用于记录程序逻辑和用户信息,其他程序员将来可以阅读并理解相同的代码无缝工作. 它包括由开发者,修改者以及还可以包括合并逻辑的信息. 解释器在执行时忽略注释. VBA中的注释用两种方法表示,它们分别 ...
- [Vuex系列] - Actions的理解之我见
Actions如何定义的 恕小端不才,对Action的总结如下: Action 可以提交mutation方法,通过mutation来改变state Action 函数可以接收一个context对象,通 ...