CAN is a low-level protocol, somewhere around the data-link layer of the OSI model (layer 2). Thus it is only concerned with transferring generic data frames. CAN does not specify a network topology, nor how data gets passed around, nor the nature of the data etc etc.
So CAN is not a master/slave protocol for the same reason as UART isn't one.
On top of the standard CAN protocol frames, you need higher layers that define the communication. The far most common ones for CAN are:
- CANopen (most common, generic)
- DeviceNet (generic, mainly used in the automotion industry)
- J1939 (trucks, tractors, heavy vehicles)
These work in entirely different ways.
CANopen for example, doesn't define a master as far as the data traffic is concerned. Data communication between nodes on the bus is only a concern of the nodes involved: there is no master directing data traffic and every node can be configured to speak/listen to any other node.
But CANopen does define a "network manager" master, who is in charge of supervising the nodes on the bus: making sure they start correctly and remain alive and functional etc.