tftp(Trivial File Transfer Protocol,简单文件传输协议)是一种基于UDP的轻量级文件传输协议,广泛应用于网络设备配置、固件更新等场景,因其简单高效且无需复杂认证机制而受到青睐,在Linux、Windows等操作系统中,用户可通过命令行工具使用tftp进行文件下载,其核心命令灵活且功能明确,本文将详细介绍tftp下载文件的相关命令、操作步骤及注意事项。

tftp下载文件的基础命令与参数
tftp命令的基本语法结构为:tftp [选项] [主机名/IP],进入tftp交互模式后,通过内部命令实现文件下载,以下是常用的下载命令及参数说明:
启动tftp客户端
在终端输入tftp即可进入tftp交互模式,也可直接通过命令行参数指定目标主机,tftp 192.168.1.100,连接成功后显示tftp>提示符。
下载核心命令:get
get是tftp下载文件的核心命令,语法为:get [远程文件名] [本地文件名]。
- 远程文件名:指tftp服务器上待下载文件的完整路径,若文件位于服务器默认目录下,可仅写文件名。
- 本地文件名:下载后保存到本地的文件名,若省略则与远程文件名相同。
下载服务器上的config.txt并保存为本地my_config.txt,命令为:
tftp> get config.txt my_config.txt

常用参数选项
在启动tftp时可通过选项调整传输行为,常用参数包括:
-i:二进制传输模式(默认为ASCII模式,适用于文本文件;二进制模式适用于可执行文件、镜像等,避免格式错误)。-l:指定本地文件名(与交互模式中的get参数作用相同,但可直接在命令行中使用)。-c:直接执行命令并退出,适合脚本自动化,tftp -i 192.168.1.100 -c get firmware.bin。
传输模式设置
tftp支持两种传输模式,需根据文件类型选择:
- ASCII模式(默认):适用于文本文件,自动处理换行符转换(如Windows的
\r\n转为Linux的\n)。 - binary模式(或
octet模式):适用于二进制文件(如固件、压缩包),避免内容被修改,切换命令为:
tftp> mode binary或tftp> mode ascii
其他辅助命令
status:显示当前连接状态(如传输模式、服务器地址等)。verbose:开启详细输出,显示传输进度和错误信息。quiet:关闭详细输出,仅显示关键信息。rexmt:设置重传超时时间(单位为秒),默认为9秒,网络较差时可调大,tftp> rexmt 20。timeout:设置单个数据包的超时时间(单位为秒),默认为5秒。
tftp下载文件完整操作流程
以下以Linux系统为例,说明从连接服务器到下载文件的完整步骤:
检查tftp客户端是否安装
在Linux中,tftp客户端通常由tftp包提供,可通过以下命令安装(以Ubuntu/Debian为例):

sudo apt update && sudo apt install tftp -y
确认tftp服务器配置
确保目标主机已开启tftp服务(如Linux的tftpd-hpa或Windows的TFTP服务器),并知晓服务器IP(如168.1.100)及待下载文件路径(如/var/tftpboot/firmware.bin)。
连接tftp服务器
执行tftp 192.168.1.100,若连接成功,提示符变为tftp>:
$ tftp 192.168.1.100 Connected to 192.168.1.100. tftp>
设置传输模式(二进制/ASCII)
根据文件类型选择模式,例如下载固件文件需使用二进制模式:
tftp> mode binary
执行下载命令
使用get命令下载文件,例如下载firmware.bin并保存为本地update_firmware.bin:
tftp> get firmware.bin update_firmware.bin
查看传输结果
若下载成功,终端会显示Transfer complete及文件大小(如Received 5120000 bytes in 2.1 seconds);若失败,需检查服务器文件是否存在、网络连通性及权限问题。
退出tftp客户端
下载完成后,输入quit或exit退出:
tftp> quit
常见问题与注意事项
-
权限问题:
- 本地用户需对保存目录有写权限,例如下载到
/home/user/时,确保该目录属主为当前用户。 - tftp服务器需对文件有读权限,例如Linux服务器中,文件
/var/tftpboot/config.txt的权限应为644,属主为tftp(或运行tftp服务的用户)。
- 本地用户需对保存目录有写权限,例如下载到
-
网络连通性:
- 确保客户端与服务器网络互通,可通过
ping命令测试:ping 192.168.1.100。 - 检查防火墙是否允许TFTP端口(默认为UDP 69),例如在Linux中关闭临时防火墙:
sudo ufw disable。
- 确保客户端与服务器网络互通,可通过
-
文件路径错误:
- 远程文件名需与服务器路径完全匹配,区分大小写(Linux服务器默认区分大小写)。
- 若文件位于服务器非默认目录,需确认tftp服务器是否允许访问该目录(如
tftpd-hpa配置文件/etc/default/tftpd-hpa中的TFTP_DIRECTORY参数)。
-
传输中断处理:
- 若传输中断,可重新执行
get命令,tftp不支持断点续传,需重新下载整个文件。 - 对于大文件,可通过调整
rexmt和timeout参数降低失败率,tftp> rexmt 10; timeout 10。
- 若传输中断,可重新执行
相关操作示例表格
以下为不同场景下的tftp下载命令示例:
| 场景描述 | 命行行命令(交互模式) | 命令行模式(单次执行) |
|---|---|---|
| 下载文本文件(默认ASCII) | tftp> get config.txt local_config.txt |
tftp -l local_config.txt -c get 192.168.1.100 config.txt |
| 下载二进制文件(固件) | tftp> mode binary; get firmware.bin |
tftp -i -l firmware.bin -c get 192.168.1.100 firmware.bin |
| 下载并重命名文件 | tftp> get server_data.txt my_data.txt |
tftp -l my_data.txt -c get 192.168.1.100 server_data.txt |
| 开启详细模式下载 | tftp> verbose; get large_file.zip |
tftp -v -l large_file.zip -c get 192.168.1.100 large_file.zip |
相关问答FAQs
Q1: tftp下载文件时提示“File not found”,如何解决?
A: 可能原因及解决方法:
- 远程文件路径错误:确认文件名及路径是否正确,区分大小写(如Linux服务器中
Config.txt和config.txt是不同文件)。 - 服务器权限不足:检查tftp服务器对文件的读权限,例如在Linux中执行
ls -l /var/tftpboot/,确保文件属主为tftp用户且权限为644。 - 服务器未开放文件访问:部分tftp服务器(如
tftpd-hpa)仅允许访问配置目录下的文件,检查服务器配置文件中的TFTP_DIRECTORY参数是否包含目标文件路径。
Q2: tftp下载大文件时经常中断,如何优化传输稳定性?
A: 可通过以下方式提升稳定性:
- 切换传输模式:确保使用二进制模式(
mode binary),避免ASCII模式对二进制文件的解析错误。 - 调整超时参数:增大重传超时时间(
rexmt)和单个数据包超时时间(timeout),tftp> rexmt 20; timeout 10。 - 检查网络环境:确保客户端与服务器网络稳定,避免带宽波动或丢包严重;若使用无线网络,尝试切换为有线连接。
- 分块下载:对于超大文件,可考虑将文件分割为多个小文件分别下载,再通过合并工具处理(如Linux的
cat命令)。
