TCP и UDP — транспортные протоколы. TCP — надёжный: гарантирует доставку, порядок пакетов и целостность. Устанавливает соединение (3-way handshake), контролирует перегрузку. Используется для HTTP, gRPC, БД — везде, где важна надёжность.
UDP — быстрый, но ненадёжный: пакеты могут потеряться, прийти не в том порядке или продублироваться. Зато нет overhead на установку соединения и подтверждения. Используется для DNS, видеостриминга, онлайн-игр, VoIP — где скорость важнее надёжности.
В Go оба протокола доступны через net:
// TCP
ln, _ := net.Listen("tcp", ":8080")
// UDP
conn, _ := net.ListenPacket("udp", ":8080")