我正在尝试通过 Ubuntu 16.04LTS 计算机上的 TFTP 从 Windows 7 计算机上运行的 TFTP 服务器(TFTPD32)下载文件。在 Ubuntu 上,每次出现错误Transfer timed out.
在 Windows 7 PC 上,Windows 防火墙配置为允许 tftp 流量,但我也尝试完全禁用防火墙,并禁用防病毒软件 - 相同的结果。 Ubuntu 和 Windows 计算机上的互联网连接(不同的 ISP)不同。下面是 Ubuntu 上的 tftp 输出:
tftp> get test.bin
getting from 63.231.242.57:test.bin to test.bin [octet]
Transfer timed out.
和 Tftpd32 登录 Windows PC:
Connection received from 213.173.91.204 on port 48859 [12/10 23:45:17.697]
Read request for file <test.bin>. Mode octet [12/10 23:45:17.697]
Using local port 62693 [12/10 23:45:17.697]
WARNING : Last block #1 not acked for file <test.bin> [12/10 23:45:47.228]
<test.bin>: sent 0 blk, 0 bytes in 48 s. 6 blks resent [12/10 23:45:47.228]
WARNING : Last block #1 not acked for file <test.bin> [12/10 23:45:50.832]
<test.bin>: sent 0 blk, 0 bytes in 48 s. 6 blks resent [12/10 23:45:50.832]
WARNING : Last block #1 not acked for file <test.bin> [12/10 23:45:55.777]
<test.bin>: sent 0 blk, 0 bytes in 48 s. 6 blks resent [12/10 23:45:55.777]
WARNING : Last block #1 not acked for file <test.bin> [12/10 23:46:00.862]
<test.bin>: sent 0 blk, 0 bytes in 48 s. 6 blks resent [12/10 23:46:00.862]
据我所知,TFTP 要求每个数据块都得到确认,然后才能发送下一个数据块。
https://www.rfc-editor.org/rfc/rfc1350
- 协议概述....长度为 512 字节的块。每个数据包包含一个数据块,并且必须由确认包确认才能发送下一个数据包。
tftpd32 服务器以块的形式向 tftp 客户端发送数据。文件大小为265字节,那么只有一个块。因此,TFTP 服务器不会以 ACK 确认来响应所请求的块大小。
如何解决这个问题?