主机如何判断目的IP地址是否和本机同网段

当网络中一台主机需要向一个IP地址发送数据包时该主机首先需要判断目标IP是否和本机 IP 在同一网段 (subnet)。判断的原理需要用到布尔运算中的 AND Operation。

Image result for AND operation

从 AND Operation 的真值表中我们可以看出如果两个输入值(Input)都相同那么输出值(Output) 也相同。我们可以利用该规律来判断两个数字是否相等 – 如果 A = B 那么 A and B = X = A = B。

同网段示例

假设主机 IP 是 10.10.10.1/24,目标 IP 是10.10.10.2。首先将 10.10.10.1 和 /24 分别转换为二进制,然后做 AND 从而得到主机的网段 (subnet):

00001010.00001010.00001010.00000001 # 10.10.10.1
11111111.11111111.11111111.00000000 # /24
00001010.00001010.00001010.00000000 # AND 后的结果即为网段 10.10.10.0

将主机 IP 和目标 IP 进行 AND 操作

00001010.00001010.00001010.00000001 # 10.10.10.1
00001010.00001010.00001010.00000010 # 10.10.10.2
00001010.00001010.00001010.00000000 # AND 后的结果

将两次 AND 的结果取前24位做对比(因为这里子网掩码是 /24),结果相同,代表两个 IP 在同一网段。

不同网段示例

假设主机 IP 是 10.10.10.1/24,目标 IP 是10.10.10.2。首先将 10.10.10.1 和 /24 分别转换为二进制,然后做 AND 从而得到主机的网段 (subnet):

00001010.00001010.00001010.00000001 # 10.10.10.1
11111111.11111111.11111111.00000000 # /24
00001010.00001010.00001010.00000000 # AND 后的结果即为网段 10.10.10.0

将主机 IP 和目标 IP 进行 AND 操作

00001010.00001010.00001010.00000001 # 10.10.10.1
00001010.00001010.00010100.00000001 # 10.10.20.1
00001010.00001010.00001000.00000001 # AND 后的结果

将两次 AND 的结果取前24位做对比(因为这里子网掩码是 /24),结果不同,所以两个 IP 在不同的网段。

发表评论

电子邮件地址不会被公开。