TFTP 服务器是什么,tftp 服务器工作原理介绍

TFTP全称Trivial File Transfer Protocol,简单文件传输协议。它不是简化版FTP,而是几乎砍掉FTP所有附加能力。无登录认证,不支持列出目录,不能删除、重命名、新建文件夹,传输读写动作要在命令里明确指定。能留存至今,核心原因只有一点:足够小巧,几KB大小的固件芯片都能内置这套协议。

TFTP基于UDP传输,端口69。UDP没有TCP握手确认、拥塞控制机制,数据包发出之后不会主动确认。TFTP自身实现一套简易可靠机制:发送一块数据,等待对方ACK确认,收到再发下一块;超时未收到确认就重传。默认数据块大小512字节,最后一块数据不足512字节,代表文件传输结束。整个过程类似两个人窄巷递箱子,递一个确认一个,再继续下一个。传输效率不高,但逻辑简单,几乎没有学习成本。

TFTP 服务器是什么,tftp 服务器工作原理介绍

工作流程由客户端发起请求包。下载发送RRQ,上传发送WRQ,数据包携带文件名和传输模式。常用octet二进制模式,固件、镜像、配置文件都用这个;netascii处理文本换行转换,现在基本很少使用。服务器收到请求,不会继续使用69端口通信,临时开启随机端口传输数据。69端口只当作接入总机,建立连接之后两端切换新端口交互。客户端也要切换端口接收数据。

数据包携带块编号,从1开始。服务器发送块1,客户端回复ACK 1;服务器发送块2,客户端回复ACK 2,循环往复。客户端没收到块2,不会返回ACK 2,服务器超时重传块2。如果ACK包回程丢失,服务器依旧重传块2,客户端收到重复块再次回复ACK 2,服务器确认收到,继续发送块3。这种停等机制在局域网效果不错,延迟低丢包少,几MB固件几秒传完。放到公网,延迟升高,每一次传输都要往返确认,速度会变得很差。

后续新增选项协商扩展,blksize可以修改块大小,最大65464;timeout调整重传超时;tsize传输前获取文件总大小。不是全部客户端服务端都支持扩展,但主流实现基本兼容。调大blksize可以明显提升传输速度,千兆局域网512字节单块传输会过于零碎。

TFTP适用场景基本局限在内网可信环境。网络设备最典型,思科交换机、路由器、防火墙备份恢复配置、升级IOS镜像普遍使用TFTP。PXE网络启动离不开它,客户端DHCP获取IP与TFTP服务器地址,通过TFTP拉取引导文件和内核。无盘工作站、嵌入式开发板烧录固件、IP电话批量下发配置,都是典型场景。这类设备硬件资源紧张,没有硬盘,完整TCP/IP栈都难以承载,更跑不动FTP、HTTP客户端。TFTP代码体量极小,可以直接烧录进ROM,也是几十年一直沿用的根本原因。

安全层面完全没有保障。没有认证,任何人知晓文件名,就能连接TFTP服务器下载上传文件。传输无加密,数据裸传。原生不做访问控制,只能依靠服务器目录权限和防火墙规则做限制。TFTP服务器严禁暴露公网,只能在内网可信环境使用,用完关闭服务。部分设备固件升级强制TFTP,可以临时开启,传完立刻停止。

搭建TFTP服务器不难。Linux安装tftpd-hpa或者atftpd,配置文件指定根目录、监听地址、允许访问网段,启动服务。Windows使用Tftpd64绿色工具,选定目录点击启动,直接充当服务器。客户端,Linux命令行输入tftp 服务器IP,get和put完成文件传输。网络设备更简单,执行copy running-config tftp,按提示填写服务器地址和文件名,剩下交给设备自动处理。

协议本身简陋,但在适配场景里没有替代品。极度简化的东西,往往生命力最久。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。

相关推荐