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

Udp 为什么TFTP标准的操作码有2个字节? 为什么TFTP数据包的操作码是2个整字节?,udp,tftp,Udp,Tftp,第3页底部的最新版本的 TFTP报头由一个2字节的操作码字段组成,该字段指示 数据包的类型(例如,数据、错误等) 它随后指定操作码为1-5: TFTP支持五种类型的数据包,所有这些都已经提到过 以上: 操作码操作 1读取请求(RRQ) 2写入请求(WRQ) 3数据(数据) 4确认(ACK) 5错误(错误) 以下是读取请求数据包的示例: 2 bytes string 1 byte string 1 byte --------------------------------

第3页底部的最新版本的

TFTP报头由一个2字节的操作码字段组成,该字段指示 数据包的类型(例如,数据、错误等)

它随后指定操作码为1-5:

TFTP支持五种类型的数据包,所有这些都已经提到过 以上:

操作码操作
1读取请求(RRQ)
2写入请求(WRQ)
3数据(数据)
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'd?

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


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

,因为这是他们设计的方式,它是0-65535。@EJP我想知道他们是否遵守一些更通用的标准,因为那个字节总是为零,所以看起来没用