1. 当前位置:网站首页 > 技术教程

为何主机的IP地址和网关一样还能上网?


为什么IP地址和网关一样还能上网,这样默认路由不就是自己了吗?

电信的网,固定IP,给了一个公网地址,IP地址(中间隐藏了):60.*.*.239,掩码:255.255.255.0,网关:60.*.*.239,网关的地址和IP是一样的,这样的话默认路由的下一跳不就是自己了吗,但是可以上网,百度搜索IP显示的地址也和电信给的一样60.*.*.239。
这里的网关,可以是任何IP地址,如果你喜欢,可以换成6.6.6.6或8.8.8.8等幸运数字也是可以上网的。
 
为什么呢?
这里使用了PPPoE拨号技术,在这台网络设备与电信NAS网关之间动态创建了一条P2P(Point to Point)的隧道。隧道的本地虚拟接口假设为VA1,所有非60.x.x.0/24网段的流量都会通过VA1接口流出本地。
 
为何要从VA1流出本地?
因为系统创建一条默认路由,类似于:

0.0.0.0/0  ------------ >   VA1
 
VA1其实类似与ethernet接口。当我们使用ethernet接口来上网时,IP报文需要通过ethernet接口流出时,ethernet接口必须做的一件事是封装(Encapsulation):
 
EthernetIP报文
 
有读者说,封装之前,至少还需要目的MAC地址,不是吗?
是的,需要ARP广播来发现网关的MAC地址,然后“Ethernet + IP报文“就可以流出网口了,对吗?
 
Okay,当用户的IP报文需要从VA1接口流出时,VA1接口必须做的一件事也是封装:
 
PPPoE + IP报文
 
然后呢,这个“PPPoE + IP报文“能长出翅膀飞走?

不能。

既然不能,那么这个报文最终还是要乖乖地从ethernet接口(网口)这个物理接口流出。既然要从ethernet接口流出,一定要遵守ethernet接口的潜规则,必须完成封装:

Ethernet + PPPoE + IP报文
 
这里ethernet封装也需要目的MAC地址,对吗?
 
是的。

是否也需要使用ARP广播来发现NAS网关的MAC地址?

不需要。

为什么?

因为PPPoE握手协商阶段,已经通过Discovery、Offer等报文提前获得了PPPoE服务器(NAS网关)的MAC地址。既然知道了,就没有必要ARP广播了。
 
于是就发生了神奇的一幕,报文最终通过ethernet接口流出,但是竟然没有使用ARP广播。

当报文顺着ISP的接入网络一路流到NAS网关时,NAS网关干两件事:
 
  • 剥离Ethernet封装,因为目的MAC地址是自己的,否则直接丢弃

  • 剥离PPPoE封装,根据剩下的IP裸报文继续路由转发


网关的地方既然任何IP地址都可以,那能否是空白的?

应该不可以,如果空白,将不会有上文那条默认路由。
 
最后一点,NAS网关的下行方向的路由是什么样子的?

60.x.x.239/32  ------------ >   VAn
 
这里的网络掩码为何是32,而不是24?
 
欢迎加入交流群一起讨论!

本文最后更新于2021-3-4,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
获取更多资讯请加入交流群

    协助本站SEO优化一下,谢谢!
    关键词不能为空
版权说明

本文地址:http://dufengvip.cn/post-495.html
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注