recurso 2 unidad 6 · web viewel sistema de ficheros distribuido, dfs (distributed file system)...

33
SISTEMA DISTRIBUIDO DE FICHEROS DE W2000 Y WNT SERVER

Upload: others

Post on 24-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

RECURSO 2 UNIDAD 6

Sistema Distribuido de Ficheros de W2000 y WNT server

41.Introducción.

41.1¿Qué es un sistema distribuido de ficheros?

51.2Ventajas de DFS.

62.Características generales de DFS.

62.1Administración flexible.

72.2Exploración de servidores de ficheros.

72.3Búsqueda de ficheros o datos.

72.4Mejora en la disposición y carga equitativa de datos.

82.5Localización transparente de recursos.

82.6Administración de Intranet e Internet.

83.Características técnicas de DFS.

83.1Conceptos y términos de DFS.

83.1.1Accediendo a un volumen DFS.

93.1.2Albergando un volumen DFS

113.1.3Unión de uniones.

113.1.3.1Enlaces inter-DFS (Stand-Alone Server).

113.1.3.2Uniones a medio nivel.

113.1.4Volúmenes alternativos.

123.1.5Volúmenes de bajo nivel.

123.2Tabla maestra de la partición.

133.3Resolución de uniones en DFS.

153.4Fail-over sobre de nombres de volúmenes alternativos.

153.4.1Escenario 1.

163.4.2Escenario 2.

163.4.3Escenario 3.

163.4.4Escenario 4.

163.5Seguridad.

163.5.1Inicios de sesión.

173.5.2Listas de control de Acceso, ACL.

184.Interfaz de programación DFS.

184.1Función NetDfsAdd

184.1.1Parámetros de la función NetDfsAdd.

194.1.2Valor de retorno de la función NetDfsAdd.

194.2Función NetDfsRemove.

194.2.1Parámetros de la función NetDfsRemove.

204.2.2Valor de retorno de la función NetDfsRemove.

204.3Función NetDfsEnum

204.3.1Parámetros de la función NetDfsEnum.

214.3.2Valor de retorno de la función NetDfsEnum.

214.3.3Consideraciones sobre el uso de la función NetDfsEnum.

214.4Función NetDfsGetInfo.

224.4.1Parámetros de la función NetDfsGetInfo.

234.4.2Valor de retorno de la función NetDfsGetInfo.

234.4.3Consideraciones sobre el uso de la función NetDfsGetInfo.

234.5Función NetDfsSetInfo.

234.5.1Parámetros de la función NetDfsSetInfo.

244.5.2Valor de retorno de la función NetDfsSetInfo.

244.5.3Consideraciones sobre el uso de la función NetDfsSetInfo.

244.6Descripción de errores de la interfaz DFS.

255.Bibliografía.

265.1Enlaces de interés.

Introducción.

El sistema de ficheros distribuido, DFS (Distributed File System) desarrollado para los sistemas operativos Windows NT Server y Windows 2000 Server es un servicio de red que facilita la búsqueda y gestión de datos que están físicamente repartidos por la red. DFS es un medio para unificar ficheros almacenados en diferentes computadoras de la red a través de un único espacio de nombres jerárquico. Una red con múltiples servidores de ficheros repartidos por la red con estructuras de directorios diferentes para cada uno de ellos será visto como una única estructura de ficheros que incluye todos los servidores de ficheros así como los ficheros compartidos como un recurso más de la red.

DFS es para los servidores lo que el sistema de ficheros para los discos duros. El sistema de ficheros proporciona uniformidad de nombre para el acceso a los grupos de sectores de los discos, DFS proporciona uniformidad estableciendo un único espacio de nombres para la localización de grupos de servidores, recursos compartidos y ficheros. Por tanto DFS, posibilita la organización de los servidores de ficheros así como los ficheros compartidos de la red.

1.1 ¿Qué es un sistema distribuido de ficheros?

DFS proporciona un sistema de nombres transparente para distintos volúmenes de servidores. A través de DFS un administrador puede establecer un único sistema de ficheros jerárquico cuyo contenido esté distribuido por la red de una organización.

Históricamente, usando la convención universal de nombramiento, UNC (universal naming convetion), un usuario o una aplicación necesitaban especificar el nombre del servidor físico y el nombre del recurso compartido para acceder, es decir era necesario establecer el acceso según la forma \\servidor\recurso_compartido\ruta\fichero.

El direccionamiento UNC puede ser usado de forma directa asociando las rutas a unidades lógicas. Cada unidad lógica puede mapear una ruta a un recurso compartido de red de forma que el usuario o la aplicación se refieren a ella cuando desean acceder al recurso de red.

Debido al imparable crecimiento de las redes de las organizaciones, y de forma paralela el crecimiento de la información almacenada y útil para la red organizativa, el método de asociar unidades lógicas a rutas UNC de recursos de la red se quedaba escaso y pobre para satisfacer la nueva situación. Los usuarios se veían obligados a recordar rutas de acceso a recursos ampliamente consultados lo que provocaba situaciones indeseadas como retardo en el acceso, olvidos de rutas, etc.

DFS resuelve el problema permitiendo la unión de servidores y recursos compartidos a través de un espacio de nombres único. El nuevo volumen creado por DFS permite conectar recursos compartidos de forma jerárquica con otros recursos compartidos de las redes Windows. DFS establece una representación lógica de la ubicación física de los recursos compartidos proporcionando una localización transparente de recursos a los usuarios de la red.

1.2 Ventajas de DFS.

Las características y ventajas de DFS son expuestas a continuación:

· Visión jerárquica de los recursos compartidos de la red.

Mediante la agrupación de los recursos compartidos, el administrador puede crear un único volumen jerárquico que se comporta como una gigantesca unidad de disco duro. Cada usuario puede crear su propio volumen de DFS, el cual también podrá ser incorporado a otros volúmenes DFS llamando a este fenómeno enlaces inter DFS.

· Una flexible administración del volumen.

Cada recurso compartido en el volumen DFS puede ser solicitado sin afectar por ello al resto de recursos agrupados en el volumen DFS.

· Herramienta gráfica de administración.

Cada raíz DFS es fácilmente administrada por medio de una herramienta gráfica que permite la navegación, configuración, alteración y el establecimiento de enlaces inter DFS de cada uno de ellos. También permiten la administración remota de raíces DFS.

