我一直在阅读 MAC 地址和 IP 地址之间的区别,以及为什么我们需要它们。
总而言之,MAC 地址是每个设备的物理上不可更改的唯一 ID,而 IP 地址是分配的、可变的和虚拟的。打个比方,MAC地址就像拥有永久名字的人,而IP地址就是他们目前居住的地方。
在现实世界中,我们在电话簿的帮助下链接地址和姓名。什么机制将 IP 地址链接到 MAC 地址?该机制位于网络中的什么位置?
我一直在阅读 MAC 地址和 IP 地址之间的区别,以及为什么我们需要它们。
总而言之,MAC 地址是每个设备的物理上不可更改的唯一 ID,而 IP 地址是分配的、可变的和虚拟的。打个比方,MAC地址就像拥有永久名字的人,而IP地址就是他们目前居住的地方。
在现实世界中,我们在电话簿的帮助下链接地址和姓名。什么机制将 IP 地址链接到 MAC 地址?该机制位于网络中的什么位置?
该机制称为地址解析协议 (ARP)。每个以太网 IPv4 设备 ARP 用于解析目标 IP 的以太网 mac 地址。IP 到 mac 的映射存储在每个设备的 ARP 表(类比中的电话簿)中。
为简化起见:在大多数情况下,要解析与 IP 地址关联的 MAC 地址,您可以发送广播 ARP 数据包(到网络中的所有设备),询问谁拥有该 IP 地址。具有该 IP 地址的设备回复 ARP(使用其 MAC 地址)。
由于这个问题是用 IPv6 标记的,我会回答这个问题,因为 IPv6 与 IPv4 非常不同。
首先,没有 ARPv6 这样的东西。第 2 层和 IPv6 地址之间的映射由邻居发现协议 (NDP) 完成,该协议通过 ICMPv6 发送。因此,您不能忽略 ICMPv6 并将其过滤掉,就像传统 IP 的习惯一样。NDP 提供了两种感兴趣的消息类型:Neighbor Solicitation 和 Neighbor Advertisement。想要了解特定 IP 地址的链路层地址的节点向相应的链路本地请求节点多播地址发送邻居请求- 不再有 IPv6 广播。
例如,如果所讨论的地址是2001:db8::0011:2233:4455:6677
,则相应的请求节点多播地址是ff02::1:ff55:6677
,相应的以太网多播地址是33:33:ff:55:66:77
。与地址结尾上的所有节点*55:6677
属于该组播组,将收听-这是最有可能只在目标系统本身。邻居请求还包含请求系统的单播 IPv6 地址和 MAC 地址。
收到后,目标节点用其 Neighbor Advertisement 应答,该 Neighbor Advertisement 被发送到请求节点的单播地址(链路层和 IPv6)。因此,请求节点获悉目标节点的 MAC 地址。
是的,NDP 欺骗的工作方式与 ARP 欺骗非常相似。不,IPsec 不是答案。
楼上的回答很好。如果有帮助,这里有一个关于您的电话簿类比的描述。括号中的真实网络术语。
根据他们的姓名(IP 地址),您知道他们住在您附近(广播域)。首先你查看你的电话簿(ARP 缓存),看看你是否已经知道他们的地址(MAC 地址)。如果他们不在电话簿中,你就出去大喊(广播),“史蒂夫住在哪里?” 大到足以让每个人听到(ARP 请求)。假设史蒂夫确实住在那里并且他醒着,他会回答——只是对你,而不是大喊——“这是我的地址”(ARP 回复)。您将其写在电话簿中以备将来参考(ARP 缓存)。
MAC 地址可以更改。在 Linux 上,大多数 Windows 使用 ip 或 ifconfig 查看网络接口的驱动程序设置。
你不转换任何东西。MAC 地址在 OSI 模型的第 2 层,IP 在第 3 层。对于 IPv4,ARP 用于找出哪个 MAC(第 2 层)地址属于某个 IP(第 3 层)地址。对于 IPv6,使用 ICMPv6(邻居发现)。