第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基础知识参考资料:
对于初学者来说,学习上面三个参考资料就够了。如果大家有网络方面的书籍,比如《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包格式如下:
![](https://images2018.cnblogs.com/blog/1379107/201809/1379107-20180910170309887-1617526897.png)
TFTP的局限:
- TFTP不具备FTP的许多功能,它只能从文件服务器上获得或写入文件,没有列出目录的功能,也不能对用户进行身份鉴别,它传输8位数据。
- 因为小型文件传输协议使用UDP协议,就必须自己支持传输和会话的控制。
- 由于小型文件传输协议缺少安全性,在开放式因特网上传输非常危险,所以一般仅用于私人本地网络。目前TFTP常用于PXE无盘启动、网络设备的设置等。
TFTP的优点:
- TFTP可用于UDP环境,比如同时向许多机器下载程序或者文件时就往往需要使用到TFTP协议。
- TFTP代码所占的内存较小,这对于较小的计算机或者某些特殊用途的设备来说是很重要的,这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容量只读存储器即可。当电源接通后,设备执行只读存储器中的代码,在网络上广播一个TFTP请求。网络上的TFTP服务器就发送响应,其中包括可执行二进制程序。设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。
38.3.4 TFTP简单执行流程
下面是简单的执行流程,更详细的可以看wiki百科英文版上的说明:地址链接(这个是超链接)。
- 初始化主机A发送一个读请求(RRQ)或写请求(WRQ)包给主机B,包含了文件名和传输模式。
- B向A发一个ACK包应答,同时也通知了A其余送往B包应该发送的端口号。
- 源主机向目的主机发送编过号的数据包,除了最后一个都应该包含一个全尺寸的数据块。目的主机用编号的ACK包应答所有的数据包。
- 最终的数据包必须包含少于最大尺寸的数据块以表明这是最后一个包。如果被传输文件正好是尺寸块的整数倍,源主机最后送的数据包就是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的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。