· Alta disposición de datos.

Múltiples recursos compartidos de sólo lectura pueden ser montados bajo el mismo nombre lógico DFS proporcionando localizaciones alternativas para el acceso a datos. Si una de las copias no está disponible, automáticamente se habilita la selección de una fuente alternativa.

· Balanceo de la carga soportada por los recursos.

Múltiples copias de solo lectura de recursos compartidos localizados en unidades de disco o servidores diferentes pueden ser montados bajo el mismo nombre lógico DFS permitiendo balancear la carga sobre los recursos. Cuando los usuarios requieren unos recursos de la red, su acceso es transparente a ellos, permitiendo que el sistema DFS se refiera a cualquiera de las copias del recurso distribuidas por la red.

· Sistema de nombres transparente.

Este sistema permite que los usuarios finales exploren en el espacio de nombres sin tener que considerar la localización física de los recursos de la red. Los datos pueden ser recolocados físicamente sobre cualquier servidor y el espacio de nombres DFS reconfigurado para que el usuario final no se sienta afectado por el cambio, es decir, hacer transparente al usuario el cambio de localización de datos en la red.

· Integración con el modelo de seguridad de Windows NT.

A cualquier usuario que acceda a un recurso compartido a través de DFS se le aplicarán los derechos y permisos asociados a su inicio de sesión.

· Cliente DFS integrado en WNT 4.0 y aplicable en W98 y W95.

El cliente DFS ha sido incorporado para WNT 4.0 workstation. La integración junto con el redirector SMB permite obtener todas las características de DFS sin requerir recursos adicionales (memoria de sistema, etc) evitando afectar al resto de clientes del sistema. Por otro lado el cliente es compatible para sistema W95 y W98 extendiéndose el beneficio de DFS al resto de sistemas de la familia Microsoft.

· Cliente con sistema de cacheado avanzado.

Un volumen DFS puede conectarse potencialmente a cientos o miles de ficheros compartidos. El cliente no asume ninguna porción de información DFS publica como elemento que desee ser accedido por el usuario. Durante el primer acceso a un directorio el cliente cachea información del mismo de forma local. Durante el segundo acceso referido al mismo espacio de nombres DFS el sistema accederá a la información cacheada evitando así obtener una nueva referencia y dejando libre la red.

· Operabilidad con otros tipos de redes.

Cualquier volumen que sea accesible a través de un redirector sobre WNT 4.0 workstation puede participar del mismo espacio de nombres para DFS. Los administradores pueden crear una jerarquía única que incorpore sistemas de ficheros de redes heterogéneas.

2. Características generales de DFS.

2.1 Administración flexible.

DFS proporciona una potente herramienta de administración que ayuda enormemente en la labor administrativa y reduce considerablemente su complejidad. Permite construir directorios jerárquicos que contienen múltiples servidores y ficheros compartidos.

Figura 1. Herramienta administrativa de DFS.

Cualquier nodo en el árbol de directorios DFS es asignado a un nombre lógico que apunta a un fichero compartido. El nodo DFS puede conmutar para apuntar a un nuevo servidor si el viejo servidor al que estaba apuntando queda fuera de servicio. Los usuarios no son nunca conscientes de que están accediendo a servidores diferentes, de esta manera el aspecto del árbol DFS no tiene necesidad de cambiar, evitando crear situaciones de confusión en el usuario.

2.2 Exploración de servidores de ficheros.

DFS ofrece al usuario un único directorio que puede contener un amplio número de recursos entre servidores y ficheros compartidos. Esto facilita la exploración de los recursos DFS a través de la red para encontrar los ficheros necesarios. La navegación “browsing” de DFS es amigable debido a que el directorio puede contener a su vez subdirectorios con nombres lógicos con referencia de asignación común para el usuario (pueden ser nombres que describan el contenido, etc).

Figura 2. Exploración de un volumen DFS.

DFS facilita el trabajo y la organización de la información en organizaciones y grupos de trabajo; los recursos pueden ser combinados de forma jerárquica en el directorio.

2.3 Búsqueda de ficheros o datos.

Cualquier fichero publicado por un servidor DFS en el árbol de directorios DFS puede ser localizado de manera sencilla mediante el uso de las herramientas de búsqueda incluidas en los sistemas W95, W98 y WNT workstation, o a través de programas de procesamiento de texto.

2.4 Mejora en la disposición y carga equitativa de datos.

DFS garantiza la accesibilidad a los datos manteniendo direccionados múltiples servidores que pueden entrar en servicio de forma alternativa. Si uno de los volúmenes falla por algún motivo, el sistema DFS habilita otro servidor para ofrecer los mismos datos, garantizando su accesibilidad y proporcionando una carga de datos en la red distribuida equilibradamente entre todos los servidores.

La distribución equilibrada de datos se entiende si un número alto de usuarios desean al mismo tiempo acceder al mismo volumen de red; es entonces cuando DFS distribuye de forma equitativa los accesos de los usuarios a través de volúmenes diferentes con replicas de los datos deseados por los usuarios. Ésta técnica tiene un beneficio considerable, no solo para el usuario que no tendrá que esperar tanto tiempo como si accediera al mismo volumen que el resto de usuarios, sino para el tráfico de red, que en general sé beneficiaria de una distribución de carga igualmente equilibrada.

2.5 Localización transparente de recursos.

Los enlaces a los ficheros compartidos así como a los servidores son transparentes a los usuarios mediante el uso de un espacio de nombres único. Este hecho ayuda enormemente a los administradores en la labor de permitir y preveer un crecimiento de la información compartida en la red así como su administración centralizada.

El espacio de nombres único elimina la necesidad de que los usuarios tengan que conocer la localización física de los recursos a los que desean acceder. Esto se convierte en una especial ventaja en organizaciones complejas con una gran zona de extensión y difusión, donde existen grandes áreas de información almacenada que necesariamente debe estar disponible para toda la organización.

Por otro lado los administradores pueden mover la carga o datos a través de os servidores de la red sin tener la necesidad de reeducar a los usuarios finales sobre la nueva localización de los recursos o reconfigurar las aplicaciones.

2.6 Administración de Intranet e Internet.

DFS simplifica el desarrollo de soluciones para internet o intranet. Una WEB master puede incluir ahora un directorio lógico DFS que incluya la página WEB raíz de cualquier servidor WEB de un departamento como un subdirectorio de la WEB principal de la intranet. Esto permite que cualquier departamento o grupo conserve el control sobre el contenido de su intranet particular, mientras el usuario observa un único sitio intranet.

