TCP is a reliable protocol. Verification of the data (to an extent) is performed. UDP is an unreliable protocol. It's a "fire and forget" protocol. Since the verification ( packet counts, checksums ) isn't being done, the application[s] have to do it.