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

当主机配置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,所以这个包也就发不出去了。

写在最后,小弟才疏学浅,好多东西怕是还没掌握,就担心有理解错误的地方,如有问题,请及时指正,不要让我一直错下去。好人一生平安。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章