Universidad de Colima Maestría en Ciencias área Computación EXÁMENES POR INTERNET Tesis Que para obtener el grado de Maestro en Ciencias área Computación Presenta L.I. J. Reyes Benavides Delgado Asesor M.C. Rodolfo Gallardo Rosales Coquimatlán, Colima. Noviembre del 2001 UNIVERSIDAD DE COLIMA FACULTAD DE I NGENIERÍA M ECÁNICA Y ELÉCTRICA EXPEDIENTE 359 NUM. 97-0323 C. BENAVIDES DELGADO J. REYES XALLAN No. 281 VILLA IZCALLI CAXITLAN VILLA DE ÁLVAREZ, COLIMA Informo a usted que ha sido aprobado como tema de titulación para obtener el grado de MAESTRO EN CIENCIAS ÁREA: COMPUTACIÓN. El solicitado por usted bajo el título: "EXÁMENES POR INTERNET" Desarrollado bajo los siguientes puntos: I II III IV V VI VII VIII .- INTRODUCCIÓN .- INTERNET .- PROTOCOLO TCP/IP: PROTOCOLOS Y SERVICIOS .- WINDOWS NT: INTERNET INFORMACIÓN SERVER .- CGI, WIN-CGI, SERVLETS .- JAVA: PUENTE ENTRE MÚLTIPLES PLATAFORMAS .- DESARROLLO DEL PROCESO CLIENTE/SERVIDOR PARA LA PRESENTACIÓN DE EXÁMENES VÍA INTERNET .- CONCLUSIONES BIBLIOGRAFÍA Al mismo tiempo informo a usted que ha sido designado como asesor de titulación al suscrito C. M.C. RODOLFO GALLARDO ROSALES. En cada uno de los ejemplares de titulación que presente para examen, deberá aparecer en primer término copia del presente oficio. c.c.p. EXPEDIENTE ALUMNO AGFC/merv* Km 9 Carretera Colima-Coquimatlán, Colima, Colima, México, Cp 28400 Tel. 01 (3) 316 1165, Ext. 51451, Ext. Fax 51454 H. CONSEJO TÉCNICO DEL POSGRADO DE LA FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA PRESENTE. Por medio de este conducto informo que el C. BENAVIDES DELGADO J. REYES_____________________________________ terminó su período de revisión de tesis: "EXÁMENES POR INTERNET" Cuyo contenido es el siguiente: I II III IV V VI VII VIII .- INTRODUCCIÓN .- INTERNET .- PROTOCOLO TCP/IP: PROTOCOLOS Y SERVICIOS .- WINDOWS NT: INTERNET INFORMATION SERVER .- CGI, WIN-CG1, SERVLETS . - JAVA: PUENTE ENTRE MÚLTIPLES PLATAFORMAS .- DESARROLLO DEL PROCESO CLIENTE/SERVIDOR PARA LA PRESENTACIÓN DE EXÁMENES VÍA INTERNET CONCLUSIONES BIBLIOGRAFÍA El cual cumple con los requisitos necesarios para su aprobación, por lo cual lo autorizo para su impresión. c.c.p. EXPEDIENTE RGR/merv* Exp.No.: _0046______ Fecha: __19-02-2000 Acta No.:__12_______ C. _BENAVIDES DELGADO J. REYES_____ Domicilio: ___LOS REGALADO No. 469____ ____COLIMA, COL._____________ Teléfono: ____2-85-16____________________ En cumplimiento al artículo: 13 y 14 del reglamento de titulación, al artículo 40 INCISO A del reglamento de estudios de Posgrado vigente y al artículo: 46 de las normas complementarias al reglamento de Posgrado, correspondientes al Posgrado de la Facultad de Ingeniería Mecánica y Eléctrica. Informamos a usted que ha sido autorizado por este Consejo Técnico del Posgrado su tema de Tesis para obtener el grado de Maestro en Ciencias Area: Computación titulado: " EXÁMENES POR INTERNET" ______ para ser desarrollado bajo los siguientes puntos: I II III IV V VI VII .- INTRODUCCIÓN .- INTERNET .- PROTOCOLO TCP/IP: PROTOCOLOS Y SERVICIOS .- WINDOWS NT: INTERNET INFORMATION SERVER .- CGI, WIN-CGI, SERVLETS .- JAVA: PUENTE ENTRE MÚLTIPLES PLATAFORMAS .- DESARROLLO DEL PROCESO CLIENTE/SERVIDOR PARA LA PRESENTACIÓN DF. EXÁMENES VÍA INTERNET VIII .- CONCLUSIONES BIBLIOGRAFÍA Así mismo hacemos de su conocimiento que de acuerdo con la línea de investigación en la cual se enmarca su proyecto ha sido autorizado como asesor de tesis el C.__________M.C. RODOLFO GALLARDO ROSALES_________________________________________ A partir de la fecha de aprobación tendrá como plazo un año para presentar su examen tic grado, en caso contrario tendrá usted derecho a una prórroga única de seis meses so pena de perder el registro de su proyecto. Una vez concluidos los trámites de revisión de su documento de tesis e integrado su expediente de titulación deberá recoger el oficio que acompañará a el visto bueno de su asesor de tesis, los cuales encabezarán cada uno de los ejemplares de su tesis. A t e n t a me n t e ÍNDICE I Introducción II Internet 2.1 Historia del desarrollo de Internet en el mundo 2.2 Desarrollo de Internet en México III Protocolo TCP/IP: protocolos y servicios 3.1 Conceptos Básicos 3.2 La familia de protocolos TCP/IP 3.3 Las direcciones TCP/IP 3.4 Estratificación de protocolos 3.5 Servicios de la capa de aplicación IV Windows NT: Internet Information Server 4.1 Características del IIS (Internet Information Server) V Cgi, win-cgi, Servlets VI Java: puente entre múltiples plataformas VII Desarrollo del proceso cliente /servidor para la presentación de exámenes vía Internet VIII Conclusiones Bibliografía ABSTRACT Internet has become a medium of transmitting all kind of information. At present a number of higher education schools have a direct connection allowing them to have a web site to post information about their activities. This essay presents the idea of the utilization of a internet connection in schools in order to apply the admission test. This will result in the benefit of potential students living in remote areas by saving them the transportation from their communities to the campus of the school they intend to apply for. I am proposing the use of a data base of questions which randomly would be selected from each of the different areas in order to create an admission test. This will be accomplished using a software developed in Java that along with the data base will be running under Windows NT. RESUMEN Internet es un medio de transmisión de todo tipo de información, una gran cantidad de escuelas de educación superior cuentan con conexión directa a la Internet que les permite mantener un sitio web para publicar información sobre sus actividades. Este trabajo presenta la idea de utilizar la conexión a Internet de las escuelas para la aplicación del examen de admisión, lo que a aspirantes de nuevo ingreso de localidades alejadas sería de gran ayuda, ya que eliminaría la necesidad de trasladarse hasta las instalaciones de la escuela para presentar dicho examen. Se plantea la idea de utilizar una base de datos para almacenar un banco de reactivos, del cual en forma aleatoria se tomen de cada área del conocimiento a evaluar, los reactivos para forma r el examen de admisión, usando para esto un programa elaborado en lenguaje JAVA, y que junto con la base de datos deberán residir en un servidor de red Windows NT. CAPÍTULO I INTRODUCCIÓN 1 INTRODUCCIÓN Aunque las oportunidades y opciones de estudio en la actualidad se han incrementado en un buen número para los residentes de una ciudad, aún se genera el desplazamiento de estud iantes de una cuidad a otra en búsqueda de la institución que ofrezca la carrera o especialidad deseada, o bien el buen prestigio ganado por la calidad de estudiantes que egresan de una institución es suficiente para generar la migración de estudiantes. El principal problema al que se enfrentan los aspirantes a ingresar es el desplazamiento que tienen que realizar para los trámites de ingreso, particularmente el examen de admisión. Una solución a este problema es la Internet (red de redes), ya que actualmente está al alcance de los alumnos en cualquier escuela. La solución propuesta es la generación de un examen de admisión que se aplique a través de la Internet, usando un lenguaje altamente transportable (ej. Lenguaje Java) para codificar una página HTML dinámica que utilice CGI, Servlets o alguna otra interfaz que permita el intercambio de datos en HTTP, siendo posible que el mismo programa evalúe el resultado y genere automáticamente la lista de aspirantes aceptados. El proyecto estará formado por una aplicación escrita en lenguaje visual para crear y mantener la base de datos de reactivos para formular los exámenes, de un módulo servidor que se ejecutará en un Servidor Windows NT y un módulo cliente que se ejecutará en la computadora cliente. La aplicación para generar y mantener la base de reactivos para exámenes, manipulará a través de órdenes SQL, el contenido de una base de datos. El módulo servidor se ejecutará en el servidor Windows NT, se encargará de responder las peticiones del módulo cliente. Entre otras cosas se encargará de enviar un 2 número determinado de reactivos seleccionados aleatoriamente de la base de datos, y recibir y evaluar las respuestas del módulo cliente, estará escrito en JAVA. El módulo cliente será una página HTML dinámica que visualizará la información que envíe el módulo servidor, la parte dinámica aquí se realizará por medio de funciones escritas en lenguaje JavaScript. El presente trabajo está dividido en los siguientes 9 capítulos: El capítulo I hace una introducción al presente trabajo. El capítulo II describe el proceso de desarrollo mundial de la Internet a través del tiempo, así como su desarrollo en México. El capítulo III presenta un panorama general del protocolo TCP/IP, explicando su importancia en el trabajo de las redes de computadoras, la forma en que trabaja, así como los servicios de red que proporciona a nivel de capa de aplicación. El capítulo IV nos describe la capacidad del sistema operativo Windows NT para prestar servicios orientados a Internet a través del producto llamado Internet Information Server (IIS), como son: la publicación de documentos HTML (HTTP), servicios de transferencia de archivos (FTP), y la búsqueda en directorios a través de Gopher. El capítulo V nos explica las opciones para lograr la interacción entre los visualizadores y los servidores de páginas Web, ésto a través de tecnologías como CGI o creando procesos servidores codificados en Java (llamados Servlets). El capítulo VI nos habla de la importancia de Java como puente entre distintas plataformas de software, y de almacenamiento de base de datos. El capítulo VII presenta el proyecto de elaboración de las partes cliente y servidor para lograr la presentación de exámenes a través de la Internet usando los servicios de publicación en el WWW (World Wide Web), usando procesos servidores codificados en Java encargados de generar como respuestas páginas HTML dinámicas, lográndose la interactividad por medio de funciones escritas en el lenguaje JavaScript. 3 CAPÍTULO II INTERNET 4 2. INTERNET 2.1 Historia del desarrollo de Internet en el mundo Muchos de los avances tecnológicos han sido resultado de investigaciones de índole militar, Internet no es la excepción. Transcurrían los años sesenta, Estados Unidos y Rusia protagonizaban lo que conocemos hoy como la Guerra Fría, para el gobierno de Estados Unidos era una preocupación contar con una red de comando y control qué pudiese sobrevivir a una guerra nuclear, ya que las redes telefónicas tradicionales se consideraban muy vulnerables, ya que la pérdida de una línea o conmutador terminaría toda conversación que los estuviera usando. Buscando una solución a esto, el DoD (Departamento de Defensa) acudió a la ARPA o Advanced Research Projects Agenc y (Agencia de Proyectos de Investigación Avanzados). La función de ARPA fue ofrecer financiamientos y contratos a universidades y compañías con ideas prometedoras. RAND Corporation, una de las empresas encargadas de la estrategia militar estadounidense propuso una solución: la creación de una red de comunicaciones que no dependiera de un organismo central, integrado por nodos ó puntos de enlace de igual rango y con la misma capacidad de originar, transmitir y recibir mensajes, y que, en caso de que alguno de estos nodos recibiera un ataque o dejara de funcionar, el resto de la red seguiría en operación: Los mensajes en esta red se dividirían en paquetes, cada uno con su propia dirección, originado en algún nodo en particular saltando de lado a lado y finalizando en otro nodo especifico, de manera individual. No importa La ruta de los paquetes, solamente importa que lleguen. Si una ruta hubiera sido destruida, el paquete encontraría otra para llegar a su destino. 5 1967. La planeación de este tipo de redes se expuso durante el simposio realizado en Inglaterra sobre Principios Operativos, auspiciada por ACM (Asociation of Computer Machinery). 1968. El primer resultado en este tipo de redes se obtuvo en Gran Bretaña, utilizando un mainframe IBM. 1969. ARPA (Advanced Research Projects Agency), una agencia del Pentágono surgida a partir del lanzamiento del satélite Sputnik, decide realizar un proyecto mayor sobre esta tecnología en redes en Estados Unidos. Este proyecto fue desarrollado por RAND, MIT (Massachussets Institute of Technology) y UCLA (University of California in Los Ángeles). El primer nodo fue instalado en UCLA. Para diciembre de ese año ya existían cuatro nodos en ARPANET, pudiendo transmitir datos en líneas de transmisión de alta velocidad y programar remotamente computadoras en otros nodos. En 1971 había quince nodos, y para 1972, treinta y siete. Poco a poco comenzó a expandirse el uso de ARPANET: no solamente se dedicaba a trabajos de cómputo a larga distancia, sino que se extendió a la comunicación de proyectos y trabajos entre investigadores, y al uso personalizado del correo electrónico y más humano de la comunicación persona a persona. Así también surgen las listas de interés, que son mensajes de correo electrónico retransmitidos automáticamente a los suscriptores en la red. 1973. Tuvo lugar la primera conferencia internacional de ARPANET, con una demostración entre 40 máquinas, conectadas entre sí alrededor del mundo, y sin ninguna pérdida de información, teniendo un éxito impresionante. Otra ventaja de ARPANET es que no importaba los tipos o tamaños de las máquinas en las que se estuviera trabajando, mientras cumplieran con los protocolos establecidos, funcionarían dentro de la red. 1974. El protocolo original se conocía como NCP "Network Control Protocol", el cual fue cambiado por un nuevo estándar más sofisticado, llamado TCP/IP, publicado en 6 este año por Vint Cerf y Bob Kahn. TCP (Transmission Control Protocol) convierte mensajes en cadenas de paquetes en el nodo de origen, y los ensambla de nuevo en el punto de destino. IP (Internet Protocol) maneja el direccionamiento permitiendo que los paquetes fueran ruteados a través de diferentes nodos y hasta de diferentes redes con varios estándares, como Ethernet, FDDI y X.25. 1977. Comenzó a extenderse el uso de TCP/IP en otras redes para vincularse a ARPANET, comenzando esta red a volverse más pequeña en comparación con la gran cantidad de máquinas que comenzaron a conectarse. A fines de los años 70 y en los años 80, personas de diferentes grupos sociales tuvieron acceso a computadoras de gran capacidad, siendo bastante fácil el conectarse a la creciente red de redes. Como el software de TCP/IP es de dominio público, y por su misma naturaleza, descentralizante y hasta anárquico, comenzó el auge de la conexión a Internet (derivado de International Networking). Fue en esta época donde surgió USENET, el boletín electrónico más grande del mundo, basándose en UUCP, tecnología desarrollada en los laboratorios Bell de AT&T, junto con el sistema operativo UNIX, que al paso de los años, se ha convertido en el sistema operativo estándar de todos las computadoras de mediano y gran tamaño conectadas a Internet. También surgieron servicios enfocados a la diversión como el primer MUD (Multi User Dungeon, juego de rol interactivo) en la Universidad de Essex. 1981. Surgió otro punto de desarrollo de estas redes, BITNET (Because It's Time for NETwork), creado como red cooperativa, proveyendo a sus usuarios de correo electrónico, listas de interés y transferencia de información y archivos. La conexión a Internet tiene un mínimo costo, ya que cada nodo es independiente, y maneja por sí mismo sus propias necesidades técnicas y financieras. De esta manera, la red comenzó a extenderse, abarcando mayor número de gentes conectadas y de recursos. Así, la comunicación a través de la computadora comenzó a ser indispensable. 1982. El Departamento de Defensa de los Estados Unidos declara como estándar al conjunto TCP/IP, separándose de ARPANET la parte militar, MILNET, Dándose el auge 7 por las estaciones de trabajo de escritorio, con sistema operativo Berkeley UNIR (desarrollado por la Universidad de Berkeley, en California), que incluye software de red TCP/IP. 1984. NSF (National Science Foundation), a través de su Oficina de Cómputo Científico Avanzado establece un nuevo avance técnico, al integrar S supercomputadoras a través de enlaces más rápidos, impulsando así el desarrollo de Internet, y permitiendo una mayor cantidad de conexiones, principalmente de universidades, con finalidades académicas y de investigación. También surge el primer Freenet (acceso público a correo electrónico y servicios de Internet en forma gratuita) en Cleveland. En este punto se inició la organización de los dominios (o direcciones de Internet para las diferentes redes conectadas) por sus ubicaciones geográficas, y los seis básicos: gov, mil, edu, com, org y net, que corresponden a instituciones gubernamentales, militares, educacionales, comerciales, no comerciales, y destinados a enlaces entre redes, respectivamente. 1988. Empiezan a surgir problemas en la red, como el caso del "virus" de Internet (Internet Worm), que aprovechaba un error en el código de los programas de correo electrónico, afectando a 6,000 de las 60,000 computadoras conectadas a Internet. Por este motivo, DARPA crea el CERT (Computer Emergency Response Team), que genera recomendaciones y alertas en caso de problemas dentro de la Red. La comunicación personal tiene mayores posibilidades con el desarrollo de IRC (International Relay Chat), que permite la conversación simultánea de varias gentes en todo el mundo conectadas a esta red. 1989. México ingresó a Internet a través de NSFNET y contaba además con la red BITNET, que permitía a usuarios del ITESM (Instituto Tecnológico de Monterrey) y la UNAM (Universidad Autónoma de México) tener acceso a los recursos existentes en Estados Unidos y el resto del mundo. 8 1990. Debido a su propio éxito, ARPANET se volvió obsoleto y deja de existir. Por iniciativa de los usuarios, surgen las primeras organizaciones dedicadas a la protección de los derechos de las personas conectadas a Internet. Este es el caso de EFF (Electronic Frontier Foundation), y la primera organización que comercializa el acceso a Internet vía modem: The World. Se implementan herramientas que catalogan y facilitan el acceso a Internet: Archie, para la búsqueda de archivos accesibles mediante FTP (File Transfer Protocol); Hytelnet, un catálogo de recursos y bibliotecas en línea accesibles mediante telnet (terminal remota); WAIS (Wide Area Information Servers), para entregar directamente documentos al usuario, solicitándolos a través de palabras clave; Gopher, para ver la información a través de menús; PGP (Pretty Good Privacy), para dar seguridad y privacía a los mensajes de la comunidad en la red; Verónica, un sistema de búsqueda complementario a Gopher. 1991. Commercial Internet eXchange (CIX) Association, Inc., surge a partir de que NSF levanta las restricciones que existían para el uso comercial de la Red. 1992. Es un año de profundos cambios dentro de Internet. Se funda Internet Society (ISOC), para coordinar el uso de las tecnologías existentes en beneficio de todos los usuarios. Se desarrolla en el CERN la tecnología de WWW (World Wide Web), que permite un acercamiento más fácil a través de hipertexto a los recursos de Internet; también se da la primera muestra de audio y video en tiempo real a través de la Red. 1993. InterNIC es creado por NSF para proveer servicios de información, así como registros, directorios y bases de datos referentes a Internet. También el Presidente Bill Clinton, su esposa Hillary y su vicepresidente Al Gore ingresan al WWW. En este momento los medios masivos de comunicación tradicionales (televisión, radio, cine, revistas y publicaciones) toman conciencia de Internet y sus implicaciones. Entonces hay artículos en las revistas Time y Newsweek, además mereciendo reportajes en las cadenas más importantes de televisión estadounidense. El crecimiento de la red se vuelve exponencial. Mosaic, explorador de Internet desarrollado en la Universidad de Illinois 9 Urbane-Champagne, es el primero en aprovechar la gran capacidad del WWW, teniendo un crecimiento anual de 341,634% en número de usuarios de esta herramienta. 1994. Internet cumple 25 años de servicio. Ahora hay comunidades completas conectadas a Internet (Lexington y Cambridge, Mass., USA), el Senado de los Estados Unidos provee información y los centros comerciales llegan a la red, como Internet Shop Network y JCPenny. El auge es tal que surge servicios bancarios en la red, como First Virtual y los negocios comienzan a prosperar, como el caso de Pizza Hut. No todo es felicidad dentro de la red y surge el caso de Canter & Siegel, que, sin respetar las reglas de cortesía de la red (conocidas como nettiquete), inundan USENET con anuncios sobre sus servicios para inmigración, teniendo una respuesta hostil por parte de los ciudadanos de la red (net.citizens). 1995. Los sistemas de servicios vía modem (Compuserve, Prodigy, Genie) comienzan a ofrecer servicios de Internet. Gran cantidad de compañías relacionadas con la red se vuelven públicas, encabezadas por Netscape, que tiene el tercer índice de ganancias jamás conseguido en Wall Street. Los datos aquí proporcionados muestran la evolución de Internet, en la cual se señala la gran diferencia que existe entre su estado actual y sus orígenes. La red, que comenzó como un proyecto de sobrevivencia de la información ante la posibilidad de un ataque nuclear, ha derivado en una red de redes, que comunica de manera amplia y eficiente a un creciente número de personas. Alrededor de esta red se ha generado una nueva cultura, la cybercultura, con su modo de pensar, de hablar, de sentir; un mundo nuevo que aún falta mucho por explorar y que tiene un gran potencial. El Vaticano aparece en línea (http://www.vatican.va/) 1996 La posibilidad de realizar llamadas telefónicas a través de Internet, captura la atención de las empresas de telecomunicaciones, quienes empiezan a desarrollar la tecnología. Varios sitios del gobierno norteamericano fueron hackeados cambiándoles su contenido, incluyendo CIA, Department of Justice, Air Force 10 El Internet Ad Hoc Committee anunció planes de añadir 7 nuevos Dominios genéricos de Alto Nivel que son: .firm, .store, .web, .arts, .rec, .info, .nom. La guerra de los navegadores iniciada entre Netscape y Microsoft, ha generado una nueva era en el desarrollo de software, ya que constantemente se están ofreciendo nuevas versiones mejoradas con la ayudad de usuarios en Internet que prueban las versiones beta de cada producto. Restricciones en el uso de Internet alrededor del mundo: • China: Usuarios y proveedores deben registrarse ante la policía • Alemania: Limitación de acceso a algunos grupos de noticias • Arabia Saudita: Confinado el uso de Internet en Universidades y Hospitales • Singapur: Para registrar un ISP en necesario colocar contenido político y religioso 1997 2000th RFC: "Internet Official Protocol Standards" 71,618 listas de correo registradas en Liszt El American Re gistry for Internet Numbers ARIN) es establecido para manejar la administración y registro de números IP para áreas geográficas, actualmente realizado por el InterNIC. Iniciaría su funcionamiento en Marzo de 1998 2.2 Desarrollo de Internet en México El Primer Nodo Internet instalado en México La historia del Internet en México empieza en el año de 1989 con la conexión del Instituto Tecnológico y de Estudios Superiores de Monterrey, en el Campus Monterrey, (ITESM) hacia la Universidad de Texas en San Antonio (UTSA), específicamente a la escuela de Medicina. Una Línea privada analógica .de 4 hilos a 9600 bits por segundo fue el enlace. Conexiones a BITNET en México 11 Sin embargo, antes de que el ITESM se conectara a Internet, casi al final de los 80's, recibía el tráfico de BITNET por la misma línea privada. El ITESM era partícipe de BITNET desde 1986. Las conexiones se hacían a través de líneas conmutadas. La conexión permanente de esta institución se logró hasta el 15 de Junio de 1987 ( a BITNET y posteriormente a INTERNET). La UNAM se conectó a BITNET en Octubre de 1987. En Noviembre de 1988 se cambió la conexión permanente que interconectaba equipo IBM con RSCS, a equipos DEC utilizando DECNET. A1 cambiar el protocolo se tenía la posibilidad de encapsular tráfico de TCP/IP en DECNET y por lo tanto formar parte de INTERNET. Al siguiente año, en 1989, se cambió de una a tres líneas. Con ello, se cambió el equipo de interconexión y se incorporaron los equipos de ruteo CISCO. Las conexiones siguieron siendo con la UTSA. Primeras computadoras conectadas a INTERNET La máquina que recibía la conexión de DECNET era una Microvax-II con la dirección 131.178.1.1 ( desde Septiembre de 1993 se encuentra fiera de operación en el ITESM, Campus Monterrey ). Esta máquina tenía un software que recibía el tráfico de TCP/IP encapsulado en DECNET, lo sacaba y permitía acceder Internet. Además de ser el primer nodo de Internet en México, pasó a ser el primer Name server para el dominio .mx. La UNAM como segundo nodo y su interconexión con el ITESM 12 El segundo nodo Internet en México fue la Universidad Nacional Autónoma de México, en el Instituto de Astronomía en la Ciudad de México. Esto mediante una conexión vía satélite de 56 Kbps, con el Centro Nacional de Investigación Atmosférica ( NCAR ) de Boulder, Colorado, en los Estados Unidos de Norteamérica. Por lo tanto, se trataba de una línea digital. Después de esto, lo que proseguía era una interconexión entre la UNAM y el ITESM (Campus Monterrey ), pero lo que funcionó en ese entonces fue un enlace BITNET entre ellos. Claro, usando líneas privadas analógicas de 9600 bps. El ITESM, Estado de México, se conecta a Internet El ITESM, en su Campus Estado de México, se conecta a través del Centro de Investigación Atmosférica ( NCAR) a Internet. Como la UNAM, obtiene una conexión satelital de 56 kbps, es decir, enlace digital. La función de este enlace es dar servicio a los demás ITESM, diseminados a través de todo el país. Conexiones posteriores El ITESM, Campus Monterrey, promovió y logró que la Universidad de las Américas (UDLAP) en Cholula, Puebla y el Instituto Tecnológico y de Estudios Superiores de Occidente (ITESO) en Guadalajara, Jalisco, se enlazaran a INTERNET a través del mismo ITESM. Aunque sus enlaces eran de baja velocidad, 9600 bps, fue suficiente, en ese momento, para proveer de correo electrónico, transferencia de archivos y acceso remoto. . Debido al crecimiento registrado en Internet, la National Science Fundation, en los Estados Unidos, requería de una respaldada red de telecomunicaciones para todos aquellos países que se integraban a Internet, por lo tanto, se tomaron algunas decisiones en México, 13 como la de formalizar el uso de IGRP entre los ruteadores y revisar detalladamente la asignación de ASN ( Authonomous Systems ). La Universidad de Guadalajara, obtiene una conexión a Internet con la Universidad de California en Los Ángeles. Esta era una línea privada de 4 hilos a 9600 bps. Estaban bajo el dominio de UCLA y con direcciones de IP también de la UCLA. Las demás instituciones, en ese tiempo, accesaban Internet por medios conmutados. Tal es el caso de Colegio de Postgraduados ( COLPOS ) de la Universidad de Chapingo, en el Estado de México. El Centro de Investigación en Química Aplicada, con sede en Saltillo, Coahuila. El Laboratorio Nacional de Informática Avanzada de Xalapa, Veracruz. Todos ellos se conectaban al ITESM, Campus Monterrey para salir a Internet. La Universidad de Guanajuato - Precursor de RUTYC - en Salamanca, Guanajuato, se enlazaba a la UNAM. El Instituto Tecnológico de Mexicali, en Baja California; se conectaba a la red de BESTNET. Formación de MEXNET En este entonces existía un organismo llamado RED-MEX, formado principalmente por la academia, y es donde se discutieron las políticas, estatutos y procedimientos que habrían de regir y dirigir el camino de la organización de la red de comunicación de datos de México. Esta debería ser una Asociación Civil. De esta manera es como surge MEXNET, el lugar fue la Universidad de Guadalajara. El Motivo, crear a la asociación civil. El día 20 de Enero de 1992. Los participantes: ITESM, Universidad de Guadalajara, Universidad de las Américas, ITESO, Colegio de Postgraduados, LANIA, CIQA, Universidad de Guana juato, Universidad Veracruzana, Instituto de Ecología, Universidad Iberoamericana, IT de Mexicali. 14 Crecimiento de Internet en México Tiempo más tarde, el primero de Junio de 1992, MEXnet establece una salida digital de 56kbps al Backbone de Internet. El crecimiento de MEXNET fue registrando a usuarios como: UdeG, IPN, CINVESTAV, UdeC, UdeM, INAOE, en 1992; UAM, UAG, Universidad Panamericana, CIMIT, UAP, UA de Chapingo, UAAAN, COMIMSA, UASLP, Universidad Veracruzana, UANL y Universidad Autónoma de Puebla entre otros, esto durante 1993. BAJAred se empieza a constituir con las siguientes instituciones educativas, todas ellas de Baja California: • Centro de Enseñanza Técnica y Superior - CETYS. • Centro de Investigación Científica y Educación Superior de Ensenada CICESE. • Universidad Autónoma de Baja California - UABC. • Colegio de la Frontera Norte - COLEF, e • Instituto Tecnológico de Mexicali - ITM En 1993 el CONACyT se conecta a Internet mediante un enlace satelital al NCAR. El ITAM hace lo propio el 18 de Enero de 1993. Es en 1993 cuando la UAM se establece como el primer NAP, al intercambiar tráfico entre dos diferentes redes. Para finales de 1993 existían una serie de Redes ya establecidas en el País, algunas de ellas: • MEXnet • Red UNAM 15 • Red ITESM • RUTyC, que desaparecería como tal ese mismo año • BAJAnet • Red Total CONACYT • SIRACyT, un esfuerzo por agrupar las anteriores Fue hasta 1994, con la formación de la Red Tecnológica Nacional ( RTN ), integrada por MEXnet y CONACyT que el enlace creció a 2Mbps ( E1 ). Y es en este año que el Internet se abre a nivel comercial en nuestro país PIXELnet, ya que hasta entonces, solamente instituciones educativas y de investigación lograron realizar su enlace a Internet. Durante 1994 y 1995, se consolidaron redes como RTN creando un Backbone nacional y agrupando a un gran número de instituciones educativas y comerciales en toda la República, desde Baja California hasta Quintana Roo. Se mantuvieron esfuerzos de la Red UNAM y surgieron los ISP's comerciales con más fuerza, los cuales no sólo brindaban conexión a Internet sino servicios de valor agregado, tales como acceso a Bases de Datos públicas y privadas. Así el Centro de Ciencias de Sinaloa a partir del 15 de marzo de 1994 realiza las últimas pruebas de funcionamiento, del enlace vía RDI Conacyt D.F.-Centro de Ciencias de Sinaloa lo que permite que su red local/regional quede conectada al segmento de la RTN con el número de subred 148.207.16.0 y con dominio(ccs.conacyt.mx). Con este hecho el Centro de Ciencias de Sinaloa queda constituido como "Institución Nodo Regional" de la RTN. Actualmente su dominio es (ccs.net.mx). Consolidación de los servicios de Internet en México En Diciembre de 1995 se hace el anuncio oficial del Centro de Información de Redes de México ( NIC-México ) el cual se encarga de la coordinación y administración de los recursos de Internet asignados a México, tales como la administración y delegación de los nombres de dominio ubicados bajo .MX. 16 En 1996, ciudades como Monterrey, N.L., registran cerca de 17 enlaces E1 contratados con TELMEX para uso privado. Se consolidan los principales ISP's en el país, de los casi 100 ubicados a lo largo y ancho del territorio nacional. En los primeros meses, tan sólo el 2% de los hosts totales ( 16,000) ubicados bajo .mx tienen en su nombre las letras WWW. Nace la Sociedad Internet, Capítulo México, una asociación internacional no gubernamental no lucrativa para la coordinación global y cooperación en Internet. Se crea el Computer Emergency Response Team de México. A finales de 1996 la apertura en materia de empresas de telecomunicaciones y concesiones de telefonía de larga distancia provoca un auge momentáneo en las conexiones a Internet. Empresas como AVANTEL y Alestra-AT&T ahora compiten con TELMEX. En 1997 existen más de 150 Proveedores de Acceso a Internet ( ISP's ) que brindan su servicio en el territorio mexicano, ubicados en los principales centros urbanos: Cd. de México, Guadalajara, Monterrey, Chihuahua, Tijuana, Puebla, Mérida, Nue vo Laredo, Saltillo, Oaxaca, por mencionar sólo algunos. 17 CAPÍTULO III PROTOCOLO TCP/IP PROTOCOLOS Y SERVICIOS 18 3. PROTOCOLO TCP/IP 3.1 Conceptos básicos Qué es un host En Internet se llama host a cualquier ordenador conectado a la red y que dispone de un número IP y un nombre definido, es decir, cualquier ordenador que puede enviar o recibir información a otro ordenador. Host suele traducirse al castellano como anfitrión. Otros términos que se utilizan con frecuencia son ordenador local y ordenador remoto. Ordenador local se refiere por lo general al ordenador que el usuario está usando en primera instancia, a través del cual se establece una conexión con otro ordenador al que se solicita un servicio, éste último es el ordenador remoto. 3.2 La familia de protocolos TCP/IP La red Internet se basa en la utilización de los protocolos TCP/IP que son las normas que posibilitan la interconexión de ordenadores de diferentes fabricantes utilizando todo tipo de tecnología (Ethernet, líneas telefónicas conmutadas o dedicadas, X25,RDSI...). Esta familia está formada por más de 100 normas o protocolos que no dependen de ningún fabricante y son estándar. Los dos protocolos más importantes son IP (Internet Protocol) y TCP (Transmision Control Protocol). El Protocolo IP: define una red de conmutación de paquetes donde la información que se quiere transmitir está fragmentada en paquetes. Cada paquete se envía a la dirección del ordenador destino y viaja independientemente del resto. La característica principal de los paquetes IP es que pueden utilizar cualquier medio y tecnología de transporte. Los 19 equipos que conectan las diferentes redes y deciden por donde es mejor enviar un paquete según el destino, son los routers o direccionadores. El Protocolo TCP: se encarga de subsanar las deficiencias en la llegada de los paquetes de información a su destino, para conseguir un servicio de transporte fiable. Este mecanismo de funcionamiento requiere que todos los ordenadores conectados tengan direcciones distintas. 3.3Las direcciones TCP/IP Cada ordenador conectado a la red de redes tiene una dirección asociada (dirección Internet)1 . Estas direcciones son números de 32 bits que normalmente se escriben como w. x. y. z donde w, x, y, z son números menores de 255. Una parte de la dirección identifica la red entre todas las redes conectadas a Internet y es la que utilizan los routers para encaminar los paquetes hacia su destino. La otra parte de la dirección identifica en forma particular a un ordenador de los conectados en la misma red. Una dirección Internet identifica una interfaz de red. Las aplicaciones dentro de un ordenador se identifican mediante un número contenido en la cabecera de los paquetes TCP/IP, llamado puerto. Aunque podamos utilizar estas direcciones Internet numéricas para. acceder a los servicios y ordenadores, normalmente utilizamos nombres que son más fáciles de recordar. Esto es posible mediante la utilización del servicio de nombres de Internet o DNS (Domain Name System) que traduce los nombres a direcciones numéricas. ___________________________ 1 Las direcciones Internet se asignan a las tarjetas de interfaz de red, por lo que un ordenador puede tener tantas direcciones Internet como interfaces de red tenga instaladas. 20 El DNS es una base de datos distribuida de forma jerárquica, por toda la red y que es consultada por las aplicaciones para traducir los nombres a direcciones numéricas. Esta jerarquía permite distribuir la responsabilidad de garantizar que no existen no mbres repetidos dentro del mismo nivel o dominio ya que el administrador de cada nivel es responsable del registro de nombres dentro de su nivel y garantiza que éstos sean únicos. 3.4 Estratificación de protocolos en TCP/IP Actualmente el TCP/IP es utilizado en la mayoría de los sistemas operativos como principal opción en la conexión en red con otras computadoras, convirtiéndose por lo tanto en una pieza fundamental en la interoperabilidad de redes. Es posible desarrollar usando TCP/IP una aplicación para ejecutarse en Internet y que ésta se comunique con otra aplicación en Internet que se ejecute en otro sistema operativo diferente que implemente TCP/IP como protocolo para la conexión en red, hay que tomar en cuenta que dichas redes pueden no estar directamente conectadas, y por lo tanto que los datos enviados de una aplicación a otra tengan que atravesar múltiples redes con diferente hardware de interconexión, siendo el trabajo de TCP/IP, ocultar dichas diferencias para lograr formar una red virtual. MODELO OSI TCP / IP 21 3.5 Servicios de la capa de APLICACIÓN En el nivel más alto del conjunto de protocolos, que se conoce como nivel de aplicación, existen una serie de protocolos que son los que proporcio nan los servicios de red al usuario. TELNET El servicio de Telnet se basa en el protocolo VTN (Virtual Terminal Network», Terminal Virtual de Red, permite a dos nodos de TCP/IP interactuar a través de una interred como si una terminal estuviera directamente conectada. FTP El servicio Protocolo de Transferencia de Archivos, (File Transfer Protocol), provee transferencia de archivos. Basado en el FTP un cliente local se puede conectar a otro servidor en la interred para enviar o recibir archivos, enlistar directorios y ejecutar comandos sencillos en la máquina remota. A1 igual que el Telnet, FTP se implanta dentro de una sesión de terminal. NFS El servicio (Network File System), Sistema de Archivos Vía Red. Desarrollado por SUN Microsystems, el NFS ofrece acceso directo a datos almacenados en un servidor remoto. NFS hace que una carpeta o directorio en el servidor NFS aparezca como un volumen local en el escritorio del cliente , de forma que los archivos en el servidor NFS puedan utilizarse como si estuvieran en el disco local. 22 NIS NIS, (Network Information System), Sistema de Información de Red. Anteriormente conocido como yellow pages (páginas amarillas) es un servicio de autentificación utilizado frecuentemente para complementar los servicios NFS. Proporciona una base centralizada de las cuentas de los usuarios y los nodos, la cual puede ser consultada por otros nodos de la red. Gopher Significa ardilla de tierra y es un FTP mejorado (del ingles go for, ve y trae). Se creó en la Universidad de Minnesota como alternativa para localizar y copiar archivos del sistema central o host. A diferencia de FTP, no se requiere conocer el nombre servidor del que se desea copiar un archivo. El servidor gopher se encarga de informar al cliente gopher del verdadero destino de algún archivo para que pueda realizar la conexión y recuperar los datos. Esta flexibilidad simplifica la búsqueda y recuperación de datos. SMTP SMTP, (Simple Mail Transfer Protocol), Protocolo Sencillo para la Transferencia de Correo. Sirve para enviar mensajes de correo electrónico al servidor de correo de la red. POP POP, (Post Office Protocol), (Instrucciones que permiten recuperar un elemento del servidor). Permite acceder el correo electrónico almacenado en un servidor. WWW (World Wide Web), Red Mundial Amplia. Es similar al gopher en cuanto que permite acceder información almacenada en muchos nodos diferentes, pero ofreciendo una 23 interfase más amigable con imágenes sonido animaciones, video y ligas de tipo hipertexto a otros documentos. El primer software cliente para WWW lo desarrolló la NCSA (Centro Nacional de Aplicaciones de Supercómputo), y se llamó MOSAIC. 24 CAPÍTULO IV WINDOWS NT INTERNET INFORMATION SERVER 25 4. WINDOWS NT: INTERNET INFORMATION SERVER 4.1 Características del US (Internet Information Server) • IIS está incluido con Windows NT Server. • El procedimiento de instalación está completamente integrado con Windows NT Server. Un asistente le guía durante la instalación, asegurando que su sitio WEB esté ejecutándose en minutos. • Todas las labores de gestión y configuración se realizan con las mismas herramientas de administración de Windows NT Server, por lo que no tiene que aprender nuevas herramientas y utilidades. Hay también una herramienta de administración basada en HTML para la gestión remota de su servidor Web. • IIS soporta las herramientas de administración SNMP, así como el Systems Management Server. • IIS usa los servicios de directorio incorporados en Windows NT, facilitando así la gestión global de usuario y seguridad desde un lugar centralizado. • IIS ofrece los más altos niveles de prestaciones y escalabilidad en Windows NT Server. De acuerdo a pruebas realizadas por terceras partes, como Shiloh Consulting, Internet Information Server es el servidor Web más rápido que puede adquirir para Windows NT Server y tiene la mejor relación precio/prestaciones de los servicios Web en cualquier plataforma, incluyendo servidores UNIR más caros. • IIS soporta SSL 2.0 y 2.3, permitiendo comunicaciones seguras y la autenticación de usuarios con certificados digitales. • IIS ofrece la más amplia funcionalidad disponible para un servidor Web. 26 ü Netshow permite ofrecer contenidos multimedia en directorio y bajo demanda con IIS, facilitando la creación de páginas dinámicas y ricas en contenido. Lo necesario para escenarios de teleformación en su Intranet e Internet. ü Index Server le ofrece la más potente máquina de búsqueda disponible para Windows NT Server. Indexa automáticamente páginas HTML y otros documentos en sus servidores Intranet, como los creados con Microsoft Office. La búsqueda de información es así más fácil sin recargos adicionales. Además, soporta 7 lenguajes a la vez y numerosos formatos de archivos. ü Microsoft FrontPage 97 está incluido con Windows NT Server, permitiendo a los no programadores y desarrolladores experimentados crear y gestionar sitios Web profesionales. La arquitectura cliente/servidor de FrontPage permite que esto se realice desde su escritorio, a través de una red corporativa, o incluso Internet. ü Crystal Reports proporciona a los administradores una potente herramienta de análisis de archivos de log, y un número de informes prediseñados. Esto le ayuda a determinar fácilmente las páginas más populares de su sitio Web, las horas de tráfico punta, y mucho más. • IIS también incorpora los servicios para sitios Gopher y FTP. • IIS facilita la creación de potentes soluciones basadas en la Web. ü Active Server Pages permite a su servidor Web crear HTML dinámicamente combinando scripts y componentes. IIS también soporta aplicaciones WinCGI, CGI e ISAPI. ü Soporta cualquier lenguaje . Soporte incorporado para Jscript y Microsoft Visual Basic Scripting. Plug-ns disponibles para PERL y REXX. Los componentes pueden crearse en 27 Java, Microsoft Visual Basic, C++, o COBOL. IIS incluye la máquina. virtual, Java para servir aplicaciones Java. ü Neutral respecto al navegador. Con el componente de detección del navegador, puede determinar las capacidades del cliente, y generar dinámicamente el código HTML para acomodarse a la mayor audiencia posible. ü Libre de compilación. Puede cambiar fácilmente su sitio Web sin tener que recompilar. Active Server Pages le proporciona compilación "just- in-time". ü Conectividad a bases de datos. Conecte sus páginas Web a bases de datos existentes con Active Data Object (ADO). ADO le permite utilizar cualquier base de datos compatible con ODBC. IIS tiene a su disposición más herramientas de desarrollo que cualquier otro servidor. Web, como Microsoft Visual InterDev y otras herramientas visuales, así como numerosas de terceros para crear soluciones basadas en Active Server Pages. Extensible. Dado que Intemet Information Server es extensible, puede usarlo para conectar su explorador Web a cualquiera de sus aplicaciones Microsoft BackOffice. Windows NT Server 4.0 incluye IIS 2.0. • IIS 3.0 viene en SP2 (Service Pack 2 para Windows NT Server 4.0), es gratuito para clientes de NT Server. 28 4.2 ARQUITECTURA IIS 4.1 Arquitectura del IIS Dado que HTTP es un protocolo sin conexión (connectionless), se efectúa una conexión para obtener cada objeto de la página solicitada por la computadora cliente. Una vez que la página fue levantada en la computadora, la conexión se pone en standby hasta que el usuario efectúe una operación que requiera de esa conexión. Cuando la conexión es requerida, por ejemplo el usuario hace click sobre un gráfico, el navegador envía un mensaje para establecer la conexión. El software del navegador se comunica con TCP, y éste último comienza con el proceso de preparar el frame. Cuando el frame está listo, es enviado a través de Internet al puerto correspondiente del server. El paquete de datos es removido del frame y enviado a HTTP en la capa de aplicaciones. HTTP obtiene los datos del sistema de archivos. Los datos realizan la travesía inversa para volver al cliente. El gráfico es construido (levantado) en la computadora cliente. 29 IIS usa caché para optimizar la transferencia de datos al cliente. Cuando se accede a un archivo, IIS lo guarda en la caché, los archivos se conservan en la caché hasta que ésta esté llena. Cuando la caché se llena, los archivos más viejos son removidos. Este sistema implica que los archivos más frecuentemente usados se conservan en memoria RAM, lo que ayuda a acelerar la transferencia de datos al cliente. FTP funciona de manera similar a HTTP, sin embargo cuando se inicia una sesión FTP se establece una conexión entre el cliente y el servidor. La conexión se mantiene abierta hasta que el usuario la cierre. Cuando se efectúa una solicitud FTP, el procedimiento es el mismo hasta que se alcanza la capa de aplicaciones. La solicitud es entonces enviada a FTP, que se encarga de la caché y del sistema de archivos. Si se efectúa una solicitud Gopher, opera de la misma manera, la solicitud llega a la capa de aplicaciones de la IIS y luego enviada a Gopher ; Gopher se encarga entonces de la caché y del sistema de archivos. 4.3 SERVICIOS DE PUBLICACIÓN FTP Este servicio de publicación proporciona los servicios estándar del Protocolo de Transferencia de Archivos (FTP) para servidores basados en Windows NT . La Transferencia de Archivos permite que sean transferidos archivos de texto o archivos binarios por medio de conexiones de TCP/IP. FTP usa el protocolo TCP, un protocolo orientado a conexión que requiere la instalación de un circuito virtual entre el cliente y el servidor FTP. El Servicio de Publicación FTP es una versión mejorada del servicio que actualmente se incluye en el Servidor de Windows NT. Las mejoras incluyen: • Hacer alias de los directorios. 30 • Verdaderos Directorios "Raíz". • Autenticación de Usuarios mejorada • FTP "Pasivo" Gopher Este servicio es una implementación estándar del servicio de Gopher. Gopher permite búsquedas en directorios y vínculos a otros directorios y/o servicios, ambos en el mismo servidor o para un servidor localizado en cualquier parte desde donde el usuario pueda conectarse. Gopher proporciona algunas de las características que tienen los servidores de Web, incluyendo los vínculos a otros servidores, la habilidad de reconocer un tipo de archivo y asociar ese tipo con una aplicación y automáticamente bajar el archivo, activando la aplicación con el archivo cargado. World Wide Web Este servicio, conocido también como WWW, permite que los documentos sean servidos desde el servidor basado en Windows NT a cualquier usuario con un buscador WWW, proporcionando acceso "point-and-click" a la información en ese servidor y vínculos a otros archivos y directorios world-wide con el uso de URL's (Uniform Resource Locators). 4.4 CARACTERÍSTICAS DEL IIS SERVIDORES VIRTUALES Los servidores virtuales, también conocidos como servidores Multi- Homed, proporcionan a una instancia simple del Servicio de Publicación del World Wide Web la habilidad de atender peticiones de clientes y hacer que la respuesta venga de diferentes 31 servidores. Esto permite que un cliente haga la petición de un archivo desde un servidor WWW como: http://abc.com/default.httn y pedir un diferente archivo desde un URL diferente tal como: http://xyz.com/index.htm En el cual esos archivos son actualmente proporcionados desde el mismo servidor de publicación WWW. Esto permite, que para Intranet con un sólo servidor poderoso que se instale, pueda ser representada cierta cantidad de "sitios" diferentes. Instalar Servidores Virtuales requiere entradas únicas en el servidor DNS que sea autoritario para los dominios afectados. Creación de alias para directorios Creación de Alias para Directorios es la habilidad de crear vínculos a los directorios que se presenten al cliente como subdirectorios del directorio original del servidor. Estos son, de hecho, directorios que se localizan dentro de un directorio árbol diferente, un volumen diferente, o un servidor completamente diferente. Administración remota Tal como en la mayoría de las herramientas administrativas para servidores basados en Windows NT, el Internet Service Manager permite la administración remota de cualquiera de los servicios del Internet Information Server para ser controlados y configurados desde una estación de trabajo, un servidor remoto basado en Windows NT, o desde un paginador. 32 Registro El Internet Information Server, permite el registro del acceso a los servicios así como a una base de datos SQL/ODBC, o a un archivo. Con la opción de registro a un archivo seleccionada, el administrador puede escoger el directorio en el cual desea colocar los archivos de registro y el criterio para crear un nuevo archivo de registro: ya sea crear un nuevo archivo en un periodo de tiempo dado (día, semana, mes), o crear un archivo nuevo cuando el archivo existente alcance un tamaño predeterminado. CONFIGURACIÓN USANDO PÁGINAS DE PROPIEDAD La configuración de estas opciones se lleva a cabo por medio del Internet Service Manager, seleccionando File/Properties las hojas de propiedades para el Servicio de Publicación seleccionado. INTERNET SERVICE MANAGER El Intemet Service Manager (ISM) proporciona la interfase para manejar los servicios del US. El ISM permite la administración remota de los servidores, incluyendo la habilidad para empezar, terminar, o pausar el servicio. El ISM permite que el administrador seleccione el servidor a manejar, o buscar otras las instalaciones del US. Pueden seleccionarse diferentes vistas de los servicios de los servidores dependiendo de las preferencias del administrador. Los servicios pueden ser agrupados por servidor o por estado del servicio ( es decir, corriendo, detenidos o pausados). Cualquiera de los tres, o todos los servicios a la vez pueden ser desplegados. 33 SELECCIONES DE ORDENAMIENTO La información desplegada puede ser ordenada por medio de la selección de opciones desde el menú de View, o bien dando click en la aplicación en los encabezados de las columnas. Las opciones de ordenamiento son por: Computadora Servicio Estado (de servicio) Comentarios BARRA DE HERRAMIENTAS DEL ISM Conexiones de Servidor • Connect to Server. Permite al administrador seleccionar un IIS específico al cual conectarse. • Find Information Server. Al seleccionar este icono se hará una búsqueda. en la red de cualquier IIS. • Properties. Esta opción traerá la Página de Propiedades para el servicio seleccionado. Estado de Servicio • Start Service. Esta selección empezará un servicio detenido o continuará un servicio que estaba en pausa. • Stop Service. Esta opción detendrá un servicio que está corriendo o en pausa. • Pause Service. Esta opción pondrá en pausa un servicio que esté corriendo o continuará un servicio que estaba en pausa. 34 Vistas del Servidor Cualquiera de estos tres botones son intercambiables. Si están seleccionados, los servicios de esa categoría se muestran, de lo contrario no son desplegados. • View FTP Servers - Despliega los servidores FTP disponibles. • View Gophe r Servers - Despliega los servidores Gopher disponibles. • View WWW Servers - Despliega los servidores WWW disponibles. 4.5 REQUERIMIENTOS DE INSTALACIÓN Hardware Los primeros requerimientos de hardware para soportar el IIS es que todo el hardware soporte Windows NT para esto se puede consultar la Lista de Compatibilidad de Hardware más reciente. Las recomendaciones para el hardware comienzan con requerimientos mínimos y se incrementarán de acuerdo al uso del servidor. Software El software requerido para soportar la instalación del IIS será el siguiente: • Windows NT versión 4.0 • Red TCP/IP instalada y trabajando. • Sistema de Archivos NTFS. El NTFS se requiere para las extensiones del Servidor Frontpage, para que proporcione seguridad en los Webs que estén expuestos a FrontPage y a Visual InterDev. 35 Se requiere software para crear y administrar las páginas de World Wide Web. Cuentas Las cuentas deben ser creadas con los derechos y permisos mínimos requeridos para permitir el acceso a los servicios proporcionados desde este servidor. La cuenta que IIS usa por defecto para que los usuarios accedan los servicios es IUSR nombre-del-servidor. IUSR nombre del servidor es creada por el programa de instalación y colocada en el Grupo local de invitados. Entradas DNS Si en la Intranet existe un servidor DNS, una. entrada DNS será requerida para cada Servidor Virtual que sea definido dentro del servidor y cada servicio tendrá su propia entrada. Otros tipos de resoluciones de nombre incluyen archivos HOST, servidores WINS con clientes configurados para usar aquellos servidores para resolver nombres HOST, etc. 4.6 PROCESO DE INSTALACIÓN DEL IIS Durante el proceso de instalación de Windows NT Server 4.0, se ofrece la oportunidad de instalar IIS. Si no se instala IIS durante la instalación de Windows NT Server 4.0, un shortcut para la instalación de IIS es puesto en el escritorio. Para instalar IIS desde el shortcut de el escritorio: 1. Dar doble click en el shorteut. 2. En el cuadro de dialogo de la instalación de IIS , teclear la ruta a los archivos de Windows NT Server. 3. Seleccionar O.K. 4. En el cuadro de dialogo de instalación seleccionar O.K. 5. En el cuadro de dialogo de Instalación, verificar los servicios y opciones a instalar. 36 6. Seleccionar O.K. para aceptar las opciones de instalación. 7. Seleccionar Yes en el prompt del cuadro de dialogo para crear el directorio: C:\WINNT\SYSTEM32\INETSRV 8. Confirmar los Directorios de publicación para los servicios de publicación de World Wide Web, FTP y Gopher y selecciona O.K. 9. Selecciona Y es en el prompt de diálogo para crear los Directorios de Publicación. Opciones de Instalación El segundo cuadro de diálogo presentado durante la instalación permite al administrador seleccionar los servicios y opciones que serán instalados en la base de datos actual del servidor basado en Windows NT. La sección de Opciones proporciona siete selecciones: • Internet Service Manager. Puede ser instalado por sí mismo para permitir el manejo de una instalación de IIS existente. • World Wide Web. Instala y configura para inicializar automáticamente el Servidor WWW. • Gopher Server. Instala y configura para inicializar automáticamente el Servidor Gopher. • FTP Server. Instala y configura para inicializar automáticamente el Servidor FTP. • ODBC Drives and Administration. Ofrece controladores ODBC para la instalación, e instala el ODBC Configuration Manager. • Help and Sample Files. Instala los archivos de ayuda formateados en HTML y los archivos de ejemplo de aplicación (Tales como acceso ODBC, Formas, etc.) • Internet Service Manager (HTML). Instala páginas de HTML las cuales permiten administrar el IIS remotamente a través de HTTP. 37 Opción para el Directorio de Instalación Al seleccionar el botón de Change Directory se le permitirá al administrador cambiar el directorio de instalación para el IIS. Espacio Requerido/Disponible El espacio requerido en el directorio de instalación será presentado al administrador. Este es únicamente el espacio requerido para el software del IIS y no incluye ningún directorio que vaya a ser compartido. Directorios de Publicación El siguiente paso en el proceso de la instalación es seleccionar los directorios que serán usados como los directorios raíces por defecto para cada servicio que sea seleccionado para la instalación. El administrador puede seleccionar directorios que existan actualmente y estos directorios pueden ser aumentados con archivos. El programa de instalación no copia ningún archivo del Directorio de Publicación FTP o del Directorio de Publicación de Gopher, pero copiará un archivo default.htm para el Directorio de Publicación WWW llamado SAMPLES. Si el Directorio de Publicación WWW está instalado, un directorio adicional será creado en el mismo drive llamado SCRIPTS que contendrá los mismos scripts. Instalación del Controlador ODBC Si el controlador de instalación es seleccionado en la pantalla de opciones, se le pedirá al administrador que seleccione uno o más controladores ODBC para instalar con el servidor. 38 Para seleccionar, simplemente se ilumina el controlador deseado y seleccionar el botón de OK para instalar el controlador seleccionado. La opción avanzada en el cuadro de dialogo de instalación del ODBC presentará el Administrador con opciones para verificación de versión. Regularmente la verificación de versión no debe ser cambiada de su estado original. Los defaults asegurarán que las últimas versiones de los controladores y traductores sean instaladas en el servidor. 39 CAPÍTULO V CGI, WIN-CGI, SERVLETS 40 5. CGI, WIN-CG19 SERVLETS 5.1 CREACIÓN DE PROCESOS SERVIDORES HTTP Es posible crear interacción entre las páginas HTML visualizadas en un navegador cliente y el servidor HTTP, usando alguna de las siguientes opciones: • Aplicaciones CGI • Servlets JAVA 5.1.1 APLICACIONES CGI Existen tres categorías que agrupan a los documentos disponibles en el WWW, siendo el momento en que se define el contenido del documento lo que determina la categoría a la que pertenece, pudiendo ser alguna de las siguientes: • Documentos estáticos • Documentos dinámicos • Documentos activos Documentos estáticos: Estos documentos residen en un servidor WEB, como archivos asociados a éste, su contenido se define al momento de ;escribirse y por lo tanto cada vez que se solicite el documento estático el resultado será el mismo. Documentos dinámicos Estos documentos WEB no existen, son creados por el servidor WEB cuando un navegador los solicita. El servidor WEB ejecuta un programa como resultado de la petición, dicho programa genera el documento que será devuelto como respuesta a la solicitud, pudiendo ser diferente el contenido del generado entre una petición y otra. 41 Documentos activos Estos documentos no son totalmente especificados por el servidor, contiene programas que pueden realizar cálculos y presentar valores. Como respuesta a una solicitud de un navegador el servidor WEB devuelve como parte del documento un programa que se ejecutara en forma local. La apariencia y contenido del documento puede cambiar como resultado de la interacción del usuario con el programa recibido. Ventajas y desventajas de los documentos estáticos: Ventajas: • No se requiere saber programar para crear un documento estático • Una vez creado y probado será valido de manera indefinida • Se pueden copiar a caché para responder a solicitudes futuras Desventajas: • Deben modificarse cada vez que se desee que cambie su contenido • Los cambios pueden tardar • No son útiles cuando la información a presentar cambia continuamente Ventajas y desventajas de los documentos dinámicos Ventajas: • Presentar información actualizada: ü Precios ü Condiciones meteorológicas ü Precios de acciones Desventajas: • Se requieren conocimientos de programación para generar un documento WEB dinámico • Una vez generado el documento su contenido no cambia, por lo tanto envejece 42 • Requiere más control para garantizar que el documento generado sea válido Ventajas y desventajas de los documentos activos Ventajas: • Capacidad de actualizar continuamente la información presentada: ü Precios ü Presentación de imágenes animadas Desventajas: • Mayores costos de creación • Mayores costos de ejecución: memoria, capacidad, características de equipo • Falta de seguridad: se importa y exporta información al servidor WEB Los requerimientos para implantar documentos dinámicos son los siguientes: • Capacidad para ejecutar las aplicaciones que crearan los documentos dinámicos • Escribir un programa de aplicación para cada documento dinámico • Configurar el servidor para que reconozca cada URL ya sea dinámico o estático NORMA CGI CGI son las iniciales de Common Gateway Interface (Interfaz común de puerta de enlace o interfaz común de paso), fue desarrollada por el Centro Nacional de Aplicaciones de Supercómputo (NACSA) para emplearse en su servidor WEB. CG1 permite a un servidor WEB ejecutar programas que serán capaces de generar documentos WEB dinámicos y a los cuales se les llamará Programas CGI (también llamados CGI-bin). La norma CG1 permite que el programador decida que lenguaje utilizar (FORTRAN, C , C++, Perl , TCL, Delphi, etc), según las necesidades de programación. 43 La ejecución de un programa CGI no se limita a generar como salida documentos HTML, ya que también se permite la creación de tipos arbitrarios de documentos como puede ser texto e imágenes. CGI utilizan cabeceras para saber qué tipo de documento se generará como salida, el formato de dichas cabeceras es el mismo formato general que utiliza un servidor WEB, cuando envía un documento a un navegador. La cabecera: Content-type: text/html especifica que la salida es un documento HTML. Parámetros y variables de ambiente Al momento de llamar a un CG1 el servidor puede pasar parámetros, lo cual posibilita que un mismo programa CGI maneje un grupo de documentos dinámicos que difieren en detalles menores. Los datos de los parámetros pueden ser suministrados por el navegador, para esto el navegador agrega información al URL. Cuando se recibe la petición el servidor separa el URL en dos partes: un prefijo que identifica a un documento en particular y un subfijo con información adicional. Si el prefijo del URL corresponde a un programa CGI , el servidor llama al programa y pasa el subfijo del URL como argumento. Se usa un signo "?" en el URL para separar al prefijo del subfijo. La norma CG1 sigue un convención poco común para pasar argumentos a los programas CGI. En lugar de utilizar la línea de comando, el servidor pone el argumento en variables de ambiente y luego llama al programa CGI. El programa hereda. las variables de ambiente, de donde extrae los valores. El servidor asigna el subfijo a la variable de ambiente QUERY STRING. El servidor también asigna datos a otras variables de ambiente que puede emplear el programa CGI: 44 Variables de ambiente pasadas a un programa CGI Variable SERVER NAME Significado Nombre de dominio de la computadora. que ejecuta el Servidor GATEWAY INTERFACE Versión del software CGI empleado por el servidor SCRIPT NAME Trayectoria del URL después del nombre del servidor QUERY STRING Información después del "?" del ÜRL REMOTE ADDR Dirección IP de la computadora que ejecuta el visualizador que transmitió la solicitud Fig. 5.1.1.1 Variables de ambiente CGI 5.1.2 SERVLETS Se puede definir a un servlet como un programa JAVA que se ejecuta en el marco de un servicio de red, como puede ser un servidor WEB, y que recibe y responde a las peticiones de un cliente. DIFERENCIAS ENTRE LAS TECNOLOGÍAS CGI Y SERVLET La tecnología Servlet proporciona las mismas ventajas del lenguaje Java en cuanto a portabilidad ("write once, run anywhere") y seguridad, ya que un servlet es una clase de Java igual que cualquier otra, y por tanto tiene en ese sentido todas las características del lenguaje. Esto es algo de lo que carecen los programas CGI, ya que hay que compilarlos para el sistema operativo del servidor y no disponen en muchos casos de técnicas de comprobación dinámica de errores en tiempo de ejecución. Otra de las principales ventajas de los servlets con respecto a los programas CGI, es la del rendimiento, y esto a pesar de que Java no es un lenguaje particularmente rápido. Mientras que es necesario cargar los programas CGI tantas veces como peticiones de servicio existan por parte de los clientes, los servlets, una vez que son llamados por primera 45 vez, quedan activos en la memoria del servidor hasta que el programa que controla el servidor los desactiva. De esta manera se minimiza en gran medida el tiempo de respuesta. Además, los servlets se benefician de la gran capacidad de Java para ejecutar métodos en ordenadores remotos, para conectar con bases de datos, para la seguridad en la información, etc. Se podría decir que las clases estándar de Java ofrecen resueltos mucho problemas que con otros lenguajes tiene que resolver el programador. CARACTERÍSTICAS DE LOS SERVLETS Además de las características indicadas anteriormente, los servlets tienen las siguientes características: 1. Son independientes del servidor utilizado y de su sistema operativo, lo que quiere decir que a pesar de estar escritos en Java, el servidor puede estar escrito en cualquier lenguaje de programación, obteniéndose exactamente el mismo resultado que si lo estuviera en Java. 2. Los servlets pueden llamar a otros servlets, e incluso a métodos concretos de otros servlets. De esta forma se puede distribuir de forma más eficiente el trabajo a realizar. Por ejemplo, se podría tener un servlet encargado de la interacción con los clientes y que llamara a otro servlet para que a su vez se encargara de la comunicación con una base de datos. De igual forma, los servlets permiten redireccionar peticiones de servicios a otros servlets (en la misma máquina o en una máquina remota). 3. Los servlets pueden obtener fácilmente información acerca del cliente (la permitida por el protocolo HTTP), tal como su dirección IP, el puerto que se utiliza en la llamada, el método utilizado (GET, POST,...), etc. 4. Permiten además la utilización. de cookies y sesiones, de forma que se puede guardar información específica acerca de un usuario determinado, personalizando de esta 46 forma la interacción cliente-servidor. Una clara aplicación es mantener la sesión con un cliente. 5. Los servlets pueden actuar como enlace entre el cliente y una o varias bases de datos en arquitecturas cliente-servidor de 3 capas (si la base de datos está en un servidor distinto). 6. Asimismo, pueden realizar tareas de proxy para un applet. Debido a las restricciones de seguridad, un applet no puede acceder directamente por ejemplo a un servidor de datos localizado en cualquier máquina remota, pero el servlet sí puede hacerlo de su parte. 7. Al igual que los programas CGI, los servlets permiten la generación dinámica de código HTML dentro de una propia página HTML. Así, pueden emplearse servlets para la creación de contadores, banners, etc. 5.2 JSDK 2.0 El JSDK (Java Servlet Developer Kit), distribuido gratuitamente por Sun, proporciona el conjunto de herramientas necesarias para el desarrollo de servlets. El JSDK 2.0 se encuentra disponible en la dirección de Internet http://java.sun.comlproducts/servlet/index.httnl Se trata de un archivo de 950 Kbytes, llamado jsdk2-Win32.exe, y que puede transportarse al propio ordenador en un simple disquete. El JSDK consta básicamente de 3 partes: 1. El API del JSDK, que se encuentra diseñada como una extensión del JDK propiamente dicho. Consta de dos packages cuyo funcionamiento será estudiado en detalle en apartados posteriores, y que se encuentran contenidos en javax.servlet y javax.servlet.http. Este último es una particularización del primero para el caso del protocolo HTTP, que es el que será utilizado en este manual, al ser el más extendido en la actualidad. Mediante este diseño lo que se consigue es que se mantenga una 47 puerta abierta a la utilización de otros protocolos que existen en la actualidad (FTP, POP, SMTP, etc ), o vayan siendo utilizados en el futuro. Estos packages están almacenados en un archivo JAR (\lib\jsdk.jar). 2. La documentación propiamente dicha del API y el código fuente de las clases (similar a la de los JDK 1.1 y 1.2). 3. La aplicación servletrunner, que es una simple utilidad que permite probar los servlets creados sin necesidad de hacer complejas instalaciones de servidores HTTP. Es similar en concepción al appletviewer del JDK. Su utilización será descrita en un apartado posterior. 5.3 VISIÓN AMPLIA DEL API DE JSDK 2.0 Es necesario tener una visión amplia del API (Application Programming Interface) del Java Servlet Development Kit 2.0, de qué clases e interfaces la constituyen y de cuál es la relación entre ellas. El JSDK 2.0 contiene dos packages: javax servlet y javax.servlethttp. Todas las clases e interfaces que hay que utilizar en la programación de servlets están en estos dos packages. La relación entre las clases e interfaces de Java, muy determinada por el concepto de herencia. La clase GenericServlet es una clase abstract puesto que su método service() es abstract. Esta clase implementa dos interfaces, de las cuales la más importante es la interface Servlet. La interface Servlet declara los métodos más importantes de cara a la vida de un servlet: init() que se ejecuta sólo al arrancar el servlet; destroy() que se ejecuta cuando va a ser destruido y service() que se ejecutará cada vez que el servlet deba atender una solicitud de servicio. Cualquier clase que derive de GenericServlet deberá definir el método service(). Es muy interesante observar los dos argumentos que recibe este método, correspondientes a las interfaces ServletRequest y ServletResponse. La primera de ellas 48 referencia a un objeto que describe por completo la solicitud de servicio que se le envía al servlet. Si la solicitud de servicio viene de un formulario HTML, por medio de ese objeto se puede acceder a los nombres de los campos y a los valores introducidos por el usuario; puede también obtenerse cierta información sobre el cliente (ordenador y navegador). El segundo argumento es un objeto con una referencia de la interface ServletResponse, que constituye el camino mediante el cual el método service() se conecta de nuevo con el cliente y le comunica. el resultado de su solicitud. Además, dicho método deberá realizar cuantas operaciones sean necesarias para desempeñar su cometido: escribir y/o leer datos de un archivo, comunicarse con una base de datos, etc. El método service() es realmente el corazón del servlet. En la práctica, salvo para desarrollos muy especializados, todos los servlets deberán construirse a partir de la clase HttpServlet, sub-clase de GenericServlet. La clase HttpServlet ya no es abstract y dispone de una implementación o definición del método service(). Dicha implementación detecta el tipo de servicio o método HTTP que le ha sido solicitado desde el navegador y llama al método adecuado de esa misma clase (doPost(), doGet(), etc.). Cuando el programador crea una sub-clase de HttpServlet, por lo general no tiene que redefinir el método service(), sino uno de los métodos más especializados (normalmente doPost()), que tienen los mismos argumentos que service(): dos objetos referenciados por las interfaces ServletRequest y ServletResponse. 49 Figura 5.2 Jerarquía y métodos de las principales clases usadas para crear servlets 50 En la figura anterior aparecen también, algunas otras, interfaces, cuyo papel se resume a continuación. 1. La interfaz ServletContext permite a los servlets acceder a información sobre el entorno en que se están ejecutando. 2. La interfaz ServletConfig define métodos que permiten pasar al servlet información sobre sus parámetros de inicialización. 3. La interfaz ServletRequest permite al .método service() de GeneHcServlet obtener información sobre una petición de servicio recibida de un cliente. Algunos de los datos proporcionados por GenericServlet son los nombres y valores de los parámetros enviados por el formulario HTML y una input stream. 4. La interfaz ServletResponse permite al método service() de GenericServlet enviar su respuesta al cliente que ha solicitado el servicio. Esta interfaz dispone de métodos para obtener un output stream o un writer con los que enviar al cliente datos binarios o caracteres, respectivamente. 5. La interfaz HttpServletRequest deriva de ServletRequest. Esta interface permite a los métodos service(), doPosto, doGet(), etc. de la clase HttpServlet recibir una petición de servicio HTTP. Esta interfaz permite obtener información del header de la petición de servicio HTTP. 6. La interface HttpServletResponse extiende ServletResponse. A través de esta interfaz los métodos de HttpServlet envían información a los clientes que les han pedido algún servicio. 51 5.4 LA APLICACIÓN SERVLETRUNNER Servletrunner es la utilidad que proporciona Sun conjuntamente con el JSDK. Es a los servlets lo que él appletviewer a los applets. Sin embargo, es mucho más útil que appletviewer, porque mientras es muy fácil disponer de un navegador en el que comprobar las applets, no es tan sencillo instalar y disponer de un servidor HTTP en el que comprobar los servlets. Por esta razón la aplicación servletrunner, a pesar de ser bastante básica y poco configurable, es una herramienta muy útil para el desarrollo de servlets, pues se ejecuta desde la línea de comandos del MS-DOS. Como es natural, una vez que se haya probado debidamente el funcionamiento de los servlets, para una aplicación en una empresa real sería preciso emplear servidores HTTP profesionales. Además, servletrunner es multithread, lo que le permite gestionar múltiples peticiones a la vez. Gracias a ello es posible ejecutar distintos servlets simultáneamente o probar servlets que llaman a su vez a otros servlets. Una aclaración: servletrunner no carga de nuevo de modo automático los servlets que hayan sido actualizados de forma externa; es decir, si se cambia algo en el código de un servlet y se vuelve a compilar, al hacer una nueva llamada al mismo servletrunner utiliza la copia de la anterior versión del servlet que tiene cargada. Para que se cargue la nueva será necesario cerrar el servletrunner (Ctrl+C) y reiniciarlo otra vez. Esta operación habrá que realizarla cada vez que se modifique el servlet. Para asegurarse de que servletrunner tiene acceso a los packages del Servlet API, será necesario comprobar que la variable de entorno CLASSPATH contiene la ruta de acceso del archivo jsdk.jar en e1 directorio lib (en el Servlet API 2.1 están situados en el archivo servlet-2.1.0.jar). En la plataforma Java 2 es más sencillo simplemente se copia el JAR al directorio ext que se encuentra en \jre\lib. Esto hace que los packages sean tratados como extensiones estándar de Java. También es necesario cambiar la variable PATH para que se encuentre la aplicación servletrunner.exe. Otra posibilidad es copiar esta aplicación al directorio \bin donde están los demás ejecutables de Java. 52 5.5 ARCHIVOS DE PROPIEDADES Servletrunner permite la utilización de archivos que contienen las propiedades (properties) utilizadas en la configuración, creación e inicialización de los servlets. Las propiedades son pares del servlet.catalogo.codigo=ServletCatalogo tipo es una clave/valor. propiedad Por cuya ejemplo, "clave" es servlet.catalogo.codigo y cuyo "valor" es ServletCatalogo. Existen dos propiedades que son muy importantes para los servlets: 1. servlet. nombre.code 2. servlet. nombre.initargs La propiedad servlet.nombre.code debe contener el nombre completo de la clase del servlet, incluyendo su package. Por ejemplo, la propiedad, servlet.inventario. code=basededatos.ServletInventario asocia el nombre inventario con la clase basededatos.ServletInventario. La propiedad initargs contiene los parámetros de inicialización del servlet. El valor de un único parámetro se establece en la forma nombreDeParametro = valorDeParametro. Es posible establecer el valor de varios parámetros a la vez, pero el conjunto de la propiedad debe ser una única línea lógica. Por tanto, para una. mayor legibilidad será preciso emplear el carácter barra invertida (\) para emplear varias líneas del archivo. Así, por ejemplo: Servlet.inventario.initArgs=\ archivo=servlets/Datos,\ usuario=administrador,\ … Los distintos parámetros se encuentran separados por comas (,). El último de los parámetros no necesitará ninguna coma al final. Todas estas propiedades estarán almacenadas en un archivo que por defecto tiene el nombre servlet.properties (se puede especificar otro nombre en la línea de comandos ). Se pueden incluir líneas de comentario, que deberán comenzar por el carácter (#). Por defecto, este archivo debe estar en el mismo 53 directorio que el servlet, pero al ejecutar servletrunner puede especificarse un nombre de archivo de propiedades con un path diferente. 5.6 EJECUCIÓN DE LA APLICACIÓN SERVLETRUNNER La aplicación servletrunner se ejecuta desde la línea de comandos de MS-DOS y admite los siguientes parámetros (se despliegan tecleando en la consola "servletrunner ?"): -p puerto al que escuchar -m número máximo de conexiones -t tiempo de desconexión en milisegundos -d directorio en el que están los servlets -s nombre del archivo de propiedades Así por ejemplo, si se tuviera un servlet en el directorio c:\programas, el archivo de propiedades se llamara ServletEjemplo.prop y se quisiera que el servletrunner estuviera escuchando el puerto 8000, habría que escribir lo siguiente en la línea de comandos: C: iservletrunner -p 8000 -d c:\programas -s ServletEjemplo.prop 54 CAPÍTULO VI JAVA PUENTE ENTRE MÚLTIPLES PLATAFORMAS 55 6. JAVA: PUENTE ENTRE MÚLTIPLES PLATAFORMAS 6.1 JAVA COMO INTERFAZ DE ACCESO A LAS BASE DE DATOS Poder acceder a bases de datos remotas mediante un navegador y a través de Internet será un aspecto básico para la competitividad de las muchas empresas. ¿Que es JDBC? JDBC (Java Data Base Connection) es una API de JAVA creada para permitir ejecutar instrucciones SQL (Structured Query Language, Lenguaje estructurado de consultas), que es un lenguaje de alto nivel para crear, manipular, examinar y gestionar bases de datos relacionales. Para que una aplicación pueda hacer oraciones en una base de datos, deberá de tener el correspondiente controlador que conecte la aplicación con esta. De esta forma la API JDBC es básicamente un paquete de JAVA (java.sql) que contiene un conjunto de clases y interfaces escritas en JAVA. Las acciones de la API JDBC de JAVA se pueden resumir en: • Establecer una conexión con una base de datos, que puede ser remota o no. • Enviar sentencias SQL a la base de datos. • Procesar los resultados obtenidos de la base de datos. ¿Qué es ODBC? ODBC(Open DataBase Connectivity: Conectividad Abierta de Base de Datos) es la interfase para conectarse con bases de datos relacionales más usada por los programadores de aplicaciones. ¿Por qué usar JDBC si ya existe ODBC? 56 ODBC usa una interfaz escrita con el lenguaje de programación C. Por lo tanto como que C no es un lenguaje portable las aplicaciones JAVA perderían también automáticamente su portabilidad. • ODBC se ha de instalar manualmente en cada máquina, en cambio los controladores de JDBC como están escritos en JAVA son automáticamente instalables, portables y seguros. Existen controladores puente entre JDBC-ODBC. Estos controladores traducen las llamadas de JDBC a ODBC permitiendo comunicarse con base de datos propietarias que no tendrán conocimiento de la existencia de JAVA. De esta forma podemos trabajar con una base de datos Access de Microsoft que usa ODBC, con el lenguaje JAVA. Acceso a base de datos usando la API ODBC La API JDBC soporta los dos siguientes modelos diferentes de acceso a las base de datos: • Modelo de dos capas. • Modelo de tres capas. Modelo de dos capas En este modelo la aplicación JAVA o el Applet, se conectan directamente con la BD. Esto significa que el controlador JDBC especifico para conectarse con la BD estará instalado en el sistema local. La BD puede estar en otra máquina y se accede a ella mediante red. Esta configuración también se denomina Cliente/Servidor. El programa cliente envía instrucciones SQL a la base de datos, y ésta las procesa y envía los resultados de regreso al usuario. 57 Modelo de tres capas En este modelo, las instrucciones son enviadas a una capa intermedia que se encarga de enviar las sentencias SQL a la base de datos. El manejador de base de datos procesa las sentencias y retorna los resultados a la capa intermedia la cual se encarga de enviarlos al usuario. Este modelo ofrece las siguientes ventajas: • El nivel intermedio mantiene el control del tipo de operaciones que se puede hacer en la base de datos. Los controladores JDBC para conectarse en la base de datos, no han de residir en la maquina cliente. Figura 6.1 Modelo de dos capas 58 Figura 6.2 Modelo de tres capas 59 CAPÍTULO VII PROCESO SERVIDOR PARA LA PRESENTACIÓN DE EXÁMENES VÍA INTERNET 60 7.1 PROCESO SERVIDOR PARA LA PRESENTACIÓN DE EXÁMENES VÍA INTERNET Para generar el proceso servidor se utilizaron Servlets de java, los Servlets son procesos que se ejecutan en el servidor y no presentan ningún tipo de interfaz gráfica, se controlan por un servicio de red ( proceso servidor ), en este caso un servidor http. SERVLET SESION 1 Las funciones de este Servlet SESION1 son las siguientes: • Aceptar la clave que identificará a quien presenta el examen y que se grabará junto con las respuestas que éste emita • Acceder la base de datos de REACTIVOS para obtener en forma aleatoria las preguntas que deberán ser contestadas • Generar en forma. dinámica una página HTML que será enviada al navegador cliente presentando en un formulario las preguntas obtenidas de la base de datos. Esta página contiene una función de Javascript que controla el tiempo de que se dispondrá para contestar el formulario, una vez transcurrido este se llama al Servlet GRABARESPUESTAS SERVILET GRABARESPUESTAS Las funciones de este Servlet GRABARESPUESTAS son las siguientes: • Grabar en la base de datos RESPUESTA las respuestas dadas al formulario. • Generar en forma dinámica una página HTML que será enviada al navegador cliente, la finalidad de esta página HTML será llamar al Servlet SESION1 para la presentación de la siguiente sección de preguntas (de haberla). 61 BASE DE DATOS REACTIVOS: La base de datos REACTIVOS se generó con la aplicación Microsoft ACCESS, almacena las tablas que a su vez contienen las preguntas de cada una de las secciones (áreas de conocimiento) que deberán ser respondidas, así como las opciones respuestas para dichas preguntas. BASE DE DATOS REACTIVOS Figura 7.1 BASE DE DATOS RESPUESTA: La base de datos RESPUESTA también se generó con Microsoft ACCESS, contiene una tabla donde se almacenan las respuestas que se emitan de cada sección de preguntas, 62 almacenándose la clave que identifica a quien emite esas respuestas y la sección a que pertenecen. BASE DE DATOS RESPUESTA Figura 7,2 63 Figura 7.3 64 Ejecución del Servletrunner en el servidor Windows NT Figura 7.4 En la figura Solicitud de autentificación de usuario de windows NT server Figura 7.5 65 Solicitud de clave de aspirante de ingreso e inicio de ejecución de examen. Figura 7.6 La figura 7.7 muestra la página HTML dinámica generada por el Servlet Seccion1.class la cual muestra la sección de preguntas (formulario) teniéndose 20 minutos para contestar antes del envió automático de respuesta. Fig 7.7 Formulario con preguntas del examen de admisión 66 Página HTML generada por la última ejecución de GrabaRespuestas Figura 7.8 CODIGO DEL SERVLET SECCION l // archivo Seccion1.java import java.io.*; import javax. servlet. *; import javax.servlet.http.*; import java.sql.*; public class Seccion1 extends HttpServlet { // Declaración de variables miembro private int Num_Rea = 0; private String Pregunta = null; private String op1 = null; 67 private String op2 = null; private String op3 = null; private String op4 = null; private String op5 = nu11; private String Seccion = null; private String Clave = null; // Referencia a un objeto de la interface java.sql.Connection Connection conn = null; // El siguiente método se ejecuta una única vez (al ser inicializado el servlet // por primera vez) // Se suelen inicializar variables y ejecutar operaciones costosas en tiempo // de ejecución (abrir archivos, conectar con bases de datos, etc) public void init (ServletConfig config) throws ServletException { // Llamada al método init() de la superclase (GenericServlet) // Así se asegura una correcta inicialización del servlet super. init(config); // dsn (Data Source Name) de la base de datos String dsn = new String("jdbc:odbc:reactivos"); // Carga del Controlador del puente ODBC-ODBC try { Class. forName("sun. jdbc.odbc.JdbcOdbcDriver"); }// fin try catch(CIassNotFoundException ex) { System.out.println("Error al cargar el driver"); System.out.println(ex.getMessage()); }//fin catch 68 // Establecimiento de la conexión con la base de datos try { conn = DriverManager.getConnection(dsn, "", ""); } // fin try catch (SQLException sq1Ex) { System.out.println("Se ha producido un error al" + " establecer la conexión con: " + dsn); System. out. println(sqlEx. getMessage()); } //fin catch System.out.println("Iniciando Servlet Seccion1 (version BD)..."); } // fin del método init() // Este método es llamado por el servidor web al // "apagarse" (al hacer shut down). // Sirve para proporcionar una correcta desconexión de una base de datos, // cerrar archivos abiertos, etc. public void destroy () { super. destroy(); System.out.println("Cerrando conexion..."); try { conn.closeQ; } catch(SQLException ex){ System.out.println("No se pudo cerrar la conexion"); System.out.println(ex. getMessage()); } } // fin del método destroyQ // Método de llamada mediante un HTTP POST public void doPost (HttpServletRequest req, HttpServletResponse resp) 69 throws ServletException, IOException { boolean hayError = false; Seccion= new String(""); Clave= new String(""); Seccion=req.getParameter("Seccion"); System.out.println(Seccion); if (req.getParameter("Clave")!=null) Clave=req.getParameter("Clave"); else hayError=true; // Mandar al usuario los valores adquiridos // (Si no se ha producido error) devolverPaginaHTML(resp); } // fin doPost() public void devolverPaginaHTML(HttpServletResponse resp) { // Se obtiene un PrintWriter donde escribir (sólo para mandar texto) PrintWriter out=null; try { out=resp.getWriter(); } //fin try catch (IOException io) { System.out.println("Se ha producido una excepcion"); }//fin match // Se establece el tipo de contenido MIME de la respuesta resp.setContentType("textlhtml"); out.println("<html>"); 70 out.println("<head>'"); out.println("<title>Seccion de Preguntas</title>"); out.println("<script languaje=\"JavaScript\"> "); out.println(" var minutos = 0;"); out.println(" var segundos = 0;"); out. println(" function crono(){"); out.println(" var tiempo = \"\""); out.println(" if (minutos >= 1){ Preguntas. submit();return 0; } "); out.println(" if (segundos = 60){"); out.println(" minutos++;"); out.println(" segundos =0;"); out.println(" }else"); out.println(" segundos++; "); out.println(" setTimeout(\"crono()\",1000);"); out.println(" }"); out.println("</script> "); out.println( "</head>"); out.println("<body onLoad=\"crono();\">"); out.println("<FORM NAME=\"Preguntas\" ACTION=\"http://Redesx:8000/servlet/GuardaRespuestas\" METHOD=\"POST\">"); out.println("<font size=\"3\" face=\"Arial Narrow\">"); Statement stmt=null; ResultSet rs; int numeroFilasActualizadas=-0; int j; int Alea=0; // Ejecución del query de actualización de la base de datos for(j=l;j<6;j++) { 71 try { stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM Reactivos S"+Seccion+ " WHERE R_Num_Reac = "+j); rs, next(); Num_Rea=rs.getInt(1); Pregunta=rs.getString(2); op1=rs.getString(3); op2=rs.getString(4); op3=rs.getString(5); op4=rs.getString(6); op5=rs.getString(7); } // fin try catch (SQLException sql) { System.out.println("Se produjo un error creando Statement"); System.out.println(sql.getMessage()); // return -2; } //fin catch finally { // Se cierra el Statement if(stmt!=null) { try { stmt.close(); } //fin try catch(SQLException e){ System.out.println("Error cerrando Statement"); System. out. println(e. getMessage()); // return -3; }// fin catch }//fin del if }// fin finally 72 // Se mandan los valores out.println("<p>"+Pregunta+"<br>"); out.println("<input type=\"radio\" narre=\"preg"+j+"\" value=\"A\" CHECKED>"+opl+"<br>"); out.println("<input type=\"radio\" narre=\"preg"+j+"\" value=\"B\">"+op2+"<br>"); out.println("<input type=\"radio\" narre=\"preg"+j+"\" value=\"C\">"+op3+"<br>"); out.println("<input type=\"radio\" narre=\"preg"+j+"\" value=\"D\">"+op4+"<br>"); out.println("<input type=\"radio\" narre=\"preg"+j+"\" value=\"E\">"+op5+"<br></p>"); out.println("<input type=\"hidden\" narre=\"Reac"+j+"\" value=\""+Num_Rea+"1">")} // fin del for out.println("</font>"); out.println("<input type=\"HIDDEN\" narre=\"Clave \" value=\""+Clave+"\">"); out.println("<input type=\"HIDDEN\" narre=\"Seccion\" value=\""+Seccion+"\">"); out.println("</FORM>"); out.println("</body>"); out. println("</html>"); // Se fuerza la descarga del buffer y se cierra el PrintWriter out. Flush(); out.close(); } // fin de devolverPaginaHTML() // Función que permite al servidor web obtener una // pequeña descripción del servlet, qué // cometido tiene, nombre del autor, comentarios adicionales, etc. public String getServletInfo() { 73 return "Este servlet proporciona preguntas para un cuestionario "+ "leyendolos de una base de datos"; } // fin de getServletInfo() } // fin de la clase seccionl CODIGO DEL SERVLET GUARDARESPUESTAS // archivo GuardaRespuestas.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class GuardaRespuestas extends HttpServlet { // Declaración de variables miembro private String Clave = null; private String Seccion = null; private int Reac[] = new int[20]; private String Op_Reac[] = new String[20]; String Tempo; // Referencia a un objeto de la interface java.sql.Connection Connection conn = null; // El siguiente método se ejecuta una única vez (al ser inicializado el servlet // por primera vez) // Se suelen inicializar variables y ejecutar operaciones costosas en tiempo 74 // de ejecución (abrir archivos, conectar con bases de datos, etc) public void init (ServletConfig config) throws ServletException { // Llamada al método init() de la superclase (GenericServlet) // Así se asegura una correcta inicialización del servlet super. init(config); // dsn (Data Source Name) de la base de datos String dsn = new String(" jdbc:odbc:Respuesta"); // Carga del controlador del puente ODBC-ODBC try { Class. forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException ex) { System.out.println("Error al cargar el driver"); System.out.println(ex.getMessage()); } // Establecimiento de la conexión con la base de datos try { conn = DriverManager.getConnection(dsn, "", ""); } catch (SQLException sqlEx) { System.out.println("Se ha producido un error al" + " establecer la conexión con: " + dsn); System.out.println(sqlEx.getMessage()); } System.out.println("Iniciando Servlet GuardaRespuestas (version BD)..."); } // fin del método init() // Este método es llamado por el servidor web al // "apagarse" (al hacer shut down). // Sirve para proporcionar una correcta desconexión de una base de datos, 75 // cerrar archivos abiertos, etc. public void destroy () { super. destroy(); System.out.println("Cerrando conexion..."); try { conn.close(); }catch(SQLException ex){ System.out.println("No se pudo cerrar la conexion"); System.out.println(ex.getMessage()); } }// fin del método destroy() // Método de llamada mediante un HTTP POST public void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { boolean hayError = false; int i; String Cadena; Cadena = new String('"); Tempo = new String("); Clave = new String("); Seccion = new String("); // adquisición de los valores del formulario for(i=O;i<S;i++) { Cadena="preg"+(i+ l ); Op_Reac[i]= req.getParameter(Cadena); } for(i=0;i<S;i++) 76 { Cadena="Reac "+(i+ 1); Tempo = (req.getParameter(Cadena)); Reac[i]= i+1; } Seccion = req.getParameter("Seccion"); Clave = req.getParameter("Clave"); // Mandar al usuario los valores adquiridos // (Si no se ha producido error) if(!hayError) { if (actualizarBaseDeDatos() = 0) devolverPaginaHTML(resp); else resp.sendError(500, "Se ha producido un error"+ " al actualizar la base de datos"); } else resp. sendError(500, "Se ha producido un error"+ " en la adquisición de parámetros"); } // fin doPost() public int actualizarBaseDeDatos() { // crear un statement de SQL Statement stmt=null; int numeroFilasActualizadas=0; String Reactivos_Opciones; Reactivos_Opciones = new String("); int j=0; 77 Reactivos_Opciones=Reactivos_Opciones+"`+Clave+`,"+Seccion; for(j=O;j<20;j++) { Reactivos_Opciones=Reactivos_Opciones+","+Reac[j]; }// fin for for(j=0;j<20j++) { Reactivos_Opciones=Reactivos_Opciones+","'+Op_Reac[j]+"';" } // fin for System.out.println(Reactivos Opciones); // Ejecución del query de actualización de la base de datos try { , stmt = conn.createStatement(); numeroFilasActualizadas = stmt.executeUpdate("INSERT INTO Respuestas VALUES"+ "("+Reactivos Opciones+")"); if(numeroFilasActualizada.s!=1) return - l; } // fin try catch (SQLException sql) { System.out.println("Se produjo un error creando Statement"); System.out.println(sql.getMessage()); return -2; } // fin catch finally { // Se cierra el Statement if(stmt!=null) { try { 78 stmt.close(); } // fin try catch(SQLException e){ System.out.println("Error cerrando Statement"); System.out.println(e.getMessage()); return -3; } // fin catch } // fin if return 0; } // fin finally } // fin método actualizarBaseDeDatos() public void devolverPaginaHTML(HttpServletResponse resp) { // Se obtiene un PrintWriter donde escribir (sólo para mandar texto) PrintWriter out=null; try { out=resp. getWriter(); } //fin try catch (IOException ío) { System.out.println("Se ha producido una excepcion"); }//fin catch int s=0; // Se establece el tipo de contenido MIME de la respue sta resp.setContentType("text/html"); out.println("<html>"); out.println("<head>"); //Seccion=Seccion.toString s=Integer. parseInt(Seccion); if(s<=1){ 79 s++; Seccion=Integer.toString(s); out.println("<title>Siguiente seccion de Preguntas</title>"); out.println("</head>"); out.println("<body>"); out.println("<center>"); out.println("<h2>Cargando la siguiente seccion<h2>"); out.println("</center>"); out.println("<FORM NAME=1"SigSeccion\" ACTION=\"http://redesx:8000/servlet/Seccionl\" METHOD= \"POST\">"); out.println("<INPUT TYPE= \"HIDDENi" NAME=\"Seccion\" VALUÉ=\"2\" >"); out.println("<INPUT TYPE=\"HIDDENI" NAME=\"Clave\" VALUÉ=\""+ Clave+"\">"); out.println("</FORM>"); out.println("<SCRIPT>"); out.println(" SigSeccion.submit();"); out. println("</SCRIPT>"); } else { out.println("<title>Siguiente seccion de Preguntas</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2>Examen finalizado<h2>"); } out.println("</body>"); out. println("</html>"); // Se fuerza la descarga del buffer y se cierra el PrintWriter out.flush(); out.close(); } // fin de devolverPaginaHTML() 80 // Función que permite al servidor web obtener una // pequeña descripción del servlet, qué // cometido tiene, nombre del autor, comentarios adiciona les, etc. public String getServletInfo() { return "Este servlet lee los datos de un formulario "+ "y los introduce en una base da datos"; } // fin de getServletInfo() }// fin de la clase GuardaRespuesta 81 CAPÍTULO VIII CONCLUS IONES 82 CONCLUSIONES No se puede negar que la Red de Redes (Internet), esta cambiando nuestra forma de relacionarnos, nuestra forma de vivir. Podemos realizar cualquier tipo de transacción comercial, acceder a información de todo tipo, así también podemos conocer y conversar con otras personas, solo basta acceder al "Portal"2 adecuado. Existen en la actualidad instituciones educativas que imparten cursos de preparación a través de la Red de Redes, esto en diferentes niveles de estudios, como licenciaturas, especialidades, maestrías, etc.. Esto representa una gran ventaja a favor de las personas que no pueden desplazarse de su lugar de residencia. Para las instituciones educativas que han integrado el acceso a la red de redes como parte de los servicios ofrecidos al alumnado, sería de gran beneficio el implementar un sitio WEB donde publique los requisitos para. alumnos de nuevo ingreso, así como realizar la aplicación de exámenes de admisión a través de la Internet, ya que ampliaría su área de captación de alumnos de nuevo ingreso. Actualmente la infraestructura de comunicaciones de red que soporta a la Internet en México está creciendo en forma importante, tanto en extensión como en capacidad, existe una mayor oferta de servicios, lo que hasta cierto punto los ha hecho económicamente más accesibles. Por ejemplo, en la actualidad existe mas de una empresa promocionando los servicios de acceso inalámbrico a la Internet, ya sea usando celulares u otro tipo de dispositivos. De igual forma existe ya diversidad de plataformas de software que permiten la creación de páginas dinámicas ( Java, ASP, PHP, CGI, VbScripts, PERL, C++, C#), lo que evita tenerse que "casar" con una plataforma de desarrollo determinada. __________________________ 2 PORTAL: Sitio WEB que ofrece múltiples servicios relativos a una actividad o servicio 83 BIBLIOGRAFÍA Deitel, H.M. (1998). Como programar en JAVA. (lª ed.). México: Prentice Hall. Orós Cabello, J. C. (1999). Diseño de páginas web interactivas con JavaScrint. (1ª ed. ). México: Alfaomega. Douglas, E. C. (1997). Redes de computadoras, Internet e Intercedes. (lª ed.). México: Prentice Hall. Lugares en la Red http://www.sun.com http://www.sunsite.unc.edu/javafaq/java- faq.html http://www.ujzweb.cs.ualberta.ca/~nelson/java/JavaTutorial.html http://www.acme.com/iava http://www.teamíava.com http://www.JARS.com http://www.yahoo.com/languajes/Java http://www.javasoft.com http://www.javasoft.com/tutorial/index.htm 84 GLOSARIO ANONYMOUS Usuario, genérico admitido en la mayoría de los servidores FTP. Como palabra clave debemos dar nuestra dirección de correo electrónico. ARCHIE Permite la búsqueda de información en los servidores FTP Anónimos. Basado en la arquitectura Cliente/Servidor, archie da nombre a ambos. Los servidores archie contienen una lista de toda. la información que contienen los servidores FTP Anónimos a los que agrupa. ARPAnet Antigua red para la investigación en proyectos avanzados del gobierno de E.U.A; de la cual surgió Internet. AUTOPISTA DE LA INFORMACIÓN Término acuñado por Al Gore, vicepresidente de los Estados Unidos, hacia 1991, para definir una estructura de comunicación del futuro, en principio, para mantener a los Estados Unidos competitivos, que integra todo tipo de medios y servicios a alta velocidad. Internet no es la Autopista de la información (que todavía no es una realidad), pero sí lo más parecido que existe hasta el momento. BROWSER Navegador u hojeador. Un cliente de World Wide Web. Una herramienta para obtención de información, permite ver el contenido de documentos WEB. Por ejemplo Mosaic, Netscape, Opera, Internet Explorer, etc. 85 CGI (Common Gateway Interface) CGI, es una interfase para que programas externos (pasarelas) puedan ejecutarse bajo un servidor de información. Actualmente, los servidores de información soportados son servidores HTTP (hypertext Transfer Protocol). Las pasarelas pueden usarse para muchos propósitos, algunos de ellos: • Manejo de formas y cuestionarios • Conversión de las man pages del sistema a paginas html y presentación del resultado por parte del cliente WWW • Interfase con bases de datos WAIS y Archie, y presentación de los resultados en formato html por parte de clientes WWW • Mensajería electrónica (comunicación con los administradores WWW) DNS (Domain Name Server) Servidor de Nombres de Dominio. Cualquiera de los servidores automáticos de Internet que convierten nombres fáciles de entender (como www.miempresa.com) a direcciones IP (como 192.178.26.11). HTML (Hypertext Markup Language) Lenguaje usado para escribir documentos para servidores World Wide Web. Es una aplicación de la ISO Standard 8879:1986 ( SGML, Standard Generalized Markup Language). HTTP (HyperText Transport Protocol) Protocolo de Transferencia de Hipertexto. El protocolo usado en la WWW para transmitir las páginas de información entre el programa navegador y el servidor. IETF (Internet Engineering Task Force). 86 Fuerza de tarea de Ingeniería de Internet. Responsable de la faz técnica de Internet. NCSA (National Center for Supercomputing Applicatioas) NCSA, de la Universidad de Illinois, desarrolladores de Mosaic, el primer cliente para servidores WWW PERL Perl es un lenguaje para manipular textos, ficheros y procesos. Perl proporciona una forma fácil y legible para realizar trabajos que normalmente se realizarían en C o en algunos Shells. Podría decirse que Perl está entre un lenguaje de alto nivel (tipo C) y comandos de shell. RFC (Request For Comment) Documentos que circulan en Internet referidos a protocolos, normas, información, etc. SGML (Standard Generalized Markup Language) Lenguaje para la descripción de otros lenguajes de documentos estructurales basados en etiquetas. Por ejemplo, el HTML está definido mediante el SGML. SSL (Secare Socket Layer) Nivel de socket de seguridad. Protocolo que utiliza Netscape para proporcionar transacciones seguras a través de la red. Usenet (USEer NETwork) Grupos de debate de Internet. Uno de los primeros formatos de "correo electrónico colectivo". Actualmente hay unos 10000 grupos de debate diferentes. 87 WWW (WorldWide Web) Sistema de Internet para vincular mediante hipertexto en todo el mundo documentos multimedia, permitiendo un fácil acceso, totalmente independiente de la ubicación física, a la información común entre documentos. 88