Yes, a CAN frame has an address (ID) and a data payload, which can be up to 8 bytes long.
CAN works very well for sensor devices. At regular intervals, a CAN sensor can simply transmit the value of its measured quantity onto the bus, and any other device which is interested can receive it. From a software point of view, there's no need to establish a two way dialogue between the devices; your sensor can simply 'shout' at regular intervals onto the bus, and any other device on the bus can listen or ignore it.
The nice thing about CAN is that error detection, retransmission and acknowledgement are all taken care of for you in hardware. Typically, once the controller is set up (which can, admittedly, be a bit overwhelming at first because there's a number of terms and parameters which may be unfamiliar), all you do is write the contents of the frame into hardware registers, then leave the controller to get on with it.
The controller:
- provides a hardware queue, so your code doesn't have to wait until transmission is complete
- calculates the CRC for transmission (and checks it on reception)
- waits until the bus is free
- transmits the packet
- handles arbitration, collision detection and retries
- optionally, generates an interrupt to let you know when transmission is successful
The receiver typically includes hardware filtering on device ID, so you can program up the list of IDs you're interested in, and only those will be received.
Physically, you need a microcontroller with a CAN interface, and an external transceiver. The connection between the two can be as simple as two wires, Tx and Rx. CAN transceivers handle the conversion between single ended and differential, and are remarkably robust against electrical damage.