Jof*_*sey 4 networking routing network-protocols
想象一下,我们有一个 IP 数据包,我们需要弄清楚它应该通过哪个接口发送。有一个eth0(例如)与我们的数据包目标地址相对应。
但是,如果存在多个数据链路层协议怎么办eth0?
例如,Ethernet和PPPoE。我们如何确定数据包应该使用哪种协议?
我认为在一个接口上不能有多个链路层。
对于 PPPoE,建立 PPP 连接会创建另一个接口,通常称为ppp0。您的路由表条目将指向ppp0,而不是eth0。当数据包被路由到 时ppp0,它实际上被交给了本地 PPPoE 软件,而不是传输到任何地方。但随后 PPPoE 软件会生成一个新数据包并通过 进行传输eth0。
顺便说一句,这与某些 VPN 的工作方式类似。 例如,OpenVPNtun0创建一个名为或的新接口tap0,其“链路层”是 OpenVPN 守护进程。向其中一个发送数据包,守护进程对其进行加密,并将密文放入新数据包(通常是纯 UDP)中,发送到远程 OpenVPN 服务器。该数据包经过路由过程并找到到达真实接口(如 )的路径eth0。
(与 VPN 示例不同,当 PPPoE 通过 发送数据包时eth0,它不依赖路由表将数据包路由到那里,因为eth0没有配置 IP 地址,数据包无法路由到它。相反,我认为它使用原始套接字发送自定义以太网帧,寻址到 PPPoE 对等方的 MAC 地址,其中包含 PPP 有效负载,而不是IP 有效负载。RFC 2516有该协议的详细信息。)
| 归档时间: |
|
| 查看次数: |
1155 次 |
| 最近记录: |