假设两台计算机和一台路由器连接到第二层以太网交换机。这两台计算机都在路由器的IP网络上注册。计算机1的用户使用计算机2's IP地址向计算机2发送ICMP ping请求。我的理解(这可能是不正确的)是,这种通信不会通过路由器,只有通过交换机,因为计算机1保持一个ARP表,并能够解决计算机2's IP地址到其MAC地址发送。我的问题有两个:
1)源计算机最初通过什么机制“学习”目标计算机的MAC地址,从而能够在其ARP表中注册这种关系?
2)这两台计算机在技术上是否仍然通过IP (第三层)进行通信?还是在技术上在第二层实现ICMP?我的困惑源于ICMP被认为是一种"IP协议“。
发布于 2014-12-03 00:30:45
要发送ICMP ping,需要L2和L3连接。
当计算机1发现计算机2的MAC地址不在其ARP表中时,它将向计算机2发送ARP请求。ARP请求将使用目标MAC地址FF:FF发送到计算机2s IP地址的目的地,这是广播的MAC地址,意味着帧将发送到L2段中的所有主机。但是,只有与ARP请求的IP目的地匹配的主机才会响应,在这种情况下,计算机2,所有其他主机都会删除它。当计算机2接收到ARP请求时,它将使用源IP和MAC将一个单播ARP响应发送回包含其MAC地址的计算机1。在接收到ARP响应时,计算机1将具有用于计算机2的IP地址和MAC地址,并且能够完全通信。
为了回答你的另一个问题,ICMP被认为是在第三层运行的。OSI模型中的每一层都依赖于它下面的层。
发布于 2014-12-03 00:12:05
该交换机仅为第二层,只维护一个包含mac地址和交换机端口的表.
PC是第三层设备,将使用ARP查找他们想要交谈的另一个L3设备的mac地址。一旦知道了IP到mac地址的映射,那么发送PC就会在目标字段中与远程PC的IP一起创建一个数据包。然后,将此数据包转换为目标字段中带有远程PC的mac地址的帧,然后发送到线路上。
为了直接回答问题1)交换机检查所有传入帧,以将源mac地址映射到该接口。然后交换机检查目标mac地址字段以确定在哪里发送帧,它对帧的数据字段中的IP (或IPv6)地址不感兴趣(其中包含IP数据包)。如果不知道数据包的目标mac地址,则交换机会将该数据包淹没到vlan中接收到的所有端口。
问题2)是的,PC是通过IP通信的。您不需要知道远程PC的mac地址,因为它是作为网络堆栈的一部分处理的。
https://networkengineering.stackexchange.com/questions/13377
复制相似问题