DFS trabaja con el servicio de información de internet para WNT server. Los enlaces a otras páginas almacenados en DFS no tienen que ser actualizados si la página inicial es físicamente trasladada desde un servidor a otro.

3. Características técnicas de DFS.

3.1 Conceptos y términos de DFS.

Una raíz DFS es un recurso local que sirve como punto de entrada para otros recursos compartidos. Cualquier recurso compartido puede ser compartido a través del espacio de nombres DFS.

3.1.1 Accediendo a un volumen DFS.

Un volumen DFS es accedido utilizando la resolución de nombres estándar UNC:

· \\nombre_del_servidor\nombre_del_recurso_DFS\ruta\fichero.

Donde nombre_del_servidor hace referencia al nombre de la computadora o host DFS, nombre_del_recurso_DFS localiza cualquier recurso albergado por la raíz DFS del servidor, y ruta\fichero es cualquier nombre de ruta válido para Win32. Es posible conectarse a un recurso DFS situado en cualquier lugar de la red a través de los comandos net, concretamente el comando net use.

Los recursos que quieran participar de un DFS deben ser almacenados en cualquier servidor accesible mediante clientes DFS. Esto incluye recursos locales, recursos montados sobre cualquier servidor WNT o workstation, o recursos accesibles para WNT a través de clientes software como Netware, Banyan, y otros.

Habilitando el servicio de directorios DFS, un volumen DFS puede ser accedido mediante la resolución de nombres tolerante a fallo o la resolución de nombres de dominio:

· \\nombre_tolerante_a_fallo\nombre_del_recurso_DFS\ruta\fichero.

· \\nombre_de_dominio\volumen\ruta\fichero.

Donde nombre_tolerante_a_fallo hace referencia al nombre que el administrador elige para especificar un volumen DFS almacenado en el DS (servicio de directorio), siendo el DS el grupo de computadoras que proporcionan tolerancia a fallos en la raíz de DFS, y nombre_de_dominio\volumen es el nombre de un objeto volumen estándar del servicio de directorio de Windows.

3.1.2 Albergando un volumen DFS

Una red puede contener o albergar varios volúmenes DFS mientras todos tengan un nombre diferente. Cualquier Windows NT 4.0 o cualquier Windows 2000 server puede correr el servicio DFS y contener por tanto un volumen DFS. En los sistemas operativos basados en Windows NT, o más concretamente en sistemas que posean su arquitectura no existen limitaciones que impidan albergar múltiples volúmenes en futuras realizaciones.

Un escenario típico de un sistema DFS diseñado para una organización de tamaño medio sería aquel compuesto por un volumen DFS que enlaza con múltiples volúmenes repartidos en múltiples servidores a través de toda la organización. Un ejemplo más concreto lo forma el caso de una organización que desempeña su actividad económica en el mundo bancario, que posee un número relativamente significativo de trabajadores y que además trabajan comúnmente y de forma forzosa con un procesador de texto (por ejemplo Word). Estos trabajadores pueden necesitar acceder diariamente a documentos almacenados en todos o algunos de los diferentes departamentos de la organización, eso significa que deben tener la posibilidad de poder saltar a través de la red por los diferentes servidores de la organización. Como solución al problema se puede proponer un único volumen DFS almacenado localmente en un servidor y relacionado únicamente con aquellos servidores y recursos compartidos que son usados típicamente para contener información del procesador de texto.

La Tabla 1 muestra de manera más detallada una típica distribución DFS detallada:

Nombre UNC

Ubicación

Descripción

\\Server\Public

\\Server\Public

DFS raíz de la organización

\\Server\Public\Intranet

\\IIS\Root

Unión con la raíz de la intranet.

\\Server\Public\Intranet\CorpInfo

\\Marketing\Info\Corporate_HTML

Unión con el contenido departamental de la intranet

\\Server\Public\Users

\\Server\Public\Users

Colección de directorios home

\\Server\Public\Users\Bob

\\Server\Public\Users

Unión de users con el directorio Bob sobre el servidor de desarrollo corporativo

\\Server\Public\Users\Bob\Java_Apps

\\Bob1\Data\Java_Apps

Unión de del directorio de desarrollo de Bob con una estación de trabajo personal de Bob.

\\Server\Public\Users\Bob\Java_Apps

\\Bob2\Backups\Java_Apps

Volumen alternativo o de backup para el trabajo de Bob

\\Server\Public\Users\Ray

\\Server\Public\Users

Volumen de bajo nivel

Tabla 1. Distribución DFS típica.

La Figura 3 presenta un diagrama jerárquico de la información contenida en la Tabla 1.

What an end-user sees:

What an Administrator builds:

\Ray

Junction Point

\\NW411\Public

Users\Ray

Public

Users

Bob

DfsRoot

\Users\

\\Server\Public

Normal Dir

Ray

Java_Apps

\Intranet

Junction Point

\\Marketing\Info\

Corporate_HTML

Junction Point

\\Bob2\Backup\

Java_Apps

Intranet

..etc..

CorpInfo

Inter-Dfs Link (Stand-alone),

or mid-level junction (DS)

1

Alternate

Volumes

2

Downlevel

Volume

3

\\IIS\Root\

Content

\Bob

Junction Point

\\Bob1\Data\

Java_Apps

\\Dev\NT\

priv\Users\Bob

\\IIS\Root\

Content

\CorpInfo

Mid-level Junction

\\Dev\NT\

priv\Users\Bob

Inter-Dfs Link

Figura 3. Típica distribución organizativa DFS.

El diagrama presenta importantes aspectos cuya compresión es importante a la hora de establecer una configuración del sistema DFS que sea capaz de cubrir nuestras necesidades concretas de forma eficiente. Aparecen relaciones indirectas entre sistemas diferentes a través de lo que se denomina unión de uniones, véase el caso de la unión entre \\Server\Public\Intranet con la raíz DFS de otro sistema, \\IIS\Root\Content que a su vez relaciona \\IIS\Root\Content\CorpInfo con el sitio \\Marketing\Info\Corporate_HTML. Esto implica que a través de una raíz DFS concreta como es el caso de \\Server\Public se puede acceder a sitios apuntados por otra raíz DFS como es el caso del sitio \\Marketing\Info\Corporate_HTML apuntado por medio de la raíz \\IIS\Root\Content.

