TCP é o protocolo de controle de transmissão. É um protocolo orientado a conexões, o que significa que ele estabelecerá uma sessão por meio de handshake de 3 vias. O TCP fornece verificação de erros, embora isso ocorra ao custo do tráfego de sobrecarga. O TCP é melhor usado com aplicativos que precisam manter uma conexão constante, como FTP ou SSH.
UDP é o protocolo de datagrama do usuário. Ao contrário do TCP, o UDP é um protocolo sem conexão. É muito parecido quando você envia uma carta pelo correio. O que quero dizer com isso é que não há garantia de que você receberá seu e-mail, enviará e esperará que chegue lá (entrega com o melhor esforço). Como não há verificação de erros como o TCP, é muito mais rápido, embora mais propenso a erros. Devido à sua velocidade, é ideal para aplicações de tempo crítico, como jogos. Alguns aplicativos de streaming de vídeo também usam o UDP para sua velocidade.
Esta é uma breve visão geral dos protocolos, eles são muito mais aprofundados do que isso. Eu sugeriria ler mais para eles se você estiver curioso sobre as especificidades e como elas operam em um modelo em camadas.