假设主机A要向10.3.3.3发送一个包,10.3.3.3是与A在同一子网中的主机B.但是A认为B在另一个网中,将尝试使用arp来获取mac B的地址?
是否将MAC设置为路由的MAC并直接将包发送到路由器?如果路由器收到包裹会怎么做,它会直接发送给B?
相反,如果A认为B在同一个网络中,实际上,B不是,A会终于找到B吗? A可能发送一个arp,但没有人会回复。 A会尝试将包发送到路由器吗?
答案 0 :(得分:2)
路由完全基于目标地址和路由表(根据子网的配置而有所不同)。
让我们假设,
主机A是10.3.4.4,配置了网络掩码255.255.255.0和路由器10.3.4.1
主机B是10.3.3.3,配置了网络掩码255.255.255.0。
在这种情况下,主机A的路由表将类似于
Dest Gateway Mask
0.0.0.0 10.3.4.1 0.0.0.0
10.3.4.0 0.0.0.0 255.255.255.0
从底部开始,主机A将尝试查找要使用的路由。如果主机A试图联系10.3.4.x,它将匹配第一条路由,而不是使用网关,它将发送一个ARP请求“谁有10.3.4.x?”在子网广播地址(10.3.4.255)。
如果主机A尝试联系主机B,它将与第一个路由规则不匹配,并且默认将数据包发送到网关(本例中为10.3.4.1)。
所以不,如果未配置主机B在同一子网中,A将不会尝试使用ARP来获取主机B的MAC。如果路由器配置了路由规则以在子网之间路由,它将传送数据包,否则它将被丢弃。
相反,如果A认为B在同一网络中,实际上,B不是, A终于找到了B? A可能发送一个arp,但没有人会回复。 A会尝试将包发送到路由器吗?
没有。 ARP请求将被发送到子网广播地址。如果B不在该子网上并忽略了ARP请求,A将不会将数据包发送到路由器,因为它发送数据包只是基于目标IP地址,根据目标IP地址不会改变路由的位置数据包已经交付。