数据链路层的通信

网络工程 路由
2022-02-24 00:09:17

我理解数据包通过多个路由器跳跃到达目标网络的概念。我想这与路由器中实现的转发/路由机制有关。我不明白的是Datalink的hop-to-hop交付。数据包如何跨 LAN 传输?每个主机是否都维护一个本地路由表,还是只有路由器才能做到这一点?我知道他们是在物理地址的帮助下做到这一点的,但是数据包究竟是如何知道要在 LAN 中访问哪个主机的呢?

3个回答

数据链路协议将IP数据包封装成具有数据链路协议寻址的帧,例如MAC寻址。数据链路中的帧是根据数据链路寻址传送的。

例如,以太网交换机维护一个 CAM 表,该表将交换机接口与交换机知道的每个 MAC 地址相关联。交换机将泛洪广播、多播和任何它没有 CAM 表条目的单播。以太网 LAN 上的主机将忽略它们收到的任何不是发往它们的帧。

我理解数据包通过多个路由器跳跃到达目标网络的概念。

没有冒犯,但我不认为你这样做。您需要了解第 2 层和第 3 层地址之间的区别,以及当数据包在网络中移动时它们如何变化(或不变化)。

我不明白的是Datalink的hop-to-hop交付。数据包如何跨 LAN 传输?

在数据链路层,没有“跳”,也没有路由。设备直接由它们的 MAC 地址寻址。交换机根据其 MAC 地址表转发帧。如果交换机没有目标 MAC 的条目,它们会将帧“淹没”出每个端口。

每个主机是否都维护一个本地路由表,还是只有路由器才能做到这一点?

是的,每个主机都有,因为假设它可以有多个接口。在像 PC 这样的简单主机上,只有一个接口,通常只有一个路由(默认路由)。

但是请记住,在第 2 层没有路由,因此从不使用路由表。

我不明白的是Datalink的hop-to-hop交付。

链路层 (L2) 寻址仅在段内可能且有效 - 它不能跨跃点使用,只能在中间使用。跃点需要在它们之间共享一个段,它们使用链路层作为数据包的中间传输(封装在适合当前 L2 网络的帧中)。虽然 IEEE-802 帧非常常见,但也有其他网络类型。

数据包如何跨 LAN 传输?

LAN通常被定义为链路层网络,即广播域。数据包不能穿过这些网络——它们需要被封装在该网络的帧中(例如,在以太网的以太网帧中——IEEE 802.3)。这些帧类型中的许多都带有 L2 地址(源和目标),并且由 L2 网络将帧传输到预期的本地 L3 接收者 - 目标主机或下一跳网关。

IEEE 网络为此使用 MAC 地址。由于 L2 网络不能使用 L3 地址,因此需要将下一跳或目标地址转换为 L2 地址 - 对于 IPv4 使用 ARP 或对于 IPv6 使用 NDP。

每个主机是否都维护一个本地路由表,还是只有路由器才能做到这一点?

虽然路由是路由器的核心功能,但每个主机都使用本地路由(具有自己的路由表)来选择可能的多个 NIC 之一,以及它知道的网关之一或直接主机寻址。

在一个非常简单的形式中,一个终端节点主机有一个 NIC 和一个默认网关。