2023-07-25 广告
2013-06-27
没有路由和网关的前提下,不同网段之间访问有很多种情况,举三个例子:
1、A:10.0.0.1/8 和 B:11.0.0.1/8
这两个ip是不同网段无疑,A的网络地址是10.0.0.0,B的网络地址是11.0.0.0;
现在尝试一下用 A 访问 B。(此时主机A自己只知道三个信息,A的本机ip:10.0.0.1,A的掩码地址255.0.0.0,B的ip:11.0.0.1)
首先,在主机A会用自己的掩码地址255.0.0.0 与主机B的主机地址(11.0.0.1)相与,结果为11.0.0.0。然后主机A用将与完的结果(11.0.0.0),与本机的网络地址(10.0.0.0)相比较,不同则判断为不同网段。
所以,A 访问 B 的数据包不会从A发出来,同理 B 访问 A 也会失败。
2、A:10.0.0.1/8 和 B:10.1.0.1/24
A 的网络地址是10.0.0.0,B 的网络地址是10.1.0.0;同样先 A 访问一下 B。
1)主机A 用自己的掩码地址255.0.0.0 与 主机B 的主机地址(10.1.0.1)相与,结果为10.0.0.0,居然与自己的网络地址相同!然后 主机A 就欣喜的将数据包发了出去;(没错,数据包发出来了)
2)随后 主机B 收到了 主机A 发到的数据包,此时 主机B 知道的也只有三个信息(即:主机B的本机ip:10.1.0.1,B 的掩码:255.255.255.0,A的ip:10.0.0.1)。然后主机B 做了和主机A 同样的事情:拿主机A 的ip与自己的掩码相与....(10.0.0.1 & 255.255.255.0 = 10.0.0.0),主机B 再看看自己的网络地址(10.1.0.0),“嗯,不一样”,随即将 A 发过来的数据包丢掉.....
所以,这种情况 A 和 B 也是无法通讯的。
3、A:10.0.0.1/8 和 B:10.0.0.2/24
A 的网络地址是10.0.0.0,B 的网络地址是10.0.0.0;同样先 A 访问一下 B。
1)首先 主机A 用 B 的IP与自己的掩码地址相与,结果为10.0.0.0。“嗯,在一个网段”,随即 主机A 将数据包发了出去;
2)主机B 收到 主机A 发来的数据包后,拿出数据包的源IP(即主机A的IP)与自己的掩码相与,结果为10.0.0.0。“嗯...是一个网段”,随即回复了主机A的数据包!
即!这种特殊包含关系的不同网段ip,在没有路由没有网关的情况下,也是可以互相通讯建立连接的。(第二种情况也是包含关系,但不会建立连接)
不同网段间通信的过程是A主机先通过arp请求向网关获取B主机的mac地址,但由于是直连,A主机就获取不到,但是我们可以通过cmd命令行中的操作去互相指定对方主机为网关,这时A主机就会向B主机请求B主机的MAC地址,但是你通过ARP -a可以在arp列表中无法看到B主机IP的相关项,这就像是路由器的ARP TABLE中没有路由,你需要手动添加一条静态路由即可,即在CMD命令行中用arp -s B主机IP B主机Mac地址 ,同样再在A主机上操作一遍即可
2013-06-27