UNIVERSIDAD DON BOSCO FACULTAD DE INGENIERÍA TRABAJO DE GRADUACIÓN PARA OPTAR AL GRADO DE INGENIERO EN CIENCIAS DE LA COMPUTACIÓN ELABORACION DE GUIA TEÓRICA Y PRÁCTICA SOBRE LOS ROBOTS SPIDER PRESENTADO POR BLANCO FLORES, VANESSA ESMERALDA CUBIAS CORTEZ, VICTOR FERNANDO SORTO ALVARENGA, JOSÉ WILLIAM ASESOR ING. RENÉ ANGULO MARZO 2008 EL SALVADOR, CENTROAMERICA. UNIVERSIDAD DON BOSCO FACULTAD DE INGENIERÍA RECTOR ING. FEDERICO MIGUEL HUGUET SECRETARIO GENERAL LIC. MARIO RAFAEL OLMOS DECANO FACULTAD DE INGENIERIA ING. ERNESTO GODOFREDO GIRON MARZO 2008 EL SALVADOR, CENTROAMERICA. UNIVERSIDAD DON BOSCO FACULTAD DE INGENIERÍA TRABAJO DE GRADUACIÓN PARA OPTAR AL GRADO DE INGENIERO EN CIENCIAS DE LA COMPUTACIÓN ELABORACION DE GUIA TEÓRICA Y PRÁCTICA SOBRE LOS ROBOTS SPIDER ____________ ____________ ____________ JURADO JURADO JURADO ____________ ____________ ASESOR TUTOR MARZO 2008 EL SALVADOR, CENTROAMERICA. PREFACIO En la actualidad Internet es considerado como la principal fuente de recursos de información, convirtiéndose de hecho en el cuarto medio de comunicación social utilizado a nivel mundial. En Internet existen básicamente cinco formas de acceder a la información: entrando directamente a un grupo de noticias, suscribiéndose a un boletín de noticias y recibir la información solicitada en su lista de correo, ir directamente a una página Web de la que se conoce de antemano su dirección URL, navegando a través de los enlaces presentes contenidos en una página Web o usando los motores de búsqueda. Desde el punto de vista del usuario “navegar” en el World Wide Web en busca de información de interés resulto en sus comienzos, un poco dificultoso, lento y muchas veces improductivo. Con el objetivo de solucionar estos problemas, surgieron distintas soluciones: las anotaciones de URL´S favoritas (bookmarks), buscadores por palabras clave como: Google, Yahoo, AltaVista entre otros que ayudan a los usuarios a buscar información de acuerdo a un criterio especifico. Los buscadores por palabras clave utilizan un programa llamado Robot Spider para llevar a cabo las búsquedas. Los Robots Spider son agentes inteligentes pues tienen incorporadas técnicas de aprendizaje. A diferencia de los buscadores tradicionales, los robots no indexan el Web, ellos “caminan” sobre el Web, analizando y almacenando información relevante. Las personas que hacen uso de la mayoría de buscadores comerciales como Google, no saben realmente como estos funcionan, ni mucho menos como están compuestos. En nuestro país la mayoría de personas se han vuelto consumistas del Internet, todo el mundo utiliza los buscadores y por ende los robots spiders; pero nadie produce esta clase de software para el cual no se necesitan muchos recursos, más que una computadora con conexión a Internet. Las pocas tesis acerca del tema que se han realizado en el país no detallan con exactitud como implementaron el robot spider en la realización de su buscador y mucho menos se explica como funcionan estos robots, ya que no era el objetivo de estos trabajos de graduación, además que en estos documentos no se utilizaron las nuevas herramientas tecnológicas como por ejemplo MySQL para el almacenamiento de la información obtenida y catalogada por el robot que hacen mas fácil la puesta en marcha de un buscador. Por tales razones se hace necesario el desarrollo de un documento que detalle el funcionamiento y las partes que componen un robot spider, así como un ejemplo de uno de sus principales usos, en este caso implementarlo dentro de un buscador. Se espera que las personas que hagan uso de esta guía sean capaces de elaborar su propio buscador, despierten su interés y que desarrollen futuros proyectos. Basándose en lo expuesto anteriormente el documento esta dividido en seis capítulos que se resumen de la siguiente manera: el capítulo uno es una Introducción a la robótica en donde se explica el concepto de "robot" aplicado a programas computacionales que utilizan el protocolo HTTP para explorar grandes porciones del Web. El capítulo dos lleva como nombre Conceptos básicos de redes y programación, contiene información sobre redes y protocolos de Internet para comprender la comunicación entre computadoras en el Web, se abordan temas como modelo cliente/servidor, lenguajes de programación para Web y fundamentos de Internet. El capítulo tres Sistemas de búsqueda en Internet (robot Spider) contiene la información sobre los robots Spider y su papel en los motores de búsqueda: partes o componentes y los diferentes tipos de buscadores, indexación, estandarización de documentos, estructura de la base de datos. En el capítulo cuatro Algoritmos y conceptos utilizados en la elaboración de robots Spider se estudian los algoritmos de ranking y sus técnicas WebQuery, HITS, PageRank y algoritmo de crawling y el recorrido que puede ser Breadth- First (cobertura amplia pero no profunda) Depth-First (cobertura vertical). Y se explica además "el protocolo de exclusión de robots" y escrutinio de sitios. Como parte practica de la guía se tiene el capítulo cinco llamado Combine System, en él se estudian los distintos comandos de configuración de este robot como: CombineINIT, CombineCtrl, CombineUtil, Combine Export y sus funciones y configuración básica: Crawling o búsqueda, administración de base de datos y archivos de configuración. Y por ultimo el capítulo 6 que lleva por nombre Implementación del robot Combine System en un buscador Web, es una guía practica para que el lector de la misma sea capaz de elaborar su propio buscador Web, teniendo como herramienta una computadora conectada a Internet, el software de ingeniería en una caja y conocimientos básicos en programación. AGRADECIMIENTOS - En primer lugar a Dios por permitirme por medio de sus bendiciones, su fidelidad y amor poder terminar mis estudios y de la sabiduría y tolerancia que puso en mí cada día. - A mis padres y abuelita, por su confianza puesta en mí y su apoyo incondicional a lo largo de mi carrera. - A mis compañeros de tesis y todas las personas que de manera directa o indirectamente han sido un apoyo y han colaborado para la finalización de este trabajo. Vanessa Flores AGRADECIMIENTOS - Primeramente a Dios todopoderoso que me permitió estar con vida para poder culminar mi carrera, gracias por darme las fuerzas para seguir adelante a pesar de las adversidades que se presentaron. - Le agradezco a mis padres por darme la vida, especialmente a mi padre Napoleón Cubías que siempre estuvo conmigo apoyándome a lo largo de mi carrera, gracias por toda tu ayuda este logro también es tuyo y no hubiese sido posible sin tu gran apoyo. - Agradezco también a mis segundos padres mis abuelos quienes me han apoyado a lo largo de mi vida, gracias por estar conmigo cuando lo necesitaba, deseo dedicarle este logro también a mi abuela Julia García que estoy seguro me seguirá apoyando desde el cielo gracias por todo. - Y agradezco también a todas las personas que de una u otra forma me ayudaron para que esto se llevase a cabo familia, amigos y a mis compañeros de tesis con los cuales compartí los problemas para la realización de este trabajo. Víctor Cubías AGRADECIMIENTOS • A Dios y a la Virgen María: Por su continua presencia en mi vida, por las dádivas incomparables, como lo son, amigos y compañeros de estudio que conocí a lo largo de estos años, también por otorgarme salud, serenidad y concentración. • A mis padres: Por haberme brindado su apoyo incondicional y haber confiado en mí, especialmente a mi madre, por su amor, ejemplo y sabiduría, de conocer el tiempo correcto de instruir, aconsejar y corregir; en especial por sus oraciones. • A mis hermanos: Por su compañía y nobleza. • A mis compañeros de tesis: Por brindarme su amistad, con quienes he compartido momentos de trabajo y alegría, y que convierten este logro en algo especial. • Y a todas aquellas personas que de manera directa o indirectamente me ayudaron a lo largo de este camino con consejos, muestras de cariño y/o constante apoyo. William Sorto ÍNDICE. CAPITULO I. DEFINICIÓN EL ANPROYECTO. Págs. 1.1 ANTECEDENTES........................................................................................... 1 1.1.1 Breve historia de los robots spider.…….…………………………......….. 1 1.1.2 Estudios realizados en el país…...……………………………………..…. 2 1.2 IMPORTANCIA DE LA INVESTIGACIÓN…………………………………..... 4 1.2.1 Planteamiento del Problema............................................................ 4 1.2.2 Definición del Tema......................................................................... 4 1.2.3 Justificación..................................................................................... 4 1.3 OBJETIVOS…………………………………………………………………......... 5 1.3.1 General............................................................................................. 5 1.3.2 Específicos....................................................................................... 5 1.4 ALCANCES Y LIMITANTES….……………………………………………........ 6 1.4.1 Alcances.......................................................................................... 6 1.4.2 Limitantes....................................................................................... 11 1.5 FACTIBILIDAD……………………………………………………………........... 12 1.5.1 Factibilidad Técnica……………………………………………........... 12 1.5.2 Factibilidad Económica………………………………………….......... 12 1.5.3 Factibilidad Operativa……………………………………………........ 14 1.6 METODOLOGIA DE LA INVESTIGACIÓN………………………….............. 15 1.7 CRONOGRAMA DE ACTIVIDADES……………….………………………..... 16 1.8 MARCOTEORICO....……………………………………………………........... 18 1.8.1 Robots del Web.............................................................................. 18 1.8.2 Robot Spider Combine System……............................................... 19 1.8.3 Clases de buscadores….…………………………………..…….…... 20 CAPITULO II. ELABORACIÓN DE GUÍA TEÓRICA Y PRÁCTICA SOBRE LOS ROBOTS SPIDER. Introducción………………………………………………………………………….....22 2.1 Introducción a la Robótica............................................................................ 23 2.1.1 Concepto de Robot aplicado a la Web......................................................... 24 2.1.2 Agentes......................................................................................................... 25 2.1.2.1 Agente autónomo............................................................................ 26 2.1.2.2 Agente de inteligente...................................................................... 26 2.1.2.3 Agente de usuario........................................................................... 26 2.1.3 Comportamiento de robots………………………………………………….... 27 2.1.3.1 Spiders………………………………………………………………….. 27 2.1.3.2 Web ants………………………………………………………………... 27 2.1.3.3 Web crawlers…………………………………………………………… 28 2.1.3.4 Worms………………………………………………………………… 28 2.1.3.5 Wanderers……………………………………………………………… 28 2.1.3.6 Knowbots……………………………………………………………….. 28 2.1.4 Tipos de robots………………………………………………………………….. 29 2.1.4.1 Robot de análisis estadístico.......................................................... 29 2.1.4.2 Robot de mantenimiento................................................................. 29 2.1.4.3 Robot de copia a espejo................................................................. 30 2.1.4.4 Robot de ordenamiento de recursos............................................... 30 2.1.4.5 Robot combinado............................................................................ 30 2.2 Conceptos Básicos de Redes y Programación.......................................... 34 2.2.1 Componentes conceptuales de una red....................................................... 35 2.2.1.1 Modelo OSI..................................................................................... 35 2.2.1.1.1 Capa física................................................................................... 36 2.2.1.1.2 Capa de enlace............................................................................ 37 2.2.1.1.3 Capa de red................................................................................. 38 2.2.1.1.4 Capa de transporte...................................................................... 39 2.2.1.1.5 Capa de sesión............................................................................ 40 2.2.1.1.6 Capa de presentación.................................................................. 41 2.2.1.1.7 Capa de aplicación....................................................................... 42 2.2.1.2 Protocolo......................................................................................... 43 2.2.1.3 Protocolo TCP/IP............................................................................ 44 2.2.1.3.1 IP.................................................................................................. 44 2.2.1.3.2 TCP.............................................................................................. 44 2.2.1.3.3 Dirección IP.................................................................................. 45 2.2.2 Modelo Cliente/Servidor............................................................................... 46 2.2.2.1 Proceso cliente................................................................................ 46 2.2.2.2 Proceso servidor............................................................................. 46 2.2.3 Lenguajes de programación para la Web..................................................... 47 2.2.3.1 C/C++………………………………………………………………….... 47 2.2.3.2 Java………………………………………………………………………49 2.2.3.3 Scripts…………………………………………………………………… 51 2.2.3.4 Perl………………………………………………………………………. 52 2.2.3.5 PHP…………………………………………………………………...… 53 2.2.3.6 XML……………………………………………………………………... 55 2.2.3.7 ActiveX………………………………………………………………….. 56 2.2.3.8 CGI………………………………………………………………………. 57 2.2.3.9 VBScript………………………………………………………………… 58 2.2.3.10 JavaScript..................................................................................... 59 2.2.3.11 JScript........................................................................................... 60 2.2.4 Fundamentos de Internet.............................................................................. 62 2.2.4.1 Sistema de nombres de dominio (DNS).......................................... 62 2.2.4.2 URI ó URL....................................................................................... 64 2.2.4.2.1 Referencias URI........................................................................... 67 2.2.4.3 HTML.............................................................................................. 68 2.2.4.4 HTTP............................................................................................... 69 2.2.4.5 FTP................................................................................................. 70 2.2.4.5.1 Servidor FTP................................................................................ 72 2.2.4.5.2 Cliente FTP.................................................................................. 73 2.2.4.5.3 Acceso anónimo........................................................................... 73 2.2.4.5.4 Acceso de usuario........................................................................ 74 2.2.4.5.5 Acceso de invitado....................................................................... 74 2.3 Sistemas de Búsqueda en Internet (Robot Spider).................................... 78 2.3.1 Definición de sistemas de búsqueda............................................................ 79 2.3.2 Estructura de los sistemas de búsqueda...................................................... 79 2.3.3 Arquitectura de los sistemas de búsqueda................................................... 80 2.3.3.1 Arquitectura centralizada................................................................ 80 2.3.3.2 Arquitectura distribuida................................................................... 81 2.3.4 Aplicaciones de los robots Web.................................................................... 83 2.3.5 Entendiendo el funcionamiento de un robot................................................. 83 2.3.5.1 El papel de los robots en los motores de búsqueda........................84 2.3.5.2 Aspectos de diseño de los robots................................................... 84 2.3.6 Clasificación de los sistemas de búsqueda.................................................. 86 2.3.6.1 Directorios....................................................................................... 86 2.3.6.2 Motores de búsqueda..................................................................... 87 2.3.6.3 Buscadores híbridos....................................................................... 88 2.3.6.4 Metabuscadores.............................................................................. 89 2.3.7 Conceptos de recolección y robots............................................................... 90 2.3.8 Representación del documento.................................................................... 91 2.3.8.1 Palabras clave (KeyWord).............................................................. 91 2.3.8.2 Uso de Metadatos y etiquetas ......................................... 92 2.3.8.3 Análisis de relevancia..................................................................... 95 2.3.8.3.1 Métodos de análisis de texto........................................................ 96 2.3.8.3.2 Preprocesamiento de documentos.............................................. 96 2.3.8.3.3 Análisis léxico del texto................................................................ 97 2.3.8.3.4 Eliminación de Stopwords………………………………………….. 98 2.3.8.3.5 Stemming…………………………………………………………….. 98 2.3.8.3.6 Thesaurus……………………………………………………………. 99 2.3.8.4 Estandarización.................................................................... ........103 2.3.8.4.1 DCMI, Dublín Core Metadata Initiative.......................................104 2.3.8.4.2 MCF, Meta Content Framework…………………………………..105 2.3.8.4.3 RDF, Resource Description Framework………………………....105 2.3.9 Estructura de la base de datos...................................................................106 2.3.9.1 Organización.................................................................................107 2.3.9.1.1 Base de datos administrada por DBMS.....................................107 2.3.9.1.2 Base de datos de bajo nivel.......................................................107 2.3.9.2 Componentes................................................................................108 2.3.9.2.1 Componentes internos...............................................................108 2.3.9.2.1.1 Archivos virtuales....................................................................108 2.3.9.2.1.2 Léxico......................................................................................108 2.3.9.2.2 Componentes externos..............................................................109 2.3.9.2.2.1 Hit List.....................................................................................109 2.3.9.2.2.2 Almacén..................................................................................109 2.3.9.2.2.3 Índice de documentos.............................................................109 2.3.9.2.2.4 Archivo Mínimo............................................................... ........109 2.3.9.3 Funcionamiento interno de los sistemas de búsqueda.................110 2.3.10 Aplicación Cliente/Servidor.......................................................................110 2.3.10.1 Motores de búsqueda..................................................................111 2.3.10.2 Directorios...................................................................................114 2.3.10.3 Interfaces dependientes del navegador…...................................116 2.3.10.4 Cuando usar uno u otro tipo de sistema de búsqueda...............116 2.3.10.5 Instrucciones para el usuario......................................................117 2.3.10.5.1 Opciones de búsqueda............................................................117 2.3.10.5.2 Búsqueda avanzada................................................................118 2.4 Algoritmos y conceptos utilizados en la elaboración de Robots Spider. 2.4.1 Algoritmo de Crawling.................................................................................124 2.4.2 Implementación de escrutinio de sitios Web...............................................125 2.4.2.1 Escrutinio simple......................................................................................125 2.4.2.2 Escrutinio sofisticado...............................................................................126 2.4.2.2.1 Evitar la redundancia............................................................................126 2.4.2.2.2 Efectuar la discriminación.....................................................................127 2.4.2.2.3 Discriminación por tipos de archivos....................................................127 2.4.2.2.4 Discriminación Server Polling...............................................................128 2.4.2.2.5 Limitar el ámbito....................................................................................128 2.4.2.2.6 Limitar la profundidad del escrutinio.....................................................129 2.4.2.2.7 Otras consideraciones..........................................................................129 2.4.2.2.7.1 Marcos (Frames)................................................................................129 2.4.2.2.7.2 Contenidos dinámicos........................................................................130 2.4.3 Algoritmo de Ranking..................................................................................132 2.4.4 Exclusión de robots.....................................................................................136 2.4.4.1 Protocolo de exclusión de robots.............................................................136 2.4.4.2 Etiquetas para robots................................................................141 2.5 Combine System..........................................………………………………….146 2.5.1 Instalación del Combine System………………………………………………149 2.5.1.1 Instalación en Distribución Linux Debian 4.0.................................149 2.5.1.2 Requisitos de instalación en sistemas operativos no soportados.154 2.5.1.2.1 Módulos externos.......................................................................154 2.5.2 Prueba del Combine System......................................................................156 2.5.3 Utilizando escenarios de búsqueda dentro del Combine System...............159 2.5.3.1 Búsquedas generales sin restricciones.........................................159 2.5.3.2 Escrutinio enfocado – restricción de dominios..............................159 2.5.3.3 Escrutinio haciendo uso de definiciones de tópicos......................164 2.5.3.4 Escrutinio haciendo uso de definiciones de tópicos y un dominio Especifico .sv…………………………………………………………..170 2.6 Implementación del Robot Combine System en un Buscador Web……176 2.6.1 Instalación del paquete Search in a Box System……………………………180 2.6.2 Listado de archivos básicos para realizar el buscador……………………...193 Glosario................................................................................................................197 Conclusiones…………………………………………………………………………...205 Bibliografía...........................................................................................................206 Anexos.................................................................................................................211 Apéndice A. Etiquetas HTML...............................................................................211 Apéndice B. Guía de CPAN.................................................................................213 Apéndice C. Respuestas a las preguntas de repaso...........................................216 ÍNDICE DE TABLAS Y FIGURAS. Págs. Tabla 2.2.1 Dominios de primer nivel.................................... .......... .......... .......... 63 Tabla 2.2.2 Esquemas URL...................................................................................66 Figura 2.2.1 Capas del modelo OSI...................................................................... 35 Figura 2.2.2 Una parte del espacio de nombres de dominios.............................. 63 Figura 2.2.3 Esquema FTP.................................................................................... 71 Figura 2.3.1 Estructura de un motor de búsqueda............................................... 79 Figura 2.3.2 Componentes de una arquitectura centralizada............................... 81 Figura 2.3.3 Componentes de una arquitectura distribuida.................................. 82 Figura 2.3.4 Ejemplo de un directorio................................................................... 87 Figura 2.3.5 Ejemplo de un buscador híbrido....................................................... 88 Figura 2.3.6 Ejemplo de un Metabuscador........................................................... 89 Figura 2.3.7 Representación gráfica de la ecuación de ley de Zipf.....................101 Figura 2.3.8 Representación grafica de la ecuación Ley de Heaps.....................102 Figura 2.3.9 Buscador Google.............................................................................111 Figura 2.3.10 Resultados de una búsqueda en Google.......................................112 Figura 2.3.11 Buscador Altavista.........................................................................113 Figura 2.3.12 Buscador Yahoo............................................................................113 Figura 2.3.13 Buscador WebCrawler...................................................................114 Figura 2.3.14 Directorio Yahoo............................................................................115 Figura 2.3.15 Categorías y subcategorías de un directorio.................................115 Figura 2.3.16 Ejemplo de un buscador que se ejecuta como un programa independiente................................................................116 Figura 2.3.17 Búsqueda avanzada en buscador Google.....................................118 Figura 2.4.1 Orden en la exploración de nodos en Breadth-first.........................124 Figura 2.4.2 Exploración de nodos en Depth-first................................................125 Figura 2.4.3 Funcionamiento Algoritmo HITS......................................................133 Figura 2.4.4 Fórmula de PageRank.....................................................................134 Figura 2.4.5 Ponderación de páginas Web por referencias.................................135 Figura 2.4.6 Ejemplo de archivo robots.txt para la página Web http://en.wikipedia.org/robots.txt ….....................………………......140 Figura 2.4.7 Ejemplo de archivo robots.txt para la pagina Web http://www.cnn.com/robots.txt.........................................................140 Figura 2.4.8 Ejemplo de archivo robots.txt para la pagina Web http://www.udb.edu.sv/robots.txt.....................................................141 Figura 2.5.1 Búsqueda enfocada en Combine System........................................147 Figura 2.5.2 Inicio de sesión como usuario root..................................................150 Figura 2.5.3 Archivo sources.list..........................................................................150 Figura 2.5.4 Actualización de los repositorios de software Debian......................151 Figura 2.5.5 Comando de instalación del Combine System................................152 Figura 2.5.6 Instalación del Combine System......................................................153 Figura 2.5.7 Instalación del Combine System (Continuación).............................153 Figura 2.5.8 Inicio del trabajo de escrutinio aatest...............................................156 Figura 2.5.9 Adición del URL semilla para el trabajo de escrutinio aatest...........157 Figura 2.5.10 Inicio del proceso de harvesting para el trabajo de escrutinio aatest.............................................................................157 Figura 2.5.11 Finalización del proceso de escrutinio del trabajo aatest..............158 Figura 2.5.12 Comandos para exportar los resultados del trabajo de escrutinio aatest al archivo pruebaxml...........................................158 Figura 2.5.13 Inicialización del trabajo de escrutinio focustest............................160 Figura 2.5.14 Abriendo el archivo combine.cfg en el editor de texto pico............161 Figura 2.5.15 Archivo de configuración combine.cfg...........................................161 Figura 2.5.16 Archivo de configuración combine.cfg con dos HOSTS de inicio agregados.............................................................................162 Figura 2.5.17 Comandos para agregar dos URL’s semillas................................163 Figura 2.5.18 Inicio del harvesting del trabajo de escrutinio focustest................163 Figura 2.5.19 Comandos para exportar los resultados del trabajo de escrutinio focustest al archivo xmlfocus.........................................164 Figura 2.5.20 Archivo de configuración de tópicos RestTopic.txt del trabajo restaurantes…..............................................................166 Figura 2.5.21 Archivo de configuración de semillas RestSeed del trabajo restaurantes.......................................................................166 Figura 2.5.22 Iniciación del trabajo de escrutinio restaurantes............................167 Figura 2.5.23 Comandos para cargar URL’s semillas al trabajo de escrutinio restaurantes..............................................................167 Figura 2.5.24 Inicio de 3 procesos de harvesting para el trabajo de escrutinio restaurantes..............................................................168 Figura 2.5.25 Base de datos resultado del trabajo de escrutinio restaurantes vista en Emma..........................................................168 Figura 2.5.26 Página encontrada por medio del trabajo de escrutinio restaurantes...................................................................................169 Figura 2.5.27 Archivo de configuración de tópicos usvtopic.txt del trabajo buscausv………………………………………………………………..170 Figura 2.5.28 Archivo de configuración de semillas buscaseed.txt………………170 Figura 2.5.29 Iniciación del trabajo de escrutinio buscausv………………………171 Figura 2.5.30 cargando URL’s semillas buscausv…………………………………171 Figura 2.5.31 Abriendo el archivo combine.cfg en el editor de texto pico……….172 Figura 2.5.32 Archivo de configuración combine.cfg………………………………172 Figura 2.5.33 Inicio de 3 procesos de harvesting para el trabajo de escrutinio buscausv……………………………………………………173 Figura 2.6.1 Arquitectura Zebra………………………………………………………177 Figura 2.6.2 Configuración de Zebra………………………………………………...179 Figura 2.6.3 Uso de pico para modificar el archivo sources.list…………………..180 Figura 2.6.4 Archivo de configuración sources.list…………………………………181 Figura 2.6.5 Actualización de repositorios de Debian……………………………..181 Figura 2.6.6 Actualización de repositorios de Debian (Continuación)…………...182 Figura 2.6.7 Instalación de Zebra, Yaz y XSLT…………………………………….182 Figura 2.6.8 Instalación de Zebra, Yaz y XSLT (Continuación)………………..…183 Figura 2.6.9 Descomprimiendo el archivo SEbox.tgz……………………………...183 Figura 2.6.10 Inicio del trabajo de escrutinio buscador……………………………184 Figura 2.6.11 Editando el archivo combine.cfg……………………………………..184 Figura 2.6.12 Editando el archivo combine.cfg (Continuación)…………………..185 Figura 2.6.13 Inclusión de las URL’s semillas del archivo buscaseed.txt……….185 Figura 2.6.14 Editando el archivo ZebraConf.xml………………………………….186 Figura 2.6.15 Editando el archivo ZebraConf.xml (Continuación)………………..186 Figura 2.6.16 Editando el archivo combine.cfg……………………………………..187 Figura 2.6.17 Uso del comando make setup……………………………………….187 Figura 2.6.18 Uso del comando make………………………………………………188 Figura 2.6.19 Editando el archivo zebra.cfg………………………………………...188 Figura 2.6.20 Editando el archivo zebra.cfg (Continuación)……………………..189 Figura 2.6.21 Iniciando el servidor Zebra…………………………………………...189 Figura 2.6.22 Iniciando trabajo de escrutinio buscador……………………………190 Figura 2.6.23 Localizando archivos plantilla………………………………………..190 Figura 2.6.24 Archivo index.phtml……………………………………………………191 Figura 2.6.25 Archivo index.phtml (Continuación)…………………………………191 Figura 2.6.26 Copiando index.phtml y extrRecordData.xsl a la carpeta del servidor Web………………...…..………………………………...192 Figura 2.6.27 Buscador páginas .sv…………………………………………………192 1 CAPITULO I. DEFINICIÓN DEL ANTEPROYECTO. 1.1 ANTECEDENTES1. 1.1.1 Breve historia de los Robots Spiders. Los robots Web o robots Spider son potentes programas que recorren la Web de forma automática y buscan diferentes tipos de datos como texto, imágenes o sonido. Estos surgen a partir del año de 1993 con el desarrollo del World Wide Web Wanderer, robot de búsqueda creado en Perl, que pretendía medir el tamaño de la red. Luego se creo Wandex, robot que podía leer direcciones URL, se considera que fue el primer buscador de Internet. A partir de ahí se da el inicio del desarrollo de la primeros robots Spider. El 20 de abril del año de1994 Brian Pinkerton presenta WebCrawler, spider que indexaba las páginas de forma completa y buscaba información de ellas, Siempre en 1994 apareció Yahoo; con la desventaja que en un principio funciono como un directorio hecho por personas, lo que hacia que, llevara mucho tiempo la búsqueda de información. Para solucionar este problema sus creadores incorporaron un Spider para su directorio. Luego surge Lycos, creado por Michale Mauldin. Su algoritmo fue muy interesante, ya que incluía el concepto de proximidad entre palabras. Convirtiéndose en el motor de búsqueda mas destacado en el año de 1994. En diciembre de 1995 surge AltaVista, este tenía un ancho de banda casi ilimitado, consultas avanzadas, añadir o eliminar direcciones Web, permitía hacer búsquedas de imágenes y ficheros multimedia. 1 La historia acerca de los buscadores Web fue obtenida en http://manuales.ojobuscador.com/historia/ 2 En 1996 se comenzó a desarrollar Google, llamándose en un principio BackRub. Este tenía una interfaz muy clara y resultados relevantes. En el 2004 MSN Search con la ayuda de Christopher Payne y Oshoma Momoh echan andar la primera fase del motor de Microsoft. Presentándose así en noviembre de 2005 la plataforma de Windows Live que será la nueva interfaz del motor de búsqueda de Microsoft. Ya para el 2006 nace Exaltad utilizando el motor de búsqueda Quaero que es un buscador Europeo. 1.1.2 Estudios realizados en el país. La documentación y estudios existentes en el país referente a robots spider se orientan en la implementación sobre un buscador, encontrándose los siguientes registros: En la Universidad Centroamericana “José Simeón Cañas” (UCA) del año de 1998 a la actualidad, se encuentra la tesis: Desarrollo e implementación de un buscador de sitios Web para El Salvador. (Desarrollada por: Elio David Vides). Trabajo de graduación elaborado con el objetivo de ofrecer un buscador en Internet que permita a los usuarios encontrar información solicitada y relacionada a El Salvador en sus diferentes ámbitos: cultural, social, económico, político, comercial y educativo. Para su implementación se utilizó el robot Web llamado Combine System escrito en Perl. Se contaba con el respaldo de la empresa SVNet grupo nacional la cual permite a las empresas y particulares tener sus propios dominios en Internet. El buscador llamado Mirador se encontraba dentro de la dirección de la empresa www.svnet.org.sv/mirador En la Universidad Don Bosco, se encontró en los registros de la biblioteca la tesis: Diseño, desarrollo e implementación de un buscador de sitios Web nacionales. 3 (Desarrollada por: Rolando Francisco Álvarez, Jorge Alexander Cruz y Guadalupe Mejía Salguero en el año 2000). Este proyecto se tuvo el apoyo de SALNET; una empresa salvadoreña dedicada a proveer servicios de Internet. El trabajo de graduación documenta que utilizó el robot llamado BDDBot; la documentación de su funcionamiento se encuentra en Internet y es elaborado en el lenguaje de programación Java, eligiéndolo, por que se adecuaba a los fines que se pretendían alcanzar. El buscador tuvo por nombre Ciber Izalco, el cual se implementó en una red de tres computadoras para su elaboración. 4 1.2 IMPORTANCIA DE LA INVESTIGACIÓN. 1.2.1 PLANTEAMIENTO DEL PROBLEMA. En la mayoría de las instituciones educativas del país, actualmente se cuenta con poca información acerca de los buscadores Web; frente a esta situación surge la idea de la creación de un documento que detalle y describa el funcionamiento de un robot spider, ya que éste es la base fundamental para la elaboración de un buscador Web moderno que no este basado en directorios. 1.2.2 DEFINICIÓN DEL TEMA. Desarrollar un estudio monográfico que explique el funcionamiento de los robots spider, y que exponga como implementar un robot en un motor de búsqueda. 1.2.3 JUSTIFICACIÓN. La búsqueda de instrumentos que fortalezcan el proceso de enseñanza aprendizaje es uno de los aspectos que mayormente ha interesado a la Universidad Don Bosco en su afán por lograr la formación de profesionales de calidad. El presente proyecto de investigación acerca de los robots spider o exploradores de la red, es un esfuerzo para facilitar el proceso de enseñanza aprendizaje y de investigación, como parte esencial de la función formadora de profesionales de calidad de la Universidad Don Bosco. Por otra parte es importante señalar que, el hecho de fomentar la investigación en estudiantes y profesores es una buena justificación, y por lo tanto, la generación de conocimiento que esto implica. También se considera que el producto de esta investigación podrá ser la base para dar paso a su vez, a futuros trabajos de investigación que se relacionen con temas variados, tales como la programación en Internet, la programación Web, la obtención o recuperación de información de colecciones heterogéneas, publicaciones Web y los sistemas de búsqueda por mencionar algunos. 5 1.3 OBJETIVOS. 1.3.1 GENERAL. Elaborar una monografía basándose en el modelo instruccional que sirva de base teórica y de guía practica para la configuración de los componentes de un Robot Spider o explorador de la red. 1.3.2 ESPECIFICOS. 1. Elaborar dos documentos en forma de artículos para la revista de la Facultad de Ingeniería acerca de la utilidad y el funcionamiento de los robots spider. 2. Investigar algunos algoritmos que se utilizan en la construcción de robots spiders o exploradores de la red. 3. Realizar una monografía que sirva de base teórica y de guía practica para la configuración de los componentes de un robot spider o explorador de la red. 4. Implementar un robot spider ya existente, con las modificaciones necesarias para su funcionamiento dentro de un motor de búsqueda. 5. Preparar una guía que sirva de herramienta de apoyo para la comunidad académica para poder ejecutar su propio buscador, y del mismo modo incentivar el desarrollo de este tipo de software en el país. 6 1.4 ALCANCES Y LIMITANTES. 1.4.1 ALCANCES. 1. Dar a conocer el funcionamiento de los robots spiders, componentes, clasificación, características propias y algoritmos utilizados en su creación. 2. Redactar una guía didáctica que contenga la información relevante sobre los robots spider, su papel en los motores de búsqueda y la implementación de un robot spider como el Combine System en un buscador; este escrito contendrá los siguientes capítulos: Capitulo 1 Introducción a la robótica. 1.1 Concepto de robot aplicado a la Web. 1.2 Agentes. 1.2.1 Agente autónomo. 1.2.2 Agente inteligente. 1.2.3 Agente de usuario. 1.3 Comportamiento de robots. 1.3.1 Spider. 1.3.2 Web Ants. 1.3.3 Web Crawler. 1.3.4 Worms. 1.3.5 Wanderes. 1.3.6 Knowbots. 1.4 Tipos de robots. 1.4.1 Robot de análisis estadísticos. 1.4.2 Robot de mantenimiento. 1.4.3 Robot de copia a espejo. 1.4.4 Robot de ordenamiento de recursos. 1.4.5 Robot combinado. 7 Capitulo 2 Conceptos básicos de redes y programación. 2.1 Componentes conceptuales de una red. 2.1.1 Subsistemas de comunicaciones. 2.1.1.1 Modelo OSI. 2.1.1.2 TCP/IP. 2.1.2 Aplicaciones de red. 2.2 Modelo Cliente/Servidor. 2.3 Lenguajes de programación para la Web. 2.3.1 Java. 2.3.2 Perl. 2.3.3 CGI. 2.3.4 ActiveX. 2.3.5 Scripts. 2.3.5.1 JavaScript y Jscript. 2.3.5.2 VBScript, ASP. 2.3.5.3 PHP. 2.4 Fundamentos de Internet. 2.4.1 Protocolos de Internet. 2.4.2 dirección IP. 2.4.3 Sistemas de nombres de dominio. 2.4.3.1 Dominios del nivel más alto. 2.4.3.2 Designaciones de país. 2.4.4 URI y URL. 2.4.4.1 Relaciones entre URL, protocolos y tipos de archivo. 2.4.4.2 URL y HTML. 2.4.4.3 URL absolutos y relativos. 2.4.5 HTTP. 2.4.5.1 Clases de códigos de respuesta de HTTP. 2.4.5.2 Métodos HTTP. 2.4.5.3 Otros métodos de HTTP. 2.4.6 FTP. 2.4.7 HTML. 2.4.7.1 Etiquetas HTML. 8 2.4.8 XML. Capitulo 3 Sistemas de búsqueda en Internet (robot spider). 3.1 Definición de sistemas de búsqueda. 3.2 Estructura de los sistemas de búsqueda. 3.3 Aplicaciones de los robots. 3.3.1 Motores de búsqueda selectiva o discreta. 3.4 Entendiendo el funcionamiento de un robot. 3.4.1 El papel de los robots en los motores de búsqueda. 3.4.2 Aspectos de diseño de los robots. 3.5 Clasificación de los sistemas de búsqueda. 3.5.1 Directorios. 3.5.2 Motores de búsqueda. 3.5.2.1 Introducción. 3.5.2.2 Análisis. 3.5.3 Buscadores híbridos. 3.5.4 Metabuscadores. 3.6 Arquitectura de los sistemas de búsqueda. 3.6.1 Arquitectura centralizada. 3.6.2 Arquitectura distribuida. 3.7 Indexación. 3.7.1 Indexación manual. 3.7.2 Indexación automática. 3.7.2.1 Representación del documento. 3.7.2.1.1 Uso de meta datos y la etiquetas . 3.7.2.1.2 Análisis de relevancia. 3.7.2.1.3 Estandarización. 3.7.2.1.3.1 DCML, Dublin Core Metadata Initiative. 3.7.2.1.3.2 MFC, Meta Content Framework. 3.7.2.1.3.3 RDF, Resource Description Framework. 3.8 Estructura de la base de datos. 3.8.1 Aspectos básicos. 3.8.2 Definición. 3.8.3 Organización. 9 3.8.3.1 Base de datos administrada por DBMS. 3.8.3.2 Base de datos de bajo nivel. 3.8.4 Componentes. 3.8.4.1 Componentes internos. 3.8.4.1.1 Archivos virtuales. 3.8.4.1.2 Léxico (diccionario de palabras). 3.8.4.2 Componentes externos. 3.8.4.2.1 Hit List (contador por palabra de ocurrencias). 3.8.4.2.2 Almacén (Repository). 3.8.4.2.3 Índice de documentos. 3.8.4.2.4 Archivo mínimo. 3.8.5 Funcionamiento interno de los sistemas de búsqueda. 3.9 Aplicación cliente/servidor. 3.9.1 Motores de búsqueda. 3.9.2 Directorios. 3.9.3 Interfaces independientes del navegador. 3.9.4 Consideraciones adicionales. 3.9.4.1 Cuando usar uno u otro tipo de sistema de búsqueda. 3.9.4.2 Traducción de documentos. 3.9.4.3 Consultas en lenguaje natural. 3.9.4.4 Búsquedas inteligentes. 3.9.4.5 Ponderación de páginas. 3.9.4.5.1 Ponderación por conteo comparativo. 3.9.4.5.2 Ponderación por referencias. 3.9.4.6 Instrucciones para el usuario. 3.9.4.6.1 Opciones de búsqueda. 3.9.4.6.2 Búsqueda avanzada. Capitulo 4 Algoritmos y conceptos utilizados en la elaboración de robots spider. 4.1 Algoritmo de ranking. 4.2 Algoritmo de crawling. 4.3 Conceptos de recolección y robots. 4.4 Exclusión de robots. 10 4.4.1 Protocolo de exclusión de robots. 4.4.1.1 Formato. 4.4.2 Etiquetas para robots. 4.5 Implementación de escrutinio de sitios (Site Crawling). 4.5.1 Escrutinio simple. 4.5.2 Escrutinio sofisticado. 4.5.2.1 Evitar la redundancia. 4.5.2.2 Efectuar la discriminación. 4.5.2.3 Limitar el ámbito. 4.5.2.4 Limitar la profundidad del escrutinio. 4.5.2.5 Otras consideraciones. 4.5.2.5.1 Marcos (Frames). 4.5.2.5.2 Contenidos dinámicos. 4.5.2.5.3 Escrutinio a sitios específicos. Capitulo 5 Combine System. 5.1 Introducción al robot Combine System. 5.2 Parte de la ingeniería de búsqueda en una caja. 5.3 Programas necesarios para instalar el Combine System. 5.4 Instalación del robot combine en la distribución de Linux Debian 3.0. 5.5 Instalación del robot combine en otras distribuciones de Linux/Unix. 5.6 Pruebas de Instalación. 5.7 Configuración de dominios. 5.8 Configuración de tópicos específicos. 5.9 Configuración general. 5.10 Componentes del sistema 5.11 Variables de configuración 5.12 Módulos utilizados en el Combine System2. Capitulo 6 Implementación del robot combine system en un buscador Web. 6.1 Instalación del paquete Search in a Box System. 6.2 Listado de archivos básicos para realizar el buscador. 2 Estos módulos son listados en anexos 11 3. Elaborar la configuración respectiva para que el buscador funcione solo para sitios nacionales con extensión .sv. 1.4.2 LIMITANTES. Entre los factores que podrían afectar el desarrollo del proyecto, se encuentran los siguientes: 1. No se cuenta con completo acceso a los algoritmos de los buscadores comerciales por cuestiones de seguridad, esto implica que solo se estudiarán algunas de sus partes. 2. El estudio monográfico contendrá únicamente el análisis detallado del robot spider Combine System. 12 1.5 FACTIBILIDAD3. 1.5.1 Factibilidad Técnica: Desde el punto de vista técnico el proyecto es realizable, ya que se dispone con la información necesaria para la realización de la investigación, además del equipo necesario para el diseño y la implementación que se va a desarrollar, las herramientas de software y el recurso humano. Para la realización del estudio monográfico de los robots spiders se cuenta con información disponible en su mayoría en Internet como lo son libros en formato digital y la información técnica encontrada sobre spiders o motores de búsqueda, además de trabajos de graduación impresos similares al tema de investigación en El Salvador. Para la implementación del motor de búsqueda, como se dijo anteriormente, se encuentran disponibles en Internet un gran numero de robots spider; para la mayoría de ellos es accesible su documentación de funcionamiento, lenguaje de programación en que está elaborado, código fuente, disponibilidad comercial (Shareware4, Freeware5), foros de discusión, contacto con el o los creadores del robot y la actualización de las ultimas versiones para un robot Web en particular. 1.5.2 Factibilidad Económica: El costo monetario que se generará en el proceso de desarrollo del presente proyecto en cuanto al uso de tecnología que se empleará para su impulso, es económicamente factible de acuerdo a lo siguiente: Para el estudio monográfico, la investigación en ésta etapa se avocará mayoritariamente en Internet y los costos incurridos para llevarla a cabo son el pago mensual por conexión residencial a Internet a velocidad de 256 Kbps, el cual es de $28.25. Para la implementación de motor de búsqueda, se efectuará sobre una red de tres computadores a modo de ensayo antes de su puesta en Internet. La red de 3 La factibilidad establece si el proyecto es posible de realizarse, a fin de que se cuente con los recursos y capacidades para cumplir con los objetivos y necesidades de los usuarios. 4 Software protegido por leyes de copyright, que se encuentra disponible gratuitamente durante cierto tiempo. 5 Aplicaciones de uso gratuito que pueden encontrarse en Internet. 13 computadoras tiene como objetivo realizar las diferentes pruebas pertinentes necesarias para poder visualizar como se comportará el algoritmo del robot Web en cuanto a peticiones de búsqueda. HARDWARE Cantidad Articulo Costo U. Costo N. 3 Computadoras $ 307 $ 921 1 Impresora $ 100 $ 100 1 UPS $ 50 $ 50 Total $ 1071 SOFTWARE 1 S. O. Linux distribución Debian 3.0 $ 0.00 $ 0.00 1 MySQL $ 0.00 $ 0.00 1 Zebra $ 0.00 $ 0.00 1 Tidy $ 0.00 $ 0.00 1 Perl $ 0.00 $ 0.00 1 PHP $ 0.00 $ 0.00 DESARROLLO DEL ESTUDIO MONOGRÁFICO E IMPLEMENTACIÓN DE MOTOR DE BÚSQUEDA 3 Programadores $ 500.00 (c/u) $ 13,500 durante 9 meses OTROS GASTOS Conexión a Internet Residencial (256K) $ 28.25 $ 254.25 durante 9 meses Energía eléctrica $ 120.00 $ 1080 durante 9 meses Costo Total $ 15,905.25 14 1.5.3 Factibilidad Operativa: La factibilidad operativa comprende una determinación sobre el uso de la información que se da a conocer para que se maneje de la mejor forma posible, considerando los siguientes aspectos: • El estudio monográfico se realiza a fin de explicar las partes que componen un robot Web destinado a estudiantes de universidades y profesores con conocimientos básicos de programación, con el fin de conocer su funcionamiento. • La implementación del motor de búsqueda expone la utilidad de los robots Web como una de las tecnologías de Internet que hoy en día utilizamos. 15 1.6 METODOLOGÍA DE LA INVESTIGACIÓN. Para la investigación del proyecto se utilizarán principalmente 3 herramientas de investigación: - La investigación documental, se hará uso de fuentes bibliográficas impresas mayores de estudio como: manuales para el uso de las herramientas como el Combine System, libros de texto referentes al Web y distintas tesis tanto nacionales como internacionales, además de información que se encuentra en Internet y en otros medios magnéticos. - Entrevistas a profesionales y/o profesores del área de informática. - Evaluación de productos de software, específicamente sistemas de búsqueda, como buscadores comerciales, motores de búsqueda y robots spiders. Para la realización de cada uno de los capítulos de investigación se ha pensado en poner en práctica el siguiente proceso: - Investigación previa del capitulo; éste apartado cubre identificar y seleccionar la documentación adecuada al tema del capitulo de estudio. - Identificación de los lugares donde están ubicados los documentos seleccionados y la recuperación de ellos. - Análisis de los documentos recuperados. - Sistematización de la investigación obtenida de los documentos estudiados. 16 1.7 CRONOGRAMA DE ACTIVIDADES. 17 Nº Objetivos. 1 Elaborar dos documentos en forma de artículos para la revista de la Facultad de Ingeniería acerca de la utilidad y el funcionamiento de los robots spider. 2 Investigar algunos algoritmos que se utilizan en la construcción de robots spiders o exploradores de la red. 3 Elaborar una monografía que sirva de base teórica y de guía practica para la configuración de los componentes de un robot spider o explorador de la red. 4 Implementar un robot spider ya existente, con las modificaciones necesarias para su funcionamiento dentro de un motor de búsqueda. 5 Elaborar una guía que sirva de herramienta de apoyo para la comunidad académica para poder ejecutar su propio buscador, y del mismo modo incentivar el desarrollo de este tipo de software en el país. Nº Capítulos. 1 Introducción a la robótica. 2 Conceptos básicos generales. 3 Sistemas de búsqueda en Internet (robot spider). 4 Algoritmos y conceptos utilizados en la elaboración de robots spider. 5 Combine System. 6 Implementación del robot Combine System en un buscador Web. 18 1.8 MARCO TEÓRICO. Un buscador es la herramienta que permite investigar, averiguar, examinar la red6 a partir de unas palabras que se tienen que introducir para describir los que se busca. Detrás de un buscador hay una base de datos que contiene la información y unos sistemas de indexación, compresión y organización de los datos que permiten efectuar búsquedas por palabras rápidamente. Las búsquedas se hacen con palabras clave o con árboles jerárquicos por temas; el resultado de la búsqueda es un listado de direcciones Web en los que se mencionan temas relacionados con las palabras clave buscadas. Los buscadores se pueden clasificar en dos tipos: - Índices temáticos: Son sistemas de búsqueda por temas o categorías jerarquizados (aunque también suelen incluir sistemas de búsqueda por palabras clave). Se trata de bases de datos de direcciones Web elaboradas "manualmente", es decir, hay personas que se encargan de asignar cada página Web a una categoría o tema determinado. - Motores de búsqueda: Son sistemas de búsqueda por palabras clave. Las bases de datos, en los motores de búsqueda, incorporan automáticamente páginas Web mediante "robots" de búsqueda por la red. 1.8.1 Robots del Web: Un robot es un término aplicado a programas de comunicación que utilizando HTTP como protocolo de comunicación, exploran grandes porciones del Web y de manera recursiva extraen información de ellas. Dicha información puede después ser utilizada para alimentar motores de búsqueda, para efectos estadísticos, para realizar copias de respaldo, etc. Dentro de la terminología propia del Internet, a estos programas se les dan varios nombres que, en algunos casos, denotan algún comportamiento especial: - Spider (araña): robot del Web. 6 World Wide Web 19 - Crawler (reptil): orientado a dar la impresión de movimiento. - Worm (lombriz): trabajan de forma distribuida, explorando simultáneamente diferentes porciones del Web. 1.8.2 Robot Spider Combine System: El robot que se utilizara para las prácticas en el último capitulo sobre implementación de un robot spider en un buscador Web será el Combine System. Combine System es un robot para recolección de recursos en el Web, y está diseñado para ser un sistema distribuido, paralelo y flexible. − Distribuido: Ya que todos los protocolos de comunicación interna están basados en la familia de protocolos TCP/IP y los diferentes componentes del sistema pueden ser distribuidos entre un número ilimitado de computadoras conectadas a Internet. − Paralelo: Ya que el sistema es totalmente distribuido, es posible ejecutar varios componentes en computadoras individuales, las cuales son más adecuadas a los requerimientos de hardware y comunicación para esos componentes específicos. − Flexible: El sistema esta organizado como una colección de muchos programas pequeños. Cada uno de ellos está encargado de pocas tareas dedicadas. Esta característica permite que el sistema pueda ser adaptado de una manera fácil a un nuevo tipo de aplicación agregando o reemplazando uno o algunos componentes. La decisión de utilizar el robot Combine System se debe a que: − Es parte de la ingeniería en una caja, esto le da cierta ventaja ya que tiene una gran compatibilidad con Zebra para realizar en conjunto un buscador bastante eficiente. − Una gran posibilidad de configuración, por ser software bajo la licencia GPL, el código fuente de este puede ser manipulado libremente para obtener mejores resultados. 20 − Posee un sistema avanzado de tópicos, que permite realizar búsquedas avanzadas dándole prioridad a palabras con mayor relevancia en una búsqueda. − Se puede manipular para que funcione en un dominio determinado, en nuestro caso este será el dominio .sv. − Posee una enorme compatibilidad para distintos tipos de documentos como text, HTML, PDF, PostScript, MSWord, Power Point, Excel, RTF, TeX y distintos tipos de imágenes. − Obedece la reglas de los robots, al reconocer el archivo robots.txt. − Utiliza un sistema de bases de datos de fácil entendimiento y bastante eficiente MySQL. − Ha sido probado en distintos motores de búsqueda como en los buscadores europeos Alvis Search, Engine New y Alvis Wikipedia Search. − Posee una buena documentación técnica desde el sitio http://combine.it.lth.se/. 1.8.3 Clases de buscadores. 1. Los motores de búsqueda o arañas: La mayoría de los grandes buscadores internacionales que todos conocemos son de este tipo. Recorren las páginas recopilando información sobre los contenidos de las páginas. Ejemplos de Spiders: Google, Altavista, Hotbot, Lycos. 2. Los Directorios: Una tecnología que es ampliamente utilizada por la cantidad de programas scripts en el mercado. No se requieren muchos recursos de informática, pero si de soporte humano y mantenimiento. 21 Los directorios no recorren las Web ni almacenan sus contenidos. Los resultados de la búsqueda estarán determinados por la información que se haya suministrado al directorio cuando se registra la página Web. 3. Sistemas mixtos Buscador - Directorio: Poseen características de buscadores y además presentan las páginas registradas en catálogos sobre contenidos temáticos que a su vez se dividen en subsecciones. 4. Metabuscadores: No son buscadores reales; lo que hacen es realizar búsquedas en auténticos buscadores, analizan los resultados de la página y presentan sus propios resultados. Presentan la ventaja de seleccionar para el usuario, los mejores sitios que presentan los buscadores consultados 22 CAPITULO II. ELABORACIÓN DE GUÍA TEÓRICA Y PRÁCTICA SOBRE LOS ROBOTS SPIDER. INTRODUCCION La siguiente guía esta diseñada para facilitar el proceso de enseñanza y aprendizaje para todos los estudiantes a partir de un nivel de tercer año en la carrera de Ingeniería en Ciencias de la Computación y/o carreras afines, por lo tanto, es necesario que tenga conocimientos de: sistema operativo LINUX, programación en PHP, HTML, conocimientos básicos de redes; mas que todos enfocados a Internet. Por lo tanto esperamos que la siguiente guía teórica-práctica despierte el interés de las personas en conocer sobre los robot spider, así mismo, que ésta inquietud lleve a la creación de nuevos proyectos de investigación. 23 2.1: INTRODUCCIÓN A LA ROBÓTICA. Tiempo recomendado de estudio: 1 hora con 30 minutos. Objetivos: Al concluir este capítulo, el lector estará capacitado para: - Definir el concepto de robot aplicado al Web. - Identificar que es un agente y nombrar sus distintos tipos. - Comprender como se clasifican los robots en base a su comportamiento. - Nombrar y describir los distintos tipos de robots Web existentes. Introducción: Cuando la mayoría de nosotros escuchamos la palabra “robot” inmediatamente se nos viene a la mente un ser con forma semihumana o parecido a algún animal, con brazos, piernas, con capacidad de movilizarse por si mismo y que además posee inteligencia artificial, pero en este capítulo veremos que los robots no necesariamente deben poseer un cuerpo físico; es decir, muchos de los robots que utilizamos hoy en día y de manera cotidiana, únicamente los podemos ver a través de una computadora, esperamos que este capitulo sea de mucha ayuda al lector para que se familiarice con esta clase de robots, en especial con los denominados robots spider. En este capítulo el lector se familiarizará con algunos términos básicos que le ayudaran a entender los capítulos posteriores, algunas definiciones como robot spider, agentes y la clasificación de los robots según su comportamiento serán vitales para llegar a construir un buscador Web en los últimos capítulos. 24 2.1.1 CONCEPTO DE ROBOT APLICADO AL WEB. Un robot es un programa que rastrea recursos a través del Internet siguiendo los vínculos que contienen las páginas Web albergadas en un servidor o en otros servidores de la red. En general, la búsqueda comienza con una lista inicial de servidores, para luego seguir los vínculos que tengan estos con el resto de los documentos que se encuentran en la Web. La arquitectura y funcionamiento de estos sistemas se verá en forma detallada en los siguientes capítulos. Los principales buscadores de Internet construyen sus bases de datos usando robots comúnmente denominados spiders, crawlers o webcrawlers. Los sistemas de búsqueda basados en robots (robots spider) realizan las siguientes acciones: - Recuperan y procesan todas las páginas Web que encuentran. - Extraen información de referencia (índices) sobre las páginas. - Los índices se almacenan en bases de datos que ofrecen servicios de búsqueda basados en palabras clave. Los robots Web son potentes programas que recorren la Web de forma automática y buscan diferentes tipos de datos como texto, imágenes o sonido. Estos datos, junto con las direcciones URL que los contienen, son indexados, clasificados y almacenados en grandes bases de datos para que los usuarios de Internet posteriormente, envíen sus consultas e interroguen a la base de datos buscando alguna frase o palabra clave. Los robots periódicamente hacen un recorrido de estas páginas para buscar alguna modificación o la incorporación de nuevos datos y/o actualizaciones, de esta forma, la actualización de los datos se realiza de forma automática. 25 En general, los robots comienzan con un listado de enlaces y URL’s preseleccionadas y, recurrentemente, visitan los documentos que se referencian desde las mismas. Ejemplos de robots son: - Googlebot (robot de Google). - Mozilla Compatible Agent (robot de Yahoo). - Msnbot (robot de MSN). 2.1.2 AGENTES. En el campo informático, podemos definir un agente como un componente software y/o hardware que es capaz de actuar para realizar tareas en beneficio del usuario. De forma más específica: Un agente es un sistema de hardware y/o software que interactúa con su entorno éste puede ser otros agentes o humanos, guiado por uno o varios propósitos, es proactivo es decir, reacciona a eventos y a veces se anticipa haciendo propuestas, es adaptable, esto significa que se puede enfrentar a situaciones novedosas, es sociable, se comunica, coopera o negocia y su comportamiento es predecible en cierto contexto7. Las aplicaciones de los agentes son muy numerosas, entre las que podemos destacar: - El uso de agentes en Internet e interfaces de usuarios. - Utilización en sistemas de información, juegos y animaciones, comercio electrónico, educación, etc. 7 Olivares, Jesús. Agentes: concepto, aplicaciones y referencias. http://www.jesusolivares.com/ 26 En el ámbito de la Web, podemos destacar los siguientes tipos de agentes: 2.1.2.1 AGENTE AUTÓNOMO: se trata de un programa que “viaja” entre los sitios Web, decidiendo por él mismo qué debe hacer y cuándo debe moverse a otros lugares. 2.1.2.2 AGENTE INTELIGENTE: se trata de un programa que ayuda al usuario a ciertas acciones. Por ejemplo, a rellenar formularios, elegir productos, encontrar algo en especifico, etc. Este tipo de agentes también se denominan softbot (software robot). Usa herramientas de software y servicios basados en el comportamiento de las personas. 2.1.2.3 AGENTE DE USUARIO: es el nombre técnico para denominar a un programa que ejecuta determinadas tareas para un usuario en la red. Ejemplos son: un navegador como Internet Explorer, o un agente de correo del tipo Email User-agent, Eudora, etc. Preguntas de repaso. 1. ¿Qué es un robot aplicado al Web? ____________________________________________________________ ___________________________________________________________. 2. ¿Qué es un agente? ____________________________________________________________ ___________________________________________________________. 27 3. Clasifique los siguientes programas según el agente al que pertenece autónomo, inteligente o de usuario. Ejemplo: Mozilla Fire Fox usuario Navegador Web Opera ____________________ Googlebot ____________________ Formulario de relleno gmail ____________________ MsnBot ____________________ Navegador Internet Explorer ____________________ 2.1.3 COMPORTAMIENTO DE ROBOTS. Los robots spiders adoptan numerosas denominaciones todas ellas tienen que ver con la traducción al español de su significado en inglés, como por ejemplo Web = telaraña, y en la forma que estos robots se mueven a través de Internet. Sin embargo, lo único que hace un robot es visitar los sitios y extraer los enlaces que están incluidos dentro de estos. A continuación se detallan los principales tipos y denominaciones de robots: 2.1.3.1 ARAÑAS (Spiders): es un programa usado para rastrear la red. Lee la estructura de hipertexto y accede a todos los enlaces referidos en el sitio Web. Se utiliza como sinónimo de robot y crawler. Ejemplos: Googlebot, Combine System y BDDBot. 2.1.3.2 HORMIGAS (Web Ants): cooperativa de robots. Trabajan de forma distribuida, explorando simultáneamente diferentes porciones de la Web. Son robots que cooperan en un mismo objetivo, por ejemplo, para llevar a cabo una indexación8 distribuida. 8 Proceso que consiste en la representación del contenido de un documento o de una parte del mismo, mediante la selección de términos apropiados y se expresa en un lenguaje de búsqueda informativa o natural para facilitar la recuperación. 28 2.1.3.3 ORUGAS (Web crawlers): es un programa que inspecciona las páginas del World Wide Web de forma metódica y automatizada. Los Web crawlers se utilizan para crear una copia de todas las páginas Web visitadas para su procesado posterior por un motor de búsqueda que indexa las páginas proporcionando un sistema de búsquedas rápido. Ejemplos: WebCrawler y MetaCrawler. 2.1.3.4 GUSANOS (Worms): es lo mismo que un robot, aunque técnicamente un gusano es una réplica de un programa, a diferencia de un robot que es un programa original. Se usan, por ejemplo, para duplicar los directorios de FTP para que puedan acceder más usuarios. Ejemplos: Bagle, NetSky o Passer. 2.1.3.5 VIAJERO, VAGABUNDO (Wanderes): son una clase de robots que realizan estadísticas sobre la Web, como por ejemplo, número de servidores, servidores conectados, número de Webs. 2.1.3.6 ROBOTS DE CONOCIMIENTO (Knowbots): localizan referencias hipertextuales dirigidas hacia un documento o servidor concreto. Permiten evaluar el impacto de las distintas aportaciones que engrosan las distintas áreas de conocimiento de la Web. Ejemplos: Newstracker, Mind-i, Eliza. Preguntas de repaso. 1. ¿En que se basan las clasificaciones de los robots spider? ____________________________________________________________ ___________________________________________________________. 2. Mencione y explique brevemente tres clasificaciones de los robots spider. ____________________________________________________________ ___________________________________________________________. 29 3. Mencione al menos un robot spider que se comporte como: Gusano ________________. Oruga __________________. Araña __________________. 2.1.4 TIPOS DE ROBOTS. 2.1.4.1 ROBOT DE ANÁLISIS ESTADÍSTICO: Este tipo de robot extrae información y la utiliza para realizar cálculos de tipo estadísticos, tales como controlar el número promedio de documentos existentes en los servidores de un dominio o región y el tamaño de los documentos que existen en los servidores de un dominio. Estos robots son implementados en pocas ocasiones y normalmente se utilizan para cubrir otro propósito además del estadístico. Ejemplo: The Wanderer fue el primer robot en Internet y se diseñó para contar el número de servidores Web que existían en la red. 2.1.4.2 ROBOT DE MANTENIMIENTO: Orientado a la administración de la estructura hipertexto en servidores Web. Principalmente funciona generando peticiones de tipo HEAD para detectar si un URL es valido, en caso que no lo sea, informa a una base de datos el estado del recurso, y especifica si es posible acceder a él desde una ubicación diferente. Por el tipo de trabajo de verificación que realiza, éste robot debe recorrer una base de datos y compararla contra el estado de los vínculos dentro del Web y desechar los que hayan sido desplazados o eliminados. Ejemplos: Checkbot y MomSpider, este último también es capaz de funcionar como un robot combinado. 30 2.1.4.3 ROBOT DE COPIA A ESPEJO: Son utilizados para mantener estructuras de hipertexto redundante con el objetivo de proveer una respuesta rápida y segura a los fallos en los servicios Web. También se utilizan para distribuir carga de servidores remotos que contienen la misma información o información recientemente actualizada. Este tipo de distribución de recursos es normal en sitios FTP, debido a que se tienen limitaciones grandes en el número de conexiones permitidas por un sitio que maneja este protocolo. Así que es preferible distribuir la carga por zonas geográficas o mejor aun, por dominios. Este tipo de robots también realiza, aunque de manera implícita, una labor de mantenimiento del estado de los vínculos. Un ejemplo de estos robots es: HTML Gobble. 2.1.4.4 ROBOT DE ORDENAMIENTO DE RECURSOS: Este tipo de robot se caracteriza por explorar y reunir grandes porciones del Web. Además la información extraída, es decir URL’s y Meta Tags, es puesta en bases de datos e indexada para después ponerla accesible a usuarios en el Web a través de buscadores de sitios. Otra de las tareas que realizan estos robots es la de actualizar periódicamente la base de datos del buscador. Con esto se lleva a cabo un mantenimiento implícito de la base de datos. Normalmente se requiere de un proceso que ordene la información que se extrae, antes de pasarla a la base de datos que accede al buscador, ya que un proceso de este tipo podría requerir de más tiempo y recursos, lo cual provocaría que el robot tenga que esperar a que el proceso termine sobre la información anterior antes de continuar. Ejemplo: Webpages Robot, Scanner y Combine System. 2.1.4.5 ROBOT COMBINADO: Como su nombre lo indica entra en esta clasificación todo robot capaz de realizar tareas propias de otros tipos de robot, pero que no cumplen con algunas características propias de alguno de ellos. Entre los que comúnmente se implementan son los robots estadísticos combinados con robots de Mantenimiento, y los robots estadísticos y de copia a espejo. Estos robots surgieron del hecho que un robot de mantenimiento 31 normalmente extrae datos dentro del cuerpo de la entidad (Entitu- body) de un mensaje de respuesta de http, y luego la desechan debido a que no sirve a sus propósitos, así que es posible utilizar esos datos para otros propósitos como el mantenimiento del contenido del documento y/o de la dirección URL. Ejemplos Pack Rat (Estadístico-Mantenimiento). Preguntas de repaso. 1. Marque con X en el enunciado que mejor defina el comportamiento de los robots de mantenimiento: __ Explora y reúne grandes porciones del Web. __ Extrae información y la utiliza para fines estadísticos __ Esta orientado a la administración de la estructura hipertexto en servidores Web. 2. Defina los siguientes tipos de robots: Robot de copia a espejo: _______________________________________ ____________________________________________________________ ___________________________________________________________. Robot estadístico: _____________________________________________ ____________________________________________________________ ___________________________________________________________. Robot combinado: _____________________________________________ ____________________________________________________________ ____________________________________________________________. 32 Auto evaluación. Instrucciones. En la hoja provista, subraye la respuesta correcta. Coteje las respuestas al final de la auto evaluación. 1. Un agente es: a. Un robot que indexa las paginas Web. b. Un programa para rastrear la red. c. Sistema de hardware y/o software que interactúa con su entorno. 2. Los robots Web son: a. Programas para rastrear la red. b. Potentes programas que recorren la Web de forma automática y buscan diferentes tipos de datos. c. Sistemas de hardware y/o software que interactúan con su entorno. 3. Un robot Spider es: a. Un programa que lee la estructura de hipertexto y accede a todos los enlaces referidos en el sitio Web. b. Un programa para rastrear la red. c. A y B son correctas. 4. Una de las clasificaciones de robot según su comportamiento es: a. Robot estadístico. b. Robot Spider. c. Ninguna de las anteriores. 5. Cual de los siguientes programas es un ejemplo de robot Spider a. Combine System. b. Mozilla Fire Fox. c. A y B son correctas. 33 Contestaciones de las preguntas de la página anterior. 1. C, 2. B, 3. C, 4. B, 5. A De 5 a 3 preguntas correctas: Puede continuar con el capitulo 2 Menos de 3 preguntas: Repase el capitulo 1 y compruebe el ejercicio. Investigación Complementaria. - Investigue como funciona el Googlebot. - Investigue 2 ejemplos mas de robots combinados excluyendo el mencionado en éste capitulo. - Realice un resumen del capitulo describiendo con sus propias palabras ¿Qué es un robot aplicado al Web? ¿Cómo se clasifican los robots? ¿Qué es un agente? ¿Cómo se clasifican los agentes? 34 2.2: CONCEPTOS BÁSICOS DE REDES Y PROGRAMACIÓN. Tiempo recomendado de estudio: 4 horas. Objetivos: Al concluir este capitulo, el lector estará capacitado para: - Definir los conceptos básicos de redes. - Comprender como funciona el modelo OSI y sus distintas capas. - Mencionar algunos de los lenguajes utilizados para la programación Web. - Entender de manera básica como funciona el Internet. Introducción: En el presente capítulo el lector se familiarizará con los conceptos básicos, necesarios para comprender como funcionan las redes en general y en especial Internet. En este capítulo se estudiara el modelo de referencia de Interconexión de Sistemas Abiertos (OSI, Open System Interconnection). Para enfrentar el problema de incompatibilidad de redes, la Organización Internacional para la Estandarización (ISO) investigó modelos de networking como la red Digital Equipment Corporation (DECnet), la Arquitectura de Sistemas de Red (SNA) y TCP/IP a fin de encontrar un conjunto de reglas aplicables de forma general a todas las redes. Con base en ésta investigación, la ISO desarrolló un modelo de red que ayuda a los fabricantes a crear redes que sean compatibles con otras redes. Por otro lado también se estudiarán los fundamentos básicos de Internet y los distintos lenguajes que se utilizan en la Web como Java, Perl, HTML. De esta manera el lector comenzara a habituarse a conceptos que se utilizaran en próximos capítulos. 35 2.2.1 COMPONENTES CONCEPTUALES DE UNA RED. A continuación se definirán algunos de los términos elementales de una red: 2.2.1.1 MODELO OSI. Figura 2.2.1 Capas del modelo OSI. El Modelo OSI es un lineamiento funcional para tareas de comunicaciones y, por consiguiente, no especifica un estándar de comunicación para dichas tareas. Sin embargo, muchos estándares y protocolos cumplen con los lineamientos del Modelo OSI. Como se mencionó anteriormente, OSI nace con el objetivo de uniformizar los elementos que participan en la solución del problema de comunicación entre equipos de cómputo de diferentes fabricantes. Estos equipos presentan diferencias en: - Procesador central. - Velocidad. - Memoria. - Dispositivos de almacenamiento. - Interfaces para comunicaciones. - Códigos de caracteres. - Sistemas Operativos. 36 Estas diferencias propician que el problema de comunicación entre computadoras no tenga una solución simple. Dividiendo el problema general de la comunicación, en problemas específicos, facilitando la obtención de una solución a dicho problema. A continuación se describen las distintas capas del modelo OSI: 2.2.1.1.1 Capa Física. La capa física, es la capa más baja del modelo OSI, se encarga de las conexiones físicas de la computadora hacia la red. Es la encargada de transmitir los bits de información por el medio utilizado para la transmisión; medios guiados como: cable coaxial, cable de par trenzado, fibra óptica o medios no guiados como: radio, infrarrojos, microondas. También se ocupa de las propiedades físicas y características eléctricas de los diversos componentes y de la velocidad de transmisión El nivel físico recibe una trama binaria que debe convertir a una señal eléctrica, electromagnética, óptica u otra dependiendo del medio, de tal forma que a pesar de la degradación que pueda sufrir en el medio de transmisión vuelva a ser interpretable correctamente en el receptor. Dicho en otras palabras transforma un paquete de información binaria en una sucesión de impulsos adecuados al medio físico utilizado en la transmisión. Estos impulsos pueden ser por transmisión por cable, transmisión inalámbrica (Wireless) o transmisión óptica. Cuando actúa en forma de recepción el trabajo es inverso, se encarga de transformar estos impulsos en paquetes de datos binarios que serán entregados a la capa de enlace. 37 2.2.1.1.2 Capa de Enlace. La capa de enlace proporciona transferencia de tramas de datos desde un nodo a otro sin error por encima de la capa física. Se ocupa del direccionamiento físico, de la topología de la red, del acceso a la red, de la notificación de errores, de la distribución ordenada de tramas y del control del flujo. Puede decirse que ésta capa traslada los mensajes hacia y desde la capa física a la capa de red. Especifica como se organizan los datos cuando se transmiten en un medio particular. Además del direccionamiento local, se ocupa de la detección y control de errores ocurridos en la capa física, del control del acceso a dicha capa, de la integridad de los datos y fiabilidad de la transmisión. Para esto, agrupa la información a transmitir en bloques, e incluye a cada uno una suma de control que permitirá al receptor comprobar su integridad. Los datagramas recibidos son comprobados por el receptor. Si algún datagrama se ha corrompido se envía un mensaje de control al remitente solicitando su reenvío. La capa de enlace se divide en dos subcapas: - LLC (Control lógico de enlace): define la forma en que los datos son transferidos sobre el medio físico, proporcionando servicio a las capas superiores. - MAC (Control de acceso al medio): Esta subcapa actúa como controladora del hardware. Regula la utilización del medio físico para facilitar que varios equipos puedan competir simultáneamente por el manejo de un mismo medio de transporte. 38 2.2.1.1.3 Capa de Red. La capa de red controla el funcionamiento de la subred que decide la ruta física que deben seguir los datos. Se ocupa de la transmisión de los datagramas o paquetes y de encaminar cada uno en la dirección adecuada. El rol principal de la capa de red es hacer que los datos lleguen desde el origen al destino, aún cuando ambos no estén conectados directamente. Es decir, que se encarga de encontrar una ruta manteniendo una tabla de enrutamiento y atravesando los equipos que sean necesarios, para hacer llegar los datos al destino. Los equipos encargados de realizar este encaminamiento se denominan encaminadores o routers, Adicionalmente la capa de red debe gestionar la congestión de red, que es el fenómeno que se produce cuando una saturación de un nodo tira abajo toda la red. La capa de red proporciona: - Enrutamiento de marcos entre redes. - Control de tráfico de subred. - Traducción de direcciones o nombres lógicos en direcciones físicas. La capa de red se subdivide en dos: - Transporte: Encargada de encapsular los datos a transmitir. Utiliza los paquetes de datos. En esta categoría se encuentra el protocolo IP. - Conmutación: Esta parte es la encargada de intercambiar información de conectividad específica de la red. Los routers son dispositivos que trabajan en este nivel y se benefician de estos paquetes de actualización de ruta. Los protocolos más frecuentemente utilizados en esta capa son dos: X.25 e IP. 39 2.2.1.1.4 Capa de Transporte. Es la capa encargada de efectuar el transporte de los datos libres de errores de la máquina origen a la máquina destino, independizándolo del tipo de red física que se esté utilizando. Garantiza la fiabilidad del servicio, describe la calidad y naturaleza del envío de datos. Define cuando y como debe utilizarse la retransmisión para asegurar su llegada. Para ello divide el mensaje recibido de la capa de sesión en trozos o datagramas, los numera correlativamente y los entrega a la capa de red para su envío. Durante la recepción, si la capa de red utiliza el protocolo IP, la capa de transporte es responsable de reordenar los paquetes recibidos fuera de secuencia. También puede funcionar en sentido inverso multiplexando una conexión de transporte entre diversas conexiones de datos. Este permite que los datos provenientes de diversas aplicaciones compartan el mismo flujo hacia la capa de red. Su función básica es aceptar los datos enviados por las capas superiores, dividirlos en pequeñas partes si es necesario, y pasarlos a la capa de red. En ésta capa se proveen servicios de conexión para la capa de sesión que serán utilizados finalmente por los usuarios de la red al enviar y recibir paquetes. Estos servicios estarán asociados al tipo de comunicación empleada, la cual puede ser diferente según el requerimiento que se le haga a la capa de transporte. La comunicación puede ser manejada para que los paquetes sean comunicación punto a punto libre de errores, o sin tener en cuenta el orden de envío. Una de las dos modalidades debe establecerse antes de comenzar la comunicación para que una sesión determinada envíe paquetes, y ése será el tipo de servicio brindado por la capa de transporte hasta que la sesión finalice. 40 El tamaño y la complejidad de un protocolo de transporte dependen del tipo de servicio que puede obtener de la capa de red. Si la capa de red no es confiable y si sólo admite datagramas, el protocolo de transporte debería incluir detección de errores amplios y recuperación. Normalmente, el nivel de transporte puede aceptar mensajes relativamente grandes pero se encuentra la capa de tamaño de límites impuestos por la red (o inferiores) de mensaje estricto. Por consiguiente, el nivel de transporte debe dividir los mensajes en unidades o marcos más pequeños que anteponen un encabezado a cada marco. La información de encabezado de capa de transporte debe incluir entonces información de control como inicio de mensaje y final de mensaje. Si las capas inferiores no mantienen secuencia, el encabezado de transporte además debe contener información de secuencia para permitir que obtenga conjuntamente de nuevo las piezas en el orden correcto antes de entregar el mensaje recibido hasta la capa anterior al nivel de transporte en el extremo receptor. 2.2.1.1.5 Capa de Sesión. La capa de sesión permite el establecimiento de sesión entre procesos que se ejecutan en estaciones diferentes. Ofrece control de diálogo y sincronización. Esta capa es la que se encarga de mantener el enlace entre las dos computadoras que estén trasmitiendo archivos. Esta capa ofrece varios servicios: - Control de la sesión a establecer entre el emisor y el receptor. - Control de la concurrencia, es decir, que dos comunicaciones a la misma operación crítica no se efectúen al mismo tiempo. - Mantener puntos de verificación, para que, ante una interrupción de transmisión por cualquier causa, la misma se 41 pueda reanudar desde el último punto de verificación en lugar de repetirla desde el principio. Se asegura que, dada una sesión establecida entre dos máquinas, la misma se pueda efectuar para las operaciones definidas de principio a fin, reanudándolas en caso de interrupción. En muchos casos, los servicios de la capa de sesión son parcialmente, o incluso, totalmente prescindibles. 2.2.1.1.6 Capa de Presentación. La capa de presentación da formato a los datos presentados a la capa de aplicación. Se ocupa de los aspectos semánticos de la comunicación, estableciendo los arreglos necesarios para que puedan comunicar máquinas que utilicen diversa representación interna para los datos. Describe como pueden transferirse números de coma flotante entre equipos que utilizan distintos formatos matemáticos. En teoría esta capa presenta los datos a la capa de aplicación tomando los datos recibidos y transformándolos en formatos como texto, imágenes y sonido. El objetivo principal es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres, números, sonido o imágenes, los datos lleguen de manera reconocible. La capa de presentación es la primera en trabajar más el contenido de la comunicación que cómo se establece la misma. Dicha capa proporciona: - Carácter de traducción de código. - Conversión de datos. - Compresión de datos: Reduce el número de bits que se tienen que transmitir en la red. 42 - Cifrado de datos: Cifra datos por motivos de seguridad, por ejemplo cifrado de contraseñas. La capa de presentación es la encargada de manejar las estructuras de datos abstractas y realizar las conversiones de representación de datos necesarios para la correcta interpretación de los mismos. 2.2.1.1.7 Capa de Aplicación. La capa de aplicación sirve como la ventana para que los usuarios y procesos de aplicación tengan acceso a servicios de red. Ésta capa describe como hacen su trabajo los programas de aplicación como los navegadores, clientes de correo, terminales remotos, transferencia de ficheros. Esta capa implementa la operación con ficheros del sistema. Por un lado interactúan con la capa de presentación y por otro representan la interfaz con el usuario, entregándole la información y recibiendo los comandos que dirigen la comunicación. Funciones: - Redirección de recursos. - Acceso de archivo remoto. - Acceso de impresora remota. - Administración de redes. - Servicio de directorio. - Mensajería electrónica. Preguntas de Repaso. 1. Complete las oraciones de acuerdo a la capa del modelo OSI que corresponde. a) Proporciona transferencia de tramas de datos desde un nodo a otro. _______________________. b) Controla el funcionamiento de la subred que decide la ruta física que deben seguir los datos. _______________________. 43 c) Sirve como ventana para que los usuarios y procesos de aplicación tengan acceso a servicios de red. ______________. d) Se encarga de las conexiones físicas de la computadora hacia la red. _____________________. e) Lleva los datos libres de errores de la maquina origen a la destino. ___________________, f) Da formato a los datos presentados a la capa de aplicación. ___________________. g) Mantiene el enlace entre las dos computadoras que estén transmitiendo archivos. ________________. 2. ¿Capa que transmite la información en Bloques? __________________________________________________________. 3. ¿Capa que divide el mensaje recibido en trozos o datagramas? ____________________________________________________. 2.2.1.2 PROTOCOLO. Es un conjunto estricto de reglas o procedimientos que se requieren para iniciar y mantener las comunicaciones. Los protocolos de comunicación de datos son los que hacen posible el intercambio de información, después de establecer una llamada a través de un canal informativo. El sistema de protocolos que fue desarrollado como producto de las primeras investigaciones realizadas por el Departamento de Defensa de los Estados Unidos, llego a conocerse como TCP/IP, después de que los dos protocolos iniciales fueron desarrollados: el protocolo de Control de Transmisión (TCP) y el protocolo Internet (IP). 44 2.2.1.3 PROTOCOLO TCP/IP. 2.2.1.3.1 IP. El Protocolo de Internet (IP, de sus siglas en inglés Internet Protocol) es un protocolo no orientado a conexión usado tanto por el origen como por el destino para la comunicación de datos a través de una red de paquetes conmutados. Los datos en una red basada en IP, son enviados en bloques conocidos como paquetes o datagramas (en el protocolo IP estos términos se suelen usar indistintamente). En particular, en IP no se necesita ninguna configuración antes de que un equipo intente enviar paquetes a otro con el que no se había comunicado antes. El Protocolo de Internet provee un servicio de datagramas no fiable (también llamado del mejor esfuerzo (best effort), lo hará lo mejor posible pero garantizando poco). IP no provee ningún mecanismo para determinar si un paquete alcanza o no su destino y únicamente proporciona seguridad (mediante checksums o sumas de comprobación) de sus cabeceras y no de los datos transmitidos. Por ejemplo, al no garantizar nada sobre la recepción del paquete, éste podría llegar dañado, en otro orden con respecto a otros paquetes, duplicado o simplemente no llegar. Si se necesita fiabilidad, ésta es proporcionada por los protocolos de la capa de transporte, como TCP. 2.2.1.3.2 TCP. El Protocolo de Control de Transmisión (TCP en sus siglas en inglés, Transmission Control Protocol que fue creado entre los años 1973 - 1974 por Vint Cerf y Robert Kahn) es uno de los protocolos fundamentales en Internet. Muchos programas dentro de una red de datos compuesta por computadoras pueden usar TCP para crear conexiones entre ellas a través de las cuales se envían datos. 45 El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron. También proporciona un mecanismo para distinguir distintas aplicaciones dentro de una misma máquina, a través del concepto de puerto (computación). TCP soporta muchas de las aplicaciones más populares de Internet, incluidas HTTP, SMTP y SSH. El Protocolo de Control de Transmisión (TCP) es un protocolo de comunicación orientado a conexión y fiable del nivel de transporte, actualmente documentado por IETF RFC 793. 2.2.1.3.3 Dirección IP. Una dirección IP es un número que identifica de manera lógica y jerárquica a una interfaz de un dispositivo habitualmente una computadora dentro de una red que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red o nivel 3 del modelo de referencia OSI. Dicho número no se ha de confundir con la dirección MAC que es un número hexadecimal fijo que es asignado a la tarjeta o dispositivo de red por el fabricante, mientras que la dirección IP se puede cambiar. Es habitual que un usuario que se conecta desde su hogar a Internet utilice una dirección IP. Esta dirección puede cambiar al reconectar; y a esta forma de asignación de dirección IP se denomina una dirección IP dinámica (normalmente se abrevia como IP dinámica). Los sitios de Internet que por su naturaleza necesitan estar permanentemente conectados, generalmente tienen una dirección IP fija (se aplica la misma reducción por IP fija o IP estática), es decir, no cambia con el tiempo. Los servidores de correo, DNS, FTP públicos, y servidores de páginas Web necesariamente deben contar con una dirección IP fija o estática, ya que de esta forma se permite su localización en la red. 46 2.2.2 MODELO CLIENTE - SERVIDOR. Es una arquitectura computacional que involucra procesos de cliente que se encuentran requiriendo servicios de procesos de un servidor. Cliente/Servidor es el concepto computacional que viene a ser la extensión lógica de la programación modular, la cual asume fundamentalmente la separación de grandes piezas de software, en partes mas pequeñas llamadas “módulos”, creando la posibilidad de obtener un desarrollo más fácil y darle un mejor mantenimiento. El proceso Cliente/Servidor reconoce que estos módulos no necesitan ser ejecutados dentro del mismo espacio de memoria, de tal manera que al utilizar esta arquitectura, el modulo que realiza la llamada se convierte en el “cliente” (que es quien hace la requisición de un servicio), y el modulo que es llamado se convierte en el “servidor” (que es el que provee el servicio). Para aplicar dicho concepto, el siguiente paso será tener a clientes y servidores corriendo en el hardware, y bajo el software de la plataforma, apropiados para realizar sus funciones. Por ejemplo, servidores de manejo de sistemas de bases de datos, ejecutándose en plataformas especialmente diseñadas y configuradas para manejar requisiciones en forma de pregunta, o archivo de servidores corriendo en plataformas con elementos especiales para manejo de archivos . 2.2.2.1 PROCESO CLIENTE. El cliente es un proceso (programa) que envía un mensaje a un proceso servidor, requiriéndole a éste la realización de una tarea (servicio). El programa cliente usualmente maneja la parte de la aplicación que hace interfaz con el usuario, validando los datos introducidos por éste, enviando las requisiciones al programa servidor, y a veces ejecutando lógicamente las tareas. 2.2.2.2 PROCESO SERVIDOR. Un proceso (programa) servidor satisface las requisiciones del cliente realizando la tarea solicitada. El programa servidor general 47 recibe las solicitudes desde el programa cliente, ejecuta las extracciones de información de las bases de datos, las actualiza, manejando la integridad de los datos, y envía respuestas a las interrogantes del cliente. 2.2.3 LENGUAJES DE PROGRAMACIÓN PARA LA WEB. 2.2.3.1 C/C++. C es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos. La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portable entre plataformas y/o arquitecturas. Los Sockets son una interfaz que permiten que las aplicaciones puedan acceder a los servicios que brinda el software TCP/IP, permitiendo la comunicación entre procesos en el mismo equipo o en equipos diferentes. La Interfaz Socket proporciona funciones generalizadas que dan soporte a las comunicaciones en red empleando para ello muchos de los protocolos disponibles hoy en día. Los llamados sockets hacen referencia a todos los protocolos TCP/IP como una única 48 familia. Las llamadas permiten al programador especificar el tipo de servicio requerido, en vez del nombre de un protocolo especifico. Los socke