IP, TCP, and UDP do not notify the source if a packet arrives with a checksum error because IP and UDP are unreliable protocols that do not guarantee delivery. While TCP does guarantee delivery, it uses timeouts so that if the source does not receive an acknowledgment within a given period, it will retransmit the packet rather than being notified of the error.