¿Dónde se utilizan generalmente los sockets UDP y TCP?
Si realmente te importa el retraso y no soportas las retransmisiones, entonces utiliza UDP, como el protocolo NTP. La retransmisión de mensajes NTP es puramente confusa.
Si realmente no te importa la confiabilidad y no necesitas retransmitir algunos paquetes, puedes usar UDP. No puedo pensar en un ejemplo. Algunas personas dicen que la transmisión de audio o video puede usar UDP, pero en mi opinión, todos los principales sitios web de videos usan el protocolo HTTP y HTTP se basa en TCP.
Se requiere penetración NAT, por lo que se utiliza UDP.
En algunos casos, una vez que el programa necesita retransmitirse, se utiliza UDP para simular un TCP deficiente. Es mejor utilizar TCP directamente.
En resumen: debe haber una razón sólida e incuestionable para UDP y, en caso de duda, utilice TCP.
Algunos protocolos, por razones históricas y limitaciones de la tecnología y las condiciones de la red del momento, optaron por implementarse en base a UDP. Las razones de su elección pueden ya no ser válidas. Por lo tanto, "usar UDP para el protocolo xxx" no es la razón por la que deba usar UDP para escribir aplicaciones de red ahora, a menos que esté implementando el protocolo xxx.
Además, para aquellos que dicen que TCP es más lento y menos eficiente que UDP, pueden usar UDP para escribir un programa para llenar el ancho de banda de la red Gigabit (el código equivalente para TCP solo tiene dos líneas: cliente mientras (verdadero) {enviar (...);} servidor mientras (verdadero) {recv(...);}.), sin mencionar lo complicado que será su programa, primero verifique si goodput es mayor que TCP y si la utilización de la CPU es inferior a TCP.