Participaron en el proyecto:Documentación básica sobre el PKNLZRINTRODUCCIÓNSe trata en este proyecto de realizar un analizador estadístico de protocolos de redes de area local. Las funciones a desempeñar por analizador comprenden:La especificación packet driver provee de un simple interface programable que permite a varias aplicaciones compartir un único interface de red a nivel enlace de datos (nivel 2 de OSI). El propósito de la especificación es hacer que el tratamiento de la tarjeta de red sea independiente del modelo de tarjeta que se esté utilizando (independencia del fabricante), no obstante no provee de independencia en cuanto al nivel físico por lo que el driver dependerá del modelo utilizado a este nivel, esto es, el packet driver es dependiente de la tarjeta utilizada; en concreto el usado para el desarrollo del analizador corresponde al de las tarjetas SMC de Western Digital 8003PKDR.EXE . Gracias al driver, el analizador funcionaría igual para las tarjetas token ring siempre que se disponga del driver correspondiente, disponibles por otra parte en dominio público. PACKET DRIVER El packet driver es invocado vía interrupciones software, queda cargado en un vector de interrupciones entre el 0x60 y el 0x80. Aunque se puede obligar a que se cargue en un vector concreto, esto no es aconsejable porque pueden surgir conflictos con las interrupciones. Para localizar el vector de interrupciones en el que se ha cargado el packet driver se ha de localizar los caracteres (texto ASCII) "PKT DRVR" después de tres bytes de código (una instrucción de salto) entre los vectores 0x60 y 0x 80. Utilizando las funciones proporcionadas por la interrupción que habilita el packet driver podremos iniciar el acceso a un tipo de específico de paquete, liberar el acceso a él, enviar un paquete, interrogarle sobre ciertas estadísticas, ... La especificación packet driver describe varios tipos de drivers, el primero es el packet driver básico, que proporciona funciones mínimas como son operaciones de broadcast y de recepción de paquetes. El segundo driver es tipo extendido, que además de las funciones del tipo básico, proporciona funciones menos comúnmente usadas como multicast y estadísticas del interface. El tercer y último tipo (alto rendimiento) soporta mejoras de prestaciones. IDENTIFICACIÓN DE INTERFACES DE RED Los interfaces de red son identificados por tres enteros, El segundo de los enteros es el tipo particular de interface dentro de la clase: Los de ethernet pueden ser 3Com, 3C503 o 3C505, Univation, BICC de ISOLAN, ... Los de 802.5 pueden ser IBM token ring adapter, Proteon,... Y por último, el número identifica a un interface de una máquina que tenga dos interfaces del mismo tipo y clase. El packet driver del que disponemos está diseñado para su funcionamiento en redes ethernet, concretamente tiene clase 1 (ethernet), tipo 14 (Western digital WD8003). DEMULTIPLEXACIÓN DE NIVEL DE ENLACE Ethernet es el método de organización más comúnmente usado hasta la fecha. Las aplicaciones diseñadas para comunicarse a través de ethernet, incluían drivers para una tarjetas concretas. Esto significa que cada aplicación se apropia de la tarjeta y ésta no puede ser usada simultáneamente por varias aplicaciones. La solución a este problema viene dada por el packet driver, un software que se apropia de la tarjeta y que proporciona un interface standard para ser usado por todas las aplicaciones. De este manera las aplicaciones podrán indicar al packet driver que tipo de paquetes quieren recibir y en que dirección debe depositarlos. Se debe definir un mecanismo que permita decidir a que tipo de protocolo pertenece un paquete, en caso de un mismo medio físico sea utilizado por diferentes protocolos de transporte (TCP/IP, IPX, ...). En ethernet tipo 2 (DIX), este mecanismo se vale del campo tipo de dos bytes que viene inmediatamente después de los campos de dirección destino y fuente (de 6 bytes cada uno). Sin embargo en IEEE 802.3 ese campo es utilizado para indicar la longitud del campo de información de nivel superior. La función access_type() permitirá la demultiplexación del nivel enlace de datos. Cada llamada a esta función establece acceso a un tipo de trama,proporcionando un handle (un número entero) por cada tipo de MAC, está conexión permanecerá hasta que sea liberada mediante la llamada a la función release_type(). PROGRAMANDO EL INTERFACE A las funciones se accede vía interrupciones software, para lo que previamente se ha tenido que dejar en AH el código de la función deseada. A continuación vamos a estudiar todas las funciones que se utilizan a lo largo del proyecto, especificando para cada una de ellas los valores que han de tomar los registros en las llamadas así como los valores devueltos por ellas: Guía de usuario del PKZ El PKZ se compone de los siguientes ficheros: - PKZ.EXE el programa en sí. - PKZ.DOC esta documentación. - PKZ.LOG un fichero de registro de ejecuciones. - TEKEL.NDF ejemplo de fichero de definición de nodos. Además de estos ficheros el programa necesita que esté presente en el sistema un Packet Driver para la tarjeta de red. El Packet Driver deberá estar residente. Es posible que si está en memoria algún otro programa residente que acceda a la tarjeta (por ejemplo, IPX) el Packet Driver tenga deshabilitadas algunas funciones necesarias para ejecutar el PKZ. |
|