当主机配置IP及网关地址不在当前网段,请求报文会发到哪?

822 阅读2分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

当主机配置IP及网关地址不在当前网段,报文会发到哪?

哪都去不了,报文应该发不出去。

测试

如下:我当前主机所在网段的网关是172.18.65.1,我本机配置的ip是172.18.65.61。这是没有问题的,可以正常上网。 在这里插入图片描述

现在修改我本机的ip地址172.18.63.61,网关是172.18.63.1,注意:配置的IP与网关两个地址需要在同一网段,尽管手动配置的静态ip地址与我当前实际网关(172.18.65.1)不在同一网段。

在这里插入图片描述

然后,重启网卡,使配置生效。

这个时候是上不了网的。

原因

会不会有朋友猜测,报文发出去了,但是到路由器这里丢了?

实际上应该没发出去。

接下来我解释下原因(其实是我自己的一些推测及验证,如果有解释不正确的地方,请在评论中及时指正,谢谢) 简单解释下请求报文如何寻址。

  1. 在IP路由表,根据目的ip,可以知道下一跳路由器,或者直达目的网络接口。
  2. 基于arp协议,可以找到目的ip映射的mac地址,也就是说这个IP对应的是哪块网卡(网络接口),然后从这个网卡发出去。

现在实际情况是修改了IP不在当前网段后,报文发不出去了。 原因我接着往下说:

首先,没改IP前,看下arp表和路由表:

在这里插入图片描述 在这里插入图片描述

看标红框的地方,是网关,比如我打开浏览器,访问百度,这个比喻不合适,因为报文发不出去,还怎么解析域名。

但是,现在打个比方,比方我现在向百度的实际IP发一个请求报文,百度的实际IP肯定和上面路由表中的几个网段不在同一个网段

在这里插入图片描述

所以最终会选择从接口enp3s0发向网关。

好了,现在我把本机IP及本机网关地址配置与当前不在一个网段:

  • 172.18.65.1 -> 172.18.63.1
  • 172.18.65.61 -> 172.18.63.61

这时候看下arp表和路由表:

在这里插入图片描述 在这里插入图片描述

首先,从路由表中,知道要要到达目的IP(39.156.66.18),当前要先发到网关172.18.63.1,因为不是直达么。但是在arp表中,可以看到:172.18.63.1的mac地址呢???

虽然接口是enp3s0,但是现在谁能告诉它,mac地址是多少,要发给谁???因为没有目的mac地址,所以这个包最终应当是不会交到物理层的,也就是网卡这里不会发到物理层。

抓个包可以看到:

在这里插入图片描述

我本机(戴尔的一款笔记本)一直在发arp请求,想知道192.18.63.1的mac地址是多少,但是永远不会收到arp应答。因为当前网段上根本就不存在这个ip,所以这个包也就发不出去了。