我了解到,在ARP协议中,要将数据包从一台计算机发送到另一台计算机,我们需要知道目标计算机的MAC地址,但是由于已为目标计算机分配了唯一的IP地址,因此发送MAC地址不是多余的吗?我了解在TCP / IP中有很多层,其中之一是数据链路层,其主要功能是检查机器的MAC地址是否与数据包的目标MAC地址匹配。由于数据包已经包含目标IP地址,所以我们为什么不能将数据包进一步发送到网络层以使数据包的目标IP地址与机器IP地址匹配,而无需在具有MAC地址的数据链路层进行检查。不要将这个问题标记为重复,因为我已经阅读了有关此主题的先前问答,但是没有任何解释可以解释为什么不在网络层而不是数据链路层进行此检查的原因。请解释。谢谢。


评论

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。

#1 楼

正如@ronmaupin所暗示的,这是有历史原因的。

在小型网络中,您不需要第3层协议。所有设备均可直接寻址,因此第2层地址可以正常工作。随着网络的扩大和相互连接,有必要知道如何从一个网络连接到另一个网络。这就是路由的功能,这是在第3层完成的。

IP不是唯一的(甚至是最受欢迎的)L3协议,以太网也不是唯一的第2层协议。这就是为什么有层的原因。您可以将一个的功能与另一个隔离。它使开发网络软件更加容易,因为您不必为每种类型的网络都拥有专用版本。

第3层功能不知道或不在乎您是否使用以太网,令牌环,PPP或其他十二种过时的网络协议。同样,如果您使用的是IP,IPX或其他协议,则第2层协议无关紧要。

您为分层支付的价格是必须在32位IP地址和48位MAC地址(用于以太网)之间“映射”。这就是ARP协议的目的-在第2层和第3层之间进行映射。

#2 楼

不要混淆网络层。每层都有特定的用途。另外,不要假设每一层只有一个协议。第2层有许多协议,其中一些使用MAC地址,有些则不使用。在那些使用MAC地址的地址中,有些使用48位MAC地址,而有些则使用64位MAC地址。还有多种第3层协议。 IPv4是最常用但不是唯一的第3层协议,它使用32位地址,但已被使用128位地址的IPv6取代。您不想每次都运行不同的第3层协议时都替换或升级所有第2层设备。

MAC地址是第2层地址,用于传输局域网上的第2层帧。交换机是第二层设备,它们使用MAC地址创建一个表,该表将哪个主机连接到哪个交换机接口。交换机将查看源MAC地址以构建其MAC地址表,并将查看目标MAC地址,在其MAC地址表中进行查找,然后将帧传送到正确的端口。交换机在其MAC地址表中没有目标地址,则需要向我们的其他每个接口泛洪帧,这在所有其他接口上都非常低效且浪费带宽。交换机不会在框架内部查看IP地址。这样一来,第2层和交换机就可以承载任何第3层协议(IPv4,IPX,IPv6等)。

IP地址是第3层地址,只能按第-层进行查看- 3个设备,例如路由器。接收到第2层帧的路由器将从第3层数据包中剥离该帧,并且它将在其路由表中查找IP地址,以查看该数据包应切换到哪个接口。路由器将为连接到目标接口的新LAN构建新的第2层框架。第2层(MAC地址等)用于连接到相同第2层域的设备,和第3层(IP地址等)允许您将数据发送到其他第2层域。

评论


我将成为@rommaupin的超级智能机器人的讲故事的人。

– Zack Scaringello
16年9月9日在18:54

#3 楼

IP地址就像剪头发一样。它通常不会经常更改,但是当您更改时,您将完全无法识别。 MAC地址就像您的指纹。您可能看起来不一样,但是您的指纹永远不会改变。

MAC地址使我们可以做一些事情。


它们使我们能够识别物品的制造商。
它们为物品提供不变的(基本上是)标识。
它减少了硬件密集型包装在局域网中传输。


评论


但是,当从源向目的地发送数据包时,例如,我们经常知道目的地,例如www.google.com具有静态IP地址,那么在这里使用MAC地址有什么用?

– Shivam Aggarwal
16年9月9日在17:09

MAC地址的目的是为每个设备提供唯一的标识。没有足够的IP地址来执行此操作。更不用说IP地址可以轻松更改了。

– Zack Scaringello
2016年9月9日17:12

你没看我写的书吗与IP地址相比,唯一的MAC地址要多得多。 IP地址不足,无法为每个设备提供唯一的IP地址。

– Zack Scaringello
16年9月9日在17:22

我非常喜欢这种类比,因此不得不输入这些单词。

– INV3NT3D
16年9月9日在18:52

当然,您是在谈论IPv4。 IPv6具有足够多的地址。您的其他观点很有效。

–罗恩·托恩(Ron Trunk)
2016年9月9日在22:28