一个关于计算机网络的疑问

查看 136|回复 11
作者:OrdinaryMan   
计算机发送 ip 数据包时,如何判断目的 ip 和本地 ip 是否属于同一网段?
网上的答案是:使用本地子网掩码分别和本地 IP 和目的 IP 进行按位与运算分别得到本地网络号和目的网络号,比较网络号是否相同
但是如果目的 ip 所在的网段子网掩码和本地的子网掩码不一样,比如:
本地 ip:192.168.1.1 本地子网掩码:255.255.255.0
目的 ip:192.168.1.193 目的子网掩码:255.255.255.192
这种情况按照上述判断方式结果是属于同一网段,然而实际上是两个不同的网段
所以,正确答案是什么?

子网掩码, 网段, 目的

OrdinaryMan
OP
  
求解
seeme   
计算的时候不考虑目的 ip 的掩码吧
OrdinaryMan
OP
  
@seeme 那这种错误的出现怎么避免呢
ysc3839   
没有“目的子网掩码”,用本地子网掩码计算后就能知道是不是在同一网段
OrdinaryMan
OP
  
@ysc3839 那怎么解释这种情况呢——>本地 ip:192.168.1.1 本地子网掩码:255.255.255.0 目的 ip:192.168.1.193 目的子网掩码
jdOY   
判断是否跨网段的方法没问题的,网络传输过程中硬件设备把这些步骤做好了而已,去看看网络工程就能大概了解
yuanix   
@OrdinaryMan 感觉不是错误,如果想要两台机器能通过交换机互联,那就配置成同一网段。当然也可以使用不同的掩码,进一步划分子网,
seeme   
@OrdinaryMan #3 这不是错误阿,网络世界都是只管发包,能不能收到回包看路径上如何转发 /处理这些数据包。
举个例子,你本地 ip192.168.1.1/24 ,通过 dns 解析到一个 ip3.3.3.3 ,这时候你通过计算网络发现不属于 192.168.1.1/24 这个网段,那么这个数据包就会查找其他符合条件的网关(大部分情况都是默认网关)进行发送。
如果你想让你的机器正确收到回包,需要探究下 NAT 、路由相关的知识。
arnoldxiao   
子网掩码末位 192 转换为 8 位二进制是 1100 0000 ,
和 IP 地址进行计算,
所以目的地网络号为 192.168.1.192 ,
和本地的网络号 192.169.1.0 不一致,
所以不属于同一网段
您需要登录后才可以回帖 登录 | 立即注册

返回顶部