O TCP (Transmission Control Protocol - Protocolo de Controle de Transmissão), é um protocolo orientado a conexões confiável que permite a entrega sem erros de um fluxo de bytes.
O UDP fornece integridade de dados (via um checksum) mas não fornece entrega garantida; já o TCP fornece tanto integridade dos dados quanto garantia de entrega (retransmitindo até que o destinatário receba o pacote). Ele é um protocolo de "melhor esforço" ou "não confiável". Não porque ele é particularmente não confiável, mas porque ele não verifica se os pacotes alcançaram seu destino, e não dá qualquer garantia que eles irão chegar na ordem. Se uma aplicação requer estas características, então ela mesma terá que provê-las ou usar o protocolo TCP.
O UDP é tipicamente usado por aplicações como as de mídia de streaming (áudio, vídeo etc), onde a chegada na hora é mais importante do que confiabilidade, ou para aplicações de simples requisição/resposta como pesquisas de DNS, onde o overhead de configurar uma conexão confiável é desproporcionalmente largo.