Describe brevemente las similitudes y diferencias entre la programación de Socket basada en TCP y UDP

Socket tiene dos modos principales de funcionamiento: orientado a conexión y sin conexión. La operación sin conexión utiliza el protocolo de datagrama UDP. Esta operación no necesita conectarse a un socket de destino. Simplemente descarta el datagrama, que es rápido y eficiente, pero carece de seguridad de los datos. Las operaciones orientadas a la conexión utilizan el protocolo TCP. Un socket en este modo debe obtener una conexión con el socket de destino antes de enviar datos. Una vez que se establece la conexión, el socket puede usar una interfaz de flujo: abrir-leer-escribir-cerrar, todo. La información enviada se recibirá en el mismo orden en el otro extremo. Las operaciones orientadas a la conexión son menos eficientes que las operaciones sin conexión, pero la seguridad de los datos es mayor. La programación de sockets basada en TCP utiliza sockets de transmisión (SOCK_STREAM). Socket de datagrama (SOCK_DGRAM) basado en UDP.

El diseño del socket de transmisión es para aplicaciones de red orientadas a la conexión. Es necesario establecer una conexión con anticipación antes de la transmisión de datos. Durante el proceso de transmisión de datos, se debe mantener la conexión. y libere la conexión después de que se complete la transferencia de datos. Los sockets de transmisión pueden garantizar la exactitud de la transmisión de datos mediante el uso de métodos de control de errores como sumas de verificación, reconocimientos y tiempos de espera.

El socket de datagrama (SOCK_DGRAM) proporciona servicios de transmisión de datos sin conexión y poco confiables. De hecho, se implementa en base al protocolo UDP en el conjunto de protocolos TCP/IP. Los sockets de datagramas proporcionan servicios de transmisión de datos desordenados, propensos a errores y duplicados. Los sockets de datagramas están diseñados para aplicaciones de red sin conexión y no requieren una conexión preestablecida antes de la transmisión de datos. Debido a que sólo se utilizan métodos de control de errores muy limitados, los sockets de datagramas no pueden garantizar la exactitud de la transmisión de datos.