数据网络设备内部是运用数字逻辑来解释地址的。在创建或转发 IPv4 数据包时,必须从目的地址中提取出目的网络地址。这一步通过 AND 运算来完成。

 
对 IPv4 主机地址同其子网掩码执行 AND 逻辑运算,可以确定该主机相关联的网络地址。地址和子网掩码之间的 AND 运算得到的结果就是网络地址。
 
AND 运算
 
AND 运算是数字逻辑中使用的三种基本二进制运算之一。另外两种是 OR 和 NOT。虽然这三种运算都用于数据网络中,不过用于确定网络地址的是 AND。因此,本章的讨论仅限于逻辑 AND。逻辑 AND 运算比较两个位,所得结果如下:
 
1 AND 1 = 1
 
1 AND 0 = 0
 
0 AND 1 = 0
 
0 AND 0 = 0
 
任意值同 1 进行 AND 运算,所得结果都是原来的位。即,0 AND 1 得 0 而 1 AND 1 得 1。相应地,任意值同 0 进行 AND 运算,结果都为 0。AND 运算的这些特性与子网掩码配合使用便可以“遮掩”IPv4 地址的主机位。地址的每个位同子网掩码的相应位进行 AND 运算。
 
由于子网掩码中代表主机位的所有位都是 0,因此,所得网络地址的主机部分也全部变为 0。我们曾学过,主机部分全部为 0 的 IPv4 地址代表网络地址。
 
同理,子网掩码中表示网络部分的所有位均为 1。这些 1 同地址的相应位逐个进行 AND 运算时,所得各位与原来的地址位相同。
 
使用逻辑 AND 的原因
 
数据网络中的设备在主机地址和子网掩码之间执行 AND 运算的原因各异。
 
路由器使用 AND 运算来确定传入数据包的合理路由。路由器检查目的地址,并尝试将此地址关联到下一跳。当数据包到达路由器时,路由器对传入数据包中的 IP 目的地址和可能路由的子网掩码执行 AND 运算。由此得到的网络地址将与所用子网掩码的路由表中的路由相比较。
 
发送主机必须确定应该将数据包直接发送到本地网络中的主机还是应将其转发到网关。要做出此决定,主机首先必须了解自己的网络地址。
 
主机通过对其地址和子网掩码执行 AND 运算提取出自己的网络地址。发送主机也会对该数据包的目的地址和主机的子网掩码执行逻辑 AND 运算。得到的结果便是目的地址的网络地址。如果此网络地址与本地主机的网络地址相符,就会将该数据包直接发送到目的主机。如果两个网络地址不符,就会将该数据包发送到网关。
 
逻辑 AND 的重要意义
 
如果路由器和终端设备无需干预即可完成这些运算过程,我们为什么还要了解 AND 运算的运算方法呢?这是因为我们对网络的工作原理了解越多,对网络运行情况的预测能力也就越强,设计和(或)管理网络的准备也就越充分。
 
在网络验证/故障排除过程中,通常需要确定主机所在的 IPv4 网络或确定两台主机是否位于同一个 IP 网络中。我们需要从网络设备的角度来做出此决定。由于配置不正确,某台主机可能会以为自己所在的网络与预定网络不同。这可能会导致工作不正常,但检查该主机使用的 AND 运算过程就可以诊断这个问题。
 
此外,路由器可能有许多条不同路由都可以将数据包转发到给定目的地址。选择使用哪条路由发送给定的数据包是一个非常复杂的运算过程。例如,构成这些路由的前缀并非直接与分配给主机的网络相关联。这表示路由表中的路由可能代表许多网络。如果路由数据包的过程存在问题,就需要确定路由器做出路由决定的方式。
 
尽管网络管理员可以使用子网计算器,但了解如何手动计算子网也非常实用。