This layer is responsible for multiplexing a number of connections over a single link, splits the data into small packets, make sure that the data is received in the order in which it was sent, and perform error correction and retransmit the data in case of error.
Two common protocols used in this layer are TCP (which provides all of these services, but incurs a small bandwidth and CPU overhead), and UDP, which only supplies multiplexing services, but has much smaller overhead.