ELO-330: Programación de Sistemas
Tarea 3: Túnel UDP sobre TCP
Objetivos:
En esta tarea usted aplicará: creación de hebras, arquitectura cliente-servidor UDP y TCP, creación de servidor concurrente.
Nombres: UDPoverTCPtunelClient y
UDPoverTCPtunelServer: Cliente y servidor para crear un túnel UDP entre
puntos donde sólo se pueden establecer comunicaciones TCP.
Sintaxis: UDPoverTCPtunelClient
UDP_Local_Port TCP_Remote_Server_Host
TCP_Remote_Server_Port UDP_Remote_Server_Host
UDP_Remote_Port
UDPoverTCPtunelServer TCP_Local_Port
Descripción
En ocasiones es necesario llegar con tráfico UDP
a redes cuyos cortafuegos rechazan ese tráfico. El cliente que usted
creará refleja en su máquina el servidor UDP que en realidad está
ubicado remotamente en una red no acesible directamente vía UDP. El
comando supone que usted sí puede establecer conexiones TCP entre su
máquina y alguna máquina servidora en al red donde se encuentra el
servidor UDP real.
El servidor estaŕa corriendo permanentemente, por ejemplo
en aragorn. El único parámetro del servidor del túnel es el puerto en
el cual escuchará por conexiones.
El cliente establece una conexion con el servidor tan
pronto es ejecutado. Luego a través de un protocolo de capa
aplicación que usted creará, el cliente transfiere al servidor del
túnel la máquina y el puerto donde se encuantra el servidor UDP real a
ser contactado. Luego de esta comunicación, todo paquete que reciba su
cliente del túnel en su puerto UDP es transferido al servidor del túnel
quien lo reenvía al servidor UDP real.
Los nombres de máquinas en el parámetro del cliente del tunel
pueden ser entregados como IP en notación "punto" o entregando el
nombre lógico de la máquina. Su solución debe incluir hebras en el
servidor o cliente. La creación de procesos para la gestión de alguna
conexión en el servidor o cliente es opcional. Se recomienda usar
"select" o "poll" en alguna parte, pero si prefiere puede hacer
toda la implementación con hebras.
Evaluación de la Tarea y
qué entregar: revisar procedimiento de entrega y criterios usados para evaluar su trabajo.
Ayuda:
- Puede dar una mirada a una solución hecha en C# de una versión cliente similar al pedido aquí. Clase principal, clase de apoyo.
- Para probar su túnel use el servidor UDP de eco visto en clases.
- Haga su tarea de a poco y con tiempo. Con gusto
atenderé todas sus preguntas en especial en clases y horas de atención!
- Si tras una dificultad no logra avances por más
de 30 minutos, espere la próxima clase, visíteme o
escríbame. Con gusto procuraré ayudarlo.
- Si tiene dudas del enunciado, lo aclararé con gusto y
documentaré aquí.