【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的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信终端开发团队的专栏

Hello Bonjour!

Hello Bonjour! 一开始用Bonjour,我是拒绝的。 让我们以一个问题开头:如何能在本地网络找到自己想要的硬件设备及相应服务,并连接? 在这个以I...

287100
来自专栏七夜安全博客

Python实现PPPOE攻击工具,秒杀拨号上网

60340
来自专栏源哥的专栏

基于linux的嵌入IPv4协议栈的内容过滤防火墙系统(8)-附录

0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通常的闭合端口

9320
来自专栏SDNLAB

SDN:优雅的间歇性访问限制

一、项目简介 目的:设有一台PC机(Host1),一台Web服务器(Host2)提供简单的静态网页访问服务。通过RYU控制网络流,限制PC访问服务器的频率,如两...

39740
来自专栏施炯的IoT开发专栏

GSM Communication on EBox4300--(2)

  上一篇GSM Communication on EBox4300--(1)主要是关于EBox4300上实现GSM通信的框架。这次就讲讲如何设计包含西门子TC...

21990
来自专栏张善友的专栏

MongoDB核心贡献者:不是MongoDB不行,而是你不懂!

近期MongoDB在Hack News上是频繁中枪。许多人更是声称恨上了MongoDB,David mytton就在他的博客中揭露了MongoDB许多现存问题。...

257100
来自专栏我的安全视界观

[一起玩蛇】Python代码审计中的器II

32470
来自专栏全栈开发

webpack构建优化:bundle体积从3M到400k之路

在CQM平台开发时,把demo网站给同事体验,都纷纷反馈第一次打开页面的时候需要等待很久,页面一直在转菊花。作为一个为韩国头部厂商提供优质服务的网站,接到这种反...

76340
来自专栏北京马哥教育

专为渗透测试人员设计的Python工具大合集

如果你对漏洞挖掘、逆向工程分析或渗透测试感兴趣的话,我第一个要推荐给你的就是Python编程语言。Python不仅语法简单上手容易,而且它还有大量功能强大的库和...

42570
来自专栏pangguoming

最火的Android开源项目整理

一、代码库 1、from  代码家 整理比较好的源码连接 ***************************************************...

88240

扫码关注云+社区

领取腾讯云代金券