地址的结构

网络地址

网络地址映射的网络类型(例如IP地址)到控制网络的逻辑地址。这种映射是由各自的块驱动完成。在以太网中的IP地址是C类地址,IP地址的前3ge字节与所有的网络设备相同。最后的 8 字节用于标识网络IP地址,因此他们完成两个块驱动之间的地址映射。

每个节点在网络中具有不同的网络地址。不同的网络连接可以具有相同的网络地址,因为针对本地连接,网络地址必须是唯一的。

特别的:一般情况下,没有进行网络连接的节点的地址是主网络的网络地址。

网络地址的长度是可以指定的,并且可以通过块驱动程序来进行选择。在一个网络中的节点必须使用相同长度的地址。一个网络地址是通过以下类型的一些列比特类型的数组成的阵列:

  • 网络地址的长度:n比特
  • 需要的字节: b = (n + 7) DIV 8
  • 从低到高顺序 (n MOD 8)的第一个字节,剩余的 (n DIV 8) 字节被用于网络地址。

网络地址示例

长度: 11 Bit

地址 111 1000 1100

插图 36: 网络地址编码示例
节点地址

节点地址表示一个控制网络中的绝对地址,因此他们在整个“树型结构中”具有唯一性。该地址有多达15个地址组件,每个包含两个比特。节点地址的低位表示他的层次,高位表示他的地址。

节点地址是由先前所有地址以及节点自身的地址两部分共同组成。每个地址包含组成部分的一个或者多个地址。地址的长度通常是两部分的总和。一个节点的地址部分包含节点在主网络中的网络地址和他在主网络中父节点的子网地址。子网络中的字节是根据网络中父节点的路由决定的。在子网络和网络地址之间会自动的添加地址以保证最终的地址是2比特字节的整数倍。

特殊情况:

  • 节点没有主网络:这意味着没有主网络中没有子索引地址。在这种情况下地址被设定为 0x0000。
  • 主网络中的节点没有父节点:在这种情况下假定子索引的长度为0。剩下部分地址对应网络地址, 如果需要可以进行相应位置的填充。
插图 37: 节点地址示例

 

节点的地址通常也是十六位的。单个的地址组件(每种情况下两个字节)通过 “:” (冒号)进行区分。组件中出现的字节顺序没有间隔(参看上图)。由于这是一个字节数组而不是一个16位的数据,组件不以低字节显示。对于手动输入的地址,缺省的部分自动在地址之前补零:“274” = “0274”。为了提高可读性,输出之前也带有零。

绝对地址和相对地址

两个节点之间的通讯可以基于相对地址也可以基于绝对地址。绝对地址与节点地址相同。相对地址是从发送器到接收器的一个路径,它包含一个地址偏移和到接收器的路径描述。

地址偏移量(反向地址)描述了地址中组件数据包的数目,数据包可以在树形结构中向上处理在从一个普通的父节点处理之前。由于节点可以使用包含一个以上的地址组件的部分地址,父节点的节点数量通常 = 地址偏移。这意味着父节点之间的界限不是很清晰了,这就是为什么常见的初始部分的通信使用父地址的原因。每个地址组件的地址都是由上一步的决定,而不论实际的父节点是什么。任何这些组件产生的错误都可以被父节点处理并且分配给对应的节点。

在抵达相同父节点的相对路径(一个地址组件阵列),通常按照一个正常的方式进行。

正规的:接收器的节点地址通常会删除最后一个地址偏移量组件,保留发送器的节点和组件的相对路径。

示例::

在这个例子中,一个字母代表一个地址,每个特殊点将会被分为几个节点。由于一个节点允许具有多个组件地址,示例中允许有多个字母。

节点 A: a.bc.d.ef.g

节点 B: a.bc.i.j.kl.m

  • 最高位共同的父节点地址: a.bc
  • 从A到B的相对地址: -4/i.j.kl.m (数字-4 表示4个组成部分 d, e, f, 和 g 数据包将会提高)

为了确保路由正确工作,每次通过一个中间节点时相对地址都将会被调整。对于地址偏移量的调整,这是必须的。这通常也由父节点完成:如果一个节点收到从它的子网络中发送的数据包,父节点就会定义它子网中地址的偏移量:

  • 如果一个新的地址偏移量 < 0 数据包必须被发送到父节点
  • 如果偏移量 >= 0 数据包必须向前继续传递给子节点的本地地址,位于相对地址中地址偏移量的描述。首先,地址偏移量必须由本地子地址的长度决定,以确定节点得到正确的地址。

当决定一般的父节点时当上面描述的错误产生时会出现一个特殊情况。这种情况下,位于一般父节点上的“实际”地址偏移是一个负值,但是幅度会比部分子地址的数据包要大。该节点必须检测这种情况,在前一个地址和节点长度的基础上计算下一个节点的差异,并获得一个正确的地址偏移量。此外,在这种情况下地址本身将保持不变,只有地址偏移被进行修改。

广播地址

广播地址有两种方式-全局和局部方式。一个全局的广播地址会将数据发送到本地网络中所有节点。空的节点地址(长度为0)被用于此。

本地广播地址用于向网段上所有设备发送数据。因为这个原因,所有的比特位都被设为1.无论在绝对地址还是相对地址中都是这样定义的。

一个块驱动必须能够同时处理这两种广播地址,例如全部为0的地址和所有比特位都为1的地址,包含数据的解释和发送。