编写一个程序,向用户查询src 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)
到目前为止,我能够获取输入,将其转换为二进制并将其输出到列表中。如何确定输入的源和目标是否与用户输入的子网在同一子网上?我应该将二进制转换的子网掩码与?
进行比较答案 0 :(得分:0)
Mask通过对掩码和IP地址执行按位AND运算来标识IP地址所属的子网。结果将是子网地址。因此,您可以为源和目标执行此操作,然后比较结果。