我们知道:ARP协议的目的是为了地址解析,也就是知道目标主机的IP地址,通过ARP请求报文获取目标主机的MAC地址。看起来是根据IP地址解析出MAC地址,实际上是发送ARP请求报文到目标主机,目标主机通过ARP响应报文把自己的MAC地址告诉请求方。
ARP请求报文通常是一条广播以太网帧,也就是目的MAC地址为FF:FF:FF:FF:FF:FF,目的是为了交换机能够把ARP请求广播到目标主机。为什么是广播mac地址而不是单播?很简单,我们就是因为不知道目标主机的mac地址才会发送ARP请求,怎么可能填入目标主机mac地址作为目的mac地址呢!
既然是广播帧,就表示网络内的其他所有主机都能收到(包括目标主机)。但是我们又只想让目标主机回复,不是目标的主机收到后在APR层能够丢弃。如何实现?很简单,只需要把目标IP地址放入ARP请求报文中即可。所有收到广播ARP请求报文的主机都会通过报文里的目标IP地址和自己的IP地址进行比较,判断此报文的目标主机是否是自己,如果不是,就没必要回复。
可以看出:目标主机的IP地址必定是一个单播IP地址,所以ARP请求报文里的目标IP地址通常都是设置为指定主机的单播IP地址。
那可以把源IP地址或目标IP地址设置为广播IP地址吗?在我们的认知中,广播是对网络内的所有主机发送报文,广播IP地址表示网络内的所有主机,应当被所有主机所认同。就像广播UDP或广播ICMP Echo Request报文那样,收到的所有主机对于广播IP地址都是认同的。
在CANoe上添加仿真节点,作为DUT,配置独立的协议栈和网络接口参数: