There are two good reasons for this.
First, all higher level protocols that encapsulate data in an IPv4 datagram have a checksum field that spans the entire packet. Therefore, the checksum for the IPv4 datagram does not need to verify the encapsulated data.
Secondly, the IPv4 packet header changes with each router visited, but there is no data. Thus, the checksum includes only the part that has changed. If data was included, each router must recalculate the checksum for the entire packet, which means an increase in processing time.
source: data transfer and networking by Behrouz A. Forouzan
source share