【问题标题】:Why does the TFTP standard have 2 bytes for its OP Code?为什么 TFTP 标准的 OP Code 有 2 个字节?
【发布时间】:2018-06-16 19:24:16
【问题描述】:

#为什么 TFTP 数据包的 Opcode 是 2 个完整字节?

TFTP Standard 的最新版本在第 3 页的底部显示

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-65535。
  • @EJP 我想知道他们是否符合一些更通用的标准,因为那个字节总是会被清零,所以它看起来没用

标签: udp tftp


【解决方案1】:

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

选项 2:解析始终以 0 开头的 2 字节数字字段在网络远不如今天可靠的时代增加了额外的“格式”安全层/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2013-02-23
    • 2014-05-10
    相关资源
    最近更新 更多