IP 地址是否对第 2 层(数据链路层)设备可见。如果不是,那么这些层为什么在不知道 IP 地址的情况下使用 ARP 协议将 IP 地址转换为 MAC 地址。
谢谢你。
IP 地址是否对第 2 层(数据链路层)设备可见。如果不是,那么这些层为什么在不知道 IP 地址的情况下使用 ARP 协议将 IP 地址转换为 MAC 地址。
谢谢你。
从这里的线程
ARP 一直是第 2 层协议。原因:ARP 中携带的最高层地址是典型 ARP 操作的第 2 层 MAC 地址。ARP 包中的 IP 地址是协议载荷,没有 ARP 包本身的寻址信息。
ARP 是一个不太适合 7 层 OSI 模型或古老的 DoD 层模型的协议。这些模型是为 HTTP 或 FTP 等最终用户应用程序定义的,它们仍然定义了如何通过网络堆栈 (L3+L4) 和网络接口 (L2 + L1) 将流量从应用程序发送到应用程序。
ARP 是一种将第 2 层和第 3 层协议粘合在一起的服务协议。它解决了您需要使用 IP 数据包在以太网或无线 LAN 等共享媒体上添加第 2 层 (MAC) 目标地址的问题。但是 ARP 是一个带有单独数据包的单独进程。您将在 IP 数据包中发现没有 ARP 协议信息。这就是为什么 ARP 绝对不是 2.5 层协议的原因。
IP 地址是否对第 2 层(数据链路层)设备可见。
一般来说没有。以太网标头具有ethertype
字段,它指定当前以太网标头之后的下一个标头格式。有几个值仍在第 2 层,例如 VLAN 标记、生成树 BPDU 等。如果 Ethertype 是其他类型,则第 2 层设备不应该查看它。(并且不应该真正称为第 2 层设备的设备)
在终端主机上,ethertype 将在第 2 层处理完成后确定数据包的处理方式。但这不再是第 2 层处理。
如果不是,那么这些层为什么在不知道 IP 地址的情况下使用 ARP 协议将 IP 地址转换为 MAC 地址。
我想你是反过来想的。IP层使用ARP协议来查找本地网络上具有给定IP地址的设备的MAC地址。第 2 层不使用它来映射 IP。
例如,假设您的家庭网络有两个设备,您的笔记本电脑的 IP 为 192.168.0.10,而您的手机的 IP 为 192.168.0.20。网络掩码是/24。现在你想从你的笔记本电脑向你的手机发送一个数据包,例如ping 192.168.0.20
。
首先,创建一个 ICMP 数据包。接下来,第 3 层确定将数据包发送到何处。它已确定另一台主机连接到同一本地网络(基于两个地址的前 24 位)。
接下来,这个数据包需要被发送到本地网络。但是本地网络是二层的,二层只能转发MAC地址。因此,第 3 层向第 2 层发出信号,要求对 IP 地址进行“MAC 地址查找”。大约,您的笔记本电脑将向所有连接的设备发送一个广播数据包,表示它会查找 IP 地址为 192.168.0.20 的设备的 MAC 地址。由于您的手机当前具有此地址,因此它会使用自己的 MAC 地址进行回复。当笔记本电脑收到回复时,它可以向您的手机发送带有目标 MAC 的帧。注意:笔记本电脑通常还会在其 APR 缓存中保存一个条目。