Además parecen los conceptos de volúmenes alternativos y volúmenes de bajo nivel que junto a la unión de uniones pasan posteriormente a ser descritos con detalle.

3.1.3 Unión de uniones.

Por definición es una unión con elementos que a su vez son uniones, es decir, se puede expresar como la unión de uniones hijo. Existen dos métodos para establecer uniones de este tipo.

3.1.3.1 Enlaces inter-DFS (Stand-Alone Server).

Es posible unir un volumen DFS con otro volumen DFS. Los departamentos individuales dentro de una organización podrían elegir entre montar un espacio de nombres lógico de acuerdo a sus necesidades de trabajo. El volumen DFS de la corporación podría enlazar con todos los volúmenes DFS departamentales, de esta forma, el enlace inter-DFS, proporcionaría la posibilidad de que el usuario eligiera el servidor de referencia a través de una única raíz DFS. Esto significa que la ubicación del recurso concreto es transparente al usuario final (el cliente DFS recibirá referencias a través de la nueva raíz DFS).

3.1.3.2 Uniones a medio nivel.

Esta característica está diseñada para soportar la unión jerárquica ilimitada entre enlaces que no requieren inter-DFS en futuras versiones del sistema. Todas las referencias serán resueltas desde una única raíz DFS, reduciendo la probabilidad de fallo en la resolución de nombres, reduciendo el número de referencias requeridas para resolver rutas de gran profundidad y reduciendo considerablemente el tiempo de resolución de nombres DFS.

3.1.4 Volúmenes alternativos.

Si dos o más recursos de la red oganizativa son réplicas exactas de un recurso compartido y se desea unir los volúmenes que los contienen, se pude establecer un único punto de enlace en el espacio de nombres de DFS a través del cual se referencien al mismo tiempo volúmenes diferentes con recursos cuyo contenido es idéntico.

DFS no asegura, por defecto, que los datos almacenados en los dos recursos compartidos estén replicados. Las réplicas de datos DFS deberán ser consideradas como elemento a parte mediante fuentes de sincronización o réplica de datos.

Si se desea habilitar la réplica de datos entre raíces DFS es necesario habilitar el servicio de manera concreta sobre el o los servidores que se desee participen de ésta posibilidad. La réplica puede ser automática (ante cualquier cambio en los datos de una de las raíces réplica) o manual (el instante lo decide el administrador del sistema). Para realizar las réplicas de datos, DFS utiliza el servicio FRS (File Replication Service).

DFS tiene una limitación de 32 entradas para volúmenes alternativos. Por otro lado DFS no tiene limitación en cuanto al número de puntos de unión que puede albergar cada punto del árbol DFS.

3.1.5 Volúmenes de bajo nivel.

Los volúmenes de bajo nivel son aquellos que pueden ser publicados a través de una raíz DFS pero no pueden albergar ninguna raíz DFS ni tampoco enlazar con otras raíces DFS. Cualquier volumen del sistema WNT server 4.0 o posterior puede contener un volumen DFS y formar parte de un enlace inter-DFS; sin embargo los volúmenes de bajo nivel pertenecen a los sistemas WNT workstation, W98, W95, W3.11 y todos aquellos recursos compartidos para los cuales los redirectores cliente están disponibles.

3.2 Tabla maestra de la partición.

La tabla maestra de la partición PKT (Partition Knowledge Table) contiene toda la información que relaciona servidores mas recursos con rutas DFS. Es administrada mediante la API Admin DFS (véase el apartado 4 en la página 17).

La tabla posee una información de aproximadamente 300 bytes por entrada, que unido a un número no demasiado elevado de entradas de promedio en un sistema DFS estándar, hace que su tamaño en memoria sea razonablemente pequeño y por tanto, facilite la rapidez de acceso del sistema a las entradas de la tabla para su consulta.

Las máquinas cliente DFS deben tener una tabla local por cada volumen DFS que posean. Es mantenida en memoria RAM y las entradas son actualizadas cada 5 minutos como máximo.

Las máquinas servidores poseen una única tabla PKT que es mantenida y protegida mediante el registro.

La tabla maestra de partición de un volumen es por tanto el mapa que relaciona el nombre lógico asociado al espacio de nombres DFS con la ubicación física concreta del recurso y servidor que representa (véase la Tabla 2).

Ruta DFS

Lista (Servidores + recursos)

Tiempo de vida

\\Dev\NT\priv\Users\Bob

· \\Bob1\Data\Java_Apps

· \\Bob2\Backup\Java_Apps

5min

\\IIS\Root\Content\CorpInfo

\\Marketing\Info\Corporate_HTML

3min

Tabla 2. Tabla maestra de partición.

Los volúmenes alternativos aparecerán asociados a una única entrada lógica como una lista de servidores más el recurso, es decir, para una única unión existirán varios volúmenes alternativos.

Los clientes DFS utilizan la tabla almacenada en memoria para resolver la ubicación de los recursos del sistema DFS habitualmente. Cuando un cliente necesita localizar un recurso DFS, acude a la tabla que tiene almacenada en caché y busca la entrada DFS de la que es motivo la consulta en la tabla PKT. Si la consulta no tiene éxito el cliente contactará con el servidor que contiene la raíz DFS para que sea éste, observando sus tablas, quién resuelva el nombre. Si aún así no se tiene éxito en la resolución del nombre, se producirá un error y el sistema informará de él.

En caso de que la resolución del nombre tenga éxito, el cliente añadirá la referencia a la entrada en su tabla PKT para acelerar el acceso si fuese necesario realizarlo en un futuro próximo.

Cuando un cliente DFS obtiene una referencia a un nombre lógico DFS se almacena la referencia durante cinco minutos en la tabla PKT. Si el cliente consulta la referencia antes de que el tiempo expire, éste es renovado nuevamente. Si el tiempo de una entrada termina ésta es eliminada de la tabla PKT.

Si una entrada hace referencia a una lista de volúmenes alternativos, el cliente debe actualizar todas las referencias antes de que la entrada sea válida para consulta. De está forma se asegura que cualquiera de los recursos apuntados por el nombre lógico responde a un mismo contenido. La elección de un volumen alternativo de la lista es aleatoria y responsabilidad del programa cliente.

3.3 Resolución de uniones en DFS.

