如何阅读和解释 RFC(征求意见)中的数据包格式?

nd5*_*510 2 documentation protocol packet network-protocols

很多时候,当我阅读请求评论文档时,我总是会看到如下所示的协议的数据包格式部分。我的问题是数字和不同符号 (+-|) 代表什么?

  RADIUS 数据格式摘要如下所示。这些字段是
   从左向右传输。

     0 1 2 3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
    | 代码| 标识符 | 长度 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
    | |
    | 验证器|
    | |
    | |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+
    | 属性 ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-

谢谢

Ron*_*pin 6

这些数字是位数,从最高有效位开始。0位是最高有效位,这似乎违反直觉,但它是第一个传输的位。网络字节(和位)顺序是大端(最重要的在前)。

其他符号用于显示各个位,一种不完整的网格。

有一些 RFC 对此进行了解释。例如,RFC 1700,分配的编号

数据符号

互联网协议文档中的约定是以十进制表示数字并以“大端”顺序表示数据[ COHEN ]。也就是说,字段是从左到右描述的,最高有效的八位位组在左侧,最低有效的八位位组在右侧。

本文档中描述的报头和数据的传输顺序被解析为八位位组级别。每当图表显示一组八位位组时,这些八位位组的传输顺序就是以英语读取它们的正常顺序。例如,在下图中,八位位组按照编号顺序传输。

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       1       |       2       |       3       |       4       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       5       |       6       |       7       |       8       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       9       |      10       |      11       |      12       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Run Code Online (Sandbox Code Playgroud)

字节传输顺序

每当八位位组表示数字量时,图中最左边的位就是高位或最高有效位。也就是说,标记为 0 的位是最高有效位。例如,下图表示值 170(十进制)。

                      0 1 2 3 4 5 6 7
                     +-+-+-+-+-+-+-+-+
                     |1 0 1 0 1 0 1 0|
                     +-+-+-+-+-+-+-+-+
Run Code Online (Sandbox Code Playgroud)

位的意义

类似地,每当多八位位组字段表示数字量时,整个字段的最左边的位就是最高有效位。当传输多个八位位组时,首先传输最高有效的八位位组。