Implementación del Protocolo rdt3.0
Simulación de transmisión confiable sobre un canal no fiable utilizando Java y UDP
Descripción:
Este proyecto consistió en la implementación del protocolo rdt3.0 (Reliable Data Transfer 3.0), diseñado para garantizar una transferencia fiable de datos en un medio de comunicación no fiable. A través de dos etapas principales, creé un simulador de red que replicaba condiciones adversas como la pérdida y corrupción de paquetes, y luego adapté el protocolo para funcionar sobre UDP, un protocolo sin conexión que no asegura la entrega ni el orden de los paquetes.
Tecnologías utilizadas:
- Java (Sockets, I/O, Multithreading)
- Protocolos y Comunicación de Red: Sockets UDP
- JSON (Para estructurar los mensajes de comunicación)
- Gson (Librería para manejo de JSON en Java)
Destacados técnicos
- Simulación de medio no fiable:
Creación de un entorno configurable con probabilidades de pérdida y corrupción de paquetes.
- Implementación del protocolo rdt3.0:
Uso de números de secuencia, retransmisiones controladas por temporizadores y detección de errores con checksum.
- Integración con UDP:
Adaptación del protocolo para manejar la naturaleza no fiable de UDP, garantizando la entrega y el orden de los datos.
Desafíos enfrentados:
- Implementar una gestión eficiente de retransmisiones usando temporizadores para manejar la posible pérdida de paquetes en un medio no fiable.
- Asegurar la integridad de los datos utilizando un mecanismo de checksum, lo que requería crear un sistema para detectar y manejar la corrupción de paquetes.
- Desarrollar una solución de secuenciación de paquetes para garantizar el orden adecuado de los mismos en un protocolo sin conexión como UDP.
Fases del proyecto
- Simulador de Entorno No Fiable:
Desarrollé un simulador que replicaba condiciones de red no fiables, con probabilidades configurables de pérdida y corrupción de paquetes. Implementé funciones clave como el control de temporizadores y verificación de integridad mediante checksum.
- Adaptación a UDP:
Adapté el protocolo rdt3.0 para que funcionara sobre UDP, utilizando sockets para la transmisión de datos. Esto involucró la gestión de retransmisiones, control de errores y secuenciación de paquetes, dado que UDP no garantiza la entrega ni el orden de los paquetes.
Resultados y aprendizajes clave
- Validación exitosa del comportamiento del protocolo bajo condiciones simuladas de error.
- Profundización en el diseño e implementación de protocolos de transferencia de datos fiables.
- Experiencia en resolución de problemas y diseño de sistemas resilientes en entornos reales.
Diagrama de Flujo del Protocolo rdt3.0
