1

编写一个程序,向用户查询源 IP 地址、目标 IP 地址和 32 位子网掩码。全部以点十进制表示法输入。然后程序将确定 src 和 dst 是否在同一个子网上。然后它将以二进制格式打印掩码和两个地址(在单独的行上,彼此垂直对齐)并指示主机应该为谁进行 ARP。

这是我到目前为止所拥有的:

#!/usr/bin/python3

src_ip = input("Please enter the Source IP Address: ")

dst_ip = input("Please enter the Destination IP Address: ")

sub_mask = input("Please enter the Subnet Mask: ")

#convert each to binary
base2_src = [format(int(x), '08b') for x in src_ip.split('.')]
base2_dst = [format(int(x), '08b') for x in dst_ip.split('.')]
base2_mask = [format(int(x), '08b') for x in sub_mask.split('.')]

#print out IP addresses in binary
print("Source IP: ", base2_src)
print("Destination IP: ", base2_dst)
print("Subnet Mask :", base2_mask)

到目前为止,我能够获取输入,将其转换为二进制并将其输出到列表中。如何确定输入的源和目标是否与用户输入的子网在同一个子网上?我应该将二进制转换后的子网掩码与什么进行比较?

4

1 回答 1

0

掩码通过对掩码和 IP 地址进行按位与运算来标识 IP 地址所属的子网。结果将是子网地址。因此,您可以为您的源和目标执行此操作,然后比较结果。

于 2013-11-03T17:57:43.347 回答