Últimos Cambios |
||
Blog personal: El hilo del laberinto |
Última Actualización:
30 de Junio de 1.996 - Domingo
El módulo principal es el encargado de inicializar todo el sistema
y lanzar los procesos de aplicación. Se hace cargo también de la
gestión inicial del MODEM (secuencia de marcación y navegación
automática a través de los menús) y de la configuración de todos
los procesos. Finalmente hace de puerta de entrada a las
aplicaciones DNS, TELNET, FTP, SMTP y POP3.
Interfaz
La interfaz de programación de este módulo consta de una única rutina:
int main(int argc,char *argv[]);
Esta rutina ejecuta todo el resto del programa. Retorna cuando el software termina su ejecución, devolviendo siempre el valor cero. Acepta un único argumento a través de la línea de comandos, que será el "path" de acceso al fichero de configuración que queremos utilizar.
Dicho fichero contiene órdenes para la gestión del MODEM y la configuración del sistema. La sintaxis del fichero es como sigue:
fichero = dial login init EOF dial = [(comentario | asignación | línea_dial)...] "end_dial\n" login = [(comentario | asignación | línea_login)...] "end_login\n" init = [(comentario | asignación | línea_init)...] "end_init" comentario = "#" [carácter_imprimible...] "\n" carácter_imprimible = ("\32".."\126") | ("\128".."\255") asignación = variable "=" valor valor = variable | cadena | palabra | número variable = "$" palabra palabra = alfa [alfanum...] alfa = ("a".."z") | ("A".."Z") | "_" alfanum = alfa | ("0".."9") cadena = "\"" [carácter_imprimible] "\"" número = ("0".."9")... línea_dial = (("serial_port" palabra) | ("wait" número) | ("hangup" cadena) | ("prefix" palabra) | ("init" palabra) | ("connect_wait" número) | ("redial_wait" número) | ("phone_number" número) | ("success" palabra | cadena) | ("failure" (palabra | cadena)...) ) "\n" línea_login = (("cwait" número cadena...) | ("send" cadena) | ("wait" número) | ("get" variable) ) "\n" línea_init = (("aloc_mem" nvalor) | ("set_ip" nvalor) | ("mss" nvalor) | ("mtu" nvalor) | ("mru" nvalor) | ("dns_server" cvalor) | ("gateway" cvalor) | ("user" cvalor) | ("password" cvalor) | ("protocol" cvalor) ) "\n" nvalor = variable | número cvalor = variable | cadena | palabra
Mediante su parámetro indica qué puerto se va a utilizar: "COM1", "MIDI" o "LAN".
Espera el tiempo especificado en milisegundos.
Este comando indica qué texto envía el MODEM cuando cierra la conexión. Normalmente "NO CARRIER".
Indica el texto que debe enviarse al MODEM cuando se quiere marcar un número de teléfono.
Cadena de inicialización enviada al MODEM. Habitualmente este comando debe ser seguido de un "WAIT" para esperar a que el MODEM esté listo.
Si no se establece la conexión tras ese tiempo (sin ninguna clase de fallo), pediremos al MODEM que cuelgue. La duración viene dada en milisegundos.
Tiempo entre reintentos, en milisegundos
Número de teléfono del proveedor.
Si el MODEM nos envía alguna de las palabras especificadas, pasamos a la fase de entrada en el sistema (típicamente "CONNECT").
Si el MODEM nos envía el texto especificado, colgamos y volvemos a intentarlo tras el tiempo especificado con "REDIAL_WAIT". Normalmente "NO CARRIER", "NO DIALTONE" o "BUSY".
El primer parámetro indica cuánto tiempo dejamos transcurrir, como máximo (milisegundos), hasta que aparezca en los datos recibidos alguna de las palabras especificadas. La primera de ellas indica éxito y el programa proseguirá hasta el siguiente paso. El resto de las palabras indicará fracaso y abortarán la conexión.
Envía los datos especificados. Se transmiten tal cual. Si queremos incluir también retornos de carro y/o saltos de línea tendremos que utilizar las secuencias "\r" y "\n", respectivamente.
Lee la entrada desde el primer carácter no espacio o salto de línea hasta el primer carácter espacio o salto de línea. La palabra resultante se asignará a una variable.
Especifica el número de bytes con el que debemos inicializar el módulo de memoria.
Fija nuestra dirección IP al valor dado.
Fija el tamaño máximo de los segmentos TCP. Si el valor indicado no es coherente con las limitaciones internas, se asigna un valor por defecto.
Fija el tamaño de la unidad máxima de transferencia IP. Si el valor indicado no es coherente con las limitaciones internas, se asigna un valor por defecto.
El parámetro contendrá la dirección IP del servidor de nombres a utilizar.
El parámetro indica la dirección IP de la pasarela a utilizar para acceder a las máquinas fuera de nuestra red.
Nombre de usuario utilizado para la autentificación PPP.
Clave asociada, utilizada para la autentificación PPP.
Selecciona el protocolo de línea. Debe ser "SLIP" o "PPP".
Una vez que la herramienta software ha accedido al sistema se
dispondrá de nueve canales independientes, accesibles a través de
las teclas de función. Cada uno de los canales puede gestionar una
conexión TELNET, FTP, SMTP o POP3, según lo que seleccione el
usuario.
Implementación
La implementación actual del módulo principal consiste, básicamente, en dos partes: un marcador ("dialer") y el sistema de gestión de protocolos de aplicación.
El marcador es el responsable de acceder al sistema remoto, de autentificarnos ante él y de configurar todo el sistema. El sistema de gestión de protocolos de aplicación, como su nombre indica, permite al usuario la interación con las diferentes aplicaciones. Escribiendo "pop3 jucar.ait.uvigo.es", por ejemplo, la herramienta intenta la conexión al subsistema POP3 del Area de Ingeniería Telemática de la Universidad de Vigo. Los comandos existentes en la actualidad son: "telnet", "ftp", "smtp", "pop3", "close" y "exit". Si no se indica ningún puerto, cada protocolo se conectará a su puerto por defecto.
Para cambiar entre canales el usuario pulsa las teclas de función asociadas. Si desea cerrar una conexión de forma imperativa debe pulsar "F10" y escribir "close <canal>", donde "<canal>" se corresponde al canal asociado a la conexión que deseamos clausurar.
Todas las interacciones y errores consideradas de interés son almacenadas en un fichero "LOG".
Este módulo es, con diferencia, el más independiente de la herramienta en sí y, al mismo tiempo, constituye la interfaz que ve el usuario. Por ello se recomienda que los usuarios con unos conocimientos de programación mínimos se decidan a realizar sus propios módulos principales.
El objetivo de este Proyecto Fin de Carrera consiste en el
desarrollo de una librería TCP/IP para su utilización por terceras
partes. En ese sentido este módulo resulta completamente
prescindible. Su utilidad se pone de manifiesto si se considera
que no existen aún aplicaciones externas que utilicen las
facilidades de la herramienta, pero es previsible que pronto se
dispongan de aplicaciones diversas que hagan innecesario este
módulo.
Bibliografía
[KA9Q-CFG] Formato de los ficheros de configuración del paquete de software KA9Q-NOS Phil Karn, KA9Q [LABCD] Laboratorio de Comunicación de Datos Curso 94-95. Vigo, 16 de Marzo de 1.995 Alvaro Manuel Gómez Vieites Carlos Gabieiro Martínez Jose Cadavid Jáuregui Jesús Cea Avión [POWERNET] Proyecto PowerNet Jesús Cea Avión Implementación de multitarea cooperativa en lenguaje C 11 de Abril de 1.990 [STIK-CFG] Formato de los ficheros de configuración del software STiK Steve Adam. 27 de Septiembre de 1.995
Más información sobre los OpenBadges
Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS