为什么TFTP标准的OP代码有2个字节?

时间:2018-06-16 19:24:16

标签: udp tftp

为什么TFTP数据包的操作码是2个整字节?

第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

1 个答案:

答案 0 :(得分:0)

选项1:Opcode最初被设计为文本字段,然后您需要第二个字节作为经典的“ 0”限制符,然后他们决定使该字段为数字,但他们没有更改字段长度。

选项2:在网络可靠性远不如今天的时代,解析总是以0开头的2字节数字字段会增加一层“格式”安全性。