Con volúmenes de tipo (stand alone), es decir, con volúmenes que permiten referenciar a otro volumen DFS, lo que comúnmente se denominan enlaces inter-DFS, el proceso de resolución de la referencia física o UNC para cada nombre DFS no sobrepasa el siguiente nivel antes de que encuentre la ubicación del recurso destino, bien sea el volumen de bajo nivel (volumen que contiene el recurso sin ningún punto más de unión) o un punto de enlace inter-DFS.

Si antes de llegar a resolver la ubicación del recurso, se resuelve un sitio para una nueva raíz DFS (enlace inter-DFS), entonces el proceso de resolución de nombre se traslada al nuevo servidor que contenga la nueva raíz DFS. Cada vez que se resuelva un nuevo nombre para una ubicación determinada se dice que aumenta la profundidad del espacio de nombres de DFS.

El servicio de directorios permite realizar unión de uniones sin usar enlaces inter-DFS. En esta situación, el proceso de referencia busca expresamente la solución al nombre más largo posible de la cadena que identifica al recurso que se desea acceder. Si el sistema es capaz de encontrar la ubicación de un recurso referido por el nombre completo, se habrá realizado la resolución del nombre en una sola consulta. Por el contrario si no es capaz de resolver el nombre completo, irá quitando parte del path hasta que el sistema lo resuelva. De esta forma se asegura conseguir alcanzar el recurso con el menor número de consultas a las tablas PKT y por tanto acelerar el proceso de acceso.

Docs

\\NTDfs\Public

Scratch

Waldo.HTM

My_Tree

Figura 4. Distribución de recursos en una organización tipo

Atendiendo a la distribución de recursos presentada en la Figura 4 y suponiendo que alguien de la organización desea acceder al documento Waldo.htm el sistema DFS resolvería los nombres de la siguiente forma:

1. El usuario indica al sistema que desea acceder al recurso.

2. El cliente DFS intenta resolver la ubicación del recurso consultando las entradas de su PKT local.

3. Si el nombre no tiene solución en la tabla PKT local, el cliente pregunta al servidor raíz DFS.

4. Si el servidor raíz DFS tampoco puede resolver el nombre completo, el cliente acorta el path del nombre e intenta resolver de nuevo repitiendo los pasos a partir del punto 2.

5. Si solo fue resuelta una parte del path, su valor será sustituido por la ubicación destino, unida al resto del path no localizado y actualizada en la tabla PKT local del cliente. El proceso de resolución se inicia de nuevo con el nuevo path creado a partir del punto 2 hasta que se encuentra la ubicación final del recurso.

Siguiendo el ejemplo basado en la Figura 4, supongamos que el cliente DFS del usuario que desea acceder a Waldo.htm posee en la tabla local PKT la solución al nombre \\NTDfs\Public\Scratch\My_Tree, entonces cuando el usuario intente acceder al recurso DFS \\NTDfs\Public\Scrstch\My_Tree\Docs\Waldo.htm el cliente consultará la tabla PKT local en busca de la entrada \\NTDfs\Public\Scrstch\My_Tree\Docs\Waldo.htm; al no ser resuelta el cliente solicitará que la resuelva el servidor por medio de la consulta de su tabla; al no ser resuelta nuevamente, el cliente recortará el path original del recurso según \\NTDfs\Public\Scrstch\My_Tree\Docs. Por segunda vez el cliente buscará la entrada correspondiente en la tabla PKT local y posteriormente en el servidor raíz DFS; al no ser resuelta se repite el proceso y se acorta el path nuevamente según \\NTDfs\Public\Scratch\My_Tree. Ahora al consultar la tabla local para ésta entrada obtendrá la ubicación \\My_586\Data\Docs\Waldo.htm desde la que podrá acceder al recurso.

Lógicamente los directorios \Scratch y \My_Tree han sido creados para representar las uniones con otros servidores. En WNT.4.0 esto no es posible sin el uso de enlaces inter-DFS. En este caso, deberían resolverse al menos dos nombres DFS, siempre y cuando no se ajuste la distribución de los recursos en la red para evitar que suceda de esta forma.

3.4 Fail-over sobre de nombres de volúmenes alternativos.

Como ya se comentó en apartados anteriores, las entradas o nombres DFS son resueltos a través de la consulta de las tablas PKT, que almacenan en memoria de forma temporal la ubicación del recurso asociado a cada una de las entradas.

Cuando una entrada hace referencia a varios recursos ubicados en diferentes sitios, lo que se ha denominado volúmenes alternativos, el cliente debe elegir una de las ubicaciones presentadas como una lista para la entrada consultada (véase la Tabla 2 de la página 11).

El cliente elige de forma arbitraria una ubicación de la lista. La elección está basada en la mejor ubicación de un recurso alternativo disponible en el “sitio” donde el equipo que quiere alcanzarlo se encuentra ubicado; o dicho de otra forma, los recursos alternativos que se encuentren en la misma red que la máquina que realiza el acceso, tienen prioridad sobre el resto.

Si una máquina accede a un recurso o volumen alternativo, donde uno de los recursos se encuentra en su propia red y otro se encuentra en otra red, la ubicación con prioridad es la localizada en la propia red. Solo si por algún motivo el recurso resulta inaccesible, por ejemplo, por fallo de comunicación, apagado del equipo, etc, el cliente accederá a la ubicación más remota.

Una vez que el cliente elige una de las referencias alternativas presentadas para la entrada consultada, se inicia una sesión en la que el cliente pasa las credenciales de la consulta a un nuevo servidor en el caso de no ser capaz de resolver el nombre en una primera instancia.

Si la referencia resuelta falla comienza un proceso denominado “fail-over”. La velocidad de ejecución y la implicación de este proceso dependen en gran medida de lo que el cliente estuviera haciendo antes de producirse el fail-over y el tipo de error que produce el fail-over.

Para entender mejor el proceso se presentan a continuación una serie de escenarios en los que se producen fail-over:

3.4.1 Escenario 1.

Supongamos que un cliente está accediendo a un recurso configurado como volumen alternativo. Por alguna razón la computadora pierde la energía o simplemente falla su cable de red. Para provocar un fail-over, el cliente primero debe detectar que la computadora que alberga el recurso no está disponible. El tiempo tarde en darse cuenta de este hecho depende del protocolo que esté usando el cliente. La mayoría de los protocolos asocian un contador o cuenta a cada enlace abierto, especialmente a enlaces cuya velocidad es lenta o su conectividad pobre. El contador marca los reintentos en los que el cliente intentará establecer de nuevo comunicación antes de que el time-out expire y definitivamente se considere perdida la conexión.

