为什么我们需要以太网中的数据链路层?

网络工程 以太网 ip 第 2 层 奥西
2022-02-20 19:39:24

考虑一个典型的基本以太网,不使用 VLAN。

我们有一堆电线和收发器连接一些设备——物理层。在这一层,我们只能在直接连接的设备之间发送字节组——不是很有用。

然后我们有一个由这些电线和收发器构建的以太网网络——数据链路层。在这一层,我们可以使用其 MAC 地址向网络上的任何设备发送数据包。这一层还为每个数据包添加了一个校验和,以及一个标识下一层协议的标签。“以太网路由器”(即交换机)在此级别路由数据包,并且有一些限制(例如,没有环路)。

然后我们有一个由一个或多个以太网网络构建的 IP 网络。在这一层,我们可以使用其 IP 地址向网络上的任何设备发送数据包。这一层还为每个数据包添加了一个校验和,以及一个标识下一层协议的标签。等一下,听起来很熟悉。它还支持分片和更高级的路由。

最重要的是,我们运行 TCP、UDP 等......

等等,IP 层可以做以太网数据链路层可以做的所有事情!那么为什么我们需要以太网数据链路层呢?为什么不直接在以太网物理层上运行 TCP over IP?

或者,为什么不扩展以太网数据链路层来做 IP 可以做的事情,然后在没有 IP 的情况下在以太网数据链路层上运行 TCP?

2个回答

首先,我想到的是当我们有很多用户并且他们处于待机或通信状态时的情况。L2 仍然更新他们的 MAC 并广播他们在那里。很多流量。以及像 NAT 这样的服务:使用 NAT,我们为网络内的多个用户提供 1 个公共地址。

您是否建议仅使用 L2 ?:)

以太网定义了一种通用格式,可用于所有不同种类的物理通道。因此,它负责媒体访问,因此可以接入有线或卫星链路。L1 为您提供了一种发送单个位的方法。可能是通过无线电、卫星、电缆或其他方式。这不会增加可靠性,例如用于无线通信的 L2 协议。它有时还定义了某些规则以确保正确的无冲突通信。IP 没有那样做……没有可靠性,没有碰撞检测,也没有避免。这也是 TCP 再次增加一层可靠性的原因。

如今,大多数采用星型拓扑,其中一条线仅连接两个节点,如果您知道如何区分您发送的数据和对等方发送的数据,那么以太网地址实际上并不那么重要。但是,由于以太网起源于存在总线拓扑的时代,因此拥有寻址能力非常重要。否则,在总线上收听的参与者无法判断数据包是给他们的还是给其他人的。对于集线器来说也是如此,与交换机相比,集线器不进行“存储和转发”,而是将它们在传入端口上接收到的单个比特转发到所有其他端口。

校验和点很重要,因为即使使用传输比特的 L1 服务,也没有人确保正确接收比特。以太网可以通过校验和检测错误。您正确地说校验和是在 L3 中使用 IP 完成的,但是如果您仔细查看 IPv6,您会发现它们丢弃了校验和。这背后的动机是以太网无论如何都会进行校验和(L2),而 TCP 还通过 ACK 和序列号(L3)确保可靠的数据传输。