CAN总线与以太网通信的区别
网络拓扑不同
CAN是总线(Bus)通信方式,网络拓扑如下图。总线的意思就是所有节点都连接到同一个传输媒介中,也就是说传输媒介中的电信号会影响到所有的节点。总线通信中一条CAN线上会挂多个节点,所以一般我们会说CAN Bus 或 CAN Network。
以太网是交换机式(Switched Network)通信方式,网络拓扑如下图。网络中有终端节点,简单理解为一个节点上只有一个以太网端口;和交换机节点,简单理解为一个节点上有多个以太网端口,其主要作用是转发信息。交换机式通信指的是所有的终端节点都要通过交换机才能连接到一起,所有传递的信息都需要交换机进行转发。交换机式通信中一条网线上只有两端与两个端口相连,没有分叉。所以一般我们不说以太网总线,而是说以太网网络(Ethernet Network)。
信息收发方式不同
CAN总线为广播式通信,一个节点发送信息会占据所有通信媒介,发送节点只管自己发送,不关心谁去接收,总线上所有通信节点都会收到信息。接收节点则根据自身的情况来决定是否接收信息。这就类似于在会议室里开会,一个人发言所有人都能听见,发言内容与谁相关,谁去关注就OK了。
以太网的交换机式通信,则是点对点的通信方式。发送节点在发送信息前,会首先想好信息要发送给谁,然后会把自己的地址和接收方的地址放到报文里去。节点A需要发送信息给节点B,可以简单理解为交换机内部把端口1和端口2给连起来了,因此信息就从A传到了B。在A和B收发的过程中,C/D/E节点都没有收到信息,他们之间的通信媒介也没受到影响。这就类似于打电话,一个人拨通另一个人的电话号码,就只有这两个人互相通话。那么如果有信息需要从发送节点发给多个节点,相当于召开多方电话会议,怎么办呢?这就有了多播和广播的概念。
多播指一对多的信息发送,广播指一对所有的信息发送。如果A节点希望发送信息给多个节点,则需要将自己的地址和多个接收方的地址(是一个提前设置好的多播地址)放到报文里去,此时可以简单理解为交换机把发送方的端口同多个接收方的端口连接起来了,因此信息就从A传到了多个节点。如果A节点希望发送信息给所有节点,则需要将自己的地址和所有接收方的地址(是一个提前设置好的广播地址)放到报文里去,此时可以简单理解为交换机把发送方的端口同所有端口连接起来了,因此信息就从A传到了所有节点。