第3页底部的TFTP Standard的最新版本说明了
TFTP标头由一个2字节的操作码字段组成,表示 数据包的类型(例如,DATA,ERROR等)
后来指定操作码为1-5:
TFTP支持五种类型的数据包,所有这些数据包都已提及 上面:
操作码操作
1读取请求(RRQ)
2写请求(WRQ)
3数据(DATA)
4确认(ACK)
5错误(错误)
以下是读请求数据包的示例:
2 bytes string 1 byte string 1 byte
--------------------------------------------------
| Opcode | Filename | 0 | Mode | 0 |
--------------------------------------------------
为什么操作码2全字节?如果我的数学是正确的,这意味着您可以在该插槽中将任何数字从0添加到 65536 65535(2^16
),但只有5个操作码。 1个字节可以获得256(2^8
)个插槽。这个空间有什么意义?是否有一个更通用的标准,指明他们跟随?
如果我正确读取标准,第二个字节将始终为0
答案 0 :(得分:0)
选项1:Opcode最初被设计为文本字段,然后您需要第二个字节作为经典的“ 0”限制符,然后他们决定使该字段为数字,但他们没有更改字段长度。
选项2:在网络可靠性远不如今天的时代,解析总是以0开头的2字节数字字段会增加一层“格式”安全性。