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

第38章      TFTP简单文件传输基础知识

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

(本章的知识点主要整理自网络)

38.1  初学者重要提示

38.2  TFTP基础知识参考资料

38.3  TFTP基础知识点

38.4  总结

38.1  初学者重要提示

  • TFTP简单文件传输协议在实际项目中有比较重要的实用价值,需要初学者对TFTP的基础知识也有个认识。

38.2  TFTP基础知识参考资料

大家可以从以下地址获得TFTP基础知识参考资料:

  • wiki百科中文版TFTP:地址链接(这个是超链接)
  • wiki百科英文版TFTP:地址链接(这个是超链接)
  • 百度百科TFTP:地址链接(这个是超链接)

对于初学者来说,学习上面三个参考资料就够了。如果大家有网络方面的书籍,比如《TCP/IP详解》,也可以直接看书籍中这方面的内容。

38.3  TFTP基础知识点

(这里的知识点整理自上面的参考资料地址)

教程这里也对TFTP的基础知识做个介绍,方便大家先有个大概的认识。

38.3.1 TFTP简要说明

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69。

TFTP是一个传输文件的简单协议,它基于UDP协议实现。此协议设计的时候是进行小文件传输的。因此它不具备FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不支持认证,它传输8位数据。传输中有三种模式:

  • netascii,这是8位的ASCII码形式。
  • octet,这是8位源数据类型。
  • mail,已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

38.3.2 TFTP通信机制简介

TFTP通信由一个读取或写入文件的请求发起,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。

错误主要是由下面三种情况引起的:

  • 不能满足请求。
  • 收到的数据包内容错误,而这种错误不能由延时或重发解决。
  • 对需要资源的访问丢失(如硬盘满)。

TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这些都是为了实现起来方便而进行的。

38.3.3 TFTP特点

因为TFTP使用UDP,而UDP使用IP,IP可以还使用其它本地通信方法。因此一个TFTP包中会有以下几段:本地媒介头,IP头,数据报头,TFTP头,剩下的就是TFTP数据了。TFTP在IP头中不指定任何数据,但是它使用UDP中的源和目标端口以及包长度域。由TFTP使用的包标记(TID)在这里被用做端口,因此TID必须介于0到65535之间。TFTP头中包括两个字节的操作码,这个码指出了包的类型,大体上的TFTP包格式如下:

TFTP的局限:

  • TFTP不具备FTP的许多功能,它只能从文件服务器上获得或写入文件,没有列出目录的功能,也不能对用户进行身份鉴别,它传输8位数据。
  • 因为小型文件传输协议使用UDP协议,就必须自己支持传输和会话的控制。
  • 由于小型文件传输协议缺少安全性,在开放式因特网上传输非常危险,所以一般仅用于私人本地网络。目前TFTP常用于PXE无盘启动、网络设备的设置等。

TFTP的优点:

  • TFTP可用于UDP环境,比如同时向许多机器下载程序或者文件时就往往需要使用到TFTP协议。
  • TFTP代码所占的内存较小,这对于较小的计算机或者某些特殊用途的设备来说是很重要的,这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容量只读存储器即可。当电源接通后,设备执行只读存储器中的代码,在网络上广播一个TFTP请求。网络上的TFTP服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

38.3.4 TFTP简单执行流程

下面是简单的执行流程,更详细的可以看wiki百科英文版上的说明:地址链接(这个是超链接)。

  1. 初始化主机A发送一个读请求(RRQ)或写请求(WRQ)包给主机B,包含了文件名和传输模式。
  2. B向A发一个ACK包应答,同时也通知了A其余送往B包应该发送的端口号。
  3. 源主机向目的主机发送编过号的数据包,除了最后一个都应该包含一个全尺寸的数据块。目的主机用编号的ACK包应答所有的数据包。
  4. 最终的数据包必须包含少于最大尺寸的数据块以表明这是最后一个包。如果被传输文件正好是尺寸块的整数倍,源主机最后送的数据包就是0字节的。

38.3.5 FTP和TFTP的区别

TFTP协议的优势:

尽管与FTP相比TFTP的功能要弱得多,但是TFTP具有两个优点:

  • TFTP能够用于那些有UDP而无TCP的环境。
  • TFTP代码所占的内存要比FTP小。

尽管这两个优点对于普通计算机来说并不重要,但是对于那些不具备磁盘来存储系统软件的自举硬件设备来说TFTP特别有用。

TFTP协议与FTP协议的相同点:

TFTP协议的作用和我们经常使用的FTP大致相同,都是用于文件传输,可以实现网络中两台计算机之间的文件上传与下载。可以将TFTP协议看作是FTP协议的简化版本。

