técnico · respuesta con fuentes

¿SMTP usa TCP o UDP? Análisis técnico del protocolo

SMTP es un protocolo sobre TCP. Se basa en el Transmission Control Protocol para garantizar que los mensajes de correo se entreguen de forma fiable, en el orden correcto y sin pérdida de datos, algo imprescindible en protocolos de comunicación en los que cada byte del mensaje debe llegar intacto.

Por qué SMTP necesita TCP

SMTP necesita un protocolo orientado a la conexión porque la entrega de correo no admite pérdida de paquetes. TCP ofrece un handshake de tres vías para establecer la sesión, números de secuencia para ordenar los paquetes y confirmaciones de recepción. Si un paquete se pierde durante la transmisión, TCP solicita automáticamente su retransmisión. UDP no está orientado a la conexión y no garantiza la entrega, por lo que no es adecuado para la naturaleza estructurada de comando-respuesta de las sesiones SMTP.

El proceso de handshake de SMTP

La conexión TCP permite a SMTP mantener un intercambio conversacional. Una vez abierto el socket TCP, el servidor envía un saludo 220. A continuación, el cliente envía EHLO o HELO para iniciar la sesión. Esta interacción con estado continúa con los comandos MAIL FROM y RCPT TO. Sin el flujo fiable que proporciona TCP, el servidor y el cliente no podrían sincronizar estas transiciones de estado ni gestionar los códigos de error de forma eficaz.

Puertos TCP estándar de SMTP

SMTP funciona en varios puertos TCP registrados según el caso de uso. El puerto 25 se usa para la retransmisión entre servidores. El puerto 587 es el estándar para el envío desde clientes con STARTTLS. El puerto 465 se usa para TLS implícito. IANA gestiona todas estas asignaciones, que usan específicamente la capa de transporte TCP para mantener la integridad de la sesión durante la transmisión de los encabezados y el cuerpo de los mensajes.

Seguridad y capa de transporte

Las implementaciones modernas de SMTP encapsulan el flujo TCP en TLS para proporcionar cifrado. Esto se consigue mediante el comando STARTTLS en el puerto 587 o mediante TLS implícito en el puerto 465. Como TLS necesita a su vez una capa de transporte fiable para realizar su propio handshake e intercambio de claves, la conexión TCP subyacente es obligatoria. Los desarrolladores pueden usar las herramientas gratuitas de SendHQ para verificar su configuración DNS para estas conexiones seguras.

Comparación con los protocolos UDP

Aunque SMTP usa TCP, otros servicios relacionados con el correo, como DNS, usan UDP para consultas rápidas y con poca sobrecarga. Sin embargo, una vez que la consulta DNS resuelve la IP del servidor de correo mediante UDP, la transferencia real del correo pasa a TCP. Este enfoque híbrido permite consultas rápidas y una entrega fiable. UDP se usa por velocidad y eficiencia, mientras que TCP se usa por precisión y gestión de sesiones.

Preguntas habituales de los equipos

¿Puede SMTP funcionar alguna vez sobre UDP?

No, la especificación de SMTP exige un flujo de datos fiable y ordenado, algo que solo proporciona TCP. UDP no admite la gestión de sesiones necesaria.

¿Qué puerto TCP es mejor para enviar correo?

El puerto 587 es el recomendado para el envío de correo, ya que admite STARTTLS para una transmisión segura.

¿TLS cambia el protocolo de transporte?

No, TLS es una capa criptográfica que se sitúa sobre TCP. Cifra los datos, pero sigue dependiendo de TCP para el transporte real de los paquetes.

¿Por qué DNS usa UDP si SMTP usa TCP?

DNS usa UDP para consultas pequeñas y rápidas con el fin de reducir la latencia. SMTP usa TCP porque la pérdida de un solo paquete podría corromper un mensaje de correo completo.

Fuentes primarias