概述
TFTP,全称是 Trivial File Transfer Protocol(简单文件传输协议),基于 UDP
实现,该协议简单到只能从远程服务器读取数据或向远程服务器上传数据。TFTP
有三种模式:netascii,这是8位的ASCII码形式;另一种是octet,这是8位源数据类型;最后一种 mail
已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。
虽然 TFTP 不具备通常的 FTP 的许多功能,但是学习 TFTP
可以帮助我们了解网络通信协议的基本工作过程和原理,对后续学习更加复杂的协议有很大的帮助作用。
首先看一下 TFTP 的包的类型,TFTP 有 5 种类型的包:
建立连接
默认情况下,作为 TFTP 服务器的主机 A 会监听 69 端口,当作为客户端的主机 B 想要下载或上传文件时,会向主机 A
的 69 端口发送包含读文件(下载)请求或写文件(上传)请求的数据包。主机 A
收到读写请求后,会打开另外一个随机的端口,通过这个端口向主机 B 发送确认包、数据包或者错误包。
下载
客户端向服务器的 69 端口(通常情况下)发送一个读请求,服务器收到这个读请求以后,会打开另外一个随机的端口(假设端口号是
59509),然后在它默认的路径下寻找这个文件,找到这个文件以后,每次读入文件的 512 个字节,通过端口 59509 将这 512
个字节放入数据包中发送给客户端,数据包中还包含了操作码和数据块的编号,块编号从 1 开始计数;客户