为什么PPPoE可以连接到不在同一个子网中的网关

网络工程 网络
2021-07-08 06:42:08

我们知道主机需要与其网关位于同一子网中才能进行路由。但是在PPPoE中,公网IP的子网掩码为255.255.255.255,这意味着该IP与网关不在同一个子网中。我想知道在这种情况下主机如何将数据包传递到网关?非常感谢!

3个回答

PPP 通常建立一个点对点链路(或会话),恰好有两个链路伙伴。无论在 PPP 级别之上使用什么地址,其中一个发送另一个接收的所有内容。

由于以太网需要有效的 MAC 地址(在数据链路层),PPP oE在以太网上建立一个 PPP 会话,即。两个链接伙伴之间。该 PPPoE 会话完全独立于可能在以太网网络上运行的任何其他内容——尤其是使用 ARP 的以太网上的“正常”IPv4。

对于路由,默认路由可以简单地指向PPP 接口,表示所有数据包都简单地从该接口发送出去。默认网关是“下一跳之后”。

在以太网上,区别(或多路复用)是使用 PPPoE ( 0x8863/ 0x8864) 的专用 EtherType 值而不是 IPv4 来完成的0x0800这样,网络堆栈不会将帧传递给 IP 堆栈,而是传递给 PPPoE 驱动程序(后者可能会也可能不会将提取的 PPP 帧传递给 IP 堆栈或任何其他支持的 L3 堆栈)。

因为它是POINT-TO-POINT交通只有一个地方可去……链接的另一边。/32 路由被添加到路由表中,指示另一端的内容。也可以只使用接口路由。(但是很多主机操作系统在这些方面都有问题。当人们不理解这一点时,就会导致混乱。)

我不确定我是否理解你的问题。

255.255.255.255 转换为“此设备,仅此设备”。或者也许“这个界面”是一个更好的表达。它不属于任何网络,因此没有网关。从您可以从 inertnets 访问它的意义上说,IP 不是“公共的”,它专门用于像 DSL 这样的封闭对等电路。

假设您的 ISP:的“公共”地址是 192.51.100.1/32 (255.255.255.255)。他们不为您提供地址范围,而是为您提供单个 IP 地址,例如 192.0.2.25。我没有 PPPoE 线路,所以我无法检查,但逻辑上说这也是一个 /32 地址 - 真的没有理由不这样做。该地址将分配给调制解调器的 PPPoE 接口。

您的调制解调器提供 192.168.0.0/24 范围内的内部 IP 地址,并保留 192.168.0.1 作为默认网关。您的 PC 想要发送到互联网的任何流量都会发送到调制解调器。调制解调器对流量进行 NAT,因此 ISP 仅接收源自单个主机 192.0.2.25 的流量。

无论您的调制解调器是否有到 192.51.100.1 的默认路由,或者 192.51.100.1 是否被指定为默认网关,都不会改变它转发流量的方式。任何发往 192.168.0.0/24 之外的内容都将被发送到 192.51.100.1。ISP 路由器可能确实有一个路由表条目;“将所有流量直接发送到 192.0.2.25” - 它知道主机可以通过 PPPoE 链接访问。

因此,“网关”在任何有意义的意义上进入画面的唯一地方就是您的家庭网络。

我希望这能有所帮助。我承认我不是 PPPoE 的专家,所以我只能尝试在我理解的概念层面上解释这一点。我相信社区中有更多知识渊博的成员会指出我的错误:-)