Conceptos Clave en Protocolos de Comunicación: SMTP, HTTP y Proxy Splitter
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 3,55 KB
Cola de Mensajes en el Protocolo SMTP
Cuando un servidor de correo (MTA) recibe un mensaje de otra pieza de software, se responsabiliza de su gestión. El servicio de correo no obliga a una conexión permanente; los mensajes se almacenan en memoria. La infraestructura se encarga de la recepción correcta. Si hay un error, se notifica al emisor. Todos los MTA tienen una cola interna para almacenar mensajes, proporcionando persistencia y garantizando que el mensaje esté seguro en el disco.
Una vez guardado, el MTA pasa el mensaje al siguiente en la cadena o lo guarda en el buzón del usuario. Si no puede procesarlo (por ejemplo, si el MTA destinatario está caído), se activa un servicio de reintento, según la configuración del MTA. El proceso es:
- Conexión entrante: Se inicia un proceso 'esclavo' que se comunica con el remitente (otro MTA o un agente de usuario) usando un protocolo de transferencia de mensajes.
- El esclavo guarda el mensaje en la cola y confirma la recepción.
- El remitente confirma, borra el mensaje de su cola y se desconecta.
- Si hay un error, el mensaje permanece en la cola, pero el esclavo finaliza.
- El MTA crea periódicamente procesos de esclavos. Si un mensaje se pierde, se envía un error al remitente.
Mejoras en HTTP 1.1
Conexiones Persistentes
Permiten realizar múltiples peticiones sobre una misma conexión TCP establecida. El servidor es responsable de cerrar las conexiones, ya sea de forma explícita o implícita:
- Explícita (EXP): Mediante la cabecera
Connection: keep-alive
(para mantener la conexión) oConnection: close
(para cerrarla después de la ráfaga de peticiones). - Implícita (IMP): Usando temporizadores TCP. La conexión se cierra tras un período de inactividad.
Pipelining
Permite enviar múltiples peticiones sin esperar la respuesta de cada una. TCP garantiza la entrega ordenada de peticiones y respuestas.
Codificación en Trozos (Chunked Encoding)
Útil cuando el tamaño del fichero a enviar supera la memoria del servidor. El fichero se envía en trozos de tamaño arbitrario, pero conocido. Se utiliza la cabecera Transfer-Encoding: chunked
. Un trozo de tamaño cero indica el final de la transmisión.
Segmentación de Datos
Permite a los clientes solicitar solo una parte de un recurso, evitando la sobrecarga innecesaria. Es útil para reanudar descargas interrumpidas. Cabeceras relevantes:
Accept-Ranges
: Indica si el servidor acepta peticiones por rangos.Range
: Especifica el rango solicitado.Content-Range
: Indica el rango enviado en la respuesta.
Proxy Splitter
Un proxy que divide las peticiones HTTP entrantes en dos: una al servidor principal (maestro) y otra a un servidor en la sombra (esclavo). La respuesta del maestro se utiliza como respuesta principal, mientras que la del esclavo se descarta. Opcionalmente, la petición y las respuestas pueden guardarse en un servidor MongoDB. Es útil para solicitudes de registro (login) y pruebas de carga.
ESMTP (Extended SMTP)
Es una extensión de SMTP que añade nuevas funcionalidades al protocolo base, como autenticación y cifrado. La evolución del protocolo se basa en extensiones opcionales. Si un MTA no soporta una extensión, responderá con una lista de las extensiones que sí soporta.