Una vez ocurrido esto, el cliente DFS selecciona un nuevo recurso alternativo. Si no hay ninguno disponible en la memoria local, el cliente DFS consulta con el servidor raíz DFS para comprobar si el administrador ha modificado cualquier entrada en la tabla PKT. Si aún así el recurso no está disponible, se producirá un fallo, a menos que el cliente pueda iniciar un nuevo el proceso con un nuevo recurso alternativo asociado a la misma entrada.

3.4.2 Escenario 2.

Supongamos de nuevo que un cliente está intentando acceder a un recurso alternativo; supongamos también que la computadora que alberga al volumen alternativo por alguna razón tiene estropeado el recurso, es decir, el disco duro falla, o simplemente el recurso ha dejado de ser compartido por error. En estas situaciones dado que la comunicación sigue activa, el cliente es capaz de responder a la petición y por tanto el proceso fail-over se inicia inmediatamente.

3.4.3 Escenario 3.

Supongamos que un cliente tiene abierto un fichero de un volumen alternativo y en está situación en la máquina remota la energía eléctrica se pierde o que la red se cae completamente por alguna razón. En estos términos, nos encontramos de nuevo en la situación reflejada en el apartado 3.4.1; el mismo proceso de fail-over descrito en él dará comienzo, pero la aplicación que previamente abrió el fichero del volumen alternativo, detecta el cambio y establece un nuevo enlace.

3.4.4 Escenario 4.

Supongamos que un cliente tiene abierto un fichero de un volumen alternativo y en está situación en la máquina remota se produce un error de disco o se deja de compartir el recurso por alguna razón. En estos términos, nos encontramos de nuevo en la situación reflejada en el apartado 3.4.2; el mismo proceso de fail-over descrito en él dará comienzo, pero la aplicación que previamente estableció un manejador de fichero, detecta el cambio y establece nuevos manejadores.

3.5 Seguridad.

3.5.1 Inicios de sesión.

El software cliente DFS establece un inicio de sesión con el servidor DFS indicado por defecto en la tabla PKT al iniciar el sistema local. El sistema utiliza las credenciales aportadas por el usuario durante el inicio de sesión con DFS para establecer conexión con los recursos mediante los comandos net. Si el usuario no aporta credenciales el sistema utiliza las almacenadas tras realizar el inicio de sesión y autenticarle dentro de un dominio.

3.5.2 Listas de control de Acceso, ACL.

En la arquitectura W2000 y WNT todos los recursos están asociados a descriptores de seguridad. El descriptor de seguridad es un objeto que contiene dos tipos de informaciones básicas; la información relativa al identificador del propietario del objeto y el identificador del grupo propietario del objeto, y las listas de control de acceso.

Existen dos tipos de listas de control de acceso, las relativas a la auditoria del recursos y las relativas a los derechos sobre el recurso.

· DACL.

Estas listas de control acceso poseen entradas de control de acceso que definen los derechos y permisos que un usuario o grupo determinado posee sobre el objeto.

· SACL.

Estas listas de control acceso poseen entradas de control de acceso que definen el tipo de acción que se quiere registrar sobre el uso de un recurso por parte de un determinado usuario o grupo.

Los recursos de los que consta la estructura de directorio FFS se pueden encontrar en unidades NTFS o FAT accesible en la red. Aunque para el usuario la estructura DFS es una única carpeta compartida, realmente está accediendo a carpetas individuales de varios sistemas.

Se podría pensar que esta solución plantea un problema de seguridad, ya que los mismos recursos compartidos aparecen en dos sitios distintos, la unidad compartida original y la carpeta compartida del DFS. Sin embargo W2000 resuelve este problema básicamente sin hacer nada. En lugar de añadir otro mecanismo de control de acceso, DFS confía plenamente en las listas ACL de los recursos compartidos originales que en conjunto forman la carpeta compartida del DFS. Si los usuarios tienen permiso para acceder a unos recursos en su carpeta compartida individual, también lo tienen para acceder mediante el DFS.

Existen diversas razones para esta forma de actuar:

· Una administración lógica central de base de datos que contengan las ACL’s de los recursos distribuidos podría ser evitada mediante la conexión directa a unos recursos a través de los comandos net.

· Las carpetas compartidas podrían estar en distintos tipos de unidad y por tanto usar diferentes tipos de control de acceso.

· Una herramienta lógica que acompañe al espacio de nombres activando las ACL’s apropiadas requeriría un mecanismo complicado de mensajería y transporte para asegurar que las ACL´s fueran encoladas y actualizadas antes de que se produzcan errores en la conexión de red, etc.

· La posibilidad de fijar cuotas de disco o almacenamiento que proporciona W2000 requiere una carga adicional de administración para controlar todos los posibles usuarios que con posibilidades de acceso a un determinado recurso podrían superar la cuota fijada por el administrador para ellos.

4. Interfaz de programación DFS.

La documentación completa sobre esta interfaz se encuentra disponible en http://www.microsoft.com/msdownload/platformsdk/sdkupdate/. La interfaz tiene aplicación tanto para la plataforma WNT 4.0 como para la plataforma W2000.

4.1 Función NetDfsAdd

Esta función crea un nuevo punto de unión, es decir, enlaza un recurso con el servidor, o añade recursos compartidos en un punto de unión existente en la estructura de árbol DFS.

NetDfsAdd(

LPWSTR DfsEntryPath,

LPWSTR ServerName,

LPWSTR 0,

LPWSTR Comment,

DWORD Flags,

);

4.1.1 Parámetros de la función NetDfsAdd.

· DfsEntryPath.

Puntero a una cadena de caracteres que especifica el nombre de la ruta de un punto de unión en el árbol DFS. La cadena de tener la siguiente sintaxis:

Servidor DFS\recurso\ruta

Donde Servidor es el nombre del servidor WNT o W2000 que contiene el volumen que alberga la raíz DFS; recurso es el nombre del recurso compartido que es publicado a través del servidor DFS, y ruta especifica la ruta de red según la resolución de nombres UNC (Universal Name convection) para la localización física del recurso que se desea compartir.

