UDP is a connectionless transport protocol that provides an unreliable "best effort" service where packets may be lost or delivered out of order. It has no handshaking between sender and receiver and each packet is handled independently. UDP has a small 8-byte header and no congestion control, making it useful for applications that can tolerate some data loss like streaming media. Each UDP packet, called a datagram, carries data that is encapsulated within an IP datagram for transmission. The UDP header includes source and destination port numbers as well as a checksum to detect errors in transmission.