TFTP协议与FTP协议的不同点:

  • TFTP协议不需要验证客户端的权限,FTP需要进行客户端验证。
  • TFTP协议一般多用于局域网以及远程UNIX计算机中,而常见的FTP协议则多用于互联网中。
  • TFTP客户与服务器间的通信使用TCP,而TFTP客户与服务器间的通信使用的是UDP。
  • TFTP只支持文件传输。也就是说,TFTP不支持交互,而且没有一个庞大的命令集。最为重要的是,TFTP不允许用户列出目录内容或者与服务器协商来决定哪些是可得到的文件。

38.4 总结

本章节就为大家讲解这么多,更多TFTP的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。

原文地址:https://www.cnblogs.com/armfly/p/9621003.html

时间: 2024-11-10 16:23:17

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

tftp简单文件传输协议搭建

TFTP 简单文件传输协议 安装 sudo apt-get install tftp  tftpd openbsd-inetd 需要tftp tftpd openbsd-inetd  3个应用组件 配置 在/etc/inetd.conf tftp        dgram    udp    wait    nobody    /usr/sbin/tcpd    /usr/sbin/in.tftpd /home/gec/tftp 其中/home/gec/tftp就是tftp通信目录 建立目录 和

TFTP 简单文件传输协议

简 介 简单文件传输协议是一种基于UDP协议的客户端和服务器之间进行简单文件传输的协议,它提供了不复杂.开销不大的文件传输服务. 它使用UDP协议的69号端口作为其传输,不能列出目录内容,无验证或加密机制,被用于在远程服务器上读取或写入文件,因此文件的传输过程也不像FTP协议那样可靠.但是TFTP不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎不大的文件时,效率更加高,目前主要适用于私人的本地网络中,常用于PXE无盘启动,网络设备的设置等. 部署环境: rhel6.5操

基于TCP的TFTP(Trivial File Transfer Protocol,简单文件传输协议) 的c编程实现

我们或许都听到过,TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务. 本文就简单的叙述下tftp的小文件传输功能以及客户端对服务器的列表功能. 之前就一直很纳闷,我们经常在网上下载什么东西或者从别处传输一个文件,具体是怎么实现的呢?于是乎,翻查一些资料,加上自己对网络编程的逐步加深,所以功夫不负有心人,还算是大致的完成了下. 本例程实现的功能呢?

ExtJS教程(2)--- Javascript类和对象基础知识

Javascript中的类其实就是一个function 如下面定义一个Person类 //定义一个类 function Person(){ this.name = 'jaune'; this.age = 18; } //创建一个对象 var person1 = new Person(); console.log(person1); /* * 控制台打出以下内容 * Person {name: "jaune", age: 18} */ 上面是一个简单的定义类及创建类的方法 //定义一个带

【Python基础教程第2版】——第一讲:基础知识

1.长字符串:(用三引号如'''或者"""来引起来) >>> print """This is a very log string.It continues here.And it's not over yet."Hello world!"""" This is a very log string.It continues here.And it's not over yet.&

笔记-《数据通信与网络教程》-第一章

1. 网络拓扑结构(Network Topology) 1. 公共总线拓扑结构( Common Bus Top ology):它们通过一根单总线(一束并行线)进行通信.每个设备通过相应的接口侦听总线,检查数据传输.如果接口判断出数据时送往它所服务的设备的,它就从总线上读取数据并传给设备.当一个设备有数据需要传送时,其接口电路检测总线是否空闲,如果是就立刻发送数据.当两个设备同时检测到总线空闲并传输数据时会产生一个冲突信号,设备传输时继续监听总线,因此能检测到冲突信号,并停止传输,等待一段随机事件

简单文件传输TFTP服务器搭建 Linux RHEL6

Tftp 的应用场合 1.交换机或路由器升级或备份 2.无盘工作站 存放boot loader 3.嵌入式开发时装载系统 4.大规模的服务安装布署 安装 1.# yum install xinetd # yum install -y tftp-server 2.检查是否开机启动 # chkconfig --list | grep xinet xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off xinetd b

第0章Linux环境到内核基础知识

#include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall helloworld.c -o hello_world 生成可执行文件,其过程 涉及预处理,编译,汇编,链接等多个步骤 预处理:用于处理预处理命令,上面helloworld代码的预处理就是#include,该头文件所有源码将在第一行展开,可使用 gcc -E helloworld.c > hellow

第三章 必须知道的一些基础知识[DDT书本学习 小甲鱼]【2】

3.6 条件分支========================完成第一个要求 提示作用 计算机如何比较 > < == != >= <= 操作符 开始例子源码 '''=========猜数字游戏==============''' i=7 number=input("猜猜我手中的数字是?:") n=int(number) if n==i: print("你猜对了!") else: if n>i: print("猜大了"