我正在使用C ++编写TFTP客户端。我能够使用“八位字节”模式向默认TFTP客户端(tftpd32)发送读取请求。问题是我无法在常规TFTP响应时发回ACK。我收到以下错误:
Connection received from 127.0.0.1 on port 51401 [27/07 23:03:15.612]
Read request for file <test.txt>. Mode octet [27/07 23:03:15.612]
Using local port 51402 [27/07 23:03:15.612]
Connection received from 127.0.0.1 on port 51401 [27/07 23:03:18.624]
Unexpected request 4 from peer [27/07 23:03:18.624]
Returning EBADOP to Peer [27/07 23:03:18.624]
为什么我能够使用相同的方法发送RRQ而不是ACK?
答案 0 :(得分:0)
可能是一个不完全一致的ACK数据包? 看起来您正在发送带有ACK操作码的请求......
来自RFC 1350的ACK数据包的形式:
2 bytes 2 bytes
---------------------
| Opcode | Block # |
---------------------
其中opcode = 4