The data link layer has three core functions: (1) providing a service interface to the network layer, (2) handling transmission errors via checksums/CRC and ARQ mechanisms, and (3) flow control to prevent fast senders from overwhelming slow receivers. All listed options are correct.