TFTP文件传输协议

编程入门 行业动态 更新时间:2024-10-23 21:34:23

TFTP文件<a href=https://www.elefans.com/category/jswz/34/1745660.html style=传输协议"/>

TFTP文件传输协议

TFTP是一个简单的文件传输协议,默认使用UDP,服务器开放69端口。

关于协议的细节网上可以找到,在此不再赘述。

本文用一个简单的通信实例来分析通信协议。


Windows 系统自带TFTP客户端,服务器可以下载tftp32,下面是下载连接。phjounin / tftpd64 / Downloads — Bitbucket/

打开cmd.exe输入以下命令:

tftp -i 192.168.1.100 PUT D:\123.txt 123.bin  

这条命令会把本地的D:\123.txt文件上传到服务器,在服务器生成的文件名为 123.bin。

并没有要求上传的文件名必须一样,可以在上传时对文件改名。

我们用wireshark进行抓包,看看它们是怎么通信的。


下面是所有的通信数据,文件内容用XX替换了。 

客户端发送:
00 02 31 32 33 2e 62 69 6e 00 6f 63 74 65 74 00服务器响应:
00 04 00 00客户端发送:
00 03 00 01 XX ... XX (文件数据长度512字节)服务器响应:
00 04 00 01客户端发送:
00 03 00 02 XX ... XX(文件数据长度182字节)服务器响应:
00 04 00 02到此传输完成.
这个测试文件总长度694字节,第1次传输512,第2次传输182,就传输完成了。

对每一条数据进行解释:
第1次通信是建立握手,告诉服务器准备上传文件,并告知文件名和传输方式。

客户端发送:00 02 31 32 33 2e 62 69 6e 00 6f 63 74 65 74 00
00 02: (WRQ请求)
31 32 33 2e 62 69 6e 00: (字符串:文件名123.bin)
6f 63 74 65 74 00: (字符串:octet表示二进制方式)服务器返回:00 04 00 00
00 04: (ACK)
00 00: (包序号0000,表示服务器准备好接收文件了)

第2次通信是上传文件数据。

客户端发送:00 03 00 01 XX ... XX
00 03:(DATA上传)
00 01:(包序号0001)
XX XX:(文件内容,长度512字节)服务器返回:00 04 00 01
00 04:(ACK)
00 01:(包序号0001,与发送的包序号一致)

 第3次通信是上传文件数据的最后一包。

客户端发送:00 03 00 02 XX ... XX
00 03:(DATA数据)
00 02:(包序号0002,是上一次包序号加1)
XX XX:(文件数据,长度不足512字节,表示这是最后一包)服务器返回:00 04 00 02
00 04:(ACK)
00 02:(包序号0002,与发送包序号一致)

以上就是TFTP正常传输一个文件的通信流程。 


服务器在接收文件时,有可能给出错误响应,此时客户端必须中止此次文件传输。

错误响应:
00 05 XX YY ... YY 00
00 05: (NAK)
XX   : (错误码0-7)
YY YY: (字符串描述错误信息)错误码:
00=未定义错误
01=文件未找到
02=非法访问
03=磁盘已满
04=非法操作
05=未知传输ID
06=文件已存在
07=没有类似的用户

关于重传:

客户端发送请求后,服务器如果没有响应或者响应的包序号不正确,客户端可以重发上次请求,直到通信成功。

更多推荐

TFTP文件传输协议

本文发布于:2023-06-12 05:19:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/652080.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:传输协议   文件   TFTP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!