· ServerName.

Puntero a una cadena de caracteres que especifica el nombre del servidor que proporciona o contiene el recurso compartido y referenciado por medio del punto de unión.

· ShareName.

Puntero a una cadena de caracteres que especifica el nombre del recurso compartido y referenciado a través del punto de unión.

· Comment.

Puntero a una cadena de caracteres que contiene un comentario opcional asociado con el punto de unión creado.

· Flags.

Especifica el valor del flag. Si el flag está a cero, la función crea un nuevo punto de unión si no existe, o añade un nuevo recurso compartido a un punto de unión existente. Si el flag está activo con el valor DFS_ADD_VOLUME esta función provoca un error si el punto de unión que se desea crear existe.

4.1.2 Valor de retorno de la función NetDfsAdd.

Véase el apartado 4.6 en la página 23.

4.2 Función NetDfsRemove.

Esta función elimina un recurso compartid asociado a un punto de unión de la estructura en árbol del sistema DFS. En el caso de que el recurso sea el último de una lista asociada a un punto de unión, el punto de unión también es eliminado.

NetDfsRemove(

LPWSTR DfsEntryPath,

LPWSTR ServerName,

LPWSTR ShareName,

);

4.2.1 Parámetros de la función NetDfsRemove.

· DfsEntryPath.

Puntero a una cadena de caracteres que especifica el nombre de la ruta de un punto de unión en el árbol DFS. La cadena de tener la siguiente sintaxis:

Servidor DFS\recurso\ruta

Donde Servidor es el nombre del servidor WNT o W2000 que contiene el volumen que alberga la raíz DFS; recurso es el nombre del recurso compartido que es publicado a través del servidor DFS, y ruta especifica la ruta de red según la resolución de nombres UNC (Universal Name convection) para la localización física del recurso que se desea compartir.

· ServerName.

Puntero a una cadena de caracteres que especifica el nombre del servidor que proporciona o contiene el recurso compartido y referenciado por medio del punto de unión.

· ShareName.

Puntero a una cadena de caracteres que especifica el nombre del recurso compartido y referenciado a través del punto de unión.

4.2.2 Valor de retorno de la función NetDfsRemove.

Véase el apartado 4.6 en la página 23.

4.3 Función NetDfsEnum

Esta función enumera todos los puntos de unión del árbol del sistema distribuido de ficheros nombrado. La función devuelve información sobre los puntos de unión basándose en el grado o nivel especificado a través del parámetro Level.

NetDfsEnum(

LPWSTR DfsName,

DWORD Level,

DWORD PrefMaxLen,

LPBYTE* Buffer,

LPDWORD EntriesRead,

LPDWORD ResumeHandle,

);

4.3.1 Parámetros de la función NetDfsEnum.

· DfsName.

Puntero a una cadena de caracteres que especifica el nombre del servidor Windows NT o Windows 2000 que contiene el volumen raíz del sistema distribuido de archivos, DFS.

· Level.

Especifica el nivel de información de respuesta de la función. Este parámetro puede tener los siguientes valores:

Valor

Descripción

1

Devuelve los nombres de volumen DFS. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_1

2

Devuelve los nombres de volumen DFS e información de volumen. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_2

3

Devuelve los nombres de volumen DFS, información de volumen e información sobre la ruta de red del volumen. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_3.

Tabla 3. Valores de entrada del parámetro Level.

· PrefMaxLen.

Especifica de forma preferente, el máximo numero de bytes que debería devolver la función.

· Buffer.

Puntero a la dirección de comienzo de un array de estructuras que contienen la información devuelta por la función.

· EntriesRead.

Puntero a una variable de tipo DWORD que contiene el numero de puntos de unión del árbol DFS actuales.

· ResumeHandle.

Puntero a una variable DWORD que contiene el manejador que es usado para continuar con la enumeración. El manejador debería ser 0 la primera vez que se llame a la función.

4.3.2 Valor de retorno de la función NetDfsEnum.

Véase el apartado 4.6 en la página 23.

4.3.3 Consideraciones sobre el uso de la función NetDfsEnum.

La primera vez que se llame a ésta función debe tener a cero el parámetro ResumeHandle. Para reactualizar la información sobre los puntos de unión se debe llamar a la función actualizando el valor de ResumeHandle con el devuelto en la llamada anterior.

Esta función localiza la memoria requerida para almacenar la información apuntada por el buffer. El tamaño de la memoria puede ser tan grande como se especifique por medio del parámetro PrefMaxLen.

4.4 Función NetDfsGetInfo.

Esta función recupera información de un punto de unión en la estructura del sistema distribuido de ficheros nombrado. Puede devolver información específica sobre un servidor o recurso compartido o información sobre un punto de unión o entrada.

NetDfsGetInfo(

LPWSTR DfsEntryPath,

LPWSTR ServerName OPTIONAL,

LPWSTR ShareName OPTIONAL,

DWORD Level,

LPBYTE* Buffer,

);

4.4.1 Parámetros de la función NetDfsGetInfo.

· DfsEntryPath.

Puntero a una cadena de caracteres que especifica el nombre de la ruta de un punto de unión en el árbol DFS. La cadena de tener la siguiente sintaxis:

Servidor DFS\recurso\ruta

Donde Servidor es el nombre del servidor WNT o W2000 que contiene el volumen que alberga la raíz DFS; recurso es el nombre del recurso compartido que es publicado a través del servidor DFS, y ruta especifica la ruta de red según la resolución de nombres UNC (Universal Name Convection) para la localización física del recurso que se desea compartir.

· ServerName.

Puntero a una cadena de caracteres que especifica el nombre del servidor que proporciona o contiene el recurso compartido y referenciado por medio del punto de unión. Este parámetro es opcional.

· ShareName.

Puntero a una cadena de caracteres que especifica el nombre del recurso compartido y referenciado a través del punto de unión. Este parámetro es opcional.

· Level.

Especifica el nivel de información que se desea como respuesta a la llamada a la función. Este parámetro puede tomar los siguientes valores:

Valor

Descripción

1

Devuelve los nombres de volumen DFS. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_1

2

Devuelve los nombres de volumen DFS e información de volumen. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_2

3

Devuelve los nombres de volumen DFS, información de volumen e información sobre la ruta de red del volumen. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_3.

100

Devuelve un comentario sobre el volumen DFS o servidor. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_100

