我正在学习一本名为“Network+”的书Mike Meyers 推出的一体化 CompTia Network+。
在第 2 章中,他讨论了框架以及如何将它们表示为容器,并且框架内的数据包含接收者的 mac 地址、发送者的 mac 地址、数据和序列号。
我不明白的是,如果发送方通过网络向接收方发送文件,并且此帧包含此数据,那么该帧在发送之前如何知道接收方的 MAC 地址是什么?
对于 TCP/IP,当它包含收件人的 IP 地址时,可以理解它如何检索该值。但我不明白它如何检索 MAC 地址,因为如果该帧来自发送方计算机,进入路由器并将自身复制到网络上存在的每台计算机,它如何获得 MAC 地址并知道要去哪里?
如果我说的没有道理,请告诉我。
答案1
发送者传输 ARP 请求(或在 IPv6 中为邻居请求)。基本上,这是一个大喊“哪个 MAC 拥有此 IP?”的帧。
然后,该 IP 的所有者将回复一个几乎相同的数据包,指出“我有这个 IP”。该答案也包含 MAC。
这只适用于本地网络。对于不在本地网络上的所有 IP 流量,数据包都会发送到默认网关。(显然,该默认网关是本地网络上的一台计算机)。
编辑1:链接到相关维基百科关于 ARP 的文章
编辑2:ARP 请求“谁有这个”显然是一个广播。
答案2
计算机使用 ARP 协议或从其自己的 ARP 缓存中查找 MAC 地址。
帧不会通过路由器(您指的是集线器或交换机)传递,而是被解封装,然后重新封装为新的帧,并使用新的 MAC 地址作为下一跳。帧和 MAC 地址仅适用于本地网段,它们永远不会超出该网段。