both are serial communication...
but the difference is
1. I2c is synchronous and CAN is asynshronous.
2. i2c needs slave address and CAN does not need slave address protocol.
3. i2c is Node oriented and CAN is message oriented.
4. i2c has SDA and SCL, CAN is differential bus..
5. i2c operates in 3 speeds 100kbps, 400kbps and 3.4mbps where as CAN operates at 250kbps upto 1mbps.
CAN is a message based protocol, designed specifically for automotive applications for the communication between the main host controller and other devices (also now in industrial automation ). It can be transferred to long distances. I2C is a short distance communication used between the ICs in a same circuit.