Tabla 4. Valores de entrada del parámetro Level.

· Buffer.

Puntero a la dirección de comienzo de un array de estructuras que contienen la información devuelta por la función.

4.4.2 Valor de retorno de la función NetDfsGetInfo.

Véase el apartado 4.6 en la página 23.

4.4.3 Consideraciones sobre el uso de la función NetDfsGetInfo.

Si en la llamada de la función se especifica tanto el parámetro ServerName como el parámetro ShareName, la función información específica del servidor y el recurso nombrados. Si los parámetros no son especificados, la función devuelve información especifica del punto de unión.

4.5 Función NetDfsSetInfo.

Esta función asocia información a un punto de unión situado en la estructura del sistema distribuido de ficheros nombrado. Puede asociar información relevante para un servidor o recurso compartido o información específica para un punto de unión.

NetDfsSetInfo(

LPWSTR DfsEntryPath,

LPWSTR ServerName OPTIONAL,

LPWSTR ShareName OPTIONAL,

DWORD Level,

LPBYTE Buffer,

);

4.5.1 Parámetros de la función NetDfsSetInfo.

· DfsEntryPath.

Puntero a una cadena de caracteres que especifica el nombre de la ruta de un punto de unión en el árbol DFS. La cadena de tener la siguiente sintaxis:

Servidor DFS\recurso\ruta

Donde Servidor es el nombre del servidor WNT o W2000 que contiene el volumen que alberga la raíz DFS; recurso es el nombre del recurso compartido que es publicado a través del servidor DFS, y ruta especifica la ruta de red según la resolución de nombres UNC (Universal Name Convection) para la localización física del recurso que se desea compartir.

· ServerName.

Puntero a una cadena de caracteres que especifica el nombre del servidor que proporciona o contiene el recurso compartido y referenciado por medio del punto de unión. Este parámetro es opcional.

· ShareName.

Puntero a una cadena de caracteres que especifica el nombre del recurso compartido y referenciado a través del punto de unión. Este parámetro es opcional.

· Level.

Especifica el nivel de información que se desea como respuesta a la llamada a la función. Este parámetro solo puede tomar el siguiente valor:

Valor

Descripción

100

Devuelve un comentario sobre el volumen DFS o servidor. El parámetro Buffer apunta a un array de estructuras del tipo DFS_INFO_100

Tabla 5. Valores de entrada del parámetro Level.

· Buffer.

Puntero a la dirección de comienzo de un array de estructuras que contienen la información devuelta por la función.

4.5.2 Valor de retorno de la función NetDfsSetInfo.

Véase el apartado 4.6 en la página 23.

4.5.3 Consideraciones sobre el uso de la función NetDfsSetInfo.

Si en la llamada de la función se especifica tanto el parámetro ServerName como el parámetro ShareName, la función información específica del servidor y el recurso nombrados. Si los parámetros no son especificados, la función devuelve información especifica del punto de unión.

4.6 Descripción de errores de la interfaz DFS.

Las funciones devuelven códigos que identifican el tipo de suceso. A continuación se especifica el valor del parámetro de retorno que pueden devolver las funciones tras su llamada y su significado.

· NERR_DfsInternalCorruption (NERR_BASE+560).

La base de datos que mantiene internamente el servicio DFS está corrupta.

· NERR_DfsVolumeDataCorrupt (NERR_BASE+561).

Uno de los registros que mantiene en la base de datos interna el servicio DFS está corrupto.

· NERR_DfsNoSuchVolume (NERR_BASE+562).

No existe un volumen que coincida con el especificado en el parámetro DfsEntryPath.

· NERR_DfsVolumeAlreadyExists (NERR_BASE+563).

El volumen DFS con el nombre especificado ya existe.

· NERR_DfsAlreadyShared NERR_BASE+564).

El recurso compartido especificado ya está compartido.

· NERR_DfsNoSuchShare (NERR_BASE+565).

El recurso compartido indicado no soporta el volumen indicado.

· NERR_DfsNotALeafVolume (NERR_BASE+566).

La operación no es válida sobre volúmenes DFS del tipo non-leaf.

· NERR_DfsLeafVolume (NERR_BASE+567).

La operación no es válida sobre un volumen DFS del tipo leaf.

· NERR_DfsVolumeHasMultipleServers(NERR_BASE+568).

El servicio DFS está inhabilitado para completar esta operación.

· NERR_DfsCantCreateJunctionPoint (NERR_BASE+569).

El servicio DFS está inhabilitado para crear este punto de unión.

· NERR_DfsServerNotDfsAware (NERR_BASE+570).

El servidor no es un servidor DFS debido a que no ha sido instalado el software del servidor DFS o a que su servicio ha sido finalizado manualmente.

· NERR_DfsBadRenamePath (NERR_BASE+571).

El nombre de la ruta no es válido.

· NERR_DfsVolumeIsOffline (NERR_BASE+572).

El volumen DFS especificado no tiene conexión.

· NERR_DfsNoSuchServer (NERR_BASE+573).

El servido especificado no es un servidor para este volumen DFS.

· NERR_DfsCyclicalName (NERR_BASE+574).

Se detectó un ciclo en el nombre DFS.

· NERR_DfsNotSupportedInServerDfs (NERR_BASE+575).

Esta operación es solo soportada sobre un DFS basado en dominios.

· NERR_DfsInternalError (NERR_BASE+590).

Ocurrió un error DFS interno.

5. Bibliografía.

· Así es Windows 2000 Server. Anthony Northup. Ed. Microsoft Press.

· Seguridad en Windows 2000. Referencia Técnica. Internet Security Inc. Ed. McGraw Hill.

· Windows 2000 server. Curso oficial MCSE. Ed. McGraw Hill.

· Windows 2000. Manual del Administrador. William R. Stanek. Ed. McGraw Hill.

5.1 Enlaces de interés.

· http://www.microsoft.com/ntserver/.

En este enlace se puede encontrar información técnica sobre las últimas novedades para plataformas WNT y W2000.

· http://www.microsoft.com/msdownload/platformsdk/sdkupdate/.

Este sitio contiene toda la información actualizada para el desarrollo de aplicaciones basadas en Microsoft Windows.

PAGE

1

McGraw-Hill/Interamericana Recursos( Unidad 6 ( Sistemas Telemáticos( de 27

_907760224.doc

_907760219.ppt