martes, 10 de diciembre de 2013



El protocolo Telnet se desarrolló pensando en un funcionamiento similar al de los protocolos cliente-servidor, pero siguiendo una arquitectura diferente a
Este tipo de protocolos (ya que en parte lo que se busca es la simetría en el protocolo, lo cual impide que internamente la arquitectura sea cliente-servidor).
De hecho, se diseñó de forma que se pudiera establecer una sesión en
Cualquier tipo de servidor, entrando a través de la conexión establecida a partir
De un terminal cualquiera (que no actúa como cliente). Este protocolo nos
Permite, por ejemplo, ejecutar programas en el servidor.
El protocolo trabaja sobre una conexión TCP/IP, estableciendo un canal bidireccional de octetos (semi-duplex a pesar de ser TCP full duplex, por
Motivos que se verán a continuación) y estableciendo la comunicación de
Terminal a terminal y de proceso a proceso. El conjunto de caracteres definido es ASCII de 7 bits. Para poder soportar cualquier tipo de terminal, se
Introdujo el concepto de Terminal Virtual de Redo Network Virtual Terminal
(NVT), dispositivo
Intermedio con el que deben trabajar tanto la aplicación servidor como la
Aplicación cliente. En realidad el NVT es un dispositivo irreal, imaginario (de ahí
Que se le denominevirtual
) Que ambos extremos de la conexión utilizan para
Registrar (mapearen memoria) su terminal físico y real. Es decir, l
a aplicación cliente debe registrar en el NVT el tipo de termina
l físico que el usuario cliente está empleando en la máquina que inicia la conexión contra el servidor; y una vez registrado, el servidor debe
Mapear se NVT en un terminal que soporte.
Es importante destacar que, si bien el protocolo Telnet en sí no está
Construido como una arquitectura cliente-servidor, en la práctica se trabaja con Aplicaciones que funcionan como clientes Telnet en la máquina que inicia la Conexión contra el cliente. De hecho, aunque inicialmente el método de trabajera emplear un terminal en el cliente compuesto sol
Amente por una impresora y un teclado, y en épocas posteriores sustituyendo la impresora por una pantalla de ordenador y un método de trabajo en modo consola, a día de hoy existen numerosos clientes Telnet que presentan una interfaz gráfica que facilita enormemente el manejo de las aplicaciones. Algunos de esos clientes son
PuttY, NetRunner, Zoc, y algunos otros. También hay sistemas operativos que
Traen sus propios clientes Telnet instalados por defecto.
El objetivo básico de este trabajo es generar el diseño de una aplicación que permita la implementación del protocolo Telnet y su correcto Funcionamiento. Para ello, será necesario realizar Un diseño de la aplicación que habrá que instalar en la máquina que trabaje como servidor, así como una aplicación que hará las veces de cliente en la máquina que inicie la conexión contra el cliente. Dada la extensión de las diferentes opciones que puede manejar este protocolo, así como los comandos y los modos de operación posibles, en primer lugar se hará un estudio .

A la hora de realizar el diseño de una aplicación que soporte el protocolo
Telnet, primero debemos analizar qué opciones, de entre todas las posibles a
Implementar en el protocolo, consideramos deseables para la aplicación.
En primer lugar, analizaremos el establecimiento de la conexión. Ésta,
Según el protocolo, es una conexión TCP/IP normal, Por lo que el establecimiento puede realizarse de la manera que c
Consideremos más conveniente (por ejemplo, mediante sockets). En todo caso asumiremos que el cliente será siempre el encargado de iniciar la
Conexión contra el servidor, nunca al contrario.
En segundo lugar analizaremos la negociación de opciones al iniciar la
Conexión Telnet. En principio el protocolo está pensado para que dicha negociación sea simétrica (es decir, cualquiera de los extremos de la
Conexión podría iniciar la negociación de cualquier
Opción), pero desde el punto de vista de la seguridad puede suponer un
Problema importante; por lo tanto, limitaremos algunas opciones de forma que
Únicamente puedan ser iniciadas por sólo uno de los extremos de la comunicación las cuatro posibles peticiones para cada opción son las
Siguientes:
WILL
(El que envía la petición quiere habilitar la opción él mismo),
DO
(El que envía la petición quiere que sea el otro extremo el
Que se encargue de habilitar la opción),
WONT
(El que envía la petición Quiere encargarse de deshabilitar la opción él mismo
o) y DONT (el que envía la petición quiere que el otro extremo deshabilite la opción).
En tercer lugar analizaremos el modo de operación deseado para el cliente y servidor Telnet que queremos diseñar. En principio, existen cuatro modos de funcionamiento: semi-duplex (modo por defecto que
Se usa muy infrecuentemente, si bien fue el primer modo de funcionamiento que se diseñó), modo carácter(típico de Rlogin, que consiste en enviar cada carácter que se escribe en el terminal de forma independiente al servidor),
Modo líneakludge(consiste en enviar los comandos en líneas completas y ciertas órdenes en modo carácter) y modo línea puro (que es una mejora del modokludgeque corrige los fallos que éste presentaba). En nuestro caso implementaremos unas aplicaciones que trabajarán por defecto en modo carácter, ya que, si bien este modo presenta ciertos problemas por el volumen de tráfico que genera y por los altos retardos que presenta en líneas lentas, es también el modo que se está imponiendo a día de hoy en la mayoría de aplicaciones e implementaciones del protocolo actúales.

¿Qué es Telnet?

Telnet es un protocolo TCP/IP, accionado por comandos del usuario, que le permite acceder a un equipo remoto. Si bien la obtención de archivos desde una computadora remota a través de FTP es común, Telnet en realidad va un paso más allá y te permite iniciar la sesión como un usuario regular de la computadora, con acceso a todos los datos y programas que pueden ser instalados en en ella. Se utiliza generalmente para fines de apoyo técnico.

Cómo funciona Telnet

Telnet utiliza el software instalado en tu computadora para crear una conexión con el anfitrión remoto. El cliente de Telnet (software), en tu servicio, enviará una solicitud al servidor Telnet (anfitrión remoto). El servidor responderá preguntando por un nombre de usuario y contraseña. Si es aceptada, el cliente Telnet establecerá una conexión con el servidor, haciendo de tu computadora una terminal virtual y lo que te permite completar el acceso a la computadora anfitrión. Telnet requiere el uso de un nombre de usuario y contraseña, lo que significa que es necesario haber configurado previamente una cuenta en el equipo remoto. En algunos casos, sin embargo, los equipos con Telnet permiten a los clientes conectarse con acceso restringido.

¿Mi computadora tiene Telnet?

Cada sistema operativo de la computadora principal, incluyendo Unix, Linux, Mac OS y Windows, tiene la capacidad de Telnet e incluso lo tienen incorporado. Para averiguarlo, abre el cuadro de comando en tu sistema (para Windows sería la función "comando” en el menú de inicio que abre la ventana de DOS) e introduce el comando: host Telnet, con HOST siendo el nombre del anfitrión remoto con el que deseas conectarte. Curiosamente, en Windows Vista no se ejecuta automáticamente Telnet. Para ejecutarlo en este sistema operativo, debes activar la aplicación. Dirígete al menú Inicio, haz clic en el Panel de control, luego en Programas y selecciona "Activar o desactivar las características de Windows". Un cuadro de diálogo aparecerá y debes ver el cliente Telnet en la lista, con una casilla al lado. Haz clic en la casilla para seleccionarlo, luego en Aceptar y espera hasta que la instalación se haya completado. Cuando desees salir de la aplicación Telnet, será necesario ejecutar el símbolo del sistema de nuevo en tu propia computadora. Los diferentes sistemas operativos utilizan diferentes comandos para salir, tal como SALIR (QUIT), CERRAR (CLOSE) o CERRAR SESIÓN (LOGOFF). Windows utiliza cierra sesión. Si ninguno de los comandos funcionan, puedes intentar abortar; sin embargo, este comando sirve sólo para terminar Telnet en el extremo, a veces dejando que se ejecute en el computadora anfitrión remoto, así que utiliza ABORTAR (ABORT) sólo como última opción. En los primeros tiempos de Internet, Telnet también se utilizó para conectar con algo que se llama un red libre, que es justo lo que parece: un sistema informático de libre acceso. Esto fue en parte debido a que los módems de marcación eran tan lentos, mientras que Telnet trabajaba mucho más rápido. Sin embargo, con la llegada de los proveedores de Internet de la alta velocidad, la mayoría de las redes libres han cerrado.
Diseño de la aplicación Telnet: cliente.-
Queremos implementar una aplicación que funcione como un cliente Telnet en una consola de comandos de un sistema operativo (UNIX, por ejemplo), cumpliendo con las consideraciones realizadas en el apartado anterior, a saber:

  1. El cliente será siempre el encargado de iniciar la conexión hacia el servidor, y nunca a la inversa.

2. Se limitarán las opciones que pueda intentar negociar el cliente, ya que
Algunas estarán restringidas de manera que sólo el servidor podrá iniciar
La negociación de las mismas.

3. Por defecto el conjunto de aplicación trabajará en modo carácter, pero
Se permitirá al cliente iniciar la negociación de otros modos de trabajo
(Por ejemplo, modo línea). Sólo el cliente iniciará la negociación de este
Tipo de opciones; el servidor no cambiará nunca el modo de trabajo a
Menos que acceda a la petición del cliente.


4. La contraseña de sesión deberá enviarse cifrada por motivos de
Seguridad, mediante DES. Por tanto, la aplicación cliente deberá
Encargarse del cifrado de la misma antes de enviarla hacia el servidor.

Una vez establecidos los parámetros y las restricciones de nuestra
Aplicación cliente, procedemos al diseño de la misma, mediante un flujograma
Sencillo que nos permita entender el funcionamiento de esta aplicación.
También se adjuntará, si procede, pseudocódigo para
Aclarar cómo podría ser la implementación de la aplicación a partir de un lenguaje de programación de alto nivel, como por ejemplo C. El mencionado pseudocódigo se referirá en todo caso a la implementación de algunas de las particularidades del protocolo Telnet, ya que no tiene sentido tratar aquí la implementación práctica de, por ejemplo, el mecanismo de implementación de una conexión TCP/IP mediante sockets de una aplicación cliente-servidor iterativa y conectiva. En primer lugar se procederá a dar una visión funcional del diseño de la aplicación cliente a implementar. Para ello nos ser
Viremos de un flujograma explicativo que se muestra a continuación