Td corrigé Representación interna de la información pdf

Representación interna de la información

... operativo desde el primer momento (aun sin haber cargado el sistema operativo). ...... Normalmente, la estación destino no corrige los bloques de datos erróneos, sino que ...... <TR> <TD COLSPAN=2> Celda sobre 2 columnas </TD> <TR>.




part of the document





Representación interna de la información
Si nos centramos en el procesamiento de datos alfanuméricos, abandonando temporalmente la cuestión mucho mas compleja de los datos multimedia, observaremos que lo que el ordenador recibe del ser humano es una corriente de datos alfabéticos, numéricos , de puntuación, etc.., similares a los que se puede encontrar en un texto escrito, pero cuando los datos introducidos en el sistema informático han de ser procesados en la CPU, han de sufrir una transformación que los adapta a la forma interna de representación de la información, con el fin de facilitar la manipulación de los datos por el sistema informático.

Necesidad de la representación interna: Es en las operaciones aritméticas con números donde es mas evidente la necesidad de traducir la información del formato E/S al formato interno de representación de la información, mas adecuado para las características del ordenador. Las características de la información numérica a representar, junto con los elementos materiales que componen un ordenador, definirán cual es el formato interno mas adecuado. Hay una serie de características que condicionan fuertemente la representación interna:
El ordenador trabaja internamente con el sistema binario y casi todos sus elementos están limitados a dicho sistema
El espacio material disponible para la representación de los datos es finito, lo que obligara a acotar las representaciones
Las unidades funcionales y buses del ordenador están preparadas para operar con cadenas de bits de uno o varios tamaños prefijados.
Dada una arquitectura de un ordenador existirán unos tamaños de datos que serán mas fácilmente manipulables por la CPU son los múltiplos o divisores enteros del ancho de palabra típico de los componentes principales del ordenador, en concreto, son:
El octeto o byte: 8 bits
La palabra: de 8,32,64 o128 bits
Múltiplos o divisores de palabra: entre ellos destacar el nibble o media palabra.

Sistema de numeración binario, octal y hexadecimal
Sistemas de numeración usuales en Informática

En la representación interna de la información se utiliza normalmente alguna variante del código binario natural. También se utilizan los denominados códigos intermedios, el octal y el hexadecimal.

Sistemas posicionales

Un sistema de numeración es un conjunto de reglas que permiten nombrar y escribir cualquier número, partiendo de un número finito de símbolos. Ello es así gracias a la notación posicional. Un sistema de numeración posicional en base b usa un alfabeto de b símbolos distintos (o cifras). Las cifras se combinan para formar números, con la particularidad de que cada posición de un número tiene un peso especifico que se multiplica por el valor intrínseco de la cifra. De este modo, el valor de cada número será igual a la suma de las contribuciones individuales de cada cifra que lo compone, contribuciones que dependerán de:
La cifra en si, que dada una base b usualmente oscilara entre 0 y b-1.
La posición, p, de la cifra dentro de la secuencia cuyo valor es igual a la potencia de la base, b, bp
La base 10 es la más usual para el ser humano. Además de la base 10, en representación informática de datos se utilizan tres tipos de códigos: el binario ( base 2), el octal( base 8) y el hexadecimal ( base 16).

Sistema binario directo o natural
La base 2 es el mas sencillo de los posibles sistemas de numeración. El sistema binario incluye únicamente dos dígitos, el 0 y el 1. A cada cifra binaria se la conoce como bit (binary digit). El código binario corresponde al formato nativo de la ALU. Las operaciones que se pueden realizar con el sistema binario son:
Traducción entre binario y decimal: Se emplea la notación polinómica correspondiente. Para el proceso inverso, hay dos fases, correspondientes a la parte entera y fraccionaria. La parte entera se obtiene de sucesivas divisiones por dos del numero de partida. Los restos de estas divisiones forman el número binario completo. La parte fraccionaria se obtiene por sucesivas multiplicaciones por 2 del numero de partida y de la parte fraccionaria que se obtiene en cada producto. La parte entera de cada resultado ira componiendo el numero binario buscado.
Operaciones aritméticas: son la suma, la resta, la multiplicación y la división. Operando en base dos multiplicar por 2( base 10) es tan sencillo como insertar un cero por la derecha del numero binario. Para dividir por dos, es suficiente con desplazar el punto decimal un lugar a la izquierda.
Operaciones lógicas o booleanas: son las siguientes:
puerta OR: Suma lógica;S=a+b
puerta AND: Producto lógico.S=a*b
puerta NOT: S=(a
puerta NOR:((a+b)
puerta NAND: (a*b
puerta XOR: La función OR exclusiva toma el valor 1 cuando son distintas sus entradas: S=(a*(b)+( (a*b).
Código octal: junto con el hexadecimal permiten una fácil traducción hacia y desde el sistema binario. Esta facilidad deriva del hecho de que dadas dos bases b y c, entre las que se cumple que b= c elevado a e, siendo e un numero natural, entonces, para dos números, expresados en sus notaciones polinómicas abreviadas tales que:

Z4Z3Z2Z1Z0Z-1Z-2...(en base b)=X4X3X2X1X0X-1X-2X-3 (en base c)
Se cumplirá que: Zi=Xe(i+1)-1Xe(i+1)-2....Xe(i+1)-e.
Para el paso de binario a octal (b=8), dado un numero N, en binario, se descompondrá en ternas de tres valores comenzando desde el punto decimal y avanzando hacia la izquierda para la cantidad entera y hacia la derecha para la cantidad fraccionaria. Si el numero de cifras no fuese un múltiplo entero de 3, se tomaran ceros hasta formar una terna. El paso de octal a binario se hace en sentido inverso. El paso de octal a decimal se puede efectuar aplicando la notación polinómica externa. El paso de decimal a octal utiliza el mismo algoritmo que el paso de decimal a binario, pero substituyendo los 2 por 8.
Código hexadecimal
En la base hexadecimal, b=16. El paso de binario a hexadecimal es igual al caso de base 8, pero tomando grupos de 4 cifras. El paso de hexadecimal a binario se hace en sentido inverso. Cada digito hexadecimal se sustituye por cuatro binarios. Los pasos a decimal directo e inverso son equivalentes a los vistos en base ocho.


El modelo de Von Neumann

El modelo funcional de Von Neumann dio paso años más tarde a lo que sería el principio de una era informática. Sus planteamientos fueron fielmente seguidos y plasmados de forma que hoy día siguen siendo válidos y, por supuesto, operativos. Sin la especial aportación de Von Neumann, no cabe duda de que la Informática habría sido muy distinta de como la conocemos actualmente y, por extensión del concepto, gran parte del mundo que nos rodea.
Lo realmente notable de Von Neumann no fue su aportación profesional al ENIAC, sino que hubo bastante más. Es importante situarse en el contexto contemporáneo de Neumann donde existieron numerosas iniciativas para potenciar una ciencia (que se denomina Automática) y que aún no se sabe cómo. Es cierto que ya existen máquinas capaces de realizar trabajos específicos pero es preciso definir un estándar que determine cómo deben ser los computadores a partir de ese momento. Así, Von Neumann propone el siguiente modelo simplificado:



Para entender en detalle su funcionamiento, lo más recomendable es analizar cada uno de los elementos integrados:
Memoria principal: Von Neumann percibe la necesidad de almacenamiento temporal de datos para ejecuciones puntuales. Esto es, además de la posibilidad de poder almacenar unos datos de forma temporal, habilitar un espacio donde sea posible ubicarlos mientras dura el proceso, momento en el que se decidirá qué hacer con ellos. Este espacio deberá ser igualmente válido para instrucciones como para datos y habrá de dividirse en celdas de igual tamaño y referenciables mediante una dirección. Von Neumann establece diferencias entre lo que denomina "memoria permanente" y "memoria de trabajo".
De este modo comienza la gestación de lo que será la memoria RAM de los sistemas actuales, destinada al almacenamiento temporal de datos e instrucciones.
Unidad aritmético-logica: Parece clara también la necesidad de hacer un análisis de las operaciones que la máquina será capaz de realizar. Así, un grupo importante serán operaciones de tipo aritmético (operaciones matemáticas) y a otro gran grupo, pertenecerá a las operaciones de tipo lógico (comparaciones en la mayor parte de los casos). Así; se define la unidad aritmética como una zona encargada de realizar operaciones básicas, tanto numéricas como lógicas. Todos los datos los recibirá de la memoria principal y en ella almacenará los resultados. Dispone de una serie de registros internos que harán a modo de memoria y también permitirán el almacenamiento de datos.
Éste es el planteamiento inicial de la unidad aritmético-lógica, parte integrada del microprocesador, si bien Von Neumann lo consideraba un elemento diferenciado.
Unidad de control: Otro de los puntos de inexcusable presencia para Von Neumann es un elemento capaz de concentrar y gestionar el sistema completo. Así concibe la unidad de control como la encargada de controlar todas las señales para que el proceso funcione. Lee las instrucciones de la memoria principal y se encarga de su ejecución. Una parte importante de este módulo es el puntero que guardará la dirección de la próxima instrucción a leer.
Junto con la unidad aritmética, la unidad de control conformará lo que serán los microprocesadores actuales.
Unidad de entrada-salida: Por supuesto, el sistema deberá tener un sistema de comunicación con el usuario donde éste pueda interactuar con el sistema. Éste será la interfaz que conectará no sólo los requerimientos propios de los usuarios sino, además, los diferentes elementos a través de los cuales se habilite el proceso de comunicación de información. Así, la unidad de entrada-salida será la encargada de enviar y recibir datos con el mundo exterior. Para globalizar los distintos dispositivos externos que pueden existir, se adopta el nombre de periféricos, con los que se comunicará a través de los buses. Este apartado se distingue en sus dos componentes tratados de forma independiente: por un lado la entrada y por otro la salida.
Von Neumann está premonizando lo que serán las controladoras de comunicación de dispositivos, interfaces de teclado y, por qué no, la multimedia.
El funcionamiento de la arquitectura, en esencia, está pensado para ejecutar programas, es decir, conjuntos de instrucciones elementales establecidas en un orden determinado. A través del contador de programa o puntero incluido dentro de la unidad de control se dispondrá de la dirección de memoria de la instrucción o comando que se desea ejecutar. Es preciso que se activen todos los dispositivos y señales de control implicados para la lectura del comando de la memoria. Tras disponer de la instrucción y analizarla, la unidad de control leerá, si es preciso, los operandos de la memoria del sistema. El siguiente paso sería la ejecución propiamente dicha. Este paso podrá ser de mayor o menor complejidad, guardándose los resultados obtenidos en registro o, incluso, en la propia memoria del sistema. Por supuesto, toda la operación es "autorizada" por la unidad de control. Para finalizar, es necesario generar la iteración: el contador de programa o puntero pasa a la siguiente dirección de memoria donde encontrará una nueva instrucción a ejecutar. De esta manera se vuelve a repetir todo el proceso.
Composición de un sistema microinformático
Inicialmente, puede parecer que el planteamiento de arquitectura realizado dista mucho con el concepto de un PC actual pero nada más lejos de la realidad. Realmente representa un calco pormenorizado del diseño que Von Neumann realizó en su día. El planteamiento genérico, por tanto, de una máquina actual, responde a la siguiente figura:


Al igual que en el caso anterior, resulta preciso definir brevemente (a lo largo libro ya se hará con detalle) cada uno de los elementos que conforman el ordenador, a saber:
Placa base: Se trata de un elemento polivalente cuya misión es la de ofrecer soporte físico al PC además de otra serie de funciones como el control de buses, la gestión del sistema de encendido. Se trata de un elemento imprescindible que, según criterios, debería englobarse en todos y cada uno de los elementos conceptuales formulados por Von Neumann o, por el contrario, permanecer al margen como un elemento de "segunda fila" aunque imprescindible para el resto. Sí existe un elemento concreto que de forma habitual se incluye dentro de la placa base. Ese elemento es la controladora y, aunque no de forma única, es responsable y, por tanto, se identifica en un elevado porcentaje con la unidad de entrada/salida.
Microprocesador: Claramente responde a dos modelos conceptuales: unidad aritmética y unidad de control. En gran medida, la potencia del PC reside en este elemento que define muchos parámetros de la potencia del PC. De él dependerá la capacidad y velocidad de proceso además de la gestión casi de forma exclusiva de la máquina. Si algún símil biológico se le puede aplicar, ése es sin duda el de cerebro.
Memoria: Es otro de los elementos en los que no queda lugar a dudas. La relación con la formulación de memoria principal de Von Neumann es inequívoca. La memoria establecerá ese espacio lógico reservado al almacenamiento temporal de datos e instrucciones.
Unidades de disco flexible: La interpretación es la de un periférico si bien, puede ser elemento de almacenamiento de datos por excelencia (al menos lo ha sido durante mucho tiempo).
Unidades de disco duro: Se trata de otro elemento periférico que, en dependencia de la unidad de entrada/salida (controladora), permite el almacenamiento de datos de forma similar a como podría hacerlo una unidad de disco flexible, ahora bien, de mayor capacidad y una muy optimizada velocidad de acceso.
Tarjeta de video: Seguiríamos englobando la posibilidad de vídeo dentro de la opción de periféricos. Por increíble que pueda parecer, los primeros ordenadores carecían de monitor ya que, entre otros motivos, no lo necesitaban: el resultado de la programación solía ofrecerse en formatos inalterables (cintas perforadas, por ejemplo).
Cajas, ratones y teclados: Se trata de un cajón de sastre. La caja actúa como mero elemento de ayuntamiento, esto es, la necesidad física de concentrar diferentes elementos del PC en un mismo espacio físico. En. cuanto a los ratones y teclados, la consideración sigue siendo misma que la del sistema de vídeo: periféricos. Si sorprendente resultaba que algunos ordenadores no dispusieran de un sistema de vídeo, no menos llamativo debe resultar que careciese teclado ya que los datos y programas se introducían mediante: tarjetas perforadas o, simplemente, volviendo a recablear máquina.
Multimedia: Sin duda la idea de la multimedia fue algo que ni siquiera Neumann fue capaz de imaginar. No obstante, si hubiese incluirlo en algún grupo, ése sería el de periféricos. Multimedia, tal y como se detallará en el capítulo especificamente dedicado a ese tema, no es más que una extensión en cuanto a la posibilidad de comunicación con un PC.
Monitores: Se trata de un elemento imprescindible que se catalogaría también dentro de los periféricos relacionados con la tarjeta de vídeo. Los monitores serán los encargados de "traducir" esos impulsos eléctricos que pululan dentro del PC en información inteligente por el usuario.
Vamos a estudiar de forma detallada todos estos dispositivos
Placa base
Si el análisis de cada componente en el interior de un PC suele ser una operación concreta en la medida de la definición de sus funciones, el tema se complica cuando se trata de hablar de placas base. Las placas base o mother boards son tarjetas de circuito impreso de mayores dimensiones en el PC. Esto es así ya que dan consistencia al resto de la electrónica, alojando al resto de las placas independientes. Así, las funciones a desempeñar son variadas: desde el propio alojamiento de tarjetas con la consecuente definición de estándares de datos (tanto en amplitud como frecuencia) a los más básicos requerimientos de alimentación.
Parece que el rendimiento del PC depende exclusivamente del protagonismo de las tarjetas más conocidas como pueden ser las de vídeo, sonido y otras. Si bien es· cierto, al final, todas dependerán de las prestaciones ofertadas por la propia placa base y de ella dependerá el rendimiento final del equipo. Una placa base de mala calidad irá, por tanto, en detrimento de la actuación global de todas las tarjetas.
Por otro lado, los fabricantes, cada vez más conscientes de la importancia de una calidad alta en las placas base, han potenciado su desarrollo con independencia, en ocasiones, de las habituales normas que un mercado tan competitivo como es el microinformático impone. Esto ha llevado a que muchos ensambladores y mayoristas incluso oferten dos catalogaciones de placas base: las malas y las buenas. Y no, no es que existan realmente "placas malas" pero, lo que sí es cierto, es que sí existen "placa· buenas", es decir, productos que pueden duplicar el precio pero que aún así siguen mereciendo la pena en cuanto a prestaciones se refiere. Sólo cuando se ensamblan dos PCs exactamente iguales con placas base diferentes se pueden apreciar las diferencias en el rendimiento.
El mercado ha hecho que, como ya se comentaba, el protagonismo lo tomen determinados componentes concretos. Es más, a la hora de publicitar sus equipos, los minoristas suelen hacer referencia al microprocesador y su velocidad, memoria y poco más. Son una minoría los que detallan las características y prestaciones de las placas. Mientras el mercado sea así, la placa base seguirá siendo ese componente --de segunda" que debe ofrecer prestaciones "de primera". Será cuestión de tiempo que la mentalidad cambie, seguro.
Parece que de unos años a esta parte se empieza a vislumbrar una ligera tendencia a dar la importancia merecida a la placa base. Esto se observa claramente cuando en la publicidad se hace referencia al chipset, componente que, fruto de la integración de otros muchos, determina en gran medida la calidad de una placa base. Si bien esto es un avance (un chipset decidirá cuánta memoria es direccionable, cuántos micros serán soportados, entre otras cosas), hay más parámetros que tener cuenta.
Este capítulo determina, a efectos prácticos, qué aspectos hay que tener en cuenta a la hora de evaluar una placa y, sobre todo, cómo trabajar y proceder con ella.. Quizás, para abordar correctamente el tema, lo mejor será identificar una placa base y abordar el estudio parcelado de cada componente.
Para abordar de forma clara cuál es la constitución básica de una placa base, lo más interesante sea enumerar cada uno de los componentes que la forman. Tal y como se aprecia en la figura, una placa base común debe presentar al menos los elementos siguientes.


Componentes básicos de la placa base
Cualquier placa base, con independencia del fabricante y grado de prestación debe ofrecer una serie de mínimos para su ensamblaje. Todos están estandarizados para no presentar problemas con el resto de elementos que integran el PC. Así, la placa analizada corresponde a un modelo en el que se han encontrado muchas características, algo que la hacía idónea para su descripción. No obstante, hay una serie de elementos que, quizás por básicos, escapan de la configuración de una mother board como la comentada, destinada a actuar en ordenadores servidores. Otros, sin embargo, a pesar de estar presentes, requieren un mayor grado de detalle. La definición básica de cada uno de los posibles componentes adicionales es la siguiente:
Slots ISA: Cada una de las tarjetas (vídeo, red, módems ... ) deben comunicarse con el PC de un modo concreto. Así, en ocasiones recibirán datos mientras que en otros los ofrecerán. Por otro lado, también tienen una serie de requerimientos como, por ejemplo, la alimentación. Para solventar estas necesidades de comunicación surgen los slots que, según sus prestaciones y formato, reciben un nombre u otro. En concreto en la figura se muestra un slot ISA de 16 bits, esto es, que puede trabajar con 2 bytes de datos al tiempo. Como se puede observar, el slot está dividido en dos partes. La que se encuentra más a la izquierda corresponde a un slot ISA de 8 bits para tarjetas que no presenten más requerimientos. Sus características fundamentales se ciñen a tasas de transmisión de casi 20 MB/seg ya que la frecuencia máxima alcanzada fue de 10 MHz (16 bits funcionando a 10 ~1Hz generan 2 byte s * 107 = 20.000.000 bytes/segundo = 19,07 MB/s).
Este slot está prácticamente extinguido y obsoleto en la oferta actual de placas aunque es muy común en ordenadores de no hace demasiado tiempo. Téngase en cuenta que su presencia ha sido constante desde 1980.

BIOS: Se trata del Basic Input Output System o, lo que es lo mismo, el sistema básico de entrada-salida. En este componente se almacena la configuración del ordenador que previamente es introducida a través del SETUP o programa de configuración. El método de acceso al Setup suele consistir en pulsar la tecla Supr durante el arranque de la máquina, si bien puede ser la propia máquina quien indique el modo concreto de acceso. Es importante destacar que este elemento precisa de una alimentación constante aun con el PC apagado, motivo por el cual las placas base llevan una pila o una batería. Los fabricantes más comunes son AMI, Award y Phoenyx y será fácil reconocerla gracias a la etiqueta adhesiva que siempre lleva en su parte superior, preservando el integrado de la luz que podía dañarle dañarle.


Chipset: Sin duda es el integrado de mayor protagonismo en la placa base. Se trata de un circuito que puede estar compuesto por varios integrados (entre 2 y 9) y que surge como fruto de la integración de toda la electrónica analógica discreta que se encuentra en la placa base. La idea es clara: en lugar de tener muchos componentes diseminados por el circuito impreso, se integran consiguiendo un elemento único que aglutina multitud de funciones. Tanto es así que, en gran medida, las prestaciones ofrecidas por una placa base dependen del chipset.

Slots PCI: El concepto del slot ya se ha tratado en la descripción previa en diferentes modalidades y con un objetivo común: servir de interfaz entre las distintas tarjetas que se conectarán a la placa base. Ahora bien, fruto del cuello de botella que supone el aumento de frecuencia de los micros cuando se trabaja con un bus de bajas tasas de transferencia, surge la necesidad de un nuevo bus más potente. El resultado, tras un período de competencia con otras alternativas (buses propietarios y Ves a Local Bus fundamentalmente), es el afianzamiento del PCI como un estándar. El bus PCI lleva en el mercado desde el año 1993 y dispone de versiones para 32 y 64 bits de datos. Por otro lado, su frecuencia de trabajo de hasta 133 MHz le hace una solución para tarjetas con grandes requerimientos de datos.

Pila: Como ya se adelantaba, los ordenadores disponen de una pila cuya misión es la de alimentar de forma constante a la BIOS. La tensión suministrada debe ser de 3,6 voltios, si bien se permite un amplio margen de variación. Así, no era difícil encontrar hace tiempo ordenadores con dos pilas de 1,5 v en el formato AA. En la actualidad se suelen poner pilas de las denominadas "de botón" en lugar de baterías ya que, dado el bajo consumo de la BIOS, la longevidad de las pilas supera ampliamente la propia vida de un ordenador medio. En la figura se aprecia la pila de botón (con la polaridad positiva hacia arriba) de la placa base comentada al inicio del apartado.


Puerto AGP: El AGP o Adapter Graphics Port es un puerto (o slot) dedicado exclusivamente al vídeo. Las actuales necesidades de cualquier sistema, hacen de subsistema de vídeo un elemento vital, en la medida que se precisa manejar en poco tiempo un gran volumen de datos. Este tipo de conector es priorizado a través del chipset de tal modo que el microprocesador lo interpreta como una extensión más de sus registros. Es importante destacar que el AGP dispone de dos filas de contactos lo que hace necesaria una inserción firme de la tarjeta de vídeo.



Puertos: Los puertos son el sistema "natural" de comunicación con el exterior. Generalmente la configuración ha estado conformada por puertos serie (donde un dato va tras otro) y paralelo (donde un número concreto de bits se transfieren o reciben a un tiempo). Poco a poco han ido perdiendo protagonismo ya que otras tecnologías como los USB, FirWire y similares los han ido desbancando. Como ejemplos los puertos de 15 pines para joystick o los puertos de instrumentos musicales con interfaz MIDI. Este tipo de conector suele venir implementado con las tarjetas de sonido de forma habitual.

5.4 PUERTOS DE E/S

Tenemos varios tipos de puertos:
Serie: También conocido como puerto RS-232, es controlado por una circuitería llamada UART situada normalmente en la placa base. Los PC suelen disponer de cuatro puertos serie: COM1, COM2, COM3, COM4. El puerto serie fue diseñado originalmente para comunicar ordenadores a largas distancias. Recibe y envia información fuera del ordenador mediante un determinado software de comunicación o un manejador de puerto serie.
Paralelo: Usado originalmente para conexión de impresora. Hoy día tiene muchas más funciones como conexión de unidades de disco extraíble, escáner, etc... Su primer intento de normalización fue el estandar Centronics. Hoy se usa la norma IEEE 1284,que define varios modos de transmisión:
SPP : Es la especificación original Centronics, que fue diseñado para comunicar datos desde el ordenador a la impresora; es, por tanto, unidireccional, de manera que la unica información que circula desde la impresora esta libre u ocupada, si existe atasco de papel o alguna otra condicion de error.
EPP: Es una evolución del anterior y agrega la posibilidad de comunicación bidireccional, de manera que podemos instalar dispositivos de entrada y de entrada salida. La tasa de transferencia es de 500 KB/s.
ECP: Diseñado por Microsoft y HP con la intención de mejorar al anterior, ampliando la velocidad de transferencia hasta 1 MB/s, ademas de incorporar canales DMA.
Socket: El socket o zócalo del microprocesador es la interfaz física donde se ensambla y consigue una total integración con la placa base. Obviamente, este zócalo irá en función del tipo de microprocesador utilizado. Es importante que se asegure de que la placa base elegida será la apropiada para el micro y no sólo en cuanto a la marca sino también en cuanto al tipo o modelo.


Bancos de memoria: Los bancos de memoria son los "conectores" (y ciertamente así podría memoria denominárseles) destinados a albergar los diferentes módulos de memoria. Éstos, obviamente, deben ser conformes al tipo de memoria deseada y, según el tipo, se procederá a un modo de ensamblaje u otro. De cualquier forma y sea cual sea el tipo de memoria elegido, siempre se trata de una operación delicada dada la proximidad de los contactos

Conexiones IDE/FDD: Son los conectores encargados de comunicar los diferentes dispositivos de lectura y almacenamiento de datos con la placa base. De forma habitual se compone de un conector denominado FD correspondiente a la disquetera y dos canales IDE (IDEO e IDEI) cuya misión es la de conectar los discos duros, unidades de CD, etc. A medida que avance en la lectura y en el capítulo dedicado a los soportes de información, descubrirá los pormenores de su conexión física, configuración lógica y proceso de habilitación software, imprescindible para su uso (operaciones de creación de particiones, formatos, etc…).

Puertos USB: La funcionalidad de este tipo de puertos es exactamente la misma que la ofrecida por los puertos serie y paralelo: permitir las comunicaciones con el exterior. La diferencia fundamental es que los puertos USB admiten más de un dispositivo (teóricamente hasta 127) con unos ratios de transferencia muy superiores a los alcanzados por los puertos "convencionales". Lo cierto es que los puertos USB se han impuesto para la conexión de cualquier tipo de dispositivo.

Los puertos DIN (o mini DIN) son los usados para la conexión del ratón y el teclado. Son exactamente iguales y habitualmente el del teclado es el más próximo a la placa base.






El microprocesador
Si algún símil biológico pudiera aplicarse al microprocesador (no, no es tan raro: piénsese en memoria, virus ... ), ése sería el de cerebro. El microprocesador es, por excelencia, el elemento vital del cual dependen el resto de subsistemas. Por supuesto que todos son necesarios y, en la medida de la evolución específica del componente., cada vez más inteligentes, pero el micro (como comúnmente se le denomina), es el impulsor de todos.
Así será el encargado no sólo de realizar operaciones lógicas y aritméticas, sino que, además y dentro de sus cometidos, se encuentran tareas tan importantes como el acceso y direccionamiento de la memoria, el control de atención a interrupciones y muchas más.
Históricamente dos competidores han rivalizado por el mercado de los microprocesadores: Intel y AMD. No han sido los únicos y otros como Harris, Zilog.. lIT, TI, Cyris se han quedado en el camino o, simplemente, han guardado un discreto tercer lugar.
Aunque el parámetro más llevado y traído de los microprocesadores es velocidad expresada en megahercios, lo cierto es que no resulta un parámetro fiable del todo. El microprocesador entiende de dos frecuencias de trabajo: por un lado esta la propia frecuencia, es decir, a la que realizará todas las operaciones internas y, por o lado, la externa, es decir, a aquella a la que funcionarán el resto de los componentes él conectados. Lógicamente, la división entre la frecuencia interna y la externa, d un valor que se conocerá como factor multiplicador.
Esto justifica que los aumentos de frecuencia sean proporcionales pero no lineales, es decir: un microprocesador que funcione, por ejemplo, a 1 GHz (1.0 MHz) y una frecuencia externa (o de bits) a 133 MHz, dispondrá de un factor multiplicador de 7,5, dado que 133* 7,5 = 997,5 MHz == 1 GHz. Por otro lado, o microprocesador a 1,5 GHz, sólo variará su factor multiplicador hasta 11 (133 * 11 1.463 MHz == 1,5 GHz). Como se observa, el rendimiento real de la placa base y todos los componentes en ella conectados no ven alterada su frecuencia de trabajo. Serán las operaciones realizadas en el interior del propio microprocesador quienes experimenten un aumento de velocidad de un 50%. Parece claro que la frecuencia, si es un valor orientativo, no es, ni mucho menos, el valor definitivo de rendimiento.
En este punto es coincidente Kevin Krewel, analista senior del The Microprocessor Report, que afirma que los usuarios finales deben ser conscientes de que el rendimiento del PC es más que sólo la frecuencia del procesador. Los microprocesadores de PC de hoy día pueden proporcionar un mayor rendimiento a través de mejoras en la arquitectura tales como un aumento de la memoria caché y velocidades ~ más rápidas. El rendimiento global de un sistema es lo importante y eso es en lo que los compradores deben enfocarse cuando toman una decisión de compra.
lntel acostumbra a usar un parámetro de medida denominado índice iCOMP que en modo gráfico, da una perspectiva del rendimiento. Lo cierto es que resulta cuestionable, no en cuanto a la veracidad de los datos pero sí en la medida que no es un elemento realmente determinante de evaluación del microprocesador. De modo, se puede interpretar que da un valor específico muy elevado a la velocidad que, como ha quedado demostrado, no es el único parámetro a tener en cuenta. No obstante, dentro del mismo fabricante, Intel ofrece una opción interesante de comparativa de micros en HYPERLINK"http://www.intel.com/home/compare/index.htm."http://www.intel.com/home/compare/index.htm.
Otra medida, a juicio del autor, la más acertada, son los MIPS o millones de instrucciones por segundo. En este caso sí se evalúa el rendimiento en cuanto a los resultados obtenidos. Por supuesto que también podría ser cuestionable pero, al final, con:. algún parámetro de referencia hay que quedarse. La decisión final debe inclinarse por un binomio prestaciones-precio asegurando, eso sí, la compatibilidad y eficiencia del micro que, en la inmensa mayoría de los casos, está garantizada con cualquiera de los principales productores de microprocesadores.
Los principales aspectos a tener en cuenta con respecto al microprocesador son los siguientes:
Arquitectura: Hace referencia al diseño del micro. Así, puede haber dos microprocesadores que, aun trabajando a la misma frecuencia, consigan rendimientos distintos por la optimización del diseño, así como por otras mejoras en la arquitectura.
Caché: Se trata de una memoria con carácter temporal para la información más consultada en base a algoritmos de disponibilidad o cadencia de acceso. Se trata de un aspecto determinante en el rendimiento.
Frecuencia: Como ya se ha indicado, determina el número de ciclos de máquina que se pueden ejecutar por unidad de tiempo. Lo habitual es que se sitúe en miles de millones de ciclos por segundo (gigahercios).

La memoria
Bien entendido el diseño de arquitectura de Von Neumann en referencia a los ordenadores, todos los elementos que allí aparecen están perfectamente justificados. Intentando discernir en qué elementos son activos y cuáles pasivos dentro concepto, aparece la necesidad del almacenamiento temporal como uno principales requerimientos de forma conjunta al microprocesador. Probablemente estos dos componentes (microprocesador y memoria) sean los elementos activos al resto que, en definitiva, están al servicio de trasiego de información y almacenamiento de los datos.
Si algún símil biológico es apropiado aplicar a la memoria principal del sistema es, sin duda, la memoria humana. Es necesario que el cerebro (microprocesador) cuente con una zona donde manejar datos temporales (memoria RAM). Si además requiere de una permanencia mayor, habría que escribirlos en un libro (discos o similares).


La memoria actúa, precisamente como eso: un almacenamiento temporal de datos relacionados con la aplicación en ejecución actual. Así, de poco servirá disponer de un gran disco duro capaz de almacenar cantidad de aplicaciones y datos si no dispone de una memoria dimensionada para la ejecución de dichas aplicaciones ya que que requerirá mucho tiempo para procesar la información antes de ser grabada. Tampoco será útil una memoria generosa con un disco duro pequeño ya que no se dispondría de espacio para almacenar la información procesada en caso de que así se desee.
Así se justifica que, si bien todas las mejoras en un PC son significativas, el incremento de memoria se manifieste como un elevado porcentaje de aumento de prestaciones. Esto, en los entornos gráficos multitarea, es especialmente significativo porque, dado que se utiliza la denominada memoria virtual (espacio en disco duro que suple la carencia de memoria y se utiliza para el swapping o intercambio de datos) con el incremento de velocidad que implica con respecto a la memoria del sistema, a mayor memoria real, menos requerimiento de la virtual.
No obstante, no es sólo la capacidad la que define las prestaciones que puede ofrecer la memoria. También la velocidad a la que es capaz de trabajar y el tipo de tecnología empleada influyen en el rendimiento.
La memoria se encuentra presente en prácticamente todos los dispositivos del sistema. Basándose en su función y capacidad podrá denominarse registro (en referencia al microprocesador), caché (con respecto a la placa base) o buffer (en dispositivos externos como la impresora, por ejemplo). Sea cual sea la función específica, la genérica será siempre la misma: almacenamiento temporal de datos. Una buena elección de la memoria repercutirá de forma importante en el rendimiento del equipo, llegando incluso a ser más significativo el contar con la capacidad adecuada más que un microprocesador potente con una escasa capacidad de memoria RAM.
Para dotar al ordenador de la memoria deseable utilizando la tecnología disponible se emplea la llamada jerarquía de memorias, que estructura la memoria en varios niveles, al conjunto de los cuales denominaremos jerarquía de memorias de un ordenador.

Registro CPU: Es el más rápido y de menos capacidad. Por ejemplo los registros de la ALU. Constituyen el nexo entre la CPU y la memoria. El tamaño de los registros suele ser el mismo que el del bus de datos.
Cache: Trabajan a velocidad muy parecida a los registros. Es una memoria de apoyo para acelerar el acceso a la memoria principal por parte de la CPU. Su funcionamiento es transparente al usuario, esto es, aparentemente el ordenador se comporta como si esta memoria no existiese, pero trabaja mucho más rápido que sin ella. La tecnología que se emplea es RAM estática. Se distinguen dos tipos de cache: L1 y L2, ordenados de mayor a menor cercanía a la CPU y velocidad y de menor a mayor tamaño.
Principal: es la memoria donde residen los programas para ser ejecutados por la CPU y los datos que están en uso en un momento determinado. Es mas lenta y de mayor capacidad que la cache y suele estar compuesta de chips de RAM dinámica (DRAM).
Memoria cache de disco: Las actuales versiones de los sistemas operativos, reservan un área de memoria de acceso aleatorio (RAM) en el disco duro, como apoyo a la Memoria Principal y para almacenar los datos a los que se ha accedido desde el disco. Si los datos son requeridos de nuevo desde el disco duro, se obtienen desde esa área de RAM, la cual es más rápida.
Secundaria por disco: Esta formada por dispositivos que se conectan a la CPU mediante sistemas de entrada/salida. Actualmente lo típico es usar discos duros.
Memoria flash
Memoria auxiliar
¿Cómo funciona la memoria?
Son muchos los diferentes tipos de memoria que se han dado durante la historia reciente e, incluso, en la actualidad, conviven varios tipos de tecnologías. Cada una se caracteriza por una serie de prestaciones concretas, pero todas tienen un denominador común: el almacenamiento de datos.
La memoria debe imaginarse como una cuadrícula formada por filas y columnas igual longitud. Cada celda corresponderá a la posibilidad de almacenar un dato y, normalmente, coincidirá con el "ancho" del bus de datos del microprocesador aunque no siempre es así. En aquellos casos donde el número de bits que maneja el bus de datos de microprocesador sea superior a la capacidad de la celda, es preciso instalar de forma conjunta el número de módulos de memoria que logren una coincidencia.
Las referencias a cada una de las celdas se realiza a través del bus de direcciones del micro y es este el que precisamente limita la capacidad de memoria direccionable mediante 2n donde n corresponde al número de bits del bus de datos. Sin embargo, es habitual que esta capacidad sea muy elevada y que las limitaciones provengan de otros componentes de la maquina tales como el chipset.
La memoria puede ser clasificada bajo diferentes criterios como tecnología empleada, formato y otros pero, la consideración que más interesa en un criterio pedagógico es la de estática y dinámica. Estos calificativos indican si la memoria es capaz de almacenar los datos "por sí sola" o si precisa de un "recuerdo" o refresco respectivamente. Esto se debe a la tecnología de construcción empleada basada lado en transistores o en condensadores por otro. Ese "recuerdo" es un proceso que se realiza un número concreto de veces por unidad de tiempo evitar la pérdida de datos. De forma habitual la memoria caché es memoria estática, (SRAM), mientras que la memoria principal del sistema es memoria dinámica (DRAM).
Instalación de los módulos de memoria
La instalación de los módulos de memoria no requiere mayor dificultad que mínima destreza manual, tal y como se detallará a continuación. La memoria que encuentra en el mercado actual responde a dos formatos físicos diferentes: por un lado el formato SIMM de 72 contactos y el que soportan los módulos RIMM de 168 contactos. Aunque la tendencia es que este último formato se imponga, aún es encontrar módulos SIMM de 72 contactos, motivo por el cual se detallarán ambos:
SIMM 72c: Este formato dispone en uno de sus laterales de un rebaje practicado sobre la fibra de vidrio del circuito impreso. Igualmente una muesca en la parte de los contactos divide al módulo en dos. En primer lugar es preciso verificar la correcta posición del módulo observando, en banco de memoria que lo alojará, dónde se encuentra el ya citado rebaje lateral. Una vez comprobado, el módulo deberá insertarse con inclinación de unos 45° en el banco, de modo que los contactos del mismo descansen sobre la base del módulo. El siguiente paso es bascular el módulo sobre este punto de apoyo de modo que quede vertical. Será en ese preciso instante cuando se escuche un "clic”' característico correspondiente al impacto de los anclajes laterales al sujetar el módulo.
Para su extracción el proceso es similar: basta con liberar con ambas manos los anclajes laterales que aprisionan el módulo ejerciendo pequeña presión sobre ellos hacia el exterior. En ese momento el módulo basculará situándose de forma inclinada sobre el banco y sujeto por los contactos de su base. En este instante se puede retirar el módulo sin ninguna dificultad.


DIMM168c: El módulo DIMM dispone de dos pequeñas ranuras en su zona de contactos situadas de forma asimétrica, lo que garantiza su correcta posición en el bando, que dispone de dos salientes coincidentes. Su inserción es tan sencilla como practicar una presión de forma perpendicular a la placa, quedando los módulos insertados formando 90° con la superficie de la placa base. Para asegurar esta sujeción física, se debe actuar sobre dos pestañas laterales que se alojarán en dos rebajes que el módulo tiene en sus extremos. La extracción es similar pero habrá que comenzar desbloqueando el módulo mediante las pestañas laterales y, a continuación, extraerlo libremente.

RIMM: El módulo, físicamente, está constituido por 184 pines (contactos) e incorpora su propio bus de direcciones, datos y control de gran velocidad (500 millones de transferencias/segundo). Probablemente lo primero que llame la atención en este formato sea la placa metálica que cubre los chips. El motivo de la misma estriba en actuar como disipador de calor por lo que es absolutamente precisa: su eliminación podría dañar el módulo de memoria. Samsung Electronics fue el primero en implantar el RIMM o "Rambus In-line Memory Module" en formato básico de 64 MB y totalmente compatible. Estos módulos funcionan por encima del GHz.

En cualquiera de los casos, una vez realizada la instalación física es necesario que el equipo reconozca la memoria. En muchos casos este proceso es transparente al usuario, es decir, el equipo, mediante una característica denominada autobanking de la que disponen la mayor parte de las placas actuales, incorpora la nueva configuración al Setup. En otros casos, es preciso entrar en la BIOS (generalmente mediante la pulsación de la tecla Supr justo en el momento de arranque) y entrar en la opción etiquetada como Standard CMOS Setup. Será aquí donde el sistema reconozca la memoria y bastará con la opción de salir guardando cambios (Save & Exit). El proceso habrá concluido.
La comprobación de la cantidad de memoria se puede realizar en el momento del arranque de la máquina, cuando se produce el POST (Power On SelfTest) y comienza el conteo. En caso de ser Windows su sistema operativo, podrá comprobar si la memoria la reconoce el sistema accediendo con un doble clic sobre el icono de MIPC: mientras se mantiene pulsada la tecla Alt. Lo mismo se obtiene directamente a de Mi PC / Panel de Control/Sistema, tal y como se aprecia en la figura siguiente.



Sistema:
Microsoft Windows XP Profesional
Versión 2002
S ervice P ack 2

No obstante y con independencia de los valores mostrados por su sistema operativo, compruebe tal y como se indicaba anteriormente, el proceso de arranque, el conteo de memoria y la totalización que de la misma se hace. En ocasiones puede encontrarse con que los valores que no se corresponden con los esperados. Esto debe ser analizado y solventado según el problema específico de que se trate (mala configuración, error del sistema operativo, error físico de memoria...).
Evolución de las memorias
Las memorias RAM son un sector muy dinámico y se han desarrollado a lo largo del tiempo múltiples tecnologías para su fabricación, entre ellas distinguimos las siguientes:

FPM: Ha dejado de emplearse. Para el acceso se debe especificar la fila y la columna. Para sucesivos accesos a la misma fila, solo se especifica la columna, lo que las hace más rápidas que otras memorias que no empleen este sistema.
EDO: Sustituyo a FPM, mantiene los datos en la salida hasta el siguiente acceso a memoria. Esto permite al procesador ocuparse de otras tareas sin tener que atender a la memoria, hasta entonces mucho más lenta. Así pues, el procesador podía seleccionar la posición de memoria, realizar otras tareas y volver a consultar la DRAM donde los datos en la salida seguían siendo validos.
SDR SDRAM: La principal diferencia de esta memoria con las anteriores es su velocidad. La memoria SDR SDRAM surge para superar el cuello de botella que suponían los anteriores tipos de memoria que no podían adaptarse a la mayor velocidad de los nuevos procesadores. Ya con los buses PCI, la capacidad de transferencia dejaba obsoletos las memorias EDO, con lo que la aparición del chipset AGP obligo a desarrollar un nuevo tipo de memoria. Esta nueva memoria se caracterizaría por su sincronización con una señal de reloj externa que le permitiría funcionar a las velocidades del bus de datos. Otra característica seria el modo de funcionamiento en ráfaga. Este sistema conseguía un acceso a alta velocidad mediante el uso de un generador de columnas interno. Tras el primer acceso, las siguientes direcciones son generadas por el contador interno de columnas automáticamente, transmitiendo tras una demanda de datos, ráfagas de palabras.
DDR SDRAM: SDR quedo obsoleta con la aparición de la animación 3D. Para poder emitir video normal de 30 imágenes por segundo se precisaban 450 MB/s de información con una resolución de 1600x1200. Puesto que las tarjetas graficas 3D necesitan almacenar la imagen actual y la siguiente el ancho de banda necesario se duplicaba. Aunque SDR- SDRAM a 133 tenía un ancho de banda de 1064 MB/s, si queríamos una resolución mayor para la imagen del orden de 1920x1200, se necesitaba 1106 MB/s lo cual ya no permitía SDR-SDRAM. La aparición del bus AGP con tasas de transferencia de hasta 2 GB/s hizo evidente la necesidad de desarrollar memorias más rápidas. La primera solución fue la memoria RAMBUS, pero era demasiado cara y pronto surgió otra opción, la DDR-SDRAM. Su ventaja sobre la SDR era que en lugar de realizar una operación de lectura o escritura por cada ciclo de bus, hiciera una operación por cada flanco de subida y de bajada de la señal de sincronización con lo que se conseguía duplicar la tasa de transferencia. Otro elemento importante era la utilización de una memoria EEPROM que guarda la configuración de las memorias, velocidad, tiempo de acceso, etc, lo cual facilita la autoconfiguración de la BIOS para aprovechar al máximo las características de la memoria. Esta memoria, con un coste de producción moderadamente superior a SDR, se vio favorecida también por el hecho de que todas las compañías la adoptaran, al negarse Intel a compartir los diseños de fabricación de la RAMBUS técnicamente mejor. Últimamente se ha establecido un estándar de fabricación de DDR entre más de 50 fabricantes para facilitar la compatibilidad entre diseños.
Memorias VRAM y RAMBUS: las memorias VRAM son un tipo de DRAM que se diseñaron para ser utilizadas como RAM de controladoras graficas. Pueden ser accedidas simultáneamente desde el monitor y desde el hardware de la placa grafica, es decir, la imagen puede ser enviada al monitor y a la vez ser modificada por la controladora grafica. Su acceso se puede realizar en serie, actuando sobre los registros de desplazamiento, o en paralelo, actuando directamente sobre la memoria DRAM. Una variante de la memoria de video es la SGRAM. Intel diseño un tipo de SGRAM llamada RAMBUS que ya en sus primeras versiones alcanzaba velocidades de 800 Mhz, con tasas de transferencia >=1,6 GB/s. Este diseño es original de una compañía, RAMBUS inc, que acordó con Intel instalar esta memoria en los ordenadores personales, concretamente en procesadores Pentium IV. Intel se negó a que otras compañías fabricaran sus propios chipsets para RAMBUS pero una serie de fracasos financieros junto con el éxito de DDR en sus competidoras la indujeron a permitir que otras compañías diseñaran sus propios chipsets de RAMBUS. RAMBUS difiere de otras memorias SDRAM, en primer lugar por su velocidad. DDR tiene que conectarse a un bus más lento que el principal, aunque luego duplique su velocidad de transmisión realizando las operaciones en los flancos de subida y bajada de la señal de sincronismo, pero RAMBUS puede trabajar a 400 o 500 Mhz por lo que se conecta directamente al bus principal. En segundo lugar, aunque la palabra en RAMBUS era inicialmente de 16 bits, posteriormente se han desarrollado versiones de tamaño de palabras 64 bits. En tercer lugar RAMBUS incorpora dispositivos que disponen de una lógica específica de funcionamiento lo que convierte a RAMBUS en una memoria inteligente, interfaces de módulos de memoria y controladoras de dispositivo que maximizan la transferencia de datos. Estas memorias son el complemento perfecto para las tarjetas AGP, evitando los cuellos de botella en la transferencia de la tarjeta grafica a la memoria del sistema durante el acceso directo a memoria. También se usan en PDA, móviles, etc...

Memoria cache
Es una memoria rápida de tamaño menor que la memoria extensa con el fin de acelerar el funcionamiento del acceso a esa memoria externa. Para ello el procesador, antes de usar un dato de la memoria externa, consulta la cache y si el dato esta en ella lo utiliza. En caso contrario se accede a la memoria externa y se procede a la actualización de la cache.
Memorias virtuales
Se dice que un ordenador emplea memoria virtual cuando las direcciones que generan los programas en él ejecutados se refieren a un espacio de memoria que puede ser mayor que el físicamente disponible en memoria principal. En este tipo de maquinas hay que diferenciar el mapa de direcciones físicas o reales del mapa de direcciones virtuales o direcciones lógicas. Emplea como soporte el almacenamiento en disco. Estas técnicas son necesarias cuando los programas y datos requerido exceden al espacio físico de la memoria principal, o cuando, simultáneamente, varios programas necesitan su espacio de direccionamiento propio e independiente. Usando memoria virtual los programas en curso pueden trabajar con un espacio de direcciones muy superior al realmente disponible y espacios de direcciones independientes en entornos de multiprogramación. El precio que se paga es un descenso considerable de la velocidad de trabajo de la memoria principal. La ventaja, claramente deducible es una independencia, en cuanto al tamaño, de los programas a ejecutar en un sistema con este tipo de memoria y la posibilidad, indispensable en multiprogramación, de contar simultáneamente con espacios de direccionamiento independientes entre sí.

Discos duros
Los discos duros, como ya se adelantaba, son la respuesta a la necesidad de almacenamiento de gran volumen. Así, resulta impensable a día de hoy disponer de lID sistema operativo en disquete, algo común hace algunos años. No obstante, los discos duros no sólo deben aportar capacidad, objetivo que logran sobradamente gracias a una mayor precisión mecánica, sino también deben aportar velocidad.
Sin duda, la rapidez es la primera de las exigencias a una máquina ya que no hay nada más desesperante que mirar a una pantalla sin posibilidad de interactuar porque el ordenador está "a lo suyo". Los tiempos de acceso son cada vez más cortos pero todavía se encuentran en menos de una decena de milisegundos (entre 8 y 10), factor que hay que optimizar. Uno de los parámetros clave para la reducción de tiempos se basa en el aumento de la velocidad de rotación ya que resulta más sencillo que depurar aún más el sistema de posicionamiento de cabezas. No obstante, la microinformática nos tiene acostumbrados a los cambios y, quizás, sólo sea cuestión de tiempo.

Superadas las barreras de velocidad y capacidad, el tercer aspecto a tener en cuenta (no por ello menos importante) es la fiabilidad. Lo cierto es que existen pocos estudios serios al respecto y el único valor ofrecido por algunos fabricantes (que no todos) es el MTFB que mide el tiempo medio entre fallos expresado, generalmente, en miles de horas. En el campo de la seguridad, una iniciativa software ha intentado dar respuesta a esta carencia pero parece que, por 10 menos hasta el momento, no acaba de implantarse. Se trata de la tecnología SMART (Self Monitoring Analysis and Reporting Technology, algo así como Tecnología de Autocomprobacíón, análisis e informes) que, jugando con el significado inglés de su acrónimo (inteligente) trata de dar un reporte y monitorización del disco en tiempo real. El sistema en el que se basa es relativamente sencillo: se miden algunos de los parámetros vitales del disco (temperatura, distancia entre el disco y las cabezas ... ) y se informa al usuario cuándo estos varían peligrosamente.
La única realidad a día de hoy es que el mejor sistema de seguridad es el backup, es decir, las copias de seguridad sistemática que aseguren la integridad de los ya sea a través de sistemas redundante o mediante copias en otros medios físicos. No obstante y como se indicaba en esta exposición, el hardware microinformático evoluciona de forma vertiginosa, y seguro que en breve aparecerán soluciones efectivas a este problema.


Un concepto, dos tecnologías: PATA Y SATA
La norma ATA o "AT Attachment" debe su nombre a su aparición con los PCs . AT y no es más que otra denominación que se le da al bus IDE. Esta tecnología ha ido evolucionando desde transferencias de 8,3 Mb/seg hasta los 66,6 Mb/seg en los ATA-5. Algunas de estas tecnologías han conllevado cambios físicos drásticos, si bien se ha intentado mantener siempre una compatibilidad con el resto de versiones. Así, el cable usado para conectar dispositivos en el ATA-S es de 80 pines en lugar de los 40 habituales hasta ese momento.
No obstante y a pesar de la evolución, el denominador común había sido una transferencia de datos en formato paralelo que, ya en el dispositivo en cuestión, se adecuaba a una transmisión serie.
Fruto del frenético empuje de la tecnología, irrumpió en el mercado un nuevo tipo de tecnología que conseguía un mayor rendimiento. Realmente existían muchos aspectos comunes con la tecnología ATA pero, la novedad, estribaba en que la comunicación no se realizaba en formato paralelo sino en serie. Esto dio lugar, en un primer momento, a una necesidad de cambio en la denominación del popular ATA que pasó a llamarse PATA (Parallel ATA) para distinguirse del nuevo bus: el SATA (Serial ATA)



Así, este tipo de bus no sólo contempla mejoras en la transferencia de sino que elimina problemas que la ya venerable tecnología ATA no contemplado en sus inicios, allá por la década de los años 80. De este modo, los cables son sustancialmente más reducidos lejos de las "fajas" típicas permitiendo longitudes de hasta 1 m frente a los 46 cm máximos del ATA convencional. Por otro este nuevo formato consigue un cableado aerodinámico que favorece la evacuación del calor y, por tanto, el rendimiento de la máquina. También es menor el número de pines, reducidos hasta 7 que, en Fast ATA, alcanzaba los 80 -si bien 40 de ellos eran señales intermedias de masa para evitar ruidos en las señales-. En lo referente al conexionado, se realiza punto-a-punto, es decir, cada dispositivo tiene su propio cable que permite al usuario el uso concurrente de sus dispositivos, algo que no podía realizarse en una arquitectura de tipo bus como la ATA donde los cables podían ser compartidos.

Ahora bien, los cambios no son sólo físicos: las transferencias oscilan desde los 150 MB/s hasta unos inmediatos 600 MB/s previstos tras los 300 MB/s. Por otro solventa otro caballo de batalla: la alimentación. Si bien los discos duros de forma tradicional precisaban de 12 v para conseguir el giro del motor y 5 v para que la lógica actuase, se ha conseguido reducir este último valor hasta los 250 mv. Todos estos cambios han llevado a los fabricantes a realizar interfaces permitan aprovechar el hardware existente con la nueva tecnología, si bien, no habrá que esperar demasiado para que los discos SA T A sean los únicos que existan en el mercado.
Funcionamiento de los discos duros
El funcionamiento de los discos duros se basa en un proceso magnético no muy diferente del de las disqueteras aunque con algunas peculiaridades orientadas, sobre todo, al aumento de la velocidad y la capacidad mediante un mayor ajuste mecánico entre otras cosas.
En esencia, se trata de uno o más platos que giran de forma solidaria con respecto a un mismo eje. Dado que estos platos, por supuesto cubiertos de un substrato susceptible de ser magnetizado se encuentran encerrados dentro de la carcasa que conforma el disco duro, la precisión puede ser mayor. De este modo, las cabezas “sobrevuelan" el disco a una distancia mínima llegando incluso a rozarle en ocasiones. Aunque esto puede parecer extraño, no lo es: los "aterrizajes" de las cabezas sobre el disco provocando daños son algo del pasado. En la actualidad, una sustancia superdeslizante con carbono como principal elemento hace que, en caso de una colisión de las cabezas sobre el disco, el resultado no sea nocivo para éste. Dada, por tanto, la proximidad de las cabezas, y la ausencia de contacto físico salvo, como se ha comentado, en ocasiones puntuales, se consiguen dos efectos: por un lado, una mayor densidad de grabación dado que es posible acceder a zonas más concretas del disco. Esto se manifiesta como un aumento de capacidad. Por otro lado, una mayor duración del componente ya que la ausencia de rozamiento reduce los puntos de error.
El disco dispone en su parte inferior de una electrónica denominada habitualmente "precontroladora". Dado que la grabación de la información se realiza en formato serie (un datos tras otro) mientras que la información es enviada en paralelo (todos los datos a la vez) en los discos PATA, la precontroladora tendrá, entre otras funciones, la de realizar la conversión paralelo-serie para la escritura y serie-paralelo para la lectura. Otras funciones serán las de controlar la posición de las cabezas, asegurar la velocidad de giro de manera constante ...
En el caso de los SA T A, la precontroladora sigue cumpliendo con sus funciones se ve exenta de realizar la conversión de datos citada.
Otro dato a tener en cuenta a la hora de elegir un disco es su velocidad de rotación, expresada en revoluciones por minuto (rpm). Dado que las cabezas deben posicionarse en un punto concreto del disco, existe un tiempo denominado “latencia" que es el que hay que esperar para que la parte del disco que contiene los datos "pase" por debajo de la cabeza. Resulta obvio que una mayor velocidad de rotación implica un menor tiempo de latencia. Las velocidades actuales más comunes se sitúan en tomo a las 7.500 rpm, si bien los nuevos discos SATA parecen encaminados a estandarizar las 10.000 rpm. Otras tecnologías, como la SCASI.. incluso hasta las 15.000 rpm.
Conexiones
El conexionado de los discos duros, en esencia, no difiere demasiado respecto a las disqueteras. Es necesario, al igual que en el resto de dispositivos, establecer dos vínculos necesarios para la autonomía del disco y su vinculación con el resto del PC: la alimentación y los datos. El conector de alimentación parte de la fuente y es ligeramente de mayor tamaño que el usado en la disquetera. No obstante las tensiones suministradas y la distribución de los cables es idéntica: amarillo, negro, negro y rojo que corresponde a las tensiones de +12 V, masa, masa y +5 V respectivamente.

Será también necesario conexionar el bus de datos. Éste puede variar en cuanto al número de hilos ya que se pueden encontrar "fajas" de 40 u 80 hilos. La única diferencia estriba en que, las de 80, incluyen un hilo de masa por cada hilo original. duplicando así el ancho. No obstante, el conector en ambos casos será de 40 pines.


Algunos conectores incluyen una pestaña que ayuda a posicionar la polaridad de la faja pero, aunque no fuese así, se sigue manteniendo la norma de llevar el hilo de color rojo al pin número uno del disco. De forma casi total, el pin número uno estará situado en la posición más cercana al conector de alimentación. Esta afirmación no siempre es correcta en cuanto a disqueteras se refiere.
De forma exclusiva en los discos PATA, una vez alimentados y con el bus de datos, sólo resta, en cuanto a nivel lógico se refiere, determinar la posición que ocuparan dentro del bus. De este modo, lo habitual es que un PC con tecnología ATA disponga de dos conectores IDE (realmente E-IDE) y, cada uno de ellos, es capaz de gestionar hasta dos dispositivos. La única condición es que, si dos dispositivos ocupan un mismo canal, uno de ellos debe ser maestro (Master) y el otro esclavo (Slave). Esta determinación se realiza en el propio dispositivo, generalmente, mediante la inserción apropiada de jumpers. Es el propio fabricante del dispositivo el que debe ofrecer de forma clara y visible la configuración del dispositivo. De forma habitual existe una tercera posibilidad denominada Cable Select (selección por cable). Esta opción permite que, mediante el uso de cables (fajas) especiales donde se ha suprimido en parte de su recorrido el hilo número 28, sea el propio dispositivo quien se configure. No obstante, en la medida que se pueda, resulta recomendable realizar esta configuración de forma explícita.
En el caso de los SATA no es necesario ningún tipo de especificación ya que el concepto Maestro/Esclavo desaparece. Si bien es posible encontrar jumpers, éstos sólo están destinados a su uso por el fabricante, careciendo de interés para el usuario. Así, la unidad de disco cuenta con un cable de uso exclusivo que no puede ser compartido con otro disco y que se conecta directamente a un adaptador host ATA serie, o, directamente, a un puerto ATA serie.
Tarjetas gráficas y monitores
El sistema de vídeo se compone, fundamentalmente, de dos componentes. tarjeta gráfica y monitor. Ambos deben estar conectados con cierta coherencia. Es decir, de poco servirá una tarjeta de altas prestaciones si el monitor al que está¡ conectado no reúne las mismas características. El ejemplo inverso es igualmente válido. Ambos dispositivos deben estar conformes a lo que se desea obtener.
La tarjeta gráfica es la encargada de procesar toda la información que se visualizará en el monitor. Esto conlleva varias operaciones donde, en esencia, cabe reseñar dos esenciales: proceso de datos y conversión digital analógica. El proceso de datos hace referencia a todas las operaciones que la tarjeta debe realizar para conseguir los efectos deseados de vídeo. Si bien en el pasado ésta era una función exclusiva del microprocesador del sistema, en la actualidad los potentes micros de las tarjetas se encargan de realizar gran parte de las operaciones. Así, por ejemplo, la rotación de una pieza en 3D ya no debe ser calculada (al menos en su totalidad) por el microprocesador del sistema, sino que en gran medida, a partir de unas coordenadas básicas, la propia tarjeta de vídeo será capaz de generar la información precisa para la representación.
Recientemente ha aparecido una nueva tecnología en cuanto a cuestiones de vídeo: se trata de la Turbo Caché. Este sistema aprovecha la memoria principal del sistema cuando le es preciso pudiendo ampliar, por tanto la memoria base instalada de forma "virtual". El problema estriba en que, obviamente. la memoria destinada al vídeo se resta de la principal del sistema. Un sistema similar se daba hace unos diez años (con notables diferencias con respecto a la tecnología Turbo Caché) pero no tuvo gran éxito. Este tipo de tarjetas está dirigido al sector medio de los usuarios.

Por otro lado surge otra necesidad ya adelantada: la conversión digital-analógica. Si bien todo el proceso en el interior del PC se realiza de forma binaria (dos Estados posibles), la salida de vídeo tiene parámetros analógicos (infinitos estados posibles). Esto es provocado por la riqueza que la información analógica ofrece frente a la digital, si bien es cierto que esta última es mucho más sencilla de procesar. Claro está que este proceso de conversión debe ser lo más rápido posible para no provocar retrasos en el sistema de vídeo, motivo por el que se cuenta con el RAMDAC •. Random Access Memory Digital to Analogic Converter). Este sistema tiene como misión la de transformar la información de un sistema a otro soportándose sobre una memoria de características conformes a las necesidades. Su parámetro fundamental es el ancho de banda que estará en dependencia de la resolución a la que se desea trabajar y la frecuencia con la que se desean renovar las imágenes.
El otro protagonista del sistema de vídeo es el monitor. Es el encargado de recepcionar toda la información (recuérdese que es analógica) y mostrarla sobre el monitor. Tradicionalmente se han usado monitores TRC (tubo de rayos catódicos) aunque hay una tendencia clara hacia los monitores planos de plasma. Los TRC consiguen generar altas tensiones (del orden de miles de voltios) hasta provocar un haz de electrones que incide sobre la pantalla, preparada para ser impresionada y mostrar las imágenes "al otro lado". En el caso de los monitores de plasma, se consigue el mismo efecto con menores tensiones mediante la oscilación de partículas. Este modo de funcionamiento, además de un menor consumo, se traduce en una menor disipación de calor y una ausencia de radiación, si bien es cierto que la calidad de imagen es menor a la ofrecida por los TRC.
Sea cual sea el sistema elegido, debe ser capaz de responder a las características de vídeo exigidas, esto es, mantener los parámetros fundamentales de visualización desde su generación en la tarjeta gráfica hasta su exposición en el monitor.
Conexiones
La conexión del sistema de vídeo no conlleva ninguna dificultad. Por un lado, en cuanto a la tarjeta gráfica se refiere, el proceso es exactamente el mismo que con cualquier otra tarjeta. Así, será preciso introducirla en el slot apropiado. Si bien es cierto que han existido tarjetas gráficas con diferentes slots (ISA, VESA, PCI,..), lo habitual en la actualidad es que, si se trata de un equipo nuevo, la conexión se haga sobre AGP (Adapter Graphics Port) o a través de PCI-E (PCI Express). Ambos slots son fácilmente reconocibles ya que se encuentran en la parte superior de la placa base y están significativamente desplazados hacia el interior. Si es éste su montaje, debe prestarse atención a una introducción firme ya que el AGP está formado por dos filas de contactos en dos niveles distintos, lo que requiere de una inserción completa para que todos los contactos se correspondan. Además, suele incluirse una pequeña pestaña para asegurar la tarjeta al slot.


Sea cual sea el tipo de tarjeta, dejará en la parte posterior del ordenador un conector visible de 15 pines hembra formado por tres filas. Éste será el conector usado para el monitor. De forma adicional, la totalidad de tarjetas de vídeo actuales incluyen una salida de TV en formato de Super Vídeo de forma estándar y, según el modelo puede incluir un conector DVI destinado a salidas de vídeo digitales (sólo para monitores que lo acepten). Deberá cuidarse su introducción ya que los pines conector del monitor son delicados y cualquier brusquedad puede romper uno de los contactos. Como se puede observar, este conector tiene una forma específica que impide su inserción incorrecta.

El vídeo debe ser operativo desde el primer momento (aun sin haber cargado el sistema operativo). Otra cuestión será la configuración específica según el software con el que se desee trabajar para poder obtener todas las prestaciones del sistema.
Configuración
Como siempre, la configuración dependerá del sistema operativo. Si bien la mayor parte de los monitores se identifican como Plug & Play sin necesidad alguna de drivers (aunque algunos si lo incluyen), no ocurre lo mismo con las tarjetas de video.
Lo habitual es que la tarjeta disponga de los drivers oportunos para su configuración, esto es, el software necesario para aprovechar al máximo las prestaciones de la tarjeta y aunque el propio sistema operativo la identifique de forma genérica, suele ser conveniente instalarlos ya que incluirán las últimas actualizaciones y mejoras realizadas por el fabricante además de utilidades diversas que el sistema operativo no podrá aportar. Para el proceso de instalación, conviene remitirse a las instrucciones dadas por el fabricante. No obstante y en caso de no disponer de los drivers oportunos, siempre es posible hacerlo de forma manual esperando que el sistema incluya el software apropiado (si se trata de una versión novedosa, ni siquiera lo intente y acuda a Internet). Para la instalación manual, basta con acceder a Inicio/Configuración/Panel de Control y, una vez allí, seleccionar Sistema/Hardware/Administrador de dispositivos. Aquí se ofrecerá toda la configuración hardware del equipo.
Aceleradoras graficas 3D

La aceleración hardware 3D permite mejorar las prestaciones de los ordenadores personales. Es muy útil en programas de simulación 3D como CAD o en juegos. Permite la manipulación tridimensional, lo que incluye movimiento, de los objetos creados. Las características principales de una aceleradora 3D incluyen el manejo del buffer Z (donde se almacena la información del eje Z para cada píxel de la pantalla), la texturización, la entrega de triángulos y polígonos y la interpolación de color. Las representaciones visuales elaboradas por las controladoras 3D se basan en la generación y visualización de triángulos, en los que se divide la imagen para poder representar imágenes en tres dimensiones. La creación de una imagen 3D comienza con un esqueleto del tipo trama de líneas compuesto por polígonos. Este esqueleto puede rotarse desde cualquier ángulo y manipularse de múltiples maneras. Para conseguir la apariencia de objeto sólido a esta estructura se le aplican color, texturas y luz. Con el fin de lograr la ilusión de movimiento todo este proceso se repite constantemente. Las aceleradoras 3D disponen para hacer todo esto, de un conjunto de instrucciones almacenadas en una API (interfaz de programación de aplicaciones) que luego son traducidas por las herramientas de desarrollo a instrucciones de bajo nivel que se comunican directamente con los manejadores de la tarjeta. Cuando una aplicación que usa imágenes 3D se carga, el software analiza el sistema para comprobar que soporte puede obtener. Si se dispone de un dispositivo 3D lo utiliza, en caso contrario será el microprocesador el que tenga que llevar a cabo todos los cálculos necesarios para visualizar los objetos 3D, lo cual implica rebajar las exigencias de calidad de la imagen para evitar saturar de trabajo la CPU y colapsar el sistema.
Algunas de las operaciones que realizan las controladoras 3D son: mantener definidos los limites en los que se unen diferentes texturas, crear la sensación de texturas con relieve, corrección de la perspectiva en función de los movimientos del objeto, cambios de escala, varia la vista de imágenes con texturas a partir de ángulos de visión diferentes, analiza la profundidad de los triángulos que componen la imagen y muestra solo lo que debe verse desde la perspectiva del observador, iluminación especular, utilización de varias versiones de la misma textura en función de la distancia al observador, mostrar un objeto a través de otro para conseguir la ilusión de transparencia, generación de niebla, simulación de fenómenos de reflexión, sombreado suave.

Cajas, ratones y teclados
Las cajas
Hasta ahora han quedado claros todos los componentes del PC. Sin duda, cada uno en su medida, realiza una función específica que los valída para estar ahí pero ... ¿dónde es ahí? Es necesario integrar cada una de las partes para que formen un todo en su conjunto y, el elemento imprescindible para ello es la caja. Pudiera parecer que éste sea el elemento de menor importancia pero no es así: al igual que el resto, cumple una función específica y requiere de una normalización para que se convierta en un estándar capaz de aceptar sin problemas el resto de elementos.
Por otro lado, la caja es, además, el elemento con el que se suministra la fuente de alimentación, encargada de proporcionar el suministro eléctrico adecuado a toda la circuitería. Como se puede adivinar, además del aspecto estético, hay otra serie de factores que hacen que la elección de una caja apropiada sea una tarea tan importante como en el resto de componentes. Será cuestión de profundizar en sus características para conocer los pormenores imprescindibles para una correcta elección.
En las cajas existen una serie de parámetros inalterables que se deben mantener: como puede ser el caso de las bahías (en mayor o menor cantidad) o habitáculos específicos para el alojamiento de dispositivos. No obstante, hay otra serie de aspectos que dependen, exclusivamente, del aspecto estético.
Así, cualquier caja de ofrecer en su parte frontal una serie de superficies troqueladas destinadas a albergar las diferentes unidades que deben ser accesibles el usuario, esto es, unidades de CD ROM (en cualquiera de sus variantes), unidades disco, etc. De forma normalizada, las bahías responderán a dos formatos adecuados a los dispositivos a instalar: 51/4" y 31/2". Será cuestión del fabricante el determinar cómo se liberan para introducir el elemento en cuestión. Lo normal es que se trate de "tapas" de plástico afianzadas por una pestaña y que, desde el interior, se pueda liberar con facilidad permitiendo la introducción de la unidad. Algunos fabrican también requieren que se desprenda una chapa metálica en el interior de la caja además de la cubierta de plástico citado. Sea cual sea el formato, habrá que comprobar el modelo en cuestión para ver el modo en que el fabricante diseñó su producto. e incluso el caso en el que sea preciso desmontar el frontal de la caja para poder acceder a la bahía. De cualquiera de las maneras, esta operación no debe representar mayor dificultad. El número de bahías dependerá del formato elegido ajustándose normalmente, a los siguientes:
FormatoBahias 3 1/2Bahias 5 1/4Sobremesa32Minitorre32Semitorre53Torre66

Vista posterior de la fuente de alimentación.
Ventilación para un segundo ventilador opcional.
Conectores de puertos, ratón, teclado y dispositivos multimedia.
Tarjeta de vídeo instalada mostrando el conector hacia fuera del PC.
Cubierta protectora de tarjetas que se retira cuando se inserta alguna en un slot.
Chasis para la sujeción de unidades de formatos de 51/4 y 3 1/2

Por supuesto, estas denominaciones pueden variar y aparecer otros formatos. La tabla no tiene otra misión que la de ser orientativa en cuanto a la oferta actual. No obstante, cada vez es más común que las cajas faciliten al usuario el acceso a los conectores más usados. Así, los puertos USB, conectores de audio e incluso conectores MIDI para joysticks son habituales en los frontales.
Pasando a la parte posterior de la caja, se deben encontrar los mecanizados oportunos para albergar los conectores externos de la caja (ratón, teclado, puertos ... ) además de las diferentes tarjetas instaladas. A día de hoy y con la tecnología ATX en placas base totalmente instaurada, no suele haber mayor problema en cuanto a los conectores de las placas. Se encontrarán los orificios apropiados en las medidas justas correspondientes a todas las conexiones necesarias. Hubo un tiempo en el que esta parte podía variar y los fabricantes suministraban diferentes formatos de "chapas" que, mediante tomillo, se sujetaban a la caja. Era cuestión del usuario determinar qué modelo era el que precisaba.
En cuanto a las diferentes tarjetas, la caja debe ofrecer unas aberturas correspondientes a la posición fisica que ocuparán las tarjetas insertadas en los slots oportunos de la placa base. Estas aberturas vendrán cubiertas con una chapa troquelada que se retirará a la hora de insertar a la tarjeta, o bien con un protector anclado con un tomillo. Será en el momento de la instalación cuando se retiren las tapas oportunas y se vuelvan a cubrir con las propias tarjetas.
Ya en el interior, la caja debe mostrar el mecanizado apropiado para albergar la placa base y las unidades de disco, CD ROM y disquete. En este sentido hay dos sistemas muy definidos: algunas cajas permiten que la placa base se afiance sobre una "parrilla" metálica que, a su vez, se atornillará a la caja. Otras, por el contrario, requieren que las placas se afiancen al fondo de la caja sin permitir la movilidad de la parrilla. Sin lugar a dudas, resulta mucho más cómodo y funcional que la caja sea desmontable ya que no obliga a desmontar las unidades frontales para, por ejemplo, cambiar la placa base. No obstante, esta operación tampoco suele representar mayor dificultad.
Volviendo a girar la caja, obtenemos el frontal del que aún quedan cosas por comentar. Sin duda el aspecto estético es un punto a tener en cuenta. Tanto es así que éste es uno de los principales argumentos de venta. Asumidos todos los mecanismos indispensables que deben figurar y que se comentarán más adelante, el diseño juega un papel fundamental. En estos casos, guíese por su gusto ya que, realmente, poco más se puede aconsejar. De cualquier modo, hay una serie de elementos imprescindibles que deben aparecer, a saber:
Pulsador de Encendido: Denominado habitualmente como Power On/Off, se trata de un pulsador sin polaridad alguna (es decir, no tiene una posición concreta de conexión) que se conecta a la placa base y cuya misión es la de activar el circuito encargado de arrancar la fuente de alimentación. Obviamente esto permite que si el técnico precisa hacer alguna comprobación de encendido, pueda hacerlo cortocircuitando directamente los pines de este contacto. Es habitual que el apagado se realice de forma igual al encendido (accionado el pulsador) o, en ocasiones y según la definición de la BIOS, accionándolo durante 4 segundos seguidos.
Pulsador de Reset: Al igual que el anterior, tampoco tiene polaridad. Su función es la de re iniciar la máquina de forma similar a si se apagase y volviese a encender el ordenador. La única diferencia esencial frente a un apagado real es que algunos registros del microprocesador siguen conservando sus valores.
Power LED: Es el indicativo de encendido. Habitualmente es de color verde y su misión es la de informar que la máquina se encuentra en funcionamiento. A pesar de resultar una función aparentemente sin importancia, sí la adquiere cuando se trata de determinar si la inactividad del equipo está provocada por no estar en funcionamiento o haber pasado a un estado de hibernación.
HDD LED: Este LED, habitualmente de color rojo, indicará las operaciones de lectura/escritura que se están produciendo en el disco duro. Es habitual, por tanto, que parpadee cuando se encuentra trabajando la máquina. Tanto este LED como el anterior (y como todos los LEDs, vaya) sí disponen de polaridad.

De forma opcional pueden aparecer tantos dispositivos como el fabricante de la caja haya pensado. Así es posible encontrar desde vumetros que miden la señal de salida del entorno multimedia hasta indicadores de frecuencia, botones de Turbo que llevan ventiladores auxiliares ... Incluso un gran número de cajas incluyen en una bahía algo similar a lo que podría ser una unidad de 51/4" cuya misión es, exciusivamente, la de albergar CD ROM, tal y como se aprecia en la figura.

La fuente de alimentación
Si hay un elemento al que hay que prestar especial atención a la hora de elegir la caja para el PC, ése es la fuente de alimentación. De forma habitual se suministra con la caja y, si bien es posible encontrarla de forma separada, en la mayor parte de los casos no merece la pena económicamente renunciar a la caja por la escasa diferencia de precio.
La misión de la fuente de alimentación es la de suministrar el fluido eléctrico preciso y adecuado para alimentar los diferentes dispositivos que conforman el PC. Así, desde la propia placa base hasta la disquetera, pasando por las diferentes unidades de disco duro o CD precisan de alimentación.
El suministro eléctrico proporcionado por las compañías no es el adecuado para el PC ni para prácticamente ningún electrodoméstico electrónico. Es necesario realizar una serie de operaciones previas para que sea adecuado a las necesidades de la electrónica concreta. Si bien es cierto que en la mayor parte de los casos las fuentes no se suelen reparar (salvo casos obvios que afecten a fusibles o diodos), sí es interesante que tenga una idea de qué ocurre por dentro. Las operaciones modulares que se realizan son las siguientes:

Estabilización y filtrado: La tensión habitual que llega a las líneas domésticas es de 220 v o 127 v, con el intervalo que las compañías prevén de un ± 10 %. Esta tensión es muy elevada para lo que se requiere ya que, como mucho, se precisan niveles de 12 v. Para esta primera fase se usa un transformador electrónico cuya única diferencia con uno convencional es que la transformación no se realiza por inducción en devanados (lo que requiere un gran volumen), además de ser costoso, sino que se "secciona" la tensión tomando la precisa para producir la transformación.
Rectificación: A pesar de contar con la tensión disminuida, aún se cuenta con una corriente alterna, es decir, donde el valor oscila alternativamente entre valores positivos y negativos. El PC requiere de una alimentación continua por lo que se recurre a un rectificador en puente. Este tipo de rectificadores está formado por cuatro diodos que, dispuestos de modo adecuando, consiguen una rectificación de doble onda, es decir, consiguiendo corriente continua pulsatoria. Esto es que la tensión no alcanzará valores negativos, sino que oscilará entre un nivel determinado y masa (O v)
En esta etapa (que bien podría haber sido definida en dos puntos) se pretende conseguir, a partir de la corriente continua pulsatoria, una corriente continua de calidad, es decir, estable en el tiempo y con el valor adecuado. Para ello se recurre a estabilizadores basados en circuitos con diodos zener que garantizan la tensión de salida. También es común (y lo más habitual) usar integrados con una entrada de tensión y una salida estabilizada, tan sencillo como eso. El filtrado, si bien en muchos estabilizadores está integrado, se suele hacer mediante condensadores electrolíticos que eliminan 105 armónicos o señales indeseables.

Por supuesto, todo lo explicado está resumido atendiendo al fin pretendido conocer las diferentes etapas de la fuente. El estudio pormenorizado de una fuente de alimentación (cortocircuitable y conmutada) sería una labor más profunda además de un tema más propio de electrónicos que de informáticos. Como se puede comprobar, la fuente va anclada en la propia caja y, de forma exterior, sólo presenta el conectar de alimentación para los 220 v de la línea y. ocasionalmente, otro conector para la alimentación del monitor.

Internamente dispondrá de los conectores apropiados (y ya estudiados en apartados anteriores) encargados de alimentar todos los dispositivos que lo requieren.



El principal parámetro a evaluar en la fuente de alimentación es la potencia. Cuanto mayor sea este valor, mayor número de unidades y dispositivos se podrán conectar. Es habitual que oscile entre los 200 y 350 w pero no se preocupe: aun en el peor de los casos, es muy raro que se supere la citada potencia. Otro aspecto a tener en cuenta es el ruido ya que se trata de uno de los elementos que más genera. Existen fuentes low noise (bajo ruido) que resulta inaudibles pero, como es obvio, esto tiene su reflejo en el precio.

El raton
Por increíble que pueda parecer, el ratón hace unos años era un periférico prácticamente inútil, relegado al diseño de aplicaciones muy profesionales. Resulta casi impensable para muchos usuarios manejar hoy su pc sin el ratón (a pesar de que sea mucho más rápido con el teclado) dado que los sistemas operativos basados en entornos gráficos se han centrado en su uso.
En esencia, un ratón o apuntador es un puntero que, mediante el driver apropiado, consigue que en pantalla se desplace un puntero. Son muchos los tipos de ratones que se pueden encontrar en el mercado y, en gran medida, su elección es una cuestión personal de gustos. Sin duda los más extendidos son los de "bola": reciben su nombre de la bola sobre la que reposa todo el dispositivo y que, mediante el movimiento, acciona los detectores oportunos para enviar al ordenador la señal digital que se interpretará como un movimiento. Otros, de cara a evitar la suciedad que se acumula como consecuencia del desplazamiento de la bola sobre una superficie, activan dispositivos de tipo óptico, registrando el movimiento sin necesidad de rozamiento físico. Algunos de estos ratones, denominados ópticos, requieren para su uso una alfombrilla especial milimetrada que actúa como guía para el ratón. Por último, los track ball son otra alternativa interesante. Se trata de un ratón "invertido-" esto es, un dispositivo estático donde la bola es accionada directamente por el usuario: sin que en el conjunto se produzca un movimiento.
Sea cual sea el modelo elegido, todos disponen de una serie de botones para indicar acciones sobre el apuntador de pantalla. Desde los equipos Macintosh con un único botón hasta los ultradiseñados con multitud de ruletas, hay un sinfín de posibilidades. Lo más habitual es que dispongan de dos o tres botones y, en ocasiones, una rueda central que sirve para el desplazamiento interno de las ventanas.
En cuanto a su conexión, poco hay que indicar. En la actualidad todos ratones tienen conexión del tipo PS/2, estandarizada por IBM. Este conector es igual al. del teclado y, con respecto a la placa base, es el que se encuentra encima de los dos. Hubo un tiempo donde lo habitual era que los ratones se conectaran al puerto serie de 9 pines e, incluso, al desaparecido puerto serie de 25 pines. En la actualidad resulta casi imposible encontrar un ratón de estas características y el futuro que apuntaba a los ratones USB lo ha convertido en un estándar de facto.



Por supuesto, existen adaptadores en todos los casos para convertir un conector en otro según las necesidades. Por otro lado, poco hay que añadir en cuanto a reparación: es tal el precio de los ratones que no merece la pena reparar absolutamente nada. Si acaso, sí puede ser interesante realizar un mantenimiento preventivo limpiando regularmente la bola y el interior del dispositivo retirando la suciedad.
La mayor parte de los fabricantes han adoptado un código de colores, destinando el verde al raton y el morado para el teclado.
El teclado
Se trata del dispositivo de entrada de datos por excelencia. El teclado, en cualquiera de sus variantes, es un elemento imprescindible para el trabajo con el pe, exceptuando casos muy aislados de máquinas donde no se requiere la intervención por parte del usuario (por ejemplo, un ordenador de fichaje) o casos específicos donde se usan pantallas táctiles.
El teclado convencional, de 102 o 103 teclas según modelos, ha experimentado poca variación. En los inicios de la microinformática se usaban teclados normales (de 82 teclas) que en breve evolucionaron a los "teclados ampliados", tal y como se conocen en la actualidad. A partir de ahí, pocas modificaciones se han dado exceptuando el modelo "natural" que, en esencia, es el teclado convencional dividido en dos partes y con un ángulo entre ellas que le hace más apropiado para la postura de las manos.

La conexión de este dispositivo se realiza mediante puerto PS/2 con un conector DIN, igual al del ratón. Los teclados originales disponían de un conector de las mismas características pero de mayores dimensiones (de hecho, al conector original se le conocía como DIN y, a los actuales, como mini DIN).
Si algo es importante en los teclados, obviamente, son las teclas. El método de pulsación es muy personal en cada usuario y un teclado cómodo hará que el rendimiento aumente. En esencia hay dos tipos de teclados atendiendo a la constitución interna de la implementación de sus teclas: membrana y mecánicos. Aunque en cualquiera de los casos la finalidad es la misma (activar una matriz que ~erará el código oportuno para que se interprete como un carácter), el método de pulsación cambia de forma significativa de un modelo a otro.
La pulsación por membrana se consigue presionando una membrana plástica que, por su propia constitución, actúa como un muelle, devolviendo la tecla a su posición original una vez que desaparece la presión ejercida sobre ella. Este tipo de teclado es absolutamente silencioso ya que la membrana cambia de posición de forma drástica, sin ningún tipo de roce o golpe mecánico.
Tarjetas de sonido
Las tarjetas de sonido son las encargadas de soportar todos los aspectos relacionados con el tratamiento digital del audio, así como otras funciones de carácter analogico. El mercado ofrece un amplio abanico de modelo que, aun en los de menos prestaciones, ofrecen funciones suficientes para incluso procesos musicales profesionales.

Fundamentalmente, las funciones que deben realizar son tratamiento de señales digitales, amplificación y disposición de un banco de sonidos. Todo ello, por supuesto, está gobernado por un microcontrolador especializado que gestiona todo el trasiego de información.
El banco de sonidos es, realmente, una base de datos con la información específica de instrumentos y efectos. Éstos están disponibles para ser usados por el software y, por supuesto, por el MIDI. Así, será posible adquirir un teclado MIDI (realmente barato ya que sólo tendrá teclas que no provocarán sonido alguno) y usar el: banco de sonidos de la propia tarjeta para conseguir obtener el resultado buscado. En cierta forma, la tarjeta es un sintetizador en espera, exclusivamente, de un instrumento que indique cómo debe sonar.
Por último, ya se sabe que, con independencia del origen del audio, el final debe ser la obtención de una señal analógica dispuesta para su amplificación. Es común que las propias tarjetas incorporen un pequeño amplificador en torno a los 4 w de potencia. más que suficiente para que, conectando unos altavoces directamente, se obtenga un sonido claro. No obstante, es común recurrir a altavoces autoamplificados, en cuyo caso se recomienda generar un sonido "bajo" desde la tarjeta de sonido y que sea el propio amplificador quien obtenga la señal de potencia. Así, se consigue una mejor señal de origen evitando distorsiones.
Las tarjetas de sonido adicionales, es decir, no implementadas en la propia placa base, suelen ser todas de tipo PCI aunque en su día las hubo también ISA (tanto de 8 como de 16 bits) y su conexión al bus, en nada difiere de cualquier otra tarjeta. No obstante, sí hay un cableado adicional a tener en cuenta: la conexión analógica entre la. unidad de CD ROM y la entrada de CD IN de la tarjeta. Aunque la información digital se transmita a través del propio bus, es preciso que la analógica parta de la fuente que la originó (generalmente, al unidad de CD) hasta una entrada destinada a tal fin en la tarjeta de sonido. Esto se hace mediante un cable de dos o tres hilos que se corresponden con los dos canales estéreos y una o dos señales de masa, según el caso.


La parte superior de la tarjeta mostrará, al menos, los siguientes conectores:
IN: Se trata de la entrada de señal analógica. Es apropiada para la conexión de un micrófono, un giradiscos.. y, en definitiva, cualquier fuente de señal de baja potencia. El único parámetro específico de este tipo de entrada es la impedancia que, en el caso de las tarjetas de sonido, se intenta optimizar para que ofrezca resultados óptimos en el mayor caso de dispositivos. Si desea conectar otro dispositivo, asegúrese de que el nivel de entrada (volumen) es lo suficientemente bajo como para no producir distorsiones.
OUT: Se trata de la salida de audio. Por supuesto, es una señal analógica que puede llegar a alcanzar cotas de potencia de hasta 4 w. Será aquí donde se conecten los altavoces -amplificados o no-. Se trata de una señal estéreo en un conectar mini jack, por lo que hay que ser precavido y no usar jack monofónicos ya que provocarían un cortocircuito en uno de los canales.
JfIDI/: Es un conector hembra formado por dos filas con un total de 15 pines. Su Game función es doble: por un lado servirá como puerto de juegos, esto es, indicado para la conexión de un joystick de juegos. Por otro lado, será el conector de MIDI, donde se conecten los instrumentos que se quieran que aprovechen el banco de sonidos de la tarjeta.
Unidades Lectoras de CD
Las unidades lectoras de CD se han convertido, en relativamente poco tiempo, en un elemento indispensable para el uso habitual del PC. Así, el software que, "agrandado" por los nuevos entornas gráficos, ocupaba decenas de disquetes de 1,44 MB ha encontrado su solución en un soporte capaz de ofrecer entre 650 y 700 MB según formato.
Por otro lado, el sensible sistema magnético usado por los disquetes se ha visto influido en este soporte por otro de carácter óptico más fiable. Así, en esencia, la interpretación de ceros y unos que antes se detectaban por la polaridad de los campos de minúsculos imanes contenidos en la superficie del disco, ahora se interpretan bajo e reflejo de un haz de luz láser que incide sobre una superficie pulida y que se puede ver reflejado o no (sistema binario), según se encuentre un pit o agujero en la superficie del disco de CD ROM. El resto del proceso mecánico es similar al de una unidad de disco duro, en este caso con una única cabeza lectora móvil y un motor de rotación del disco.
En cuanto a su instalación física, ocupará una bahía exterior de la caja de 5 1/4", dejando acceso a la bandeja del CD desde la parte exterior. Su conexionado, tampoco es más complicado que el de cualquier otra unidad. Basta con alimentar el CD ROM con el conector suministrado para tal fin desde la fuente de alimentación (idéntico al disco duro) y usar un bus de datos (el mismo del disco duro) para su conexión a la controladora. En este sentido se tiene las mismas consideraciones que en los HDs siendo preciso configurar la unidad como master, slave o cable select para su

correcto direccionamiento. A diferencia de éstos, no precisa ser declarado en la BIOS ya que será un driver, específico del CD y generalmente sujeto a la normativa AT API quien, en conjunto con el comando del sistema operativo MSCDEX configuren la unidad.
En sistemas operativos antiguos (tal es el caso del MS DOS) la declaración de una unidad de CD ROM requería su declaración en dos archivos específicos del sistema: CONFIG.SYS y AUTOEXEC.BAT. En el primero debía declararse la unidad con un DEVICE que invocaba al driver y permitía un nombre cualquiera que posteriormente era identificado en el AUTOEXEC.BA T con el comando MSCDEX.EXE.

Ahora bien, dadas sus características especiales de audio, la unidad de CD ROM proporcionará señales digitales a través del bus y analógicas a través de un conectar que, con ayuda de un cable, deberá ser conectado a la entrada de la tarjeta de sonido.


Esta conexión se realiza mediante un cable suministrado con la propia unidad de CD ROM y suele disponer en uno de sus extremos de los dos conectores estándares. Así, será la tarjeta de sonido -implementada en placa base o no-la que determine qué conector usar. Este cable se encargará de llevar la señal estéreo producida por el CD ROM mediante los dos canales (izquierdo y derecho) y uno o dos cables de masa que, en la mayor parte de los casos, se tratan como punto común. No obstante, asegúrese de la correcta conexión ya que la posibilidad de conectar un canal a masa se entendería como un cortocircuito que podría dañar la salida de audio del dispositivo de origen.


Grabadoras y regrabadoras de CD
En nada difieren las unidades grabadoras (o regrabadoras) de CD de las meramente lectoras en cuanto a instalación física y conexionado se refiere. Incluso en cuanto a lectura se refiere el proceso es idéntico al descrito. Sólo en cuanto a función de grabación se aprecian diferencias.

En esta línea hay dos tipos de productos: grabadoras y regrabadoras. Las primeras se caracterizan por la posibilidad de grabar unidades de CD, mientras que las segundas pueden, además, utilizar un mismo soporte diseñado para este fin específico múltiples veces. El proceso, sin entrar en pormenores y en el ámbito teórico, es sencillo ya que no difieren en cuanto a su instalación física ni lógica: será el software oportuno de grabación quien marque las diferencias.
En el caso de las grabadoras -casi desaparecidas por la similitud de precio con las regrabadoras- se aplica un láser de mayor potencia en las zonas donde se desea escribir, creando así un agujero físico sobre el disco denominado pit. Este proceso conlleva el aumento de temperatura del CD dada la potencia aplicada, observándose que, tras un proceso de grabación, el disco está caliente. Esta particularidad ha conseguido que, coloquialmente, reciban el nombre de "tostadoras".
Las regrabadoras deben, además, conseguir escribir en un mismo formato físico múltiples veces. Esto es algo que, mediante el sistema anterior no es posible ya que la realización de cada pit es física y, por tanto, imborrable. En este caso se deben usar discos especiales que disponen de una sustancia química adecuada para que, ante el impacto del haz de luz láser, cambien su composición mostrando un color diferente y, por tanto, una reflexión de luz distinta que es interpretada por la unidad como un estado lógico diferente. Este mecanismo es más delicado ya que las unidades de CD ROM regrabables resultan más sensibles. Así, un disco regrabable expuesto al sol durante un período prolongado de tiempo, puede perder toda su información por la alteración de la sustancia química citada.

Los DVD
El DVD o "Digital Versatile/Video Disk" sigue en la misma línea que los CD ROM convencionales, aprovechando un sistema óptico para el almacenamiento y posterior lectura de datos. Así, un DVD, puede entenderse como un CD optimizado en todos los sentidos y con, además, alguna mejora específica. De este modo, si los CDs convencionales disponen de pistas en las que se encuentran una serie de minúsculos agujeros llamados pits y unas zonas valle denominadas land zone, en los DVD se han optimizado las distancias. Los pits son más pequeños permitiendo una mayor capacidad y, además, las distancias entre pistas es menor. El conjunto de todas estas mejoras desemboca en un producto que, si bien es similar, aumenta notablemente sus prestaciones en cuanto a capacidad se refiere. Por supuesto, también el haz de láser es más fino, preciso y con menor longitud de onda.
Como mejora específica, incorpora la posibilidad de poder trabajar con doble capa y doble cara. La primera posibilidad consiste en usar un DVD con diferentes
Este producto que originalmente fue diseñado por Philips, Sony y Toshiba, llega a alcanzar capacidades de hasta 17 GB, dando así una opción válida incluso hasta para vídeo en alta calidad. No en vano, se ha consolidado como el nuevo formato estándar llamado a desbancar la cinta convencional de VHS, albergando hasta 137 minutos de imagen y audio.
Como mejora específica, incorpora la posibilidad de poder trabajar con doble capa y doble cara. La primera posibilidad consiste en usar un DVD con diferentes niveles de profundidad, esto es, disponiendo de dos capas donde la primera es semitransparente para permitir el acceso del haz láser a la segunda. De este modo se consigue que, a diferentes intensidades de láser, se pueda acceder a una capa u otra, aumentando así más la capacidad del soporte (normalmente una de las capas ofrece GB y la otra 3,8 GB). La doble cara consiste en replicar lo expuesto por el anverso del disco, obteniendo así el doble de capacidad, es decir (4,7 GB + 3,8 GB) . 2 = 17 L
La capacidad de cada disco viene serigrafiada en el propio soporte, respondiendo a la siguiente tabla:

El resto de parámetros físicos de instalación y conexionado, siguen los patrones definidos en los CD ROM convencionales.
Altavoces y micrófonos
Los altavoces son el elemento final del circuito de audio y en gran medida, la calidad del sonido dependerá de ellos. Lo cierto es que, salvo en casos muy concretos, se presta demasiada atención a este elemento por lo menos en cuanto a fines de audio ofimático se refiere. Obviamente, el caso del sonido profesional es otra cuestión que escapa de los objetivos de este libro.
Lo habitual es disponer de un par de altavoces comunes que se conecten mediante un conector mini jack a la tarjeta de sonido. Ocasionalmente pueden llevar incorporado un amplificador que precisará de conexión eléctrica para su accionamiento. A partir de este sistema básico, se puede encontrar casi todo lo que se lee. Desde altavoces integrados en el propio PC, pasando por otros con caja de madera (las convencionales son de plástico), hasta aquellos que disponen de un subwoofer que amplifica 6 canales con un módulo decodificador Dolby Digital y entradas analógicas de línea, digital coaxial y digital óptica (con mando a distancia incluido).
Tal ha sido la perfección alcanzada por algunos modelos, que se han trasladado al ambiente doméstico siendo válidos para la conexión de dispositivos como vídeos, DVD, e, incluso, sistemas convencionales de audio. Así no es de extrañar que compañías vinculadas al sonido pero no inicialmente a la microinformática como es el caso de Harman/Kardon aparezcan ahora aportando su tecnología. Un simple walkman o discman consigue resultados más que aceptables en un equipo de salida de las características anteriormente citadas.
Monitores
Actualmente resulta impensable no disponer de un monitor en un sistema microinformático. Lo cierto es que resulta imprescindible para operaciones ofimáticas pero hay casos en los que no se precisa. Tanto es así que los primeros ordenadores no disponían de este elemento fundamental.
Son muchos los modelos existentes en el mercado y múltiples las características a evaluar en un monitor. Conviene por tanto, tal y como se pretende en este capítulo, conocer en detalle qué puntos debe tenerse en cuenta a la hora de adquirir un monitor apropiado. Aun así, esto no siempre es suficiente ya que hay parámetros difícilmente cuantificables. Si desea comprar un monitor y le aseguran que es de baja radiación (que probablemente lo será), a menos que disponga de un medidor de campo electromagnético deberá hacer un acto de fe y creer lo que le dice el distribuidor. Igualmente ocurre entre otros con muchos parámetros como distancia entre puntos.
Una primera aproximación la puede obtener comprobando qué monitor detecta Windows mediante el Plug & Play pulsando con el botón derecho de su ratón sobre el Escritorio y, una vez allí, accediendo a Propiedades. Dentro de Propiedades de la pantalla encontrará información al respecto.

y no, no es que se pretenda poner en duda todo por sistema, simplemente, un disco duro tiene una capacidad que es obvia y fácilmente comprobable. Igualmente ocurre con la frecuencia de un microprocesador o la capacidad de la memoria RAM. Sin embargo, en cuanto a monitores se refiere, en la mayor parte de los casos las características vienen adjuntas en un manual o adheridas con una pegatina al aparato. Sólo comparando dos monitores juntos con la misma imagen se pueden apreciar sutiles diferencias.
Tipos de monitores
Tradicionalmente los monitores se han basado en las válvulas de vacío (por increíble que esto pueda parecer). Así, la pantalla, no es otra cosa que la parte exterior de una gran válvula de vacío que recibe el nombre de tubo de rayos catódicos o, para abreviar, CRT (Cathode Ray Tube). Estos monitores han sido los más usados (en sus diferentes variaciones: compuestos, TTL de control directo, RGB, analógicos y, dentro de estos últimos, los multisync) y, probablemente en la actualidad sigan siéndolo aunque es cuestión de tiempo que se vean desplazados por los LCD o Displays de cristal líquido. De todos modos, todo a su tiempo y abordemos, en primer lugar, la tecnología de los CRT.
Los monitores basados en CRT son los más económicos sin lugar a dudas. Su funcionamiento se basa en el impacto de un haz de electrones sobre una superficie cubierta con diferentes capas de fósforo. Al incidir el haz sobre la superficie, consigue un efecto lumínico minúsculo y controlado que, en definitiva, es un punto que se visualiza en la parte exterior del tubo, es decir, la pantalla propiamente dicha. Según el haz incida en un punto u otro conseguirá iluminar diferentes zonas de la pantalla y dado que el citado haz parte de un punto concreto, esto explica que las pantallas sean ligeramente curvas ya que se pretende que el ángulo formado entre la capa de fósforo y el haz de electrones sea de 90°. Es cierto que hay monitores en los que se dispone de una pantalla plana. Esto se consigue mediante bobinas internas al tubo de rayos catódicos que consiguen desviar el flujo de los electrones de forma controlada. Algo similar ocurre cuando se acerca una imagen a un televisor: los haces de electrones alteran su recorrido provocando una distorsión en la imagen. Se trata, por tanto, de controlar esa desviación.
El otro tipo de monitor a evaluar (y recomendable siempre que se pueda), como ya se anunciaba es el LCD. Su acrónimo viene de Liquid Crystal Display y, probablemente, lo primero que llama la atención es eso del "cristal líquido". Obviamente el cristal es un sólido que no puede licuarse salvo a elevadas temperaturas. Este término se basa en la composición de la pantalla a partir de moléculas de cristal en estado híbrido sólido/líquido llamado isotrópico, habría que establecer diferencias entre las de plasma -las primeras en aparecer-, que nunca llegaron a conseguir el color y las LCD.
Su funcionamiento, de forma somera, se basa en provocar campos eléctricos que alteren el giro de las moléculas transparentes que forman la pantalla. A diferentes campos se consiguen diferentes angulos en las moléculas, variando así la cantidad de luz que las atraviesa en cada punto. Estos puntos serán los píxeles de la pantalla y la cantidad de luz definirá los diferentes tonos.
Por novedoso que pueda parecer, este tipo de pantallas también ha sufrido una evolución importante. Así, a la implantación del LCD mono cromático en los portátiles, le sucedió el color de la mano de las pantallas LCD DSTN pero, en el entorno doméstico, no eran recomendables dada la falta de resolución frente a los monitores TRC convencionales. Este panorama cambió de forma significativa con la aparición de las LCD TFT o, simplemente, pantallas TFT (Thin Film Transistor).
La diferencia principal estriba en que en las pantallas TFT, la luz es emitida por una matriz de transistores, y las tonalidades y colores se consiguen mediante unos filtros RGB (red, green, blue) que, colocados de forma lineal sobre la pantalla, consiguen la difusión de la luz y, por tanto, del color, de manera apropiada. Internamente se puede concebir el funcionamiento como minúsculas bombillas emisoras de luz que, al incidir sobre los filtros varían el color. Obviamente hay una relación directa entre el número de "bombillas" y los píxeles, aspecto que define la resolución de la pantalla (resolución nativa). Cualquier variación de resolución que conlleve una falta de relación directa con los píxeles, hace que la pantalla tenga que trabajar en un modo de emulación que al final se traduce en una pérdida de calidad.

Características a evaluar en las pantallas CRT
A efectos prácticos, no hay duda de que lo que interesa conocer son las prestaciones y características que influyan sobre el resultado final de la imagen. El resto -aunque muy interesante- escapa del objetivo de este libro. Dada la diferencia entre los dos tipos de pantallas expuestos, parece obligado su tratamiento individualizado. Comencemos cronológicamente por las CRT.
Frecuencia horizontal: Hace referencia al número de veces que la imagen se renueva en la pantalla por unidad de tiempo. Como es sabido, la retina humana tiene una "inercia" que consigue mantener durante un breve intervalo de tiempo las imágenes a pesar de que éstas hayan desaparecido. Este efecto se aprovecha para, por ejemplo, conseguir animaciones. Así, a mayor frecuencia vertical, mayor nitidez de imagen. No acepte monitores con frecuencias inferiores a 70 Hz y, siempre que pueda, intente que sean superiores. Frecuencias más bajas provocan dolores de cabeza además de una pobre calidad de imagen.
Por otro lado y dado que el monitor está formado por líneas, se habilitan dos modos de renovación de imágenes: entrelazadas y no entrelazadas. Los monitores entrelazados renuevan una línea tras otra mientras que los no entrelazados forman dos grupos de líneas: pares e impares. Obviamente, a igual frecuencia, un monitor entrelazado dará mucha mayor calidad de imagen ya que en uno entrelazado tendrá que renovar la imagen en dos pasadas. Además la frecuencia de refresco debe estar garantizada a altas resoluciones ya que, a mayor resolución, mayor cantidad de líneas y más tiempo empleado en su "renovación". Como consecuencia, la frecuencia de refresco disminuye.
Frecuencia vertical: Se trata de una consecuencia impuesta por la frecuencia horizontal deseada y la resolución a la que se desea trabajar que responde a la siguiente fórmula: Frecuencia Horizontal = Resolución vertical* Frecuencia vertical. Así, para un modo de trabajo de 1.024 x 768 a 70 Hz, se precisará una frecuencia horizontal de FH = 768 x 70 = 53.760 Hz = 53,76 KHz. Valores inferiores obligarán a que baje la frecuencia horizontal y, por tanto, la calidad de la imagen.
Paso de punto: La pantalla está formada por minúsculos puntos sobre los que incidirá el haz de electrones. Obviamente, los puntos deben estar lo más cerca posible unos de otros ya que en caso contrario la imagen perderá "consistencia". La distancia entre puntos se mide en mm y, aunque existen varias opciones (a mayor distancia peor calidad de imagen), no elija monitores con valores superiores a 0,28 mm y, si es posible, tienda a los 0,25 mm. Este concepto no es aplicable a las pantallas TFT.
Radiación: Sin más consideraciones, exija trabajar con monitores de baja radiación. Existen algunos fabricantes que incluyen 7 filtros activos de forma interna. Las normativas que regulan la emisión son la MPR II y las TCO y la diferencia básica entre ambas es el nivel de permisibilidad en las emisiones electromagnéticas. Este concepto no es aplicable a las pantallas TFT.
Tamaño: El tamaño de los monitores se establece midiendo la diagonal de los mismos y es un valor que viene expresado en pulgadas. Sabiendo que los monitores convencionales cumplen una relación de 4/3 entre el ancho y el largo, es sencillo averiguar sus medidas. Por ejemplo, para calcular las medidas de un monitor de 14" bastará con aplicar el teorema de Pitágoras para triángulos rectángulos (la diagonal es precisamente la hipotenusa, tal y como se puede comprobar en la figura siguiente que, además, es el valor proporcionado por los fabricantes y uno de los pocos que el usuario puede comprobar), sabiendo que una pulgada son 1,6 cm.

Características de los monitores TFT
En el caso de los LCD TFT, el número de parámetros a evaluar disminuye ya que su constitución hace que gran parte de los puntos expuestos en los CRT desaparezcan. No obstante, conviene tener en cuenta los siguientes:
Radiación: Las TFT, por su propia constitución, no emiten radiaciones de ningún tipo, lo que las hace recomendables frente a los TRC bajo un prisma óptico. Además, la ausencia de "refresco" en las TFT supone un menor esfuerzo para la vista.
Volumen: Los actuales monitores de 17" necesitan mucho espacio, mientras que una TFT puede, incluso, anclarse sobre una pared siendo su ancho en tomo a los 2 cm. Por otro lado su peso suele ser inferior a los 4,5 Kg frente a los 17 Kg de un TRC de similares "dimensiones visuales".
Potencia: Las LCD trabajan con tensiones mucho más bajas que los TRC que llegan a alcanzar hasta más de un par de decenas de miles de voltios a través de los transformadores MAT (Muy Alta Tensión). Este parámetro no sólo se aprecia en el consumo energético sino también en la disipación de calor. De este modo, el consumo de un LCD no suele superar los 30 w frente a los cerca de 100 w de un TRC.
Geometría: Las TFT gozan de una mayor geometría, evitando el efecto "tonel" que se produce en los TRC.


Visualización: Lo cierto es que los TRC ofrecen aún prestaciones no igualadas por los TFT, tal puede ser el caso del ángulo de visión, luminosidad, contraste y el tamaño del punto que aumenta en los TFT creando el efecto indeseable denominado pixelación (tamaño de punto elevado). Aun así, los avances de los TFT son cada día mayores. Tal puede ser el parámetro de contraste. Éste es un valor que se expresa en formato : de modo que un contraste 200: 1 significa que cuando un píxel (bombillas de las que hablábamos) está encendido, ofrece 200 veces más luminosidad que cuando está apagado. En la actualidad se llega a superar la proporción de 400:1.

Conexión y configuración
Por curioso que pueda parecer, los monitores son, probablemente, los elementos que más posibilidades de conexión tienen. Lo habitual es que dispongan de un cable de alimentación para corriente que se conectará a un enchufe o una salida del propio ordenador y el cable de vídeo propiamente dicho. Éste, como se indica en la nota al pie de página, va a ser en un elevado porcentaje de los casos un conector sub-D de 15 pines macho dividido en tres filas de 5 pines cada uno. No se preocupe si no están todos: no todos lo contactos tienen conexión y algunos fabricantes no los implementan. De cualquier modo, nada más hay que tener en cuenta en referencia a la conexión ya se trate de un monitor TRC o LCD TFT.

No obstante y como ya se avanzaba, comienza a aparecer un nuevo tipo de conexionado denominado DVI o Digital Video Interface (Interfaz de Vídeo Digital) que, como principal característica, tiene el tratarse de una señal digital y no analógica (algo que repercute de forma directa en un aumento de velocidad al evitar conversiones digital-analógico). Este conector, definido por el consorcio DDWG (Digital Display Working Group), también se usa para televisores HDTV, EDTV, DVD ... Actualmente existen tres tipos de cables para su compatibilidad con los monitores: DVI-I, DVI-A y DVI-D donde sólo el primero es el "auténtico" ya que el DVI-A es analógico (realiza una conversión digital-analógica) y el DVD-D integra ambas tecnologías.
Los usuarios decidiremos si se convertirá en la conexión están dar del futuro ya que, a pesar de llevar un tiempo en el mercado, aún son menos los monitores de este tipo. No obstante, la mayor parte de los fabricantes de tarjetas gráficas están incluyendo salidas de tipo Sub-D y DVI en espera de la decisión.


Los conectores más habituales usados por los monitores para PC son los sub-D de 15 pines en miniatura, divididos en tres filas de pines macho con una longitud aproximada de 17 mm. Para los Macintosh el conector es sub-D normal y los monitores de ambos equipos son intercambiables entre sí mediante un adaptador. Ya en otro tipo de máquinas, el usuario puede encontrar conectores "Plug & Play" de inserción en caliente (sin necesidad de desconectar el sistema) con puertos bidireccionales l.tal es el caso del Apple Desktop Bus). Otro tipo de conexión se realiza mediante el conector 13W3 RGB que es apantallado. para la señal RGB reduciendo el riesgo de inducción por radiaciones externas. Por último, se pueden encontrar monitores donde todas las señales vayan de forma independiente a través de conectores BNC.
La instalación, en cuanto a software se refiere, no requiere mayor complicación tampoco. No es habitual que los fabricantes de monitores suministren drivers pero, si es así, lo mejor es seguir las instrucciones proporcionadas. En la mayor parte de los casos -cuando no hay drivers- basta con arrancar el sistema y dejar que el Plug & Play reconozca el monitor instalado. Incluso en los modelos estándar, las prestaciones son buenas y están definidas de forma casi total por la propia tarjeta de vídeo. Si quiere acceder a las propiedades específicas del monitor, realice un clic en su ratón con el botón derecho y abra el menú de propiedades. Allí encontrará una pestaña etiquetada como Propiedades de pantalla y, dentro de Configuración avanzada podrá operar con su monitor (lo cierto es que son pocos los parámetros a variar).

En la actualidad, la práctica totalidad de fabricantes de monitores tienen presencia en Internet y casi todos ofrecen sus drivers a través de la red a sus usuarios. Es interesante que, a pesar de que el sistema operativo reconozca su dispositivo, intente en la medida de lo posible instalar el software original del fabricante indicado para su modelo concreto de monitor. Estos drivers suelen incluir diferentes tipos de utilidades diversas que, en muchos casos, servirán para obtener un mayor aprovechamiento de su monitor.
Impresoras
Los periféricos de salida impresa trasladan el texto o la imagen generada por computadora a soporte impreso. Se pueden dividir en diversas categorías:
Trazadores gráficos o plotters: Están diseñados específicamente para la impresión de planos. Son capaces de trabajar con formatos mayores que los de las impresoras normales. Los primeros modelos contaban con una serie de plumillas móviles de diferentes grosores y colores que trasladan la tinta a la hoja, bien gracias al movimiento vertical de esta, que se complementa con el movimiento horizontal de las plumillas, bien utilizando únicamente el movimiento de las plumillas que se movían sobre una hoja colocada sobre una plataforma fija. Estos dispositivos sufrían de problemas en el mantenimiento de las plumillas y asimismo de cierta falta de precisión en el dibujo de determinados elementos curvos.
Impresoras de impacto: Imprimen golpeando el soporte con algún tipo de mecanismo móvil, como agujas, margaritas o martillos. Se utilizan para imprimir textos y en algún caso, gráficos de baja calidad. Un ejemplo de estas impresoras son las matriciales, en las que la impresión se realiza mediante el impacto de un determinado número de agujas dispuestas formando una matriz sobre una cinta entintada que se coloca entre las agujas y el papel. Las agujas se organizan en forma de matriz y van ubicadas en un cabezal de impresión móvil que se puede desplazar horizontalmente, mientras el movimiento vertical del papel se consigue mediante algún sistema de arrastre. Estas impresoras organizan el espacio de impresión en unidades de tipo carácter, compuesto de una matriz de puntos en diferente numero según el tipo de calidad que ofrezca la impresora. El número de agujas determina también la velocidad de impresión, ya que a mayor número de agujas, menor será el número de impactos necesarios para conseguir determinado nivel de calidad. Estas impresoras están recomendadas únicamente para la impresión de texto en blanco y negro, o color en calidad muy baja. Su ventaja (como la de las otras impresoras de impacto) es que pueden imprimir en papel multicopia, lo que las hace candidatas ideales para los entornos de oficina donde trabajan con formatos documentales de este tipo. Otras impresoras de este tipo son las de margarita o las de fleje o tambor.
Impresoras sin impacto: Transfieren la imagen al papel usando procedimientos diferentes al impacto, como el método de la burbuja térmica (en el que la tinta de los cartuchos es calentada a elevadas temperatura, dando lugar a la formación de unas burbujas que son las que producen la salida de la tinta hacia el exterior por unos orificios o toberas, en número proporcional a la calidad de la impresora) o el piezo-electrico ( que se basa en la vibración provocada por un cristal piezoeléctrico al aplicarle un voltaje, que hace impulsar la tinta a través de los orificios. Suponen el grueso de las impresoras actuales. Una de las mas extendidas es la de aspersión de tinta, que utiliza tinta liquida que es transferida al papel utilizando diversas tecnologías que reproducen el sistema de las pantallas de video emitiendo en lugar de electrones un chorro de minúsculas gotas de tinta. Permiten la impresión en color con bastante calidad empleando los modelos actuales un cartucho negro y otro de los amarillo, rojo y azul.
Impresoras laser: Son las más rápidas (en ppm). En ellas un sistema computerizado interpreta las ordenes de impresión que le llegan del ordenador, procediendo a componer en la memoria interna de la impresora la imagen que se ha de imprimir, imagen que adopta la forma de una matriz de puntos, cada uno de los cuales tendrá una intensidad de gris. Este patrón de puntos es transformado por un modulador óptico que trabaja con la luz proveniente de un emisor laser. La luz incide sobre un disco giratorio especular y es reflejada hacia un tambor giratorio recubierto de material fotoconductor que ha sido previamente cargado con un potencial eléctrico negativo uniforme. El rayo laser modulado va incidiendo en cada generatriz del tambor, donde los puntos que van siendo iluminados pierden parte o todo su potencial eléctrico. A continuación, el tambor es pulverizado con un tipo de tinta, que se presenta en polvo, conocida como toner, que al estar cargada eléctricamente, se adhiere a las zonas del tambor todavía cargadas. El tambor gira y va depositando sobre el papel la tinta que finalmente, es fijada sobre el papel mediante presión y calor.
Lenguajes de control de impresión: Algunas impresoras, fundamentalmente las de tipo laser, aceptan comandos en lenguajes de alto nivel diseñados específicamente para el control de las tareas de impresión. Algunos de entre ellos son PCL( estándar de ipso en el mundo de las impresoras de oficina. Su utilidad principal está en la gestión y manejo de las fuentes tipográficas escalables y en la impresión de gráficos vectoriales) y PostScript, que se creo con la vista puesta en la gestión de información vectorial independiente del dispositivo, comunicando un documento creado por ordenador a un dispositivo de impresión.









Sistemas operativos
Un sistema operativo es un programa o conjunto de programas que actúa como intermediario entre el usuario y el hardware del ordenador, gestionando los usos del sistema y optimizando su uso. El sistema operativo presenta al usuario una máquina virtual que es más fácil de manejar y programar que el hardware que por debajo.
Funciones de un sistema operativo
A continuación se muestran las funciones principales que realiza todo sistema operativo:
Control de la ejecución de programas
Administración de periféricos
Gestión de permisos y de usuarios
Control de concurrencia
Control de errores
Control de seguridad
En concordancia con estas funciones principales es posible analizar la estructura de un sistema operativo en cinco niveles. Los primeros dos niveles entrarían dentro de la parte del sistema operativo dependiente del hardware; el resto de los ni\e-les pertenecen a su parte portable.
Cada uno de los niveles se comunica con el inmediatamente inferior y superior coordinando sus funciones.
Nivel 1-Gestion del procesador: En este nivel se encuentra la parte del sistema operativo encargada de la gestión de la CPU. En los sistemas operativos multiproceso (es decir, que pueden ejecutar varios procesos a la vez), este nivel se encarga de compartir la CPU entre los distintos procesos realizando funciones de sincronización, conmutación de la CPU y gestión de interrupciones.
Nivel 2-Gestion de memoria: Este nivel es el encargado de repartir la memoria disponible entre los procesos. Se realizan funciones de asignación y liberación de memoria, y el control de violación de acceso a zonas de memoria no permitidas.
Nivel 3-Gestion de procesos: Este nivel es el encargado de la creación y destrucción de procesos, intercambio de mensajes y su detección y arranque.
Nivel 4-Gestion de dispositivos: En este nivel se realiza la gestión de las entradas/salidas (E/S) en función de los dispositivos existentes. Entre otras, se encarga de las funciones de creación de procesos de E/S, asignación y liberación de dispositivos E/S y planificación de la E/S.
Nivel 5-Gestión de la información: El objetivo de este nivel es el de gestionar el espacio de nombres lógicos y la protección de la información realizando funciones de creación y destrucción de ficheros y directorios, apertura y cierre de ficheros, lectura y escritura de ficheros y protección de acceso.
Es importante destacar que un mismo sistema operativo puede trabajar en múltiples plataformas hardware, por lo que debe poder adaptarse a las peculiaridades de cada una de ellas.
Imagínese un programador que pretende realizar una aplicación de gestión de archivos; teóricamente, debería conocer las peculiaridades del hardware en donde correrá su aplicación a la hora de manipular archivos, pero, gracias a la existencia del sistema operativo, el programador puede abstraerse de las peculiaridades de la máquina y que su aplicación funcione correctamente independientemente del hardware que esté por debajo.
Partes de un sistema operativo
El kernel
El Kernel es el núcleo del sistema operativo. Cuando arranca el ordenador, se carga en memoria y permanece allí, realizando funciones básicas como:
Manejo de la memoria
Comunicación entre procesos
Control de interrupciones
Manejo de condiciones de error
Traslado de control de un proceso a otro
Control de periféricos
Programas y procesos
Un proceso es un programa en ejecución. Cada proceso se compone de un código que se ejecuta y una estructura de datos, estando ambos cargados en memoria.
No hay que confundir procesos con archivos o programas. Por ejemplo un compilador C no es un proceso, pero un compilador C ejecutándose será un proceso para el sistema operativo y, por lo tanto, le asignará recursos (CPU, memoria, etc.) y controlará su ejecución.
La estructura de datos sirve para identificar unívocamente cada proceso y controlar todos los aspectos de su ejecución. Cada estructura contiene básicamente los siguientes datos:
Estado actual del proceso: en ejecución, esperando, detenido, etc.
Identificación univoca del proceso: al proceso se le asigna un PID( Código identificador de proceso).
Prioridad del proceso
Zona de memoria asignada
Recursos asociados
Planificación de CPU-multiprocesamiento
Existen ordenadores que disponen de varios procesadores, por lo que son capaces de ejecutar al mismo tiempo varias tareas; estos computadores disponen de SS.OO. especiales denominados Sistemas multiprocesador. En los ordenadores convencionales normalmente sólo se dispone de un procesador, por lo que en cada momento sólo se estará procesando una tarea. No obstante, es posible crear la ilusión de multiprocesamiento por medio de interrupciones, cambiando el proceso activo cada cierto tiempo aunque no se haya finalizado la tarea en ejecución.
El sistema operativo se encarga de compartir la CPU entre los distintos procesos de la manera más eficiente posible, persiguiendo los siguientes objetivos:
Equidad
Eficiencia
Bajo tiempo de respuesta
Rendimiento alto
Minimizar el tiempo de espera
Desgraciadamente, todos estos objetivos no se pueden conseguir simultáneamente.
Existen dos formas básicas de realizar la conmutación entre tareas:
Cooperative switching, Las tareas cooperan unas con otras suspendiéndose voluntariamente cada cierto tiempo en puntos determinados de su ejecución. Windows 3.1 es un ejemplo de este método de conmutación.
Pre-emptive switching. El sistema operativo interrumpe la tarea que se está ejecutando según cierto algoritmo de prioridades. UNIX y Windows NT son ejemplos de este método de conmutación.
Cuando un proceso se suspende temporalmente, debe reiniciarse después exactamente en el mismo estado en que se encontraba cuando se detuvo. El sistema operativo se encarga de guardar el estado en que está la tarea al suspenderse, guardando el contenido de registros del procesador y reemplazándolos con valores de la próxima tarea a ejecutar.
Este cambio de contenido de registros se denomina cambio de contexto, y requiere un tiempo muy pequeño en comparación con el tiempo que se le asigna a cada tarea para su ejecución.


Algoritmos de planificación
Existen distintos algoritmos empleados para realizar la planificación. El más sencillo de ellos es el PEPS (Primero en Entrar-Primero en Salir, o FIFO en inglés, First Input First Output, en el cual no se libera la CPU hasta que no termina el proceso en ejecución y los tiempos de respuesta varían fuertemente de un momento a otro, según el orden de llegada a la CPU de los procesos.
EJEMPLO
Tenemos tres procesos con distintos tiempos de procesamiento:
Proceso 1: 18 Unidades de tiempo
Proceso 2: 6 Unidades de tiempo
Proceso 3: 6 Unidades de tiempo
Los ejecutamos atendiendo al algoritmo FIFO (no estamos teniendo en cuenta la prioridad de los procesos).
En el primer caso:
Estudiando el tiempo medio de espera, es decir, el tiempo medio que se tarda en finalizar un proceso, tendremos: (18 + 24 + 30) / 3 = 24
En el segundo caso, el orden de llegada de los procesos es otro:
El tiempo medio de espera en este caso será: (6 + 12 + 30) / 3 = 16. Al hacer la media, se aprecia que los procesos están menos tiempo esperando.
Se observa que, empleando el algoritmo FIFO, si apareciera una tarea crítica que requiriese atención inmediata, ésta debería esperar a la finalización de las tareas en cola.
Otro tipo de algoritmo de planificación es el SJF (Shortest Job First), es decir, el trabajo más corto se ejecuta primero. Este algoritmo asigna la CPU al trabajo que requiere menor tiempo de proceso.
La dificultad reside en saber cuál de los procesos en espera de ser ejecutados tendrá menor tiempo de proceso; para ello, se emplean algoritmos de predicción que calculan el siguiente tiempo de ejecución de un proceso como una media exponencial de los tiempos de las últimas ejecuciones de esa parte de código.
El problema que puede presentarse es que vayan entrando a la cola de espera de ejecución procesos cortos y los procesos largos que estén esperando no se ejecuten nunca. Para ello, se emplean técnicas de envejecimiento de procesos, que aumentan la prioridad de procesos que llevan mucho tiempo inactivos.
Uno de los algoritmos más sencillos, justos y de uso más amplio es el Round Robín. No se establecen prioridades; cada proceso tiene asignado un tiempo de ejecución denominado quantum si se cumple ese tiempo y la tarea no ha concluido, se da paso al siguiente proceso y ese proceso pasa al final de la lista de procesos en espera.
Tal y como se muestra en la figura 3.2, si se está ejecutando el proceso 1 y se agota su cantidad de quantum, se desalojaría la CPU y pasaría a ejecutarse el proceso 2. Cuando termine el quantum del proceso 10, se pasará de nuevo al proceso 1.
Otros tipos de algoritmos son los basados en prioridades: se asocia una prioridad a cada proceso y la CPU se asigna al trabajo con prioridad más alta en cada momento. Normalmente, si se está ejecutando un proceso de prioridad media y entra un proceso de prioridad mayor, se "requisa" la CPU al primer proceso y se le entrega al proceso de mayor prioridad.

En este ejemplo se observa que la CPU está ejecutando el trabajo 1; cuando se recibe la petición del trabajo 2 que tiene alta prioridad, se desaloja la CPU y se atiende la petición del trabajo 2; cuando termine, se recuperará el trabajo 1.
Normalmente, en los sistemas operativos suelen aparecer híbridos de varios algoritmos de planificación . Por ejemplo, se puede trabajar con un algoritmo basado en prioridades, aplicando SJF o Round Robin, cuando existan varios procesos con la misma prioridad.





Los procesos de prioridad más alta (prioridad 4) se ejecutan primero y, como hay cuatro procesos, la CPU se reparte utilizando el algoritmo Round Robin. Cuando estos procesos finalicen, se pasará a los de prioridad 3, y así sucesivamente.

EJEMPLO .Planificación con prioridades y cronograma
PrOCESOS T. TlIegada DuracionPrioridad p¡ 0  75 P2 2  4 10 P3 4  1 15 P4 5 4 10 


Sincronización de procesos
Cuando se ejecutan varios procesos a la vez, es posible que éstos compartan uno o varios recursos del sistema (monitor, memoria,…). El objetivo del sistema operativo es permitir que varios procesos compartan recursos sin que se produzcan problemas. Los procesos pueden ser independientes o cooperantes.
Los procesos independientes, pueden ejecutase a la vez, detenerse y rearrancarse sin ningún efecto negativo; son procesos deterministas y reproducibles, por ejemplo, un programa que calcula números primos.
Los procesos cooperantes comparten su estado; su funcionamiento no es determinista (pueden darse situaciones inesperadas) y pueden ser irreproducibles. Por ejemplo, dos procesos que se ejecutan a la vez y comparten la pantalla, uno escribiendo 'abc' y el otro 'cba'. Según sea la sincronización de los procesos por el sistema operativo, en la pantalla podrá verse -abccbao -acbbca- y otras combinaciones.
En el caso de los procesos cooperantes es posible que se produzcan situaciones peligrosas en las que se pierda el control.
Los dos procesos comparten un recurso y no existe ningún tipo de sincronización entre ellos. Es necesario que exista una forma de prohibir que algún procese lea o escriba datos compartidos a la vez.
Lo que hay que conseguir es:
Exclusión mutua: Es un mecanismo por el que se asegura que sólo una persona o proceso está haciendo algo en un instante determinado y los otros están excluidos (por ejemplo, dos procesos que comparten una sección de memoria).
Sección crítica: Es una sección de código en la que se realizan operaciones que pueden dar lugar a interferencias con otros procesos. Cuando un proceso está ejecutando su sección crítica, ningún otro proceso puede estar en ella, es decir, la sección crítica debe ejecutarse en exclusión mutua. Hay que tener en cuenta que un proceso no puede "dormirse" en su sección crítica porque estará bloqueando la sección crítica de otros procesos en ejecución.
Bloqueos
La mayoría de los recursos que existen en cualquier computador sólo pueden utilizarse por un proceso a la vez. Basta pensar, por ejemplo, en una impresora: no es posible que dos procesos hagan uso al mismo tiempo de este dispositivo. El' resultado sería catastrófico.
Sin embargo, en un sistema operativo multiprogramado, la situación anteriormente comentada puede darse en multitud de ocasiones y el sistema operativo debe encargarse de que esto no ocurra, otorgando acceso exclusivo a los recursos del sistema susceptibles de ser accedidos por más de un proceso al mismo tiempo.
No obstante, la apropiación de un dispositivo E/S para uso exclusivo puede provocar a su vez problemas graves que el sistema operativo también debe encargarse de resolver.
Imagínese dos procesos que desean imprimir un gran archivo situado en una cinta al mismo tiempo. El proceso A solicita en uso exclusivo la impresora mientras que el proceso B solicita el uso exclusivo de la cinta. El proceso A no puede comenzar la impresión porque no tiene acceso a la cinta, pero no libera la impresora. Mientras tanto el proceso B no inicia la impresión ya que no tiene acceso a la impresora, pero no libera la apropiación de la cinta. Se dice que los procesos se han bloqueado y permanecerán así para siempre si el sistema operativo no se encarga de solucionarlo.
El bloqueo de un conjunto de procesos se produce cuando un proceso espera un evento que sólo puede ser provocado por otro proceso del conjunto. Los procesos permanecerán esperando; ninguno de ellos realizará ninguna acción hasta que otro libere algún recurso, por lo que se entra en un bucle de espera infinito.
El bloqueo se denomina también de manera muy ilustrativa como abrazo mortal. Los sistemas operativos emplean distintas técnicas para enfrentarse al problema de los bloqueos.
Algoritmo del avestruz. Es decir, meter la cabeza bajo tierra e ignorar el problema. Si después de estudiar la probabilidad de bloqueos en el sistema, se llega a la conclusión de que ésta es muy baja (por ejemplo, un bloqueo cada seis años), es posible que los programadores decidan no perder el tiempo en implementar técnicas de detección y corrección de bloqueos. UNIX funciona con este "algoritmo".
Evitarlos: Mediante un estudio cuidadoso de la asignación de recursos, el sistema operativo puede conseguir que nunca se produzcan bloqueos.
Detección y recuperación: Los bloqueos se producen, pero el sistema operativo se encarga de detectarlos y recuperarse del bloqueo.
Gestión de memoria
Desde un punto de vista computacional, la memoria de un ordenador puede verse como una tabla de palabras cada una de ellas con su propia dirección.
Como ya se ha comentado, una de las funciones básicas del sistema operativo es la de hacer ver al usuario que se ejecutan varios procesos "al mismo tiempo" en un sistema que realmente es monoproceso. Para ello, deberá compartir todos los dispositivos entre los distintos procesos buscando la máxima eficiencia sin que existan problemas de coordinación.
Cada proceso en ejecución necesita un área de memoria para ubicar tres tipos de datos: el código del proceso (las instrucciones), los datos (variables inicializadas) y la pila (zona de trabajo durante la ejecución).
El gestor de memoria es la parte del sistema operativo encargado de asignar la memoria a los procesos y gestionar su uso. Debe proporcionar protección y uso compartido, es decir, debe proporcionar un espacio de memoria para cada proceso que lo necesite y controlar que ningún proceso trabaje en zonas de memoria que no le corresponden.
Cabe señalar que dos procesos pueden tener una zona de memoria de trabajo compartida a la que los dos pueden tener acceso. Por ejemplo, imagínese un sistema de control de temperatura de una habitación con dos procesos: uno de ellos se encarga de leer la temperatura de un sensor; el otro proceso, a partir de esa temperatura y del valor deseado, controla un generador de frío/calor. En función de estas condiciones, el primer proceso leerá la temperatura y la depositará en una posición de la memoria a la que el segundo proceso deberá tener también acceso.
En este caso, el gestor de memoria deberá controlar el acceso a esas zonas compartidas para que los datos escritos y leídos sean correctos y no se produzcan colisiones o lecturas erróneas (por ejemplo, que el segundo proceso lea un dato a medio escribir por el primer proceso).
Los criterios empleados para evaluar un gestor de memoria son:
Memoria desaprovechada: Se corresponde con la memoria que se pierde en el proceso de asignación.
Complejidad en el tiempo: Es el tiempo perdido en el proceso de acceso a la zona de memoria asignada.
Procesos suplementarios de accesos a memoria: Son los pasos a realizar para acceder a un dato en la memoria.
Como en el caso del uso de CPU, existen diferentes algoritmos para la gestión de memoria.
La opción más sencilla de realizar las asignaciones es dividir la memoria en m partes, del mismo o distinto tamaño. Cuando se cargue un trabajo, se le asignará la partición de memoria más pequeña disponible que pueda contenerlo. El problema de este tipo de asignación por particiones fijas es el desaprovechamiento de memoria que lógicamente se produce.
Fragmentación
La fragmentación puede definirse como la cantidad de memoria desaprovechada por el gestor de memoria y puede ser de dos tipos:
Fragmentación interna: Se debe a la diferencia de tamaño entre la partición de memoria y el objeto residente dentro de ella. Una posible solución a la fragmentación interna sería la asignación dinámica de memoria. En ella, los bloques no tienen un tamaño predefinido y el gestor de memoria asigna un espacio de memoria según las características del proceso a ejecutar.
Fragmentación externa: Se debe al desaprovechamiento de memoria entre particiones (particiones no contiguas). Para solucionar la fragmentación externa, sería necesario poder reubicar programas en tiempo de ejecución, lo cual es conocido como compactación de memoria.
En la práctica, las particiones fijas no son muy atractivas, sobre todo si se dispone de poca memoria, puesto que la mayor parte de ésta se desperdicia con programas menores que sus particiones. En vez de esto, se utiliza un algoritmo de gestión de memoria basado en particiones variables.
Con las particiones variables, el número, posición y tamaño varían de forma dinámica. Con ello, la gestión de memoria es mucho más eficiente ya que el tamaño de cada bloque se adapta a las necesidades de cada proceso, eliminándose la fragmentación interna.
Lógicamente, trabajar con particiones variables implica un gestor de memoria mucho más complejo.
Segmentación
La segmentación es un esquema de gestión de memoria evolucionado que se basa en particiones variables y presenta varias ventajas:
Los bloques de un proceso pueden estar situados en áreas de memoria no contiguas (datos, pila, código).
Suministra compactación de memoria, y permite protección y uso compartido.
La compactación de memoria es un proceso por el cual se elimina la fragmentación externa. El bloque de memoria asignado a un proceso puede reubicarse dinámicamente para aprovechar mejor la memoria.
Memoria virtual
En el año 1961, Fotheringham desarrolla una nueva técnica de gestión de memoria que denominó memoria virtual. La idea básica es que el tamaño del programa, los datos y la pila combinados pueden ser mayores que la memoria disponible para ese proceso. El sistema operativo guarda aquellas partes del programa de uso corriente en la memoria principal y el resto, en disco.
También es lógico pensar que no todas las partes de un programa se utilizan al mismo tiempo, por lo que pueden cargarse en memoria únicamente los datos que se piense que se van a utilizar inicialmente y, posteriormente, ir tomando del disco el resto.
Por ejemplo, si un proceso necesita 1 MB de memoria para su ejecución, se le puede asignar únicamente 512 KB. Cuando el sistema operativo necesite un bloque de datos que no se encuentre en la memoria, tiene que pasar un bloque de memoria al disco y traerse del disco el bloque de datos que necesita; a este proceso se le conoce como swapping.
Además, la memoria virtual es útil, ya que, mientras un programa hace swapping, otro puede tener el procesador realizando un uso más eficiente de la CPU.
El sistema operativo decide qué partes del programa puede cargar en memoria, cuándo cargarlas y dónde ubicarlas, corriéndose el riesgo de perder mucho tiempo en accesos al disco si la elección es errónea.
Las principales ventajas que ofrece la utilización de memoria virtual son:
Permite trabajar con programas de mayor tamaño que la memoria física.
Permite tener más programas cargados a la vez.
Permite que los programas empiecen a ejecutarse antes.
Reduce la frecuencia de intercambio de procesos.
Hay menor trabajo de E/S durante el intercambio de procesos.
Paginación
La paginación consiste en dividir el proceso en páginas (bloques de datos). El Sistema operativo divide la memoria en bloques (marcos de página) y sólo carga en memoria las páginas que se van a utilizar. Si la predicción se realiza correctamente y se cargan en memoria sólo las páginas que realmente se van a utilizar, el proceso se ejecutará exactamente igual que si se hubieran traído todas las páginas.
Cuando el proceso solicita un dato que se encuentra en una página que no está cargada en memoria, se produce un fallo de página (page fault) y el sistema operativo carga la página solicitada. Por este motivo, a este tipo de paginación se le conoce también como paginación a demanda.
La ventaja de la paginación reside en la eliminación de fragmentación interna \ la posibilidad de almacenar las páginas de un proceso de manera no contigua.
Algoritmo de reemplazo de páginas
Cuando ocurre un fallo de página, se hace necesario cargar en memoria la página solicitada, pero puede ocurrir que no haya marcos libres. Entonces se debe elegir una “víctima” entre las páginas que están en memoria para descargarla y darle su lugar a la nueva página requerida.
Si la página “víctima” fue modificada mientras estuvo en memoria, se escribe su contenido al disco y se carga la página recién referida en el marco recién liberado, se cambia la tabla de páginas y se reinicia la ejecución.
Existen diferentes algoritmos de reemplazo; a continuación se comentan algunos:
FIFO: Es el más simple, tanto para entender como para programar. Consiste en elegir la página que lleve más tiempo en memoria, sin considerar cuándo se utilizó por última vez.
LRU: Este algoritmo consiste en considerar que un acceso a página reciente puede implicar un acceso futuro próximo. El algoritmo elige como víctima aquella página de entre las que se encuentran en memoria que hace más tiempo que no es referenciada.
Optimo: Es el que produce menor tasa de page fault. Es un algoritmo teórico, pues exige conocer las futuras referencias a página, eligiendo como víctima aquélla que no volverá a ser referenciada nunca más o muy posteriormente. Sirve para estudios comparativos cuando se analizan nuevos algoritmos.
Dispositivos de entrada/salida
Una de las funciones más importantes y complejas que realiza el sistema operativo es la destinada a manejar los diferentes periféricos existentes. Debe enviar comandos a los dispositivos, detectar interrupciones y controlar errores.
Los dispositivos de entrada/salida se dividen, en general, en dos tipos:
Los dispositivos orientados a bloques que trabajan con bloques de tamaño fijo además tienen la propiedad de que se pueden direccionar, es decir, es posible escribir o leer cualquier bloque independientemente ya que cada uno tiene una dirección concreta. Entre ellos se encuentran los discos duros, la memoria y los discos compactos.
Los dispositivos orientados a carácter trabajan con secuencias de bytes sin importar su longitud ni ninguna agrupación en especial. No son dispositivos direccionables. Entre ellos se encuentran el teclado, el ratón, la pantalla y las impresoras.
Controladores de dispositivos
Los dispositivos de entrada/salida (E/S) pueden dividirse en una parte mecánica v una parte electrónica. Cuando se accede a un dispositivo, se accede siempre a su parte electrónica, denominada controlador del dispositivo. El controlador se encarga de mostrar al sistema operativo una interfaz estándar adaptándose a las peculiaridades del hardware que está por debajo.

Acceso directo a memoria
Muchos controladores, en particular los correspondientes a dispositivos de bloque, permiten el DMA (Direct Memory Access).
El objetivo del DMA es solapar operaciones de CPU y E/S. La CPU proporciona al controlador información sobre la dirección de memoria para acceder y el número de datos a transferir. Una vez realizada la petición, la CPU se despreocupa momentáneamente de la transferencia y continúa realizando otras tareas. El controlador va leyendo los datos del disco y copiándolos en la memoria; una vez realizada la transferencia, el controlador provoca una interrupción que hace que la CPU abandone el trabajo que estaba realizando.
Manejadores de dispositivos
Una vez comentado el hardware, es conveniente analizar el software de manejo de los dispositivos. Este software está organizado en capas. Las capas inferiores se encargan de ocultar las peculiaridades del hardware y las capas superiores de presentar una interfaz amigable a los usuarios.
Los manejadores de dispositivos (también conocidos como drivers) se encargan de aceptar las solicitudes abstractas que le hace el software independiente del dispositivo y ponerse en contacto con el controlador para realizar esa petición.
Si el dispositivo se encuentra ocupado atendiendo otra petición, el manejador se encargará de gestionar una cola de peticiones para darles paso tan pronto como sea posible.
Funciones del administrador
En todo sistema informático, desde el más simple y sencillo hasta el más complejo, es necesario realizar una labor continuada de planificación, administración, mantenimiento, optimización y racionalización de todos y cada uno de los recursos de que dicho sistema se compone. Para ello, existe una figura, la del Administrador del Sistema, que es la persona encargada de real izar todas estas tareas, bien en solitario, o bien formando parte de un equipo (si el tamaño del sistema informático así lo requiere).
En este capítulo se verán detalladamente las múltiples funciones que un administrador de sistemas informáticos ha de llevar a cabo, así como algunas de las herramientas más comúnmente utilizadas por ellos para ayudarse en la realización de estas tareas. Finalmente, se verá la ergonomía, área que estudia la acomodación del ordenador a las capacidades y condiciones del usuario.
El administrador del sistema
Hasta ahora se han presentado las diferentes partes hardware que componen un sistema informático y cómo se relacionan entre ellas para conseguir que el equipo funcione. También se han visto las funciones que un sistema operativo realiza para que los usuarios puedan utilizar el equipo abstrayéndose totalmente de su arquitectura interna, pero aún no se ha hablado de una parte fundamental, sin la cual los equipos informáticos no funcionan; esta parte no es un componente hardware ni un componente software, sino que es el componente humano, es el Administrador del Sistema.
Esta persona es la encargada de mantener al día y en perfectas condiciones todas las partes del sistema, tanto el software como el hardware.
A continuación, se enumeran algunas de las actividades típicas de un administrador de sistemas que, posteriormente, se explicarán más en detalle.
Estas tareas son las siguientes:
Altas, bajas y cambio de cuentas de usuarios, así como el nivel de seguridad asignado y las posibles restricciones que se utiIicen para cierto tipo de usuarios
Instalar el software de aplicación que se utilice dentro del sistema.
Registro de licencias de uso de las distintas aplicaciones instaladas.
Dar de alta e instalar equipos periféricos, como impresoras, módem, plotters, escáneres, etc., informando a los usuarios de su disponibilidad.
Realizar los respaldos de información (backups), metódica y constantemente.
Resolver las dudas de operación por parte de los usuarios, referentes a problemas con el sistema operativo en sí o con alguno de los programas de aplicación que se utilicen.
Mantener organizado el sistema de archivos, evitando que se acumule la basura (archivos que no sirven) dentro de las unidades de disco.
Programar los servicios de mantenimiento de la unidad central, informando con anticipación a los usuarios.
Creación de la documentación técnica referente al sistema informático.
Control del rendimiento de los diferentes equipos y del sistema en conjunto.
Dependiendo del número de terminales y, en general, de la complejidad del sistema operativo instalado, podrá ser necesario disponer de ayudantes para el administrador del sistema. No se puede fijar un parámetro estándar, pero se puede indicar que, si se dispone de más de 10 terminales, el no contar con un administrador del sistema presenta numerosos problemas y será prácticamente imposible mantenerlo al día, lo que redundará en no aprovechar al máximo la inversión.

Ejercicios propuestos
Comentar brevemente las funciones de un sistema operativo.
Explicar la diferencia entre programas y procesos.
En un sistema operativo monoprocesador y multiprogramado, se dispone de un sistema de planificación de CPU basado en el algoritmo Round Robín con tres clases de prioridad. El sistema trabaja con cinco procesos:
P1: Prioridad 3 (máxima): requiere seis unidades de tiempo para su ejecución.
P2: Prioridad 3: requiere tres unidades de tiempo para su ejecución.
P3: Prioridad 2: requiere nueve unidades de tiempo para su ejecución.
P4: Prioridad 1 (mínima): requiere doce unidades de tiempo para su ejecución.
P5: Prioridad 1: requiere nueve unidades de tiempo para su ejecución.
Inicialmente se encuentran cargados en memoria los procesos D y E; después de dos quantum, se carga el proceso C; en el siguiente quantum, se carga el proceso A y en el siguiente, el proceso B.
Dibuja un cronograma de tiempo con el uso de CPU por cada proceso, indicando también los tiempos de inicio y finalización de ejecución de cada programa. El quantum de tiempo en Round Robin son tres unidades de tiempo.
Explicar las diferencias entre fragmentación interna y externa.
Se deben procesar cinco tareas, todas llegan al mismo tiempo en el siguiente orden: P1, P2, P3, P4 Y P5. El tiempo de CPU y las prioridades de cada una de las tareas:
Proceso T. de CPU Prioridad
Pl 10  4 P2  1  1 P3  2  3P4  1  5 PS  5  2 Calcular el tiempo de espera medio antes de comenzar a ser ejecutadas y el tiempo medio de finalización, si las tareas se ejecutan siguiendo diversos algoritmos de planificación.
¿Cómo clasificaría el Sistema Operativo del ordenador con el que trabaja habitualmente?















Sistema operativo LINUX
Introducción
Linux es un sistema operativo multiusuario con todas las características que necesita tener un sistema operativo moderno. De hecho, en los últimos años se ha convertido en una alternativa a los sistemas Windows para computadores basados en arquitecturas Intel y compatibles.
Antes de empezar con aspectos técnicos concretos conviene analizar tanto su evolución como algunas de las ideas que gobiernan el rumbo de este sistema operativo. Podemos destacar tres fundamentos en los que se apoya el desarrollo y la evolución de Linux:
Está basado en el sistema UNIX: A Linux se le ha considerado un clónico de Unix para arquitecturas Intel, y en cierta forma es así. Unix es un sistema operativo multitarea y multiproceso desarrollado a principios de Ios años 70 y utilizado principalmente en sistemas servidores. Unix evolucionó durante 20 años tanto en ambientes académicos como empresariales lo que lo convirtió en un sistema operativo robusto y fiable. Linux ha heredado de Unix algunas de esas características que han convertido a Unix en un sistema tan eficiente.
Es un sistema operativo multiplataforma: Inicialmente Linux se desarrollé para arquitecturas Intel pero con el tiempo se han implementado versiones para otras plataformas hardware más minoritarias como PowerPC, Alpha Sparc ...
Es un sistema operativo de libre distribución: Esto significa que Linux se distribuye bajo los términos de licencia GPL (General Public License), lo que implica que cualquiera puede libremente copiarlo, cambiarlo y distribuirlo pero sin posibilidad de aplicar restricciones en futuras distribuciones. (mas información en www.gnu.org). Además, el código fuente de Linux (escrito principalmente en lenguaje C) es también público y de libre distribución.
Distribuciones
Linux es un sistema operativo de libre distribución. En los primeros tiempos se podían encontrar en multitud de servidores conectados a Internet todos los ficheros y programas necesarios para su funcionamiento. Sin embargo, y debido a que la tarea de reunir todos los ficheros necesarios e instalarlos correctamente podía ser bastante compleja, aparecieron empresas que se dedicaron a hacer este trabajo. Aquí surgió el término de distribución.
Una distribución no es más que una recopilación de programas y ficheros (incluyendo la última versión estable del núcleo), organizados y preparados para su instalación. Estas distribuciones se pueden obtener a través de Internet o comprando los CDs de las mismas. La mayoría del software que incluyen las distribuciones suele tener licencia GPL.
Normalmente, la obtención de las distribuciones por Internet suele ser gratuita y si se obtiene la distribución mediante los CDs, suele tener un coste en general bastante aceptable teniendo en cuenta la gran cantidad de software que incluye así como manuales e incluso soporte durante un periodo de tiempo (de 3 a 6 meses gratuitos).
Actualmente sería difícil precisar el número de distribuciones existentes de Linux, no obstante hay datos que apuntan a que son más de 300, entre ellas Ubuntu, Mandriva, Red Hat, y Suse.
La primera administración pública en España en desarrollar su propia distribución Linux fue la Junta de Extremadura. El nombre de la distribución es Linex (www.linex.org) y está muy difundida a nivel académico y de administración en la Comunidad de Extremadura. Está basada en la distribución Debian a la cual le ha añadido herramientas de instalación y configuración, que hace de esta distribucion un sistema fácil de usar. Actualmente se encuentra en la versión gnuLinEx 2006 RC2, lanzada en mayo de 2006.
Aunque Linex fue la pionera otras Comunidades Autónomas han desarrollado o están en proceso de desarrollar su propia distribución, en la mayoría de los casos con propósitos educativos. Algunos ejemplos son:
Comunidad de Andalucía: Guadalinex (www.guadalinex.org). Desarrollado tomando como referencia la distribución Linex y, por tanto, se basa en' Debian al igual que ésta última. Actualmente se encuentra en la versión 3.0.
Comunidad de Madrid: MAX ( HYPERLINK "http://www.educa.madrid.org/web/madrid_linux" www.educa.madrid.org/web/madrid_linux. Está basada en la distribución knoppix. Se ofrecen versiones en CD y DVD. al igual que knoppix, soporta la característica Live, es decir, se puede ejecutar desde el soporte óptico sin instalación en el sistema. La última versión fue la2.0.
Comunidad de Valencia: Lliurex (www.lliurex.net. Distribución basada en Debian y con soporte para LiveCD. Uno de sus objetivos es que todas aplicaciones que incluya estén disponibles tanto en castellano como en valenciano.
Comunidad de Castilla La Mancha: Molinux (www.molinux.info). Tanto la versión 2.0 (Sancho) como la última! la 2.2 (Rocinante), .están basadas en Ubuntu y también incluyen la opción Live para utilizar MoLinux sin instalación en el sistema.
Cataluña: linkat (http://linkat.xtec.net). Recientemente se ha publicado la primera versión Linkcat 1.0 sólo disponible en catalán y basada en OpenSUSE.
Trabajar en Linux en modo comando
Como ya se ha dicho, Linux está basado en Unix, que es un sistema operativo enormemente eficiente y robusto. Precisamente porque en el diseño de Unix siempre han primado estas características, la interacción con el usuario no ha sido al prioritario, de hecho es posible que la austeridad de la interfaz de usuario sea algo premeditado porque toda la potencia del sistema debería usarse para los procesos de ejecución. Además, en la época en la que se desarrolló Unix, no existían los avanzados pero económicos sistemas gráficos actuales, y es evidente que para un sistema concebido para ser eficiente de cara a procesos es un ineficaz gasto de recursos utilizar un entorno gráfico.
Con todo esto, Unix es un sistema operativo basado sobre todo en el modo comando, esto es, la interacción entre el sistema operativo y el usuario se realiza a través de una línea de comandos (algo parecido al sistema operativo MS-DOS o a la utilidad Símbolo de sistema de Windows 2000/XP). El usuario tiene que teclear el comando que realiza la acción deseada y pulsar [Enter] para que el sistema operativo ejecute la orden. Nada de ratón, ventanas, iconos, escritorio ...
Las primeras versiones de Linux, al igual que Unix, funcionaban en modo comando, sin embargo, y debido al auge que tenían los sistemas operativos basados en una interfaz gráfica, se comenzaron a desarrollar entornas gráficos para Linux. Una de las ventajas de los entornas gráficos de Linux es que son independientes del sistema operativo. No están diseñados para ninguna versión concreta del kernel y Linux se puede utilizar en modo comando sin arrancar el modo gráfico aunque esté instalado y configurado. A todos los efectos, el entorno gráfico se comporta como una aplicación más funcionando en el sistema.
Actualmente, y para facilitar el manejo del sistema a usuarios noveles o que vienen del entorno Windows, casi todas las distribuciones de Linux se instalan y configuran por defecto para trabajar en un cómodo y vistoso entorno gráfico similar al ofrecido por los sistemas Microsoft Windows. Además, las principales aplicaciones que incluyen las distribuciones, como navegadores web, aplicaciones ofimáticas, gestores de correo, visualizadores gráficos, etc., son aplicaciones que se ejecutan en modo gráfico.
Linux se puede utilizar tanto en equipos de escritorio como en servidores. En equipos de escritorio se trabajará sobre todo en modo gráfico utilizando las típicas aplicaciones ofimáticas, aplicaciones web, visualizadores de imágenes, reproductores de música, vídeo, etc. El uso del modo comando, en este caso, se reduce a algunas tareas de administración que no sean posibles realizar desde el modo gráfico.
Sin embargo, el uso del modo comando en equipos servidores está mucho mas extendido. De hecho, algunos administradores ni siquiera instalan un entorno gráfico en sus sistemas servidores con Linux. El uso de un entorno gráfico en un equipo servidor se puede considerar un gasto innecesario de recursos.
Nos vamos a centrar en el estudio de Linux desde el modo comando ya que en muchos casos es la mejor y más eficiente manera de administrar un sistema Linux especialmente si se va a utilizar como servidor.

Primer contacto con el modo comando
Cuando se inicia un sistema Linux, se crean las llamadas consolas virtuales en modo comando. Si el arranque está configurado para que no se inicie el modo gráfico, cuando se termina el proceso de arranque el sistema visual iza una de estas consolas virtuales.
Esto, en la mayoría de los casos, es una pantalla negra con un breve texto de identificación del sistema y la petición de login de acceso:

Normalmente se van a crear seis consolas virtuales en modo comando asociadas cada una de ellas con las teclas de función desde la [F1] hasta la [F6].
Para acceder a cada una de estas consolas virtuales se utilizan las combinaciones de teclas desde [ALT]+[F1] hasta [ALT]+[F6].
Por defecto, al finalizar el arranque, aparece en pantalla la consola o terminal 1 (llamado tty1 y asociada a la tecla de función [F1] . Para cambiar a otra consola, por ejemplo la 2, se pulsa la combinación [ALT]+[F2]. Para volver a la consola 1 se pulsa [ALT]+[Fl]. De esta forma, podemos conmutar entre las seis consolas virtuales. Por tanto, se pueden iniciar hasta seis sesiones diferentes en un sistema Linux e incluso utilizar hasta seis usuarios diferentes de forma simultánea. Al principio, esta característica no parece muy interesante, sin embargo, con el uso se dará cuenta de lo útil que puede llegar a ser.
Otro detalle importante: para acceder a un sistema Linux es necesario un nombre de usuario válido. Si introducimos un nombre de usuario (o login) y pulsamos [Enter], el sistema pedirá su contraseña (o password). A diferencia de otras aplicaciones y sistemas donde al escribir la contraseña se escriben asteriscos (*), las teclas que se Ieen al escribir la contraseña en la consola en modo texto no aparecen en pantalla.
Si por el contrario su sistema Linux está configurado para que se ejecute el entorno gráfico en el arranque, es posible acceder a las consolas virtuales con las combinaciones de teclas [CTRL]+[ALT]+[Fl] hasta [CTRL]+[ALT]+[F6]. Estas combinaciones sirven para conmutar entre el modo gráfico y una consola virtual en modo texto .
Se puede volver al modo gráfico desde una consola virtual en modo texto utilizando la combinación [ALT]+[F7].

La Shell
Después de producirse la validación del usuario, se ejecuta una aplicación de gran importancia en el sistema y que se conoce con el nombre genérico de Shell. Este proceso se encarga fundamentalmente de mostrar la línea de comandos por pantalla, de leer el comando que tecleemos y de ejecutarlo. Es equivalente al intérprete de comandos COMMAND.COM de MS-DOS.
La shell nos muestra por pantalla el llamado prompt o indicador de comando. Este indicador puede variar entre distribuciones. En las primeras versiones. El prompt era simplemente el símbolo $. Actualmente, lo más extendido es mostrar el nombre del usuario, el directorio de trabajo y un cursor parpadeante que indica que podemos teclear un comando para que la shell lo ejecute.
En Fedora Core 5 el formato de shell es el siguiente: [usuario@maquina directorio_actual]$_
Por ejemplo:
[msantos@washburn ~/informes]$_
Linux nos permite utilizar varias shells. Los nombres de las shells más conocidas : bash, sh, ksh, tcsh, csh ... Algunas de ellas derivan de shells utilizadas en sistemas Unix.
Dado que la shell es el primer programa que se ejecuta después de la validacion, cada usuario tiene asignada la shell que se ejecutará cuando acceda al sistema. En la mayoría de los sistemas Linux, por defecto, se utiliza la shell bash (Bourne -cain Shell) que es una evolución de la primitiva shell sh (Bourne Shell).
De la shell que utilicemos dependerán algunos aspectos del trabajo en modo comando, aunque, en general, las diferencias sólo serán apreciadas por usuarios avanzados. Sin embargo, hay algunas características comunes a las shells más avanzadas y que facilitan mucho el trabajo en línea de comandos:
El historial: la shell almacena un historial de las órdenes tecleadas anteriormente. Para visualizar los comandos ejecutados anteriormente se utilizan las teclas del cursor arriba y abajo.
La función de expansión: Esta función se utiliza para completar el nombre de un fichero que se quiera teclear en un comando y del cual sólo se han introducido las primeras letras. Para ello, hay que pulsar la tecla de tabulación y el nombre se completará.
Estas dos funciones de shell conviene tenerlas siempre presentes ya que facilitan mucho el trabajo desde la línea de comandos.

Nociones sobre la estructura de ficheros
Una de las principales ideas que hay que saber cuando se trabaja en Linux es la organización de la información en las distintas unidades de almacenamiento.
Al igual que en otros sistemas operativos, la información se almacena en ficheros y éstos a su vez se pueden agrupar en directorios y subdirectorios formando una estructura en árbol similar a los sistemas MS-DOS/Windows. La gran diferencia respecto a estos sistemas es que en Linux (y Unix en genera\) existe un solo árbol de directorios y no uno para cada partición o disco del sistema. Cualquier disco duro, partición, disquete, CD-ROM o dispositivo de almacenamiento debe formar parte de esta estructura única.
A la operación por la cual un dispositivo de almacenamiento entra a formar parte del árbol de directorios del sistema se la denomina montaje del dispositivo. Más adelante veremos esta operación en detalle.
Existe un directorio que contiene el resto de archivos y directorios del sisterma se le llama directorio raíz. De él nace toda la estructura en árbol del sistema de directorios de Linux. El directorio raíz se representa siempre con el símbolo de barra inclinada(/)
Permisos y directorio home: En los sistemas operativos multiusuario es fundamental una correcta gestión de los permisos de acceso sobre los elementos del sistema de ficheros. En Linux se distinguen dos tipos de usuarios: el usuario administrador, cuyo nombre de usuario normalmente es root, y el resto de usuarios.
Cuando accedemos como usurio root a una consola, el prompt que proporciona el intérprete de comandos cambia respecto a un usuario normal. Finaliza con el carácter #. Por ejemplo, en un sistema SuSE 9.2:
linux:/usr/bin #
Los permisos en Linux son bastante restrictivos salvo para el usuario administrador, que puede acceder a cualquier elemento del sistema. Por defecto el resto de usuarios sólo puede realizar modificaciones en su directorio personal. A este directorio se le conoce como directorio home.
El directorio home es el directorio asignado a cada usuario de un sistema Linux. En su directorio home un usuario puede crear archivos y directorios propios y puede establecer restricciones de acceso a otros usuarios. La mayoría de los usuarios trabajan regularmente con los archivos y directorios que crean bajo su directorio home.
La ubicación del directorio home es /home/usuario, donde usuario es el nombre de acceso al sistema. Por ejemplo, para un usuario cuyo nombre de acceso sea alberto, su directorio home estará situado en /home/alberto. Además, el directorio home de un usuario es el directorio donde será ubicado el usuario al iniciar una sesión.
Para hacer referencia a un directorio o fichero, se utiliza lo que se llama ruta, es decir, la descripción de todos los directorios por los que hay que pasar para llegar al directorio al que hacemos referencia. La ruta de un elemento del sistema de ficheros se forma con los nombres de los diferentes directorios ordenados de forma jerárquica y separados por el carácter l. Se puede especificar la ruta de dos formas:
Ruta absoluta: es la ruta completa desde el principio del árbol hasta el directorio al que nos referimos. Una ruta absoluta siempre comienza con el directorio raíz (/).
Ruta relativa: es la ruta a un fichero o directorio desde el directorio actual. Es decir, es el camino de directorios que hay que recorrer, partiendo del directorio actual.
Hay algunas abreviaturas que pueden ser útiles en la escritura de rutas:
Directorio actual, se puede hacer referencia al directorio donde se encuentra ubicado el usuario utilizando el símbolo punto (.).
Directorio ascendente, para referirse al directorio padre del directorio actual en la estructura jerárquica se pueden utilizar los dos puntos (..).
Directorio anterior para hacer referencia al directorio en el que se encontraba anteriormente, que no tiene por qué ser el directorio padre, se utiliza el signo menos (-). Esta abreviatura no está disponible en todas las shell aunque en la más utilizada, la shell bash, sí.
Primeros comandos
Cuando el sistema presenta el prompt significa que ya está preparado para aceptar los comandos que tecleemos. La forma general de los comandos en Linux es:
$ comando [opciones] [parámetros]
En el formato general anterior, el símbolo $ representa el prompt del sistema aunque se recuerda que puede cambiar dependiendo dela distribución y configuración utilizada.
Las opciones son modificadores para los comandos y no siempre es necesario teclear alguna. Las opciones suelen incluir el signo - seguido por una letra.
Los parámetros son informaciones que el comando puede necesitar para ejecutarse. Esta necesidad depende de cada comando concreto. En mucha;; ocasiones, los parámetros son nombres de ficheros o directorios.
Una característica importante en Linux es que se realiza distinción entre mayúsculas y minúsculas. Tanto para nombres de carpetas, ficheros, nombres de programas, comandos y cualquier elemento, en Linux se hace distinción entre mayúsculas y minúsculas. Es decir, no será el mismo fichero Documentación, que documentación o DOCUMENTACIÓN.
Por ejemplo, si intentamos ejecutar el comando hostname de la siguiente forma:
$ HOSTNAME
-bash: HOSTNAME: command not found
el sistema devolverá un error de comando no encontrado. Se debe escribir:
$ hostname
Esta característica es una potencial fuente de problemas sobre todo para usuarios que están acostumbrados a otros sistemas operativos como Windows, donde no existe esta distinción.
A continuación, se presentarán los comandos básicos para trabajar con la ctura de directorios del sistema:
Pwd: Cuando trabajamos en modo comando hay que tener en cuenta siempre el directorio donde nos encontramos, ya que muchos comandos que hacen referencia a directorios utilizan el directorio actual si no se especifica otra cosa. Al directorio donde nos encontramos se le llama directorio actual o directorio activo.
El comando pwd muestra en pantalla la ruta completa del directorio actual o activo. En muchas ocasiones, el prompt del sistema se configura para mostrar el directorio activo pero si no es así se puede utilizar el comando pwd para visualizarlo.
Cd nombre_directorio: Cambia el directorio actual por el especificado como parámetro. Utilizado sin parámetros el comando cd cambia al directorio home del usuario. Ejemplos:
cd usr/local/doc Ejemplo del comando cdutilizando una ruta absoluta.
cd local/doc Suponiendo que nos encontramos en /usr, igual que el anterior pero
usando ruta relativa.
cd.. Cambio al directorio un nivel por encima del actual.
cd ../usuario1/apuntes Ejemplo del comando cd utilizando una ruta relativa.
cd Cambio al directorio home del usuario.
A la hora de escribir rutas para el comando cd o para cualquier otro comando, recordar la utilidad del tabulador que nos proporciona la shell de comandos.
ls [opciones] [nombre directorio]: Visualiza el contenido del directorio especificado como parámetro. Si no se indica ningún directorio se utiliza el directorio actual. Este comando tiene multitud de opciones para alterar el tipo de información mostrada. Por ejemplo, la opción -I muestra información extendida sobre cada fichero o directorio. Ejemplos:
ls -l Lista extendida de archivos y directorios del directorio actual.
ls –l /var/log Lista extendida del directorio /var/log.
ls -a Lista de todos los archivos y directorios, incluidos los ocultos, que en Linux empiezan por el carácter punto Cl.
ls –R Lista de archivos y directorios y de todos los directorios dentro de él.
Ls –C Lista de archivos en columnas.
Ls –lt Lista extendida de archivos ordenada por fecha.
mkdir directorio: Crea un nuevo directorio
rmdir directorio: Borra un directorio vacio
Los comandos anteriores se util izan para trabajar con las estructuras de directorios en un sistema Linux. Otros comandos generales son:
Comando para salir de sesión: logout: El sistema finaliza la sesión y vuelve a mostrar la petición de login para una nueva sesión. El comando exit es equivalente.
Comando de ayuda man: Uno de los comandos más importantes del modo texto es el comando mano La forma de ejecutarlo es teclear man seguido del nombre del comando sobre el que queremos obtener ayuda. Por ejemplo: man ls
La ayuda que ofrece el comando man se presenta paginada y formateada con algún programa formateador de textos que esté instalado en nuestro sistema. Normalmente, funcionarán las teclas de cursores y las de [RePg] y [AvPg] para desplazamos por el texto de ayuda. Para salir de nuevo al prompt del sistema, pulsar la tecla q.
Comando para salir del sistema y apagar el equipo. poweroff: Existen también los comandos halt y shutdown para apagar el equipo. Estos comandos permiten algunas opciones como, por ejemplo, realizar una parada programada, pero sólo los puede ejecutar el usuario root. En algunas distribuciones es necesario ser usuario root para ejecutar el comando poweroff. Con estos comandos se realizarán todas las acciones necesarias para la salida ordenada del sistema. Después de su ejecución, se podrá apagar el equipo.
Comando para reiniciar el sistema: reboot: Al igual que el comando poweroff, en algunas distribuciones sólo se puede ejecutar este comando con el usuario administrador.
Jerarquía estándar de directorios
En los sistemas Unix las ubicaciones de los ficheros en el sistema siguen unas normas determinadas con el objeto de aumentar el nivel de organización. La mayoría de las distribuciones de Linux siguen el llamado estándar de jerarquía del sistema de ficheros, FHS (Filesystem Hierarchy Standard. Más información sobre este estándar en www.pathname.com/fhs). Algunos de los directorios más importantes son los siguientes:
/bin y /usr/bin. Estos directorios contienen la mayoría de los ficheros ejecutables y los comandos más comunes del sistema Linux.
/sbin y /usr/sbin. Estos directorios también contienen comandos y ficheros ejecutables normalmente ejecutados en tareas de administración con lo cual muchos de ellos sólo son ejecutables para el usuario root o administrador del sistema.
/etc: Este directorio contiene los ficheros de configuración de todo el sistema, con lo cual es de vital importancia. Normalmente, los ficheros que contiene son ficheros de configuración de tipo texto sin formato. Además, suelen tener sólo permisos de lectura para usuarios normales, es decir, sólo el usuario root los puede modificar.
/root: Directorio home del usuario root.
/usr: Directorio destinado a almacenar las aplicaciones, con lo cual su tamaño puede ser elevado si existen muchos paquetes de software instalados. Puede ser una buena opción utilizar una partición separada para este directorio.
/home: Directorio donde se almacenan todos los directorios home de los usuarios del sistema, por tanto, en función del número de usuarios y del uso que hagan del sistema, este directorio puede llegar a necesitar mucho espacio. En sistemas servidores es recomendable utilizar una partición separada para este directorio.
/lib y /usr/lib: Directorios que contienen librerías compartidas del sistema.
/tmp: Directorio para almacenar ficheros temporales.
/boot: Directorio que contiene los ficheros necesarios para el arranque del sistema. Por ejemplo, aquí se almacenan los ficheros del gestor de arranque si hubiera alguno instalado (L1LO o GRUB). También se suelen almacenar las imágenes del kernel o núcleo del sistema. Algunas distribuciones aconsejan utilizar una pequeña partición separada para este directorio.
/dev: Directorio que almacena ficheros de dispositivos. Estos ficheros no son realmente ficheros sino que es la forma en la que los sistemas Linux implementan los controladores de dispositivos. Se hablará más al respecto de estos archivos en el apartado correspondiente.
/var: Directorio que contiene información variable en general, como colas de impresión, colas de envío y recepción de correos y news, archivos de registro y de eventos del sistema... En sistemas Linux utilizándose como servidores, este directorio puede necesitar mucho espacio, con lo cual es recomendable utilizar una partición propia.
/opt: Directorio opcional donde se pueden instalar aplicaciones, ademas de /usr. En algunos sistemas Linux no existe.
/proc: Este directorio se corresponde con un sistema de ficheros virtual creado por el kernel en memoria. Sirve de interfaz con los parámetros de coniguración del kernel.
/mnt: Directorio usado por defecto por el sistema para realizar el montaje de otros dispositivos de almacenamiento como disquetes, CD-ROMs, unidad de almacenamiento USB, etc.
Propiedades del sistema de ficheros
Los elementos que se encuentran en el sistema de ficheros, es decir tanto ficheros como directorios, poseen una serie de características o propiedades que pueden visualizarse con el comando Is -l:



Permisos NL Prop Grupo Tam Fecha Hora Nombre drwxr-xr-x 2 1p sys 4096 mar 5 02:05 cups -rw-r- -r-- 1 root root 5951 mar 16 01:43 dmesg drwxr-xr-x 2 root root 4096 mar 16 01:44 gdm Como se puede observar en cualquier listado generado por el comando Is, todos los ficheros tienen asociado tanto un nombre de usuario, que es su propietario, como un nombre de grupo. Un grupo no es más que un conjunto de usuarios agrupados para poder establecer permisos de forma conjunta sobre los elementos del sistema de ficheros.
Una de las principales características del sistema de ficheros usado en Linux es que posee un robusto sistema de permisos. Cada fichero del sistema (en este apartado hablaremos de permisos de ficheros pero lo mismo se puede aplicar a directorios) tiene una serie de permisos que definen su accesibilidad a todos los usuarios del sistema. Para ello, se utiliza un grupo de 10 caracteres desglosado de la siguiente forma:

Los otros nueve caracteres indican, en agrupaciones de tres, los permisos de acceso a ese fichero. La primera agrupación son los permisos del propietario del fichero, la segunda agrupación son los permisos del grupo al que pertenece el fichero y la última agrupación son los permisos del fichero para el resto de usuarios.
Cada agrupación tiene tres caracteres con el siguiente significado:
Primer carácter: si aparece una 'r', el permiso de lectura sobre el fichero está activado. Si aparece un '-', significa que no tiene permiso de lectura sobre ese fichero.
Segundo carácter: si aparece una 'w', el permiso de escritura sobre el fichero está activado. Si aparece un '-', significa que no tiene permiso de escritura sobre ese fichero.
Tercer carácter: si aparece una 'x', el permiso de ejecución sobre el fichero está activado. Si aparece un '-', significa que no tiene permiso de ejecución sobre ese fichero.
Actividades
Utilice el comando man para obtener más información sobre el uso de los comandos vistos en los apartados anteriores
Obtenga un listado extendido de los archivos contenidos en el directorio /tmp ordenados por fecha.
Compruebe la diferencia entre la ejecución de los siguientes comandos. ¿Para qué sirve la parte final del comando: I more?
ls -R /var I more
ls -RC /var I more
Intente crear un directorio dentro del directorio home de su usuario. Compruebe el contenido del directorio recién creado.
Intente a continuación crear un directorio en cualquier directorio que no sea el directorio home de su usuario.
Visualice la información de los siguientes directorios: /, /home y /var, utilizando el comando Is -1. ¿Quién es el propietario de los directorios en /? ¿Y de los directorios en /home?
¿Puede acceder a los directorios home de otros usuarios? Fíjese en los permisos del directorio /root, ¿podría acceder con su usuario para ver su contenido? Compruébelo. Fíjese en los permisos y el tamaño de los ficheros en /bin.
En algunas distribuciones existe un alias para el comando Is -1 que es II. Probadlo.
Comandos para el trabajo con el sistema de ficheros

A continuación, se presentan los comandos más importantes para el manejo de iicheros en un sistema Linux. Los parámetros opcionales se especifican entre corchetes []:
cat [nombre fichero]: Muestra por pantalla el fichero de texto especificado como parámetro. Si no se especifica ningún fichero como parámetro, muestra la información que le llega a través de la entrada estándar o stdin que, por defecto, es el teclado.
more [nombre fichero]: Muestra por pantalla, de forma paginada, el fichero especificado como parámetro. Si no se especifica ningún parámetro, pagina lo que recibe a través de stdin. Para avanzar línea a línea, utilizar la tecla de [Enter]. Para avanzar de página en página, utilizar la tecla de [Espacio]. Para salir, pulsar la tecla q.
less [nombre fichero]: Parecido a more. Muestra por pantalla, de forma paginada, el contenido de un archivo de texto. Tiene más funcionalidades que more. Por ejemplo, con less se pueden utilizar las teclas de cursor para moverse a través del texto.
cp fichero1 [fichero2 …ficheroN] directorio: Copia ficheros y directorios. Si el último argumento es un directorio, cp copia cada fichero fuente a ese directorio. Si el último argumento es un fichero, cp copia el primer argumento, que deberá ser un solo fichero, en el fichero destino.
mv fichero1 [fichero2…ficheroN] directorio: Comando que mueve o renombra ficheros o directorios. Si el último argumento es un directorio, mv mueve cada uno de los anteriores ficheros a ese directorio. Si se pasan como argumento dos nombres de ficheros (o dos nombres de directorios), renombra el primero al segundo.
rm fichero1 [fichero2…ficheroN]:Comando para borrar ficheros. Con la opción -r se borra la estructura entera de un directorio, incluidos los subdirectorios.
Opción útil pero muy peligrosa para borrar todo el contenido de un directorio: rm-rf nombre_directorio.
cmp fichero1 fichero2: Compara dos ficheros de cualquier tipo y escribe el resultado en la salida estándar.
diff fichero1 fichero2: Busca diferencias entre dos ficheros. Parecido a cmp pero más avanzado. Por ejemplo, puede comparar dos directorios.
type fichero ejecutable: Muestra por pantalla la ruta completa de un archivo ejecutable
file fichero: Muestra la ubicación del archivo ejecutable de un comando, el archivo fuente y la página del manual correspondiente. Esta búsqueda se realiza dentro de los directorios especificados en la variable de entorno PATH.
chmod permisos fichero1 [fichero2…ficheroN]: Comando para establecer los permisos de un fichero o directorio. Los permisos de un fichero se pueden cambiar sólo por el propietario del fichero o por el usuario root. Existen dos formas de establecer los permisos. La primera utilizando una representación simbólica de los cambios a realizar y la segunda utilizando un número octal que representa el patrón de bits de los nuevos permisos.
Para el primer formato se utiliza un patrón formado por tres tipos de caracteres:
Las categorías de usuarios afectadas:
u: para el propietario
g: para el grupo
o: para el resto de usuarios
Un carácter para retirar los permisos (-), dejarlos igual (=) o añadir (+).
Las abreviaturas de los tipos de permisos:
r: lectura
w: escritura
x: ejecución
Por ejemplo, para dar permisos de escritura sobre el fichero 'prueba' a los usuarios que no sean ni el propietario ni usuarios del grupo:
$ chmod o+w /home/usuario1/prueba
Para quitar todos los permisos de escritura del fichero a todos excepto al propietario:
$ chmod go-w /home/usuario1/prueba
El segundo formato se forma considerando cada agrupación de permisos (rwx) como un número octal. Por tanto, el valor octal de los permisos de una agrupación de permisos se puede obtener sumando los valores mostrados a continuación:
lectura(4) + escritura(2) + ejecución (1)
Por ejemplo, para que el fichero prueba tenga permisos de lectura y escritura para el propietario y permisos de sólo lectura para el grupo y el resto:
Propietario = lectura(4) + escritura(2) = 6 Grupo = lectura(4) = 4
Otros = lectura(4) = 4
El comando, por tanto, sería: $ chmad 644 prueba
Ejemplos:
rwxr-xr-x 755
rw-r--r-- 644
r--r--r-- 444
rwxrwxrwx 777
--------- 000
rwx------ 700
touch nombre archivo: Si el archivo existe, actualiza la fecha de modificación del archivo y si no existe, crea un archivo nuevo de tamaño O bytes.
head fichero: Muestra por pantalla las 10 primeras líneas de un fichero pasado como p2'=metro. Para que muestre un número de líneas diferente, se usa la opción -n:
$ head -n 5 jetcjpasswd
Muestra las primeras 5 líneas del fichero /etc/passwd.
tail fichero: Muestra las últimas 10 líneas de un fichero pasado como parámetro. Para Gj~ muestre un número de líneas diferente, se usa la opción -n:
$ tail -n 3 jetcjpasswd
Muestra las últimas 3 líneas del fichero /etc/passwd.
wc fichero: Comando que muestra por pantalla el número de líneas, palabras y caractert::' del fichero especificado.

Comodines para la generación de ficheros
La mayoría de los comandos para el trabajo con ficheros se pueden ejecutar sobre más de un fichero. Para ello, se utilizan como nombres de ficheros palabras patrón. Una palabra patrón o comodín es cualquier palabra que contenga alguno de los caracteres comodín de la siguiente tabla:
*: Sustituye varios caracteres o ninguno.
¿: Sustituye caracteres uno a uno.
[…]: Sustituye cualquiera de las alternativas entre corchetes.
[¡…]: Sustituye cualquier carácter menos los indicados en la lista entre corchetes.
Ejemplos:
$rm prueba* Elimina todos los archivos que comienzan por la palabra prueba.
$rm *prueba Elimina todos los archivos que acaban en la palabra prueba.
$rm *prueba* Elimina todos los archivos que contengan la palabra prueba
$rm prueba?? Elimina todos los archivos que empiecen por prueba y tengan 8 caracteres.
Actividades
En el directorio /etc se almacenan los ficheros de configuración del sistema y de prácticamente todas las aplicaciones. Estos ficheros se pueden visualizar con los comandos cat, more o less. Ejecute estos comandos sobre algunos de los ficheros del directorio /etc y compruebe las diferencias entre dichos comandos.
El comando cat recibe lo que le llega por entrada están dar (por defecto, el teclado) y lo envía por salida estándar (por defecto, la pantalla). Esta característica se puede comprobar ejecutando cat sin parámetros. Para salir utilice [CTRL]+[C].
Compruebe la ubicación de los comandos: more, less, cp, man y type.
Comprobar de qué tipo son los siguientes ficheros: /bin/touch, /lib/Iib-util-2.3.2.so, /etc/passwd, /var/log/boot.log
Copie los ficheros /etc/passwd y /etc/group a su directorio home. Compruebe que los originales siguen en su directorio de origen. Compruebe las características de los ficheros origen y destino, como los permisos, propietario, tamaño, etc.
Pruebe a copiar el fichero /etc/passwd al directorio /usr. ¿Qué ocurre? ¿Por qué? ¿Hay algún directorio en / donde tenga permisos para copiar el fichero? Pruébelo.
Intente mover el fichero /etc/profile a su directorio /home. ¿Qué ocurre? ¿Por qué? Intente mover el fichero anterior al directorio /tmp. ¿Qué ocurre? ¿Por qué?
Cambia los permisos de tu directorio home a rwxr-x---.
Comandos generales y de información del sistema
En este apartado se presentan algunos comandos generales de Linux y otros uüIizados para obtener información útil sobre el sistema.
clear: borra la pantalla
date: muestra la fecha y hora del sistema
cal: Muestra por pantalla un calendario. Si no se especifica nada, muestra el mes actual.
hostname: muestra por pantalla el nombre del equipo
who: muestra por pantalla los usuarios que se encuentran conectados al equipo
finger [usuario]: muestra por pantalla información sobre los usuarios
whoami: muestra por pantalla el nombre del usuario actual
uptime: Muestra por pantalla el tiempo que lleva el sistema activo. Concretamente muestra: la hora actual, cuánto tiempo lleva funcionando el sistema, cuántos usuarios están actualmente conectados, la carga media del sistema durante el último minuto, los últimos 5 minutos y los últimos 15 minutos. Una información más extendida sobre los usuarios conectados se muestra con el comando w.
úname –a: Imprime información del sistema. Para ver toda la información que puede obtener, utiliza la opción -a. Con esta opción se puede ver, por ejemplo, la versión del kernel del sistema.
Gestión de procesos
Actualmente, todos los sistemas operativos, incluido Linux, son sistemas operativos multitarea, es decir, permiten la ejecución de varios procesos de forma concurrente. Ya que la mayoría de los equipos utilizados tienen un solo procesador, la multitarea se consigue asignando un tiempo de ejecución a cada proceso que necesite ser ejecutado de forma que en cada instante sólo un proceso se estará ejecutando. Sin embargo, como los tiempos asignados a cada proceso son pequeños, de orden de milisegundos, la sensación que percibimos es de ejecución simultánea.
En este contexto, deben quedar claros dos conceptos importantes:
Programa: es un conjunto de instrucciones escrito en un lenguaje de programación determinado y almacenado en un fichero, normalmente después dE su traducción al lenguaje máquina correspondiente.
Proceso: es un programa en ejecución.
En Linux, la estructura de procesos es jerárquica. Para representar la relación entre los procesos se utiliza el concepto de procesos padre-hijo. Esto implica que todo proceso debe tener un proceso llamado padre que es el que crea dicho proceso. Como en toda estructura jerárquica, existe un proceso raíz; éste es un proceso llamado init. A cada proceso que se ejecuta en el sistema se le asigna un identificador único llamado PID (process identifier). El proceso init tiene asignado el PID 1.
Un ejemplo de la estructura jerárquica de los procesos: el proceso init, entre otras cosas, crea los procesos que gestionan los terminales virtuales, llamados ttyi tty2 ... Estos, a su vez, lanzan los procesos login, que son los responsables de pedir el nombre de usuario y contraseña y validar a los usuarios que utilizan los terminales virtuales. En caso de que la validación sea correcta, el proceso login ejecuta a su vez la shell correspondiente.

A los procesos ejecutados por los usuarios se les denomina trabajos o jobs. Gracias a la multitarea, un usuario puede ejecutar varios trabajos de forma simultánea. Sin embargo, sólo uno de ellos podrá tener la interacción directa con el usuario. A este trabajo se le llama trabajo en primer plano (o foreground). El resto de trabajos puede ejecutarse en lo que se llama segundo plano (o background). Aunque el usuario no puede tener interacción directa con los procesos en segundo plano, si uno de dichos trabajos genera una salida, ésta aparece en el terminal, por el que si se desea evitar esta situación se deberá hacer uso de la redirección. Si un trabajo en segundo plano es interactivo, es decir, requiere entradas en tiempo de ::ejecución, dicho trabajo se quedará parado o en stop.
Para lanzar un proceso en primer plano o foreground, se ejecuta de forma normal:
$ ls -1 /var/1og > ls_log
Para lanzarlo en segundo plano o background, se añade al final del comando el carácter &:
$ ls -1 /var/1og > ls_log &
$ find / -name 'samba' > busqueda 2>&1 &.
Comando para visualizar información sobre los procesos: ps
Este comando admite muchos parámetros y nos proporciona mucha información sobre los procesos que están ejecutándose en el sistema. Sin parámetros nos muestra los procesos del usuario que ejecuta desde la shell correspondiente.
$ ps
Algunos de los parámetros más interesantes son los siguientes: $ ps -u [usuario]
Nos muestra los procesos de un usuario ejecutados desde la shell correspondiente. Muestra más información sobre cada proceso que la ejecución del comando sin parámetros.
$ ps -A
$ ps -e
Nos muestra todos los procesos en memoria.
$ ps -f
Muestra información extendida de los procesos.
$ ps -ef
Muestra información extendida de los procesos de todos los usuarios. Ésta es una de las formas más frecuentes de utilizar el comando ps.
Ejemplo de salida de ps -ef:
Trabajo de administración en modo comando
Introducción a la administración en Linux
Los conceptos y comandos vistos en los apartados anteriores son aplicables al -jo en modo comando para cualquier usuario del sistema. En este apartado se, un repaso a los principales conceptos y comandos aplicables al trabajo en modo comando con el usuario administrador, normalmente llamado root.
Como se verá, hay dos características comunes a todas las tareas de administrador
Todas se realizan utilizando el usuario root.
Muchas de dichas tareas consisten en realizar cambios en ficheros de configuración. En la gran mayoría de los casos, son ficheros de texto ubicados en el directorio /etc.
La tradición en el mundo Linux aconseja trabajar con el usuario root el tiempo mínimo imprescindible. Este usuario puede leer, modificar o borrar cualquier fichero. En el sistema, cambiar permisos y ejecutar programas peligrosos, como pueden ser los que particionan discos o crean sistemas de ficheros. Con esta libertad es fácil cometer errores que tengan consecuencias importantes, incluso catastróficas cuando hablamos de equipos utilizados como servidores.
Para los usuarios que estén acostumbrados al trabajo con los sistemas operativos Windows 2000/XP es otra forma de trabajo completamente diferente, ya que en los sistemas se tiende a trabajar con usuarios que poseen todos los permisos de administración, mientras que en Linux se propone justo lo contrario, trabajar con usuarios no administradores, salvo cuando haya que realizar alguna tarea de administración.
Para llevar a cabo esta "dualidad" en modo comando, se utilizan dos estrategias. La primera es utilizar las consolas virtuales. Recordad que Linux, por defecto dispone de seis consolas donde se puede iniciar sesión con usuarios diferentes, por to se puede tener una sesión de trabajo en una de las consolas y, si es necesario realizar alguna tarea de administración, ésta se puede llevar a cabo iniciando una sesión con root en otra consola.
La segunda estrategia es utilizar el comando de cambio de identidad su. De forma general, el comando su se utiliza para cambiar de usuario sin abandonar la sesión actual. El usuario al que se quiere conmutar se pasa como parámetro.
Sin embargo, el uso más extendido de su es utilizarlo para conmutar al usuario root. Para ello, no hay que poner ningún parámetro:
$ su
password:
#
Para finalizar el trabajo con root y volver a trabajar con el usuario, simplemente se utiliza el comando exit. Para ejecutar un solo comando de root desde un usuario, se puede utilizar la siguiente opción:
$ su -e 'comando_administracion' password:
Gestión de usuarios y grupos
Una de las primeras tareas de administración que conviene conocer es la gestión de usuarios. Como ya se ha visto, es el usuario root el que tiene la posibilidad de crear cuentas para el resto de usuarios del sistema.
La gestión de las cuentas de usuario se lleva a cabo a través de dos ficheros de configuración:
El fichero /etc/passwd contiene una línea por cada usuario creado en el sistema con la información relevante sobre cada usuario.
El fichero /etc/shadow se utiliza para almacenar la contraseña de los usuari~ y parámetros relacionados con la validez de dichas contraseñas.
El formato de cada línea del fichero /etc/passwd es el siguiente:
Por ejemplo:
Usuario1:x:500:500:usuario de prueba:/home/usuario1: /bin/bash
Como se puede observar, la información se compone de varios campos separados por el carácter de dos puntos (:):
Nombre del usuario. Es el nombre o login con el que el usuario accede al sistema.
Campo reservado a la contraseña. En versiones antiguas de Unix, se almacenaba aquí la contraseña encriptada. Sin embargo, en versiones más recientes, en este campo se escribe una x indicando que la contraseña se almacena en el fichero /etc/shadow. Podemos deshabilitar temporalmente el acceso a un usuario escribiendo un carácter * en este campo.
ID es el identificador de usuario. Debe ser único en el sistema.
GID es el identificador del grupo al que pertenece el usuario por defecto.
Texto descriptivo del usuario. En algunos sistemas este campo se utiliza para incluir el nombre completo del usuario y sus datos personales.
Directorio home del usuario.
Nombre de la shell por defecto para el usuario cuando acceda al sistema.
Otro elemento de gestión de usuarios son los grupos, que no son más que agrupaciones de usuarios para establecer criterios comunes de accesibilidad. Como recordará, cada fichero tiene asociado un grupo al que pertenece; además, para cada fichero o directorio se pueden definir los permisos para el grupo al que pertee. Realmente ésta es la utilidad de los grupos, poder realizar asignaciones de permisos a ficheros o directorios para un conjunto de usuarios. Un usuario puede pertenecer a varios grupos.
Los grupos de usuarios se gestionan a través del fichero de configuración etc/group. El formato de este fichero es el siguiente:
El campo nombre es el nombre del grupo.
El campo x, indica que si el grupo tiene contraseña, ésta se almacena en el fichero /etc/gshadow.
GID es el identificador del grupo.
Usuarios. Aquí se especifican los usuarios que pertenecen a un grupo separados por comas (,).

La creación de nuevos usuarios se puede realizar de dos formas: modificando "'manualmente" los ficheros de configuración o utilizando los comandos proporcionados por el sistema. Se recomienda esta última opción.
Creación de nuevos usuarios: useradd
El comando useradd es el comando estándar de Linux que existe en cualquier distribución. La ejecución de este comando lleva a cabo todos los cambios necesarios en los ficheros /etc/passwd y /etc/shadow para dar de alta un usuario. El comando useradd admite multitud de parámetros para configurar toda la información del usuario:
-c descripción del usuario
-d directorio home (no lo crea, debe existir)
-e fecha de caducidad de la cuenta
-g grupo por defecto (no lo crea, debe existir)
-G otros grupos
-s shell
-u identificador del usuario (ID)
-m crea el directorio home asignado con la opción -d
Se recomienda ejecutar el comando useradd para crear el usuario y el comando passwd para asignarle una contraseña.
Por ejemplo, el siguiente comando crea una cuenta de usuario llamada usuario2:
# useradd -d /home/usuario2 -m -g usuarios -s /bin/bas= usuario2
El grupo usuarios debe existir. Si no se utiIiza la opción -g, se le asigna el grupo users (GID:100) como grupo por defecto. Si no se utiliza la opción -s, no se le asigna ninguna shell al usuario. Si no se utiliza la opción -m, no se crea el directorio home del usuario, en este caso /home/usuario2.
El comando useradd crea el usuario inicialmente deshabilitado. Para esto, escribe un carácter exclamación (!) en el campo de contraseña en el fichero /etc/shadow. Se puede habilitar ejecutando el comando paswd con el usuario root y estableciendo una contraseña para el usuario:
# passwd usuario2
o eliminando el carácter ! del fichero /etc/shadow. Dejando el campo de contraseña en el fichero /etc/shadow en blanco se habilita al usuario pero sin contraseña:
usuario2 deshabilitado: usuario2:!:12863:0:99999:7:::
usuario2 habilitado sin contraseña: usuario2::12863:0:99999:7:::
El algunas distribuciones también existe el comando adduser que proporciona algunas mejoras respecto a useradd, por ejemplo, se puede utilizar un fichero de configuración /etc/adduser.conf donde configurar algunos aspectos de la creación de usuarios.
Comando para cambiar la contraseña: passwd
$ passwd
Changing password for user msantos üld password:
New password:
Retype new password:
Password changed.
El sistema pide la contraseña antigua y la nueva dos veces. Después de su ejecución, la contraseña para un usuario que ha ejecutado el comando habrá sido cambiada.
El usuario root puede cambiar la contraseña de cualquier usuario especificando su nombre como parámetro:
# passwd msantos
Changing password for user msantos New password:
Retype new password:
Creación de grupos: groupadd
Su uso es muy sencillo. Añade un grupo al fichero /etc/group. En algunas distribuciones existe el comando addgroup que es más avanzado.
Eliminación de usuarios: userdel
El comando userdel es el comando estándar de Linux para borrar cuentas de usuario. Igual que el comando anterior/ realiza todos los cambios en los ficheros de configuración para eliminar una cuenta de usuario. Además/ hay que tener en cuenta qué hacer con el directorio home del usuario que queremos dar de baja. Si queremos eliminar este directorio/ podemos utilizar la opción -r del comando userdel:
# userdel -r usuario2
En algunas distribuciones existe el comando deluser. Igual que adduser, es un comando avanzado para eliminar una cuenta de usuario del sistema. No borra el directorio home.

Eliminación de grupos: groupdel
Borra un grupo del fichero /etc/group
Cambio del propietario de un fichero o directorio: chown
Este comando sólo lo puede ejecutar root. El formato del comando es: chown nuevo_propfichero fichero
# chown usuario2 prueba
Cambio del grupo de un fichero o directorio: chgrp
Este comando sólo lo puede ejecutar root. El formato del comando es: chgrp grupo fichero ...
Con la opción –R, el comando se ejecuta de forma recursiva, es decir cambia de grupo a todos los ficheros y directorios del directorio especificado como parámetro.
# chgrp –R usuario2 /home/usuario3
Cambio de la máscara de creación de ficheros: umask
Con este comando se puede cambiar la máscara de permisos para la creación de ficheros. Se aplica la regla del formato octal para construir la máscara teniendo en cuenta que los valores que se consideran inhabilitan el permiso correspondiente y el atributo de ejecución no tiene efecto. Sin parámetros se muestra por pantalla el estado actual de la máscara.
$ umask 022 ficheros creados con los permisos rw-r-r
$ umask 002 ficheros creados con los permisos rw-rw-r
$ umask 222 ficheros creados con los permisos r-r-r-
Este comando suele ir incluido en algún fichero de configuración de usuario como /etc/bashrc o /etc/profile para configurar la máscara de creación de ficheros por defecto.
Actividades
Para cualquier duda sobre los parámetros disponibles de los comandos, utilizar el comando mano
Crear el usuario linux01 añadiendo las líneas correspondientes a los ficheros de configuración /etc/passwd y /etc/shadow. No activar ninguna contraseña de acceso. Comprobar que se puede acceder al sistema con el usuario creado.
NOTA. Atención con el directorio home del usuario.
Crear el usuario linux02 con el comando useradd. Explicar las diferencias encontradas entre ambos métodos de creación de usuarios. Comprobar que se ha creado la línea correspondiente en los ficheros de configuración. Comprobar que se puede acceder al sistema con el usuario creado.
Crear el grupo usulinux al cual pertenezcan los usuarios linux01 y linux02. Asignar este grupo como grupo por defecto de los usuarios de forma que cualquier fichero que generen pertenezca al grupo usulinux.
Montar y desmontar dispositivos de almacenamiento
Para poder acceder a un sistema de ficheros ubicado en alguno de los dispositivos de almacenamiento que forman parte del sistema, es necesario realizar una operación llamada montaje. Montar un sistema de ficheros/dispositivo no es más que hacerlo disponible en el árbol de directorios de nuestro sistema. Recordad que el árbol de directorios de un sistema Linux es único.
En definitiva, montar un dispositivo es asociar un directorio del árbol de directorios al sistema de ficheros del dispositivo. Esta operación se realiza con el comando mount:
mount -t
Mediante el parámetro -t se especifica el tipo del sistema de ficheros. Los tipos más usuales son:
ext2, ext3: Nativo dé Linux
reiserfx: Nativo de Linux
msdos: MS-DOS
vfat: FAT y FAT32
ntfs: NTFS (solo lectura)
iso9660: CD-ROM
auto: Si es posible, detecta el tipo de sistema de archivo
El parámetro es el nombre del dispositivo utilizando el nombre del fichero manejador, por ejemplo /dev/hda1, /dev/fd0, /dev/cdrom.
El parámetro es el nombre del directorio donde queremos enlazar la estructura de directorios del dispositivo.
Los directorios utilizados como base para montar los diferentes dispositivos removibles del sistema como disquetera y CD-ROM son /mnt o /media, dependiendo de la distribución utilizada. Sin embargo, el uso de este directorio no es obligatorio; se puede utilizar cualquier directorio. Por ejemplo, en algunas distribuciones existen los di rectorios /floppy, /cdrom y /dvd.
El siguiente ejemplo monta un disquete formateado con el sistema de ficheros FAT, en el directorio /floppy. Después de ejecutar el comando, se podrá acceder a la información del disquete accediendo a este directorio.
# mount -t vfat /dev/fdO /floppy
El siguiente ejemplo monta un CD-ROM:
# mount -t iso9660 /dev/edrom /edrom























Redes de computadores

QUÉ ES UNA RED
Una red de ordenadores es un sistema de interconexión entre equipos que permite compartir recursos e información. Para ello, es necesario contar, ademas de con los ordenadores correspondientes, con las tarjetas de red, los cables de conexión, los dispositivos de comunicación y el software conveniente.
Entre las ventajas de utilizar una red se encuentran:
Posibilidad de compartir periféricos costosos, como son impresoras, módem, fax, etc.
Posibilidad de compartir grandes cantidades de información a través de distintos programas, bases de datos, etc., de manera que sea más fácil su use actualización.
Reduce e, incluso, elimina la duplicidad de trabajos.
Permite utilizar el correo electrónico para enviar o recibir mensajes de diferentes usuarios de la misma red e, incluso, de redes diferentes.
Reemplaza o complementa miniordenadores de forma eficiente y con un coste bastante más reducido.
Establece enlaces con mainframes. De esta forma, un ordenador de gran potencia actúa como servidor haciendo que los recursos disponibles estén accesibles para cada uno de los ordenadores personales conectados.
Permite mejorar la seguridad y control de la información que se utiliza, permitiendo la entrada de determinados usuarios, accediendo únicamente a cierta información o impidiendo la modificación de diversos datos.
Inicialmente, la instalación de una red se realiza para compartir los dispositivos periféricos u otros dispositivos de salida caros, por ejemplo, las impresoras láser, faxes, etc.
Pero, a medida que va creciendo la red, el compartir dichos dispositivos pierde relevancia en comparación con el resto de las ventajas. Las redes enlazan también a las personas proporcionando una herramienta efectiva para la comunicación a través del correo electrónico. Los mensajes se envían instantáneamente a través de la red, los planes de trabajo pueden actualizarse tan pronto como ocurran cambio5 y se pueden planificar las reuniones sin necesidad de llamadas telefónicas.



Componentes de una red
Una red está formada, principalmente, por ordenadores con sus periféricos y por sus elementos de conexión.
Los ordenadores pueden desarrollar dos funciones distintas: de servidores o de estaciones de trabajo.
Un servidor es un ordenador que permite compartir sus periféricos con otros ordenadores. Éstos pueden ser de varios tipos y entre ellos se encuentran los siguientes:
Servidor de archivos: Mantiene los archivos en subdirectorios privados y compartidos para los usuarios de la red.
Servidor de impresión: Tiene conectadas una o más impresoras que comparte con los demás usuarios.
Servidor de comunicaciones: Permite enlazar diferentes redes locales o una red local con grandes ordenadores o miniordenadores.
Servidor de correo: Proporciona servicios de correo electrónico para la red.
Servidor web: Proporciona un lugar para guardar y administrar los documentos HTML que pueden ser accesibles por los usuarios de la red a través de los navegadores.
Servidor FTP: Se utiliza para guardar los archivos que pueden ser descargados por los usuarios de la red.
Servidor proxy: Se utiliza para monitorizar el acceso entre las redes. Cambia la dirección IP de los paquetes de los usuarios para ocultar los datos de la red interna a Internet y, cuando recibe contestación externa, la devuelve al usuario que la ha solicitado. Su uso reduce la amenaza de piratas que visual icen el tráfico de la red para conseguir información sobre los ordenadores de la red interna.
Según el sistema operativo de red que se utilice y las necesidades de la empresa, puede ocurrir que los distintos tipos de servidores residan en el mismo ordenador o se encuentren distribuidos entre aquéllos que forman parte de la red.
Así mismo, los servidores de archivos pueden establecerse como dedicados o no dedicados, según se dediquen sólo a la gestión de la red o, además, se puedan utilizar como estación de trabajo. La conveniencia de utilizar uno u otro va a estar indicada por la cantidad de estaciones de trabajo de que se vaya a disponer; cuanto mayor sea el número de ellas, más conveniente será disponer de un servidor dedicado.
No es recomendable utilizar un servidor no dedicado como estación de trabajo, ya que, en caso de que ese ordenador tenga algún problema, la totalidad del sistema puede dejar de funcionar, con los consiguientes inconvenientes y pérdidas irreparables que se pueden producir.
El resto de los ordenadores de la red se denominan estaciones de trabajo o clientes y desde ellos se faci lita a los usuarios el acceso a los servidores \ periféricos de la red.
Se entiende por elementos de conexión a los cables, tarjetas de red y otros equipos necesarios para conectar entre sí los ordenadores. Se describirán en apartados siguientes.
Clasificación de las redes
Existe multitud de redes, cada una de ellas con unas características específicas que las hacen diferentes del resto. Se pueden clasificar a las redes en distintos tipos. atendiendo a diversos criterios. Entre ellos se encuentran:
Transferencia de la información. En esta clasificación se tiene en cuenta la técnica empleada para transferir la información desde el origen al destino. En función de dicha técnica se pueden clasificar en:
Redes conmutadas (punto a punto). En este tipo de redes, un equipo origen (emisor) selecciona a otro con el que quiere conectarse (receptor) y la red es la encargada de habilitar una vía de conexión entre los dos equipos. Normalmente, pueden seleccionarse varios caminos candidatos para esta vía de comunicación que puede o no dedicarse exclusivamente a ella. Existen tres métodos para la transmisión de la información y la habilitación de la conexión:
Conmutación de circuitos. En este tipo de comunicación, se establece un camino único dedicado. La ruta que sigue la información se establece durante todo el proceso de comunicación, aunque existan algunos tramos de esa ruta que se compartan con otras rutas diferentes. Una vez finalizada la comunicación, es necesario liberar la conexión. Por su parte, la información se envía íntegra desde el origen al destino, y viceversa, mediante una línea de transmisión bidireccional.
Conmutación de paquetes. En este caso, el mensaje a enviar se divide en fragmentos, cada uno de los cuales es enviado a la red y circula por ésta hasta que llega a su destino. Cada fragmento, denominado paquete, contiene parte de la información a transmitir; información de control, además de los números o direcciones que identifican al origen y al destino.
Conmutación de mensajes: La información que envía el emisor se aloja en un único mensaje con la dirección de destino y se envía al siguiente nodo. Éste almacena la información hasta que hay un camino libre, dando lugar, a su vez, al envío al siguiente nodo, hasta que finalmente el mensaje llega a su destino.
Redes de difusión (multipunto). En este caso, un equipo o nodo envía la información a todos los nodos y el destinatario es el encargado de seleccionar y captar esa información. Esta forma de transmisión de la información está condicionada por la topología de la red, ya que ésta se caracteriza por disponer de un único camino o vía de comunicación, que debe ser compartido por todos los nodos o equipos.
Localización geográfica. La localización geográfica de la red es un factor a tener en cuenta a la hora de diseñarla y montarla. No es lo mismo montar una red para un aula de informática que interconectar las oficinas de dos sucursales que la misma empresa tiene instaladas en diferentes países. Sin embargo, esta clasificación muchas veces resulta confusa o arbitraria, ya que se basa en criterios vagamente definidos.
Subred o segmento de red. Un segmento de red está formado por un conjunto de estaciones que comparten el mismo medio de transmisión. El segmento está limitado en espacio al departamento de una empresa, un aula de informática, etc. Se considera al segmento como la red de comunicación más pequeña, y todas las redes de mayor tamaño están constituidas por la unión de varios segmentos de red.
Red de área local (LAN). Una LAN es un término vago que se refiere a uno o varios segmentos de red conectados mediante dispositivos especiales. Normalmente, se le da este calificativo a las redes cuya extensión no sobrepasa el mismo edificio donde está instalada (o incluso la misma habitación).
Red de campus. Una red de campus se extiende a otros edificios dentro de un mismo campus o polígono industrial. Generalmente, las diversas redes de cada edificio se conectan a un tendido de cable principal. Normalmente, la empresa es propietaria del terreno por el que se extiende el cable y tiene libertad para poner cuantos cables sean necesarios sin solicitar permisos especiales.
Red de área metropolitana: Generalmente, una MAN está confinada dentro de una misma ciudad y se haya sujeta a regulaciones locales. Puede constar de varios recursos públicos o privados, como el sistema de telefonía local, sistemas de microondas locales o cables enterrados de fibra óptica. Una empresa local construye y mantiene la red, y la pone a disposición del público. Puede conectar sus redes a la MAN y utilizarla para transferir información entre redes de otras ubicaciones de la empresa dentro del área metropolitana.
Red de área extensa (WAN): Las WAN y redes globales abarcan varias ciudades, regiones o países. Los enlaces WAN son ofrecidos, generalmente, por empresas de telecomunicaciones públicas o privadas que utilizan enlaces de microondas, fibra óptica o vía satélite. Actualmente, el método empleado para conectar una WAN utiliza líneas telefónicas estándar o líneas telefónicas modificadas para ofrece" un servicio más rápido.



Conceptos básicos de transmisión
Tipos de transmisión
Los tipos de transmisión de información que se van a ver a continuación han de tener en cuenta los siguientes apartados:
Señales empleadas para representar la información.
Intervalos de tiempo en los que el receptor toma la información recibida.
Sentido de la transmisión.
Número de cables empleados para realizar la comunicación.

Transmisión síncrona y asíncrona
Uno de los problemas que se plantean en la comunicación entre dos estaciones es la sincronización. Cuando el emisor envía una serie de pulsos que representan los dígitos binarios, éstos pueden llegar al receptor con una amplitud diferente de la que se enviaron.
Otro problema adicional con respecto a la sincronización se produce cuando el receptor necesita que el emisor le indique de alguna forma que le está enviando datos. Si el emisor envía "00000000", el receptor no tendrá forma de saber si el emisor no ha enviado nada o está enviando varios ceros.
Cada vez que se envía información, es necesario indicar al receptor, mediante alguna señal, que la información está disponible para su lectura. Además, también hay que decirle dónde finaliza el mensaje enviado, para que no tenga que seguir captando información innecesaria.
Existen dos técnicas principales para sincronizar la comunicación entre el emisor y el receptor: transmisión síncrona y transmisión asíncrona.
La transmisión síncrona consiste en la utilización de una señal especial que se sitúa al principio de cada dígito binario para indicar su comienzo, además de otra señal situada al final para indicar su finalización. Puesto que no se conoce cuándo llegará cada dígito, es necesario marcar cada uno de ellos para la transmisión. Este tipo de comunicación es más sencillo y se utiliza para comunicaciones de baja velocidad.
La transmisión asíncrona consiste en utilizar una señal periódica que indica los instantes en los que está accesible cada dígito. No utiliza señales de inicio y fin y, por lo tanto, resulta más rápida que la asíncrona. Normalmente, el emisor envía al receptor la señal de sincronización junto con la señal de datos (en cables diferentes, por el mismo cable o, incluso, en la misma señal).
Transmisión digital y analógica
Las señales analógicas se caracterizan por representar funciones continuas en el tiempo y pueden tomar cualquier valor de voltaje dentro de un rango que permita el medio de transmisión.
Las señales digitales se caracterizan por representar funciones discretas en el tiempo y solamente pueden tomar varios valores dentro de un rango. La señal más común es la binaria; la cual sólo puede tomar dos valores, aunque en transmisión de datos por cableado de red también son comunes las señales digitales con tres o cuatro valores diferentes. Este tipo de transmisión es mucho más rápido y fiable que la analógica, pero necesita de un medio de transmisión de mayor calidad.
Transmisión serie y paralelo
Una transmisión en serie consiste en la utilización de un único cable por el cual circula toda la información a transmitir, además de información de control, en forma de una sucesión de datos digitales o analógicos.
Por su parte, la transmisión en paralelo consiste en utilizar varias líneas de comunicación, lo que permite que la información en forma de datos y control pueda circular a la vez de forma independiente.
La ventaja principal de la transmisión en serie consiste en la reducción de costes al realizar la instalación del cableado, ya que éste es más barato, y cuanto mayor sea la distancia que separa a los equipos, mayor será el ahorro conseguido.
Como desventajas a la transmisión en serie se encuentra, fundamentalmente, la limitación en la velocidad, debido a la utilización de un único canal por el que deben circular los datos, además de la información de control. Además, es necesario utilizar algún tipo de señal que indique el tipo de datos enviados, su formato, etc., lo que aumenta la carga en la transmisión.
Un inconveniente importante de la transmisión de datos sobre un cable paralelo (sobre todo si es de una longitud considerable) reside en el hecho de que las señales que viajan a través de los diferentes hilos pueden sufrir un desfase importante (no llegan al destinatario todas a la vez), lo que requiere de dispositivos de control para garantizar la validez de la información cuando se lee en el extremo distante.
Transmisión simplex y duplex
La transmisión de datos utilizando un medio concreto puede realizarse en dos sentidos, de un extremo al otro. Dependiendo de esta característica, existen tres tipos de transmisión:
Símplex. La transmisión tiene lugar en un solo sentido y, si se desea transmitir en sentido contrario, será necesario poner otro cable.
Semidúplex. La transmisión puede tener lugar en ambos sentidos, pero no simultáneamente. Hay que utilizar señales de control para informar si el medio está ocupado o se puede transmitir.
Dúplex integral. La transmisión puede tener lugar en ambos sentidos, al mismo tiempo, siempre sobre el mismo cable.
Un medio de transmisión formado por varios cables, la mitad de ellos utilizados para transmitir en un sentido y el resto en el otro, se considera símplex (cada une de ellos por separado). Para que la comunicación se considere semidúplex o dúplex integral, es necesario que se realice en los dos sentidos sobre el mismo cable, o que se considere el grupo de cables completo .
Multiplexación
La multiplexación es el método que consiste en compartir un mismo medio de transmisión entre varias comunicaciones. Esta característica supone una mayor economía para las compañías telefónicas, puesto que cuesta prácticamente lo mismo instalar un cable de gran capacidad que uno de menor capacidad. La razón fundamental es que, para distancias relativamente cortas, el gasto principal se encuentra en la excavación de las zanjas y montaje de los conductos y no en el tipo de alambre utilizado.
Otra razón por la que se utiliza a menudo la multiplexación es que la mayoría de las comunicaciones no utilizan completamente toda la capacidad del medio. En otros casos, como, por ejemplo, las comunicaciones telefónicas, los usuarios hablan esporádicamente y resulta absurdo interconectarlos todos con todos, mediante cables dedicados.
Existen diferentes técnicas de multiplexación, aunque todas ellas se engloban en dos tipos fundamentales:
Multiplexación por división de tíempo: Se asigna a cada estación un turno de transmisión rotativo de forma que, durante un periodo de tiempo, transmite una estación; luego, la siguiente, etc. En este caso, cada estación utiliza 2 canal alternativamente, no de forma simultánea, aunque se tenga la percepción de que las transmisiones se realizan al mismo tiempo.
Multiplexación por división de frecuencia o de onda. Esta técnica emplea determinadas características de la señal y el medio por el que se transmite. Si se utilizan señales eléctricas u ondas electromagnéticas, a cada comunicación se le asigna una frecuencia diferente para transmitir de forma que éstas no se mezclan ni se interfieren. Si se utiliza la luz como señal de transmisión, a cada comunicación se le puede asignar una longitud de onda diferente.
Métodos de transmisión
A la hora de transmitir una señal por un medio de transmisión, se presentan dos alternativas:
Transmitir la señal tal y como es.
Alterar alguna de sus características.
Para distancias cortas (algunos metros o menos), medios de transmisión de gran capacidad o velocidades de transmisión bajas, se suelen transmitir los dígitos binarios como niveles de tensión. Sin embargo, si las distancias son largas, el medio no es de calidad o se requieren velocidades altas, es preciso adaptar la señal a enviar para que cumpla una serie de condiciones.
Entre los métodos de transmisión más comunes se encuentran: banda base y banda ancha.
Banda base
Es el método más común dentro de las redes locales. Transmite las señales en forma digital sin emplear técnicas de modulación; en cada transmisión se utiliza todo el ancho de banda y, por tanto, sólo puede transmitir una señal simultáneamente.
Está especialmente indicada para cortas distancias, ya que en grandes distancias se producirían ruidos e interferencias (pueden utilizarse repetidores que vuelven a regenerar la señal).
Los elementos de conexión que se pueden utilizar son: el cable de par trenzado y el cable coaxial de banda base.
Banda ancha
Consiste en transmitir las señales en forma digital, modulando la señal sobre ondas portadoras que pueden compartir el ancho de banda del medio de transmisión mediante multiplexación por división de frecuencia, es decir, actúa como si, en lugar de un único medio, se estuvieran utilizando líneas distintas.
El ancho de banda depende de la velocidad de transmisión de los datos.
Este método hace imprescindible la utilización de un módem para poder modular y demodular la información.
La distancia máxima puede llegar hasta los 50 km y permite usar, además, los elementos de conexión de la red para transmitir otras señales distintas de las propias de la red, como pueden ser señales de televisión o señales de voz.
Los elementos de conexión que se pueden utilizar son: el cable coaxial de banda ancha y el cable de fibra óptica.


Ruido y capacidad de transmisión de un canal
La transmisión de una señal supone su paso a través de un determinado medio: por ejemplo, un cable, el aire, etc. Debido a diferentes fenómenos físicos, la señal que llega al receptor difiere de la emitida por el transmisor.
Si la suma de todos los efectos producidos durante el viaje de una señal por su medio no crea una gran diferencia entre la señal enviada y la recibida, conseguiremos una transmisión libre de errores. Por el contrario, cuando la señal recibida difiera en exceso de la señal transmitida, el receptor puede interpretar inicialmente la información y decimos, entonces, que se produce un error de transmisión. Evidentemente, no todas las señales sufren los mismos efectos al atravesar los distintos medios; luego, cuando sea posible, se seleccionará cuidadosamente el tipo de de señal y medio que conduzca a las mejores condiciones de comunicación. Veamos ahora algunos de estos problemas de la transmisión.
Uno de los problemas de transmisión más importantes, sobre todo a largas distancias, es la atenuación. Ésta consiste en el debilitamiento o pérdida de amplitud de la señal recibida frente a la transmitida. Por ejemplo, sabemos que cualquier sonido se percibe con menor intensidad cuanto más alejados nos encontramos de la fuente que lo origina. La atenuación tiene un efecto proporcional a la longitud del cable: a partir de una determinada distancia, la señal recibida es tan débil que no se puede reconocer mensaje alguno.
Para paliar el efecto de la atenuación, se pueden incorporar en el camino de la señal unos dispositivos activos, cuya función es amplificar la señal en la misma medida en que acaba de ser atenuada por el medio, con lo que, así, se consigue recuperar la señal para que pueda alcanzar más distancia. Estos dispositivos tienen nombres diferentes: se utilizan repetidores que son capaces de restaurar la señal digital original (amplificándola y eliminando el ruido añadido); para señales analógicas, se utilizan, así mismo, los amplificadores.
La atenuación no sólo es función de la distancia, sino también de la frecuencia, por lo que no afecta por igual a todos los armónicos que representan la señal; los de mayores frecuencias sufren una mayor atenuación.
A este fenómeno se le conoce como distorsión de atenuación y produce, en Ias señales con diferentes componentes frecuenciales, una atenuación distinta para cada armónico, lo que origina que la señal recibida tenga una forma diferente de la transmitida, amén de una menor amplitud. Como la señal recibida se ha deformado con respecto a la transmitida, decimos que se ha distorsionado.
Otro fenómeno muy común en comunicaciones es la diafonía. Consiste en le interferencia mutua que se producen dos canales de cobre que se encuentran juntos. Cada una de esas señales genera interferencias en el otro cable y hace que parte de la señal se "introduzca" y se sume con la otra, a causa de la inducción electromagnética. En una conversación telefónica, esto se observa como una segunda conversación que se oye de fondo mezclada con la nuestra. Este fenómeno también se produce cuando las señales circulan por un medio compartido y sus frecuencias en multiplexación están muy próximas entre sí.
Otra fuente de problemas en la transmisión es el denominado ruido impulsivo. Consiste en pulsos irregulares de corta duración y, relativamente, de gran amplitud, que son provocados por inducciones, como consecuencia de con mutaciones electromagnéticas. Este tipo de ruido se produce por causas variadas que suelen ser externas al medio de transmisión. Podemos compararlo a las interferencias en un receptor de radio cuando se aproxima una motocicleta, o también al encendido de determinados aparatos en un domicilio (como puede ser una lavadora o un frigorífico) que conectan y desconectan sus motores continuamente).
Componentes de comunicaciones
Medios de transmisión
El medio de transmisión constituye el soporte físico a través del cual el emisor y receptor pueden comunicarse en un sistema de transmisión de datos. Distinguimos dos tipos de medios:
Guiados. Este tipo de medios conduce las ondas a través de un campo físico (cables).
No guiados: Este tipo de medios proporciona un soporte para que las ondas se transmitan, pero no las dirige (como es el aire).
En ambos casos, la transmisión se realiza por medio de ondas electromagnéticas.
La naturaleza del medio, junto con la de la señal que se transmite a través de él, constituye un factor determinante de las características y la calidad de la transmisión. En el caso de medios guiados, es él mismo el que determina las limitaciones de la transmisión. Así, cada uno de los medios que se verán en los apartados entes cumple unas determinadas características en cuanto a:
Velocidad de transmisión de los datos.
Ancho de banda que puede soportar.
Espacio entre repetidores.
Fiabilidad en la transmisión.
Coste.
Facilidad de instalación.
Par sin trenzar
Este medio de transmisión (también llamado cable paralelo) está formado por dos hilos de cobre paralelos recubiertos de un material aislante (plástico). Este tipo de cableado ofrece muy poca protección frente a interferencias. Normalmente, se utiliza como cable telefónico para transmitir voz analógica y las conexiones se realizan mediante un conector denominado RJ-11. Es un medio semidúplex, ya que la información circula en los dos sentidos por el mismo cable, pero no se realiza al mismo tiempo.
El cable paralelo se utiliza fundamentalmente en tendido eléctrico de alta tensión y también para la transmisión de datos a corta distancia (apenas unos metros), ya que las interferencias afectan mucho a este tipo de transmisiones. Según los estándares de cableado estructurado, a este tipo de cable también se le conoce como cable de categoría 1.
Par trenzado
El par trenzado consiste en dos cables de cobre aislados, normalmente de 1 mm de espesor, enlazados de dos en dos de forma helicoidal. La forma trenzada del cable se utiliza para reducir la interferencia eléctrica con respecto a los pares cercanos y a otras interferencias procedentes del exterior.
En un par trenzado, normalmente uno de los cables está marcado con una línea longitudinal que indica que se utiliza como masa. Esto es debido a que, a diferencia del cable paralelo, el cable de par trenzado se utiliza también para la transmisión digital, y es necesario seguir el orden en ellos cuando se engasta al conectar. Utiliza un conectar RJ-45.
Los pares trenzados suelen agruparse en cables de mayor grosor, recubiertos por un material aislante, ya que su transmisión suele ser símplex. Dependiendo de la forma en la que se agrupan estos pares, tenemos varios tipos:
Pares trenzados no apantallados (UTP): Son los más simples y no tienen ningún tipo de pantalla conductora. Su impedancia característica es de 100 W y es muy sensible a interferencias. El par trenzado UTP categoría 5 está recubierto de una malla de teflón que no es conductora.
Pares trenzados apantallados individualmente (STP): Es igual que el anterior. pero en este caso se rodea a cada par de una malla conductora, que se conecta a las diferentes tomas de tierra de los equipos. Son los que poseen una mayor inmunidad al ruido.
Pares trenzados apantallados: Es un cable de pares que posee una pantalla conductora global en forma trenzada. Mejora la protección frente a interferencias y su impedancia característica es de 120 W.

Así mismo, dependiendo del número de pares que tenga un cable, el número de vueltas por metro que posee su trenzado y los materiales utilizados, los estándares de cableado estructurado clasifican a los tipos de pares trenzados por categorías:
Categoría 1: Par sin trenzar paralelo utilizado para voz solamente.
Categoría 2: Par trenzado UTP. Utilizado para enviar datos a 4 Mbps.
Categoría 3: Par trenzado UTP con impedancia de 100 ohm y características eléctricas que soportan frecuencias de transmisión de hasta 16 Mhz. Utilizado para enviar datos a 10 Mbps.
Categoría 4: Par trenzado UTP con impedancia de 100 ohm y características eléctricas que soportan frecuencias de transmisión de hasta 20 Mhz. Utilizado para enviar datos a 20 Mbps (16 Mbps con Token Ring).
Categoría 5: Par trenzado UTP con impedancia de 100 ohm y características eléctricas que soportan frecuencias de transmisión de hasta 100 Mhz. Utilizado para enviar datos a 100 Mbps.
Categoría 5e: Par trenzado STP con impedancia de 100 ohm y características eléctricas que soportan frecuencias de transmisión de hasta 100 Mhz. Utilizado para enviar datos a más de 100 Mbps.
Categoría 6: Par trenzado STP con impedancia de 100 ohm y características eléctricas que soportan frecuencias de transmisión de hasta 100 Mhz. Uti I izado para enviar datos a más de 250 Mbps.
Categoría 7: Par trenzado STP con impedancia de 100 ohm y características eléctricas que soportan frecuencias de transmisión de hasta 100 Mhz. Utilizado para enviar datos a más de 1.000 Mbps.
EJEMPLO 8.1
Los pasos que deben seguirse para montar un conectar RJ-45 macho son los siguientes:
Introducir la funda protectora del conector por el extremo del cable. Si se va a montar un cable cruzado, utilizar un color distinto para las fundas que resulte fácilmente identificable.
Eliminar un fragmento de la funda protectora del extremo del cable, utilizando una herramienta de corte (por ejemplo, como la de la figura siguiente). Se deberá retirar una longitud suficiente (aproximadamente 4 cm).
Retirar hacia atrás la pantalla protectora y enrollar sobre ésta el hilo de cobre que va junto a la pantalla (si es que el cable tiene este hilo).
Destrenzar los pares estirándolos con los dedos, manteniéndolos todos juntos. Aprovechar este paso para colocar los hilos en orden de colores (según la tabla siguiente).

Cortar los extremos de los hilos para que queden todos a la misma altura. Es muy importante que todos queden a la misma altura o, de lo contrario, algunos de ellos pueden quedar desconectados.
Introducir todos los hilos en el conectar, haciendo fuerza para asegurar que llegan hasta el fondo. Así mismo, asegurar que la pantalla se introduce ligeramente en el conectar para que haga contacto con el chasis metálico (en caso contrario, extraer el cable y cortar los hilos hasta conseguirlo).
Una vez que se ha comprobado que la pantalla hace contacto con el conector y que todos los hilos llegan hasta el fondo, utilizar la herramienta de engaste que se ve en la figura anterior (denominada crimpadora o engastadora) para fijar el conectar al cable
Finalmente, colocar la funda protectora del conector.
Los conectoresRJ-45 hembra aparecen en enchufes de pared y paneles de distribución (véase la figura siguiente).
Para el montaje de estos conectores, siga estos pasos:
Eliminar Un fragmento de la funda protectora del extremo del cable, utilizando una herramienta de corte (por ejemplo, como la de la figura descrita en el ejemplo anterior). Se deberá retirar una longitud suficiente (aproximadamente 4 cm).
Retirar hacia atrás la pantalla protectora y colocar el cable por esta parte para que haga contacto con la conexión a tierra. Enrollar el hilo de cobre que va junto a la pantalla (si es que el cable lo tiene) a esa conexión.
Doblar el terminal de tierra hasta que se sitúe en el interior del conectar.
CoIocar los hilos en su. posición según los colores especificados en el conectar y destrenzar los pares lo mínimo posible.
Introducir cada hilo en su hueco correspondiente y engastarlos utilizando una herramienta de impacto (como la que se muestra en la figura siguiente).
Se deben engastar todos los pares al conector. Hay algunos tipos de conectores que no necesitan herramientas de engaste/ sino que su montaje se realiza ensamblando varias piezas del componente (véase la figura de la derecha) .
Colocar la carcasa protectora del conector y montarlo sobre el enchufe de pared.
Cable coaxial
El cable coaxial es otro medio típico de transmisión. Este cable tiene mejor blindaje que el par trenzado/ por lo que puede alcanzar velocidades de transmisión mayores y los tramos entre repetidores o estaciones pueden ser más largos.
El cable coaxial consta de un alambre de cobre duro en su parte central por donde circula la señal/ el cual se encuentra rodeado por un material aislante. Este material está rodeado por un conductor cilíndrico presentado como una malla de cobre trenzado que hace de masa. El conductor externo está cubierto por una capa de plástico protector. Esta construcción le confiere un elevado ancho de banda y excelente inmunidad al ruido.
La velocidad de transmisión de este cable depende de su longitud y en cables de 1 km es posible alcanzar entre 1 y 2 Gbps. Los cables coaxiales solían utilizarse en el sistema telefónico, pero ahora se les ha reemplazado por fibra óptica en rutas de largo recorrido y tranca les de gran ancho de banda. Sin embargo, el cable coaxial todavía se utiIiza para la televisión por cable y en redes de área local.
Hay dos tipos fundamentales de cable coaxial:
El cable coaxial de banda base (50 ohms). Se utiliza en la transmisión digital. El ancho de banda máximo que se puede obtener depende de la longitud del cable. Los cables coaxiales se emplean mucho en redes de área local y para transmisiones de largas distancias, aunque utilizar cables de mayor longitud hace reducir la velocidad de transmisión. Existen dos tipos:
Coaxial grueso. Comenzó a utilizarse en redes locales y, hoy en día, sólo se emplea para realizar la estructura trancal de distribución de la red. Hay dos tipos:
RG-100: Es el más utilizado. Su núcleo es de 2,6 mm, mientras que la malla es de 9,5 mm (dando lugar a un cable de 1 cm de diámetro, aproximadamente).
Posee una secuencia de capas trenzadas que protegen mejor de las interferencias electromagnéticas. Su núcleo es de 3,7 mm, mientras que la malla es de 13,5 mm (dando lugar a un cable de 1,5 cm de diámetro).
Coaxial fino: Dada su flexibilidad, es más fácil de instalar, aunque es más caro y posee menor inmunidad frente a interferencias. Posee un núcleo de 1,2 mm y una malla de 4,4 mm, lo que le hace un cable de aproximadamente 0,5 cm. Existen varios tipos de cables coaxiales finos, pero el más utilizado es el RG-58 (en España se suele nombrar como RG-58/U).



Cable coaxial de banda ancha: Se utiliza para la transmisión analógica, comúnmente para el envío de la señal de televisión por cable. Dado que las redes de banda ancha utilizan la tecnología patrón para envío de señales de televisión por cable, los cables pueden emplearse para aplicaciones que necesiten hasta los 300 Mhz (y en algunos casos hasta los 450 Mhz) y extenderse a longitudes que alcanzan casi los 100 km, gracias a la naturaleza analógica de la señal, que es menos crítica que la digital. Un cable típico de 300 Mhz, por lo general, puede mantener velocidades de transmisión de datos de hasta 150 Mbps.
Los conectores que se utilizan para el cableado coaxial aparecen representados únicamente en las figuras 8.4 y 8.5. Cuando se utiliza cable coaxial delgado, las conexiones se realizan de forma más sencilla. Cada estación se enchufa a través de una tarjeta de red a un conector BNC en T. Éstos, a su vez, están enlazados con el el coaxial mediante los conectores BNC soldados a él. Finalmente, es necesario que existan terminadores BNC en los extremos (para cerrar el circuito), compuesto de una resistencia que tiene la misma impedancia que el cable.
Las conexiones en cable coaxial grueso son un poco más complejas, ya que existe un dispositivo llamado transceptor que es el que conecta la estación con el cable y es aéreo (en el cable coaxial delgado va integrado en la propia tarjeta). Le conexión entre la estación y el transceptor se hace a través de un cable digital llamado cable transceptor, que utiliza unos conectores llamados AUI macho y Al, hembra. Los conectores machos serie-N están soldados al cable coaxial y se unen a los transceptores para formar la red. En los extremos también deben conectarse terminadores serie-N para cerrar el circuito.
En una misma red se puede utilizar cable coaxial delgado y grueso y, para ello, se necesitan adaptadores. Éstos conectan, por un extremo, un cable coaxial delgado (con un BNC macho o hembra) y, por el otro, el coaxial grueso (un conectar serie-N macho o hembra). Puesto que estas redes utilizan los mismos métodos y señales para transmitir, no es necesario utilizar dispositivos adicionales que realicen adaptación de protocolos.
En comparación con el par trenzado, el cable coaxial es más inmune a interferencias, lo que permite unas longitudes mayores de cable. El par trenzado util iza la transmisión balanceada, consistente en que cada par forma un circuito cerrado de transmisión, y por ellos circula la misma corriente, pero en sentidos opuestos. En un cable coaxial se utiliza la transmisión no balanceada porque la señal circula por el núcleo de cobre y vuelve a tierra.
Fibra óptica
La fibra óptica está basada en la utilización de las ondas de luz para transmitir información binaria. Un sistema de transmisión óptico tiene tres componentes:
La fuente de luz: Se encarga de convertir una señal digital eléctrica (ceros y unos) en una señal óptica. Normalmente, se utiliza un pulso de luz para representar un 1 y la ausencia de luz para representar un 0, o modificando su longitud de onda.
El medio de transmisión: Se trata de una fibra de vidrio ultradelgada que transporta los pulsos de luz.
El detector: Se encarga de generar un pulso eléctrico en el momento en el que la luz incide sobre él.
Al conectar una fuente de luz en un extremo de una fibra óptica y un detector en el otro, tenemos un sistema de transmisión de datos símplex que acepta una señal eléctrica, la convierte y transmite en pulsos de luz y, después, reconvierte la salida a una señal eléctrica en el extremo del receptor.

La fibra óptica está cuidadosamente diseñada para transportar señales de luz. Se trata de un cilindro de pequeña sección flexible (diámetro del orden de 2 a 125 '11m) por el que se transmite la luz, recubierto de un medio con un índice de refracción menor que el del núcleo a fin de mantener toda la luz en su interior. A continuación, viene una cubierta plástica delgada para proteger el revestimiento e impedir que cualquier rayo de luz del exterior penetre en la fibra. Finalmente, varias fibras suelen agruparse en haces protegidos por una funda exterior.
Los cables de fibra óptica pueden transmitir la luz de tres formas diferentes:
Monomodo: En este caso, la fibra es tan delgada que la luz se transmite en línea recta. El núcleo tiene un radio de 10 mm y la cubierta, de 125 mm.
Multimodo: La luz se transmite por el interior del núcleo incidiendo sobre su superficie interna, como si se tratara de un espejo. Las pérdidas de luz, en este caso, también son prácticamente nulas. El núcleo tiene un diámetro de 100 mm y la cubierta, de 140 mm.
La luz se propaga por el núcleo mediante una refracción gradual de la luz. Esto es debido a que el núcleo se construye con un índice de refracción que va en aumento desde el centro a los extremos. Suele tener el mismo diámetro que las fibras multimodo.
Con la tecnología actual, la fibra óptica permite una velocidad de transmisión experimental en el laboratorio que sobrepasa los 50.000 Gbps (50 Tbps). El límite práctico se encuentra cerca de 1 Gbps, y es debido a la incapacidad que los dispositivos tienen para convertir con mayor rapidez las señales eléctricas a ópticas, y al revés (tanto los emisores como los detectores).


Frente a la velocidad de transmisión tan elevada que tiene la fibra, el inconveniente principal es su gran coste. No tiene tanto que ver con el precio por metro de fibra, sino que más bien está relacionado con el montaje. El cable de fibra óptica no se puede doblar demasiado, y las conexiones son muy costosas y complicadas. Muchas veces sale más rentable desechar varios kilómetros de fibra antes que hacer una unión de varios tramos.
Existen tres formas de unir dos cables de fibra óptica:
Utilizando conectores: Cada tramo de fibra puede venir de fábrica con enchufes en los extremos. Esta forma de conectarlos es muy sencilla, pero adolece de una pérdida de entre un 10 Y un 20% de la luz que circula a través de la conexión.
Realizando empalmes de forma mecánica. Se realiza un corte cuidadoso del extremo de cada tramo y se unen ambos mediante una manga especial que los sujeta en su lugar. Se puede mejorar la alineación haciendo pasar luz por la unión y efectuando pequeños ajustes hasta alcanzar su posición idónea. Los empalmes mecánicos resultan de una pérdida de luz en torno al 0%.
Tendiendo los dos extremos: Se realiza una fusión de los dos tramos para formar una conexión sólida. Este empalme es casi tan bueno como una fibra de hilado único, pero, aun así, existe un poco de atenuación.
Las ventajas que tiene el uso de la fibra óptica frente a los cables de cobre convencionales son las siguientes:
Puede manejar anchos de banda mucho más grandes que el cobre.
Debido a su baja atenuación, sólo se necesitan repetidores cada 30 km (en el cobre se necesitan repetidores cada 5 km).
No es interferida por las ondas electromagnéticas.
Es delgada y ligera, sobre todo comparada con cables de cobre de igual capacidad de transmisión.
Las fibras no tienen fugas y es muy difícil intervenirlas. Hay que cortar el cable o desviar parte de la luz, tarea nada sencilla que requiere el uso de costosos dispositivos.
Medios inalámbricos
La comunicación inalámbrica (que no necesita de ningún tendido de cable entre el emisor y el receptor) resulta indispensable para aquellos usuarios móviles que necesitan estar continuamente "en línea". También es de mucha utilidad cuando resulta muy costoso tender hilos de comunicación en zonas geográficas de difícil acceso.
Las comunicaciones inalámbricas consisten en el envío y recepción de electrones (o fotones) que circulan por el espacio libre (el aire). Estos electrones viajan en forma de ondas electromagnéticas que se propagan del mismo modo que las ondas del agua en un estanque. La distancia que separa dos "picos" o máximos consecutivos de esas ondas se llama longitud de onda, y se designa universalmente con la letra griega Iambda. Hay que decir que, para las ondas electromagnéticas que circulan por el aire, no se utiliza la medida del periodo de la señal.
Dependiendo de la frecuencia de la señal (y por extensión, de su longitud de onda), existen diferentes tipos de enlaces inalámbricos, exhibiendo diferentes propiedades. Éstos se explican en los apartados siguientes.
Ondas de radio
Las ondas de radio son fáciles de generar, pueden recorrer largas distancias, penetran en los edificios sin problemas y viajan en todas direcciones desde la fuente emisora. Sin embargo, por la capacidad que tienen de viajar a largas distancias, es necesario realizar un control estricto por parte de los gobiernos para que las diferentes transmisiones no se interfieran entre sí.
Existen dos tipos de ondas de radio:
Ondas de radio de baja frecuencia. Se caracterizan porque en su recorrido siguen la curvatura de la Tierra y pueden atravesar con facilidad los edificios. Sin embargo, su ancho de banda sólo permite velocidades de transmisión bajas.
Ondas de radio de alta frecuencia. Estas ondas tienden a ser absorbidas por la Tierra, por lo que deben ser enviadas a la ionosfera, donde son reflejadas y devueltas de nuevo, con lo que se consigue transmitir a largas distancias.
Microondas
Además de su aplicación en hornos, las microondas permiten transmisiones tanto terrestres como con satélites. Sus frecuencias están comprendidas entre 1 y 10 Ghz y posibilitan velocidades de transmisión aceptables, del orden de 10 Mbps. Por encima de los 1.000 hz, las mieroondas viajan en línea recta y, por tanto, se pueden enfocar en un haz de pequeña anchura. Concentrar toda la energía en un haz pequeño con una antena parabólica produce una relación señal/ruido muy alta es decir, la amplitud del ruido puede ser muy pequeña), pero las antenas del emisor y del receptor deben estar muy bien al i neadas entre sí.
A diferencia de las ondas de radio, las microondas no atraviesan bien los obstáculos, de forma que es necesario situar antenas repetidoras cuando queremos realizar comunicaciones a largas distancias. En el caso de las comunicaciones por 5atélite, hay que tener en cuenta que siempre existe un pequeño retardo en las transmisiones, debido a que la señal tarda aproximadamente 0,3 segundos en llegar y volver. Para algunas aplicaciones de envío y recepción de datos, este tiempo de espera puede resultar inaceptable.
Ondas infrarrojas
Las ondas infrarrojas y milimétricas se utilizan mucho para la comunicación de corto alcance, en controles remotos de televisores, grabadoras de vídeo, estéreo, etc. También es frecuente encontrar un puerto de comunicación infrarroja en los ordenadores portátiles. Estos controles son relativamente direccionales, baratos y fáciles de construir, pero tienen un inconveniente importante: no atraviesan los objetos sólidos. Este inconveniente también resulta a veces una ventaja en el sentido de que ofrecen más seguridad, precisamente porque la comunicación no atraviesa las paredes de un edificio. Además, no es necesario obtener licencia re gobierno para operar un sistema de transmisión infrarrojo.
Ondas de luz
Es posible comunicar dos edificios mediante un láser montado en cada azotea. La señalización óptica coherente mediante láser es unidireccional, de modo que cada edificio necesita un emisor láser y un receptor. Este esquema ofrece un coste muy bajo, es fácil de instalar y posee una elevada velocidad de transmisión. Por su parte, las desventajas de este sistema son:
Es difícil colocar correctamente los emisores y los receptores.
El rayo láser no puede penetrar la lluvia y la niebla densa.
Las corrientes de convección (aire caliente que sube del edificio) interfieren también en el haz de láser.
Instalación de redes inalámbricas
Aunque las redes inalámbricas no forman parte del sistema de cableado estructurado, son muy utilizadas, hoy en día, para reducir el cableado a instalar y permitir la conexión de dispositivos móviles. Debido a que la mayoría de las empresas ya disponen de instalaciones de cableado, los sistemas inalámbricos se suelen instalar en coexistencia con ellos.
Las redes inalámbricas están comenzando a implantarse hoy en día, ya que se ha producido una bajada en los costes y un aumento en el rendimiento. Los nuevos estándares IEEE 802.11 a e IEEE 802.11 g permiten velocidades de transmisión elevadas, a la vez que están más protegidos de interferencias.
En una red inalámbrica existen dos tipos de dispositivos:
Adaptadores de red inalámbricos: Son los dispositivos que comunican las estaciones con la red. Normalmente, se trata de tarjetas ISA, PCI o PCMClA.
Puntos de acceso. Son dispositivos de tipo puente que comunican la red inalámbrica con la red de cable. En el mercado existen dispositivos simples o dispositivos que combinan cierta funcionalidad adicional (por ejemplo, pueden ser también concentradores, conmutadores o encaminadores).
Las redes inalámbricas trabajan con ondas de radio, por lo que pueden comunicar dispositivos que se encuentren separados por tabiques, techos o suelos. Sin embargo, las señales suelen perder energía conforme atraviesan los objetos, por lo que la localización de los dispositivos tiene gran importancia para que se comuniquen correctamente. Por esta razón, cuando se instala una red inalámbrica, se intenta que los puntos de acceso se encuentren en la mejor ubicación posible para su comunicación con los adaptadores.
En la instalación de los puntos de acceso, hay que estudiar la dificultad que va a tener la señal para llegar a los distintos lugares donde se van a encontrar los adaptadores de red (es decir, los equipos). Por ejemplo, no es recomendable que entre un punto de acceso y una estación existan muchas paredes (cinco ya es un valor muy elevado). Una localización situada cerca del centro del edificio para el punto de acceso es una buena decisión, aunque haya que instalar una línea de cable de varios metros para que lo comunique con el armario de distribución más cercano. Si el punto de acceso dispone de capacidad de encaminamiento que se quiere aprovechar, entonces la instalación del cableado se podría complicar, ya que hay que instalar otro cable desde el dispositivo al armario de comunicaciones para la conexión WAN.
Tarjetas de red
La tarjeta de red actúa como la interfaz física o conexión entre el ordenador y el cable de red.
Se colocan en una ranura de expansión de cada ordenador de la red. Después de que la tarjeta ha sido instalada, se conecta el cable de red a su puerta para hacer la conexión física actual entre los ordenadores y el resto de la red.
Una tarjeta de red realiza las siguientes acciones:
Prepara los datos del ordenador para su envío a la red: Los datos se mueven en el ordenador, a través del bus de datos, en forma de bits en paralelo (los viejos buses, como los usados en el original IBM-PC, se conocían como buses de 8 bits, ya que sólo podían mover 8 bits simultáneamente; el IBM PC-AT usaba un bus de 16 bits; actualmente, los ordenadores usan buses de 32 bits) y, cuando llegan a la tarjeta, los transmite en forma de bits en serie.
Envía dichos datos a la red indicando su dirección para distinguirlos de las otras tarjetas de la red (la dirección de red son 12 dígitos hexadecimales y son determinadas por el IEEE; el comité asigna bloques de direcciones a cada fabricante de tarjetas; los fabricantes introducen esas direcciones en chips en las tarjetas con un proceso conocido como burning, nacimiento de la dirección en la tarjeta; con este proceso, cada tarjeta, y por lo tanto cada ordenador, tiene una dirección física única en la red).
Controla el flujo de datos entre el ordenador y el sistema de cableado.
Recibe los datos entrantes en serie del cable y los traduce en bytes en paralelo que el ordenador pueda comprender.
Antes de que la tarjeta emisora envíe los datos a la red, se establece un diálogo electrónico con la tarjeta receptora para que ambas se pongan de acuerdo en lo siguiente:
El tamaño máximo de los paquetes de datos a ser enviados.
El total de datos a ser enviados antes de la confirmación.
El intervalo de tiempo entre cada envío de paquetes de datos.
El tiempo a esperar antes de que sea enviada la confirmación.
Cuántos datos se pueden almacenar en la memoria de cada tarjeta.
La velocidad de transmisión de los datos.
Cada tarjeta indica a la otra sus parámetros y acepta (o se adapta) a los parámetros de la otra. Cuando todos los detalles de la comunicación han sido determinados, las dos tarjetas empiezan a enviar o a recibir datos.







Opciones de Configuración
Las tarjetas de red tienen opciones configurables que deben ser establecidas para que funcionen correctamente (aunque, actualmente, con funcionalidad PIug and Play se puede cambiar la configuración de un ordenador sin intervención del :usuario):
Interrupción.
Dirección de entrada/salida.
Dirección de memoria base.
Conector.

Algunas veces, es posible especificar las configuraciones de las tarjetas por software pero, otras veces, ha de ser mediante puentes (jumpers) o/y conmutadores (switches) .
Interrupción
Las líneas de petición de interrupción (IRQ) son señales electrónicas por las que los dispositivos, como puertos de entrada o salida, teclado, unidades de disco y tarjetas de red, pueden enviar peticiones de servicio al procesador del ordenador.
Las líneas de petición de interrupción están construidas en el hardware interno del ordenador y tienen asignados diferentes niveles de prioridad para que el procesador pueda determinar la importancia relativa de las peticiones de servicio entrantes.
Cuando la tarjeta de red envía una petición al ordenador, utiliza una interrupción. Cada dispositivo del ordenador debe usar una IRQ diferente y debe ser especificada cuando se configura cada dispositivo.
Dirección de entrada/salida
La dirección de entrada/salida (base l/O port) es el canal de comunicación entre la tarjeta de red y el procesador.
Cada dispositivo hardware en el sistema debe tener un número diferente (en formato hexadecimal) de dirección de entrada/salida y debe ser especificado cuando se configura cada dispositivo.
Dirección de memoria base
La dirección de memoria base (Base Memory Address) identifica un lugar en la memoria del ordenador. Esta localización es usada por la tarjeta de red como un buffer para almacenar las tramas de datos entrantes y salientes. Esto se llama, a veces, la dirección de comienzo o arranque de RAM.
A menudo, la dirección de memoria base para una tarjeta de red es D8000. Es necesario seleccionar una dirección que no esté siendo usada por otro dispositivo.
Algunas tarjetas contienen un ajuste que permite especificar el total de memoria para almacenar tramas de datos ({rames). Especificando más memoria, se proporcionan mejores prestaciones, pero deja menos memoria disponible para otros J60S.
Cada tarjeta de red puede tener varios conectores integrados (BNC, RJ-45 o AUI) • si no se realiza automáticamente, será necesario determinar el que se desea utilizar.


Repetidores y amplificadores
Cuando las distancias entre estaciones son muy elevadas y los efectos de la atenuación resultan intolerables, es necesario utilizar dispositivos que restauren la señal a su estado original y permitan que el receptor la recoja en condiciones. Estos dispositivos son los repetidores y los amplificadores.
Los repetidores se utilizan en transmisión digital, mientras que los amplificadores se emplean en analógica. Tanto unos como otros están formados por una conexión de entrada que recibe la señal como una conexión por donde sale la señal reconstruida.
Los repetidores y amplificadores también están limitados en varios aspectos. En primer lugar, los tramos de cable que los separan tienen siempre una longitud máxima, ya que, si la señal les llega demasiado atenuada, no podrán reconstruirla correctamente. En segundo lugar, una señal no puede atravesar un número infinito de amplificadores, ya que se trata de dispositivos imperfectos que le dan a la señal pequeños componentes de ruido. Estos componentes se multiplican conforme la señal los va atravesando, hasta que ésta se deforma completamente. Esta característica afecta en menor grado a las señales digitales y a los repetidores.
Concentradores de cableado
Una red local en bus utiliza solamente tarjetas de red en las estaciones y cableado coaxial para interconectarlas (además de los conectores). Sin embargo, este método complica el mantenimiento de la red, ya que, si falla alguna conexión, toda la red deja de funcionar y el técnico deberá comprobar uno por uno todos los cables y todas las conexiones porque no se sabe de antemano cuál falló.
Para impedir estos problemas, determinadas redes locales utilizan concentradores de cableado (hub), también llamados repetidores multipuerto, para realizar las conexiones de las estaciones. En vez de distribuir las conexiones, el concentrador las centraliza en un único dispositivo, manteniendo indicadores luminosos de


su estado e impidiendo que una de ellas pueda hacer fallar a toda la red. A un técnico encargado de una red de 300 estaciones se le simplificará mucho su trabajo utilizando este tipo de dispositivos. Un inconveniente que plantea el uso de concentradores es que, si éstos fallan, el funcionamiento de la red se verá comprometido.
Existen dos tipos de concentradores de cableado:
Concentradores pasivos. Actúan como un simple concentrador, cuya función principal consiste en interconectar toda la red.
Concentradores activos. Además de su función básica de concentrador, también amplifican y regeneran las señales recibidas antes de ser enviadas.
Los concentradores de cableado tienen dos tipos de conexiones: para las estaciones y para unirse a otros concentradores y así aumentar el tamaño de la red. Cada estación se conecta directamente al concentrador por medio del cable correspondiente y, si ese enlace falla, la red sigue funcionando y sólo queda aislado el ordenador afectado. La topología de la red será en este caso de estrella, con el concentrador de cableado como centro de ella.
A la topología formada por la distribución del cableado de la red se le llama topología física.
Los concentradores de cableado se clasifican dependiendo de la manera en que internamente realizan las conexiones y distribuyen los mensajes. A esta característica se le llama topología lógica; tenemos dos tipos principales:
Concentradores con topología lógica en bus (HUB): Estos dispositivos hacen que la red se comporte como un bus, enviando las señales que les llegan por todas las salidas conectadas.
Concentradores con topología en anillo (MAU): Éstos, por su parte, se comportan como si la red fuera un anillo, enviando la señal que les llega por un puerto al siguiente.
La conexión de un HUB con otro HUB se realiza a través de unos enlaces especiales denominados cruzados (que suelen corresponderse con el primer puerto o con el último, dependiendo del modelo y el fabricante). Normalmente, se conecta ese puerto manteniendo activado el botón crossover(si es que el concentrador dispone de él) con otro puerto normal del otro HUB (que no sea el primero o el último). En algunos casos, el puerto de cruce del HUB no dispone de ese botón y siempre está activo (es decir, no se puede utilizar para una conexión normal con las estaciones) y suele marcarse con el nombre uplink. Hay que tener en cuenta que, si se conectan dos HUB a través de los puertos de cruce activos, el enlace no es cruzado y, por lo tanto, no hay conexión (dos cruces en el mismo enlace forman una conexión normal). Las figuras 8.9 y 8.10 muestran gráficamente estas conexiones, que se pueden realizar de dos formas: en cascada o en estrella.
Además de los puertos de cruce, se pueden utilizar latiguillos cruzados para realizar conexiones entre concentradores. En este caso, es posible conectarlos a cualquiera de los puertos del HUB (que no sean cruzados, ya que formarían un enlace normal).
La conexión de una MAU con otra se realiza a través de dos puertos especiales etiquetados "RI" y "RO" (entrada del anillo y salida del anillo, respectivamente), La entrada de una debe conectarse con la salida de la otra, y la última con la primera, como muestra la figura 8.11.
Al contrario que las conexiones entre HUB, los enlaces que conectan las MAU son siempre paralelos (es decir, enlaces normales que también sirven para conectar estaciones). Sin embargo, los puertos de entrada y salida del anillo en estos dispositivos no se pueden utilizar para conectar estaciones.

Conmutadores
Un conmutador (switch) es otro dispositivo que permite la interconexión de redes a nivel de enlace de datos (para obtener más información sobre los niveles 051, véase el capítulo correspondiente). A diferencia de los puentes, los conmutadores sólo permiten conectar LAN que utilizan los mismos protocolos (a nivel físi-
Enrutadores

paquetes que recibe hacia su destino. Para ello, al recibir un paquete, debe extraer de éste la dirección del destinatario y decidir cuál es la mejor ruta, a partir del algoritmo y tabla de encaminamiento que utilice. Además, como es lógico, un encaminadar dispone de sus propias direcciones a nivel de red.
Al funcionar en un nivel superior al del conmutador (para obtener más información sobre los niveles 051, véase el capítulo correspondiente), el encaminador posee más facilidades que permiten la configuración de ciertos parámetros de comunicación y distingue entre los diferentes protocolos a nivel de red (lP, IPX, etc.). Esto le permite hacer una decisión más inteligente que al conmutador, en el momento de reenviar los paquetes. Entre las cuestiones que un encaminador tiene en cuenta para enviar la información tenemos:
Número de saltos o nadas intermedios hasta el destino.
Velocidad de transmisión máxima de los enlaces.
Coste de las transmisiones.
Condiciones del tráfico en los enlaces.
El encaminador se utiliza en las siguientes condiciones:
lProporciona seguridad a través de sofisticados filtros de paquetes (cortafuegos o fírewalls). El encaminador dispone de rutinas que permiten configurar las conexiones de los usuarios de una LAN con el exterior, indicando si pueden pasar paquetes desde el exterior, las estaciones remotas con las que no está permitido comunicarse, etc.
Integra diferentes tecnologías de enlace de datos, tales como Ethernet, Token Ríng, FDDI y ATM.
Permite la existencia de diferentes rutas alternativas contra congestiones y fallos en las comunicaciones. Puesto que el encaminador diferencia entre rutas, es posible conectar más encaminadores para crear nuevos caminos.
Un encaminador puede, también, crear diferentes dominios de colisiones separados en cada red y puede interconectar LAN con diferentes protocolos. Esto significa que se puede usar tanto un conmutador como un puente o un encaminador para segmentar una LAN y aumentar su ancho de banda. A la hora de decidir cuál de ellos instalar, la selección óptima tendrá en cuenta los siguientes criterios:
Il Si la aplicación requiere soporte para rutas redundantes, envío inteligente de paquetes, control de la seguridad en las comunicaciones o el acceso a una red de área extensa, se debe seleccionar un encaminador.
Si la aplicación sólo requiere incrementar el ancho de banda para descongestionar el tráfico o conectar redes diferentes, un conmutador o un puente será, probablemente, la mejor elección, ya que procesan y envían los mensajes a mayor velocidad (el encaminador suele introducir retardos debido al algoritmo de encaminamiento que utiliza).
Puentes
El elemento genérico que permite interconectar redes de diferentes topologías y diferentes protocolos a nivel MAC y a nivel de enlace (por ejemplo, una red ethernet con una red Token Ring) se llama puente (bridge). Este dispositivo realiza las adaptaciones necesarias de una LAN a otra, de forma que se pueden intercambios información, salvando los obstáculos de incompatibilidad que las separan.

Un puente es un elemento de interconexión entre redes que está formado por dos conectores diferentes, cada uno de ellos enganchado a la red correspondiente.Por ejemplo, si el puente comunica una LAN Ethernet 100BASE-T con una LAN Ethernet 10BASE-2, tendrá dos conectores como mínimo: un RJ-45 y un BNC hembra. Los puentes se comportan en la red como si fueran estaciones corrientes (a nivel de enlace de datos) y se conectan a ellas de la misma forma. Si el puente tiene que inyectar una trama en una LAN que utiliza el paso de testigo, deberá esperar su turno para capturar el testigo y transmitir, sin ningún privilegio, sobre el resto de estaciones.
Al contrario que un concentrador, un puente se comporta como un filtro en la ya que sólo pasan por él las tramas que van desde una estación de una red a otra estación de la otra red. En cierto modo, el puente "retiene" dentro de cada subred a las tramas que no van destinadas al otro lado (cosa que no ocurriría si. en vez de un puente, se hubiera instalado un concentrador, si es que fuera posible.
La estructura interna de un puente está formada por dos partes principales. En cada una de ellas, se encuentran los protocolos de nivel físico y nivel de enlace de las LAN que interconecta.
Además de adaptar a los formatos de tramas de las dos redes y utilizar sus correspondientes protocolos de acceso al medio, un puente también tiene que convertir las direcciones a nivel de enlace que utilizan las estaciones.
Un puente se puede utilizar, además de para interconectar dos LAN diferentes para permitir un mayor rendimiento de ellas. Supongamos que disponemos de 1.000 estaciones para montar una red; en esas condiciones, montar dos redes de 500 estaciones y conectarlas mediante un puente permite crear dos medios compartidos diferentes, con la mitad de estaciones cada uno. Esta opción ofrece una menor congestión y tráfico que si se montara una sola red usando concentradores exclusivamente.
Los puentes pueden construirse de dos formas:
Por hardware. Un puente hardware es un dispositivo específico para interconectar LAN.
Por software. Un puente software es un ordenador que se comporta como tal. En él se deben instalar dos tarjetas de red (una conectada a cada LAN), además de un programa informático que le confiere el comportamiento de puente.
Existen varios tipos de puentes, dependiendo de las redes que interconecten:
Puentes de 802.x a 802.y. Este tipo de puentes permite conectar redes de tipo IEEE 802, por lo que tenemos nueve combinaciones diferentes: de 802.3 a 802.3, 802.4 Y 802.5; de 802.4 a 802.3, 802.4 Y 802.5; de 802.5 a 802.3, 802.4 Y 802.5. Cada una de estas combinaciones tiene sus propios problemas, ya que los formatos y longitudes de trama son diferentes, las velocidades de trasmisión de las redes son bastante dispares o tienen métodos de acceso al medio distintos. Estos puentes suelen descartar tramas problemáticas (como las que son demasiado grandes) y la mayoría de las veces necesitan de la reconfiguración de algunos parámetros de las dos LAN que interconectan.
Consiste básicamente en un puente que permita la transparencia completa, es decir, que, para instalarlo, no es necesaria ninguna modificación en las redes locales donde se va a instalar. Un puente transparente trabaja en modo promiscuo, es decir, acepta todas las tramas transmitidas por cualquier LAN a la que está conectado, sin descartar ninguna.
Puentes remotos. Se trata de puentes que permiten interconectar dos o más LAN (o segmentos de red) que se encuentran separadas a una gran distancia (y, por lo tanto, no se pueden conectar mediante un enlace local). Su conexión se realiza de forma que se coloca un puente en cada LAN y se conectan en pares mediante líneas punto a punto, que, en general, conforman conexiones de área extensa (por ejemplo, líneas alquiladas a las compañías de teléfonos o líneas de la RTC).
Modem
Es un equipo que convierte las señales digitales del ordenador en las analógicas ::e la línea telefónica (modulación), las envía a otro ordenador y, cuando las recibe é:-"1e, las vuelve a convertir de ana lógicas a digitales (demodulación).


Figura 8.15. Comparación entre una señal ana lógica y una digital.
La comunicación se puede establecer en ambos sentidos pero no simultáneamente (semidúplex), o en ambos sentidos simultáneamente (dúplex). Es independiente el número de hilos de que consta el cableado de la forma de establecer la comunicación.

Otros aspectos que hay que considerar son: la velocidad de transmisión de datos y las formas de modulación.
La velocidad de transmisión de datos es el número de bits por segundos (bps que puede modular y enviar por la línea telefónica (esta velocidad de transmisión de datos no es igual a la velocidad de transmisión serie que representa la cantidad de bits de información y control que el ordenador envía al módem cada segundo!.
La velocidad a la que puede transmitir un módem se denomina caudal del canal (throughput) y se mide en bits por segundo (bps). Las velocidades inferiores a los 1200 bps pueden también denominarse como baudios, aunque no significan lo mismo. Un baudio se refiere al cambio de estado de la señal analógica y que, normalmente, corresponde a un bps en velocidades inferiores a los 1.200 bps. Pero en velocidades superiores, se pueden conseguir más de un bps por cada cambio de estado (por ejemplo, un módem de 1.200 bps puede corresponder con 600 baudios).
Es necesario destacar que es importante para la velocidad del proceso que el módem cuente con una velocidad alta, ya que, cuanto mayor sea la velocidad. menor será el tiempo que invertirá en el proceso (por ejemplo, un módem a 2.400 bps tarda en transmitir los datos ocho veces menos tiempo que uno de 300 bps).
De todas formas, si se transmite por la red telefónica conmutada (RTC), la velocidad máxima que se puede conseguir actualmente es de, aproximadamente. 33.000 bps; por tanto, si se desean conseguir velocidades mayores, será necesario disponer de líneas dedicadas.
Las formas de modulación que se pueden utilizar son:
Modulación de amplitud (ASKJ, en la que a cada valor de la señal digital se le hace corresponder una amplitud distinta de la señal analógica (para un valor binario O, se envía una amplitud cero y para un valor binario 1, se envía una amplitud distinta de cero). Se emplea muy poco para enviar datos y siempre a muy bajas velocidades de transmisión, ya que es muy susceptible a las interferencias de la línea.
Modulación de frecuencia (FSKJ, en la que a cada valor de la señal digital se le hace corresponder una frecuencia de la señal analógica (para un valor binario O, se envía una frecuencia determinada y para un valor binario 1, se envía otra frecuencia distinta). Se emplea para velocidades de transmisión iguales o inferiores a 1 .200 bps.
Modulación de fase (PSKJ, en la que a cada valor de la señal digital se le hace corresponder con un desfase de la señal analógica (para un valor binario O, se modifica la fase y para un valor binario 1, no se modifica). Se emplea para velocidades superiores a 1 .200 bps.
Para velocidades elevadas, se utiliza la modulación de fase combinada con la modulación de amplitud.
Para que una comunicación se pueda realizar, ambos módem deben transmitir a la misma velocidad y utilizar la misma forma de modulación. Así mismo, deben estar coordinadas la transmisión y la recepción de los datos (sincronización de la transmisión) .
Hay tres factores que se han de tener en cuenta para la sincronización de la comunicación:
Sincronismo de bit. Los bits son enviados por el módem origen de forma secuencial y con una determinada cadencia. Este factor es responsabilidad del módem.
Hay dos métodos de sincronización de bit:
Asíncrona. El método de sincronización asíncrona hace que por cada carácter emitido sea necesario transmitir un bit de arranque (bit O) seguido de 7 u 8 bits de información que identifican al carácter según el código ASCII y termina con el bit de parada (bit 1). El inconveniente de este método es que se aumenta mucho la cantidad de bits que se envían en cada comunicación.
Síncrona. El método de sincronización síncrona lleva a cabo la sincronización utilizando los mismos cambios de estado de las señales transmitidas. Al empezar una transmisión, se envían una serie de caracteres de sincronismo (llamados SYN), que están formados por una combinación de O y 1. La principal ventaja de este método es que permite una mayor velocidad de transmisión.
Sincronismo de carácter. El módem receptor, al recibir los bits, debe tener algún procedimiento para diferenciar los caracteres que componen la información recibida. Este factor es responsabilidad del protocolo de comunicaciones utilizado.
Sincronismo de trama. Como la información no se transmite toda de una vez, sino que se realiza en secciones denominadas paquetes o tramas, es necesario establecer un procedimiento que permita identificar qué carácter de los recibidos es el primero de la trama. Este factor es responsabilidad del protocolo de comunicaciones utilizado.
Para regular todo lo anteriormente descrito, ITU- T (Unión Internacional de Telecomunicaciones-Sector Telecomunicaciones), que anteriormente se denominaba CClTT, ha dictado unas normas que deben cumplir los módem. Estas normas se definen como serie V ya que se designan como una palabra que empieza por dicha letra (por ejemplo, V23, V90, etc.). Hay también compañías privadas que han definido sus propias normas (por ejemplo, Bell Systems).
Entre las normas más populares se encuentran:
Cuando un módem se conecta con otro, envía un tono usando la norma que: tiene predefinida. Si el otro soporta dicha norma, responde a la llamada inmediatamente. Si no es así, el módem que llama reintenta con una norma inferior, y ase sucesivamente, hasta conseguir establecer la comunicación.
Otra posibilidad que incorporan los módem es la compresión de los datos qUE se van a transmitir. Dichos datos están formados por texto y gráfico que, normalmente, contienen secuencias repetidas de información idéntica. La compresión dE los datos reemplaza algunos caracteres de la información repetida con unos pocos caracteres y transmite sólo una copia de la secuencia repetida.
Entre los métodos de compresión utilizados se encuentran MNP3, MNP 4
De esta manera, se aumenta la velocidad efectiva de la transmisión (por ejemplo, un módem que transmita a una velocidad de 28.800 bps con una compresión de datos V.42bis puede llegar a conseguir una velocidad efectiva de 115.200 bps).
Entre las características más importantes que incorporan está la de poseer listín telefónico, donde almacena los números de teléfono y puede marcarlos automáticamente en el momento, o bien, hacerla en una fecha y hora programada. En el caso de estar la línea ocupada, vuelven a intentar la llamada a'l cabo de un tiempo preestablecido. También cuentan con respuesta automática a una llamada y la posibilidad de que se devuelva la llamada una vez comprobado que el emisor está autorizado para solicitarlo.
Su mayor utilidad para la expansión de una red es para el acceso remoto de una estación de trabajo móvil.
Redes troncales
Una red troncal (también llamada backbone) es una red utilizada para interconectar otras redes, es decir, un medio que permite la comunicación de varias LAN o segmentos.
Las redes troncales suelen ser de alta capacidad y permiten un mayor rendimiento de las conexiones LAN de una empresa. La opción de utilizar una única red de gran tamaño para interconectar todas las estaciones puede aumentar el coste y reducir la capacidad de transmisión.
Topologías
Se denomina topología a la forma geométrica en que están distribuidas las estaciones de trabajo y los cables que las conectan.
Las estaciones de trabajo de una red se comunican entre sí mediante una conexión física y el objeto de la topología es buscar la forma más económica y eficaz de conectarlas para, al mismo tiempo, facilitar la fiabilidad del sistema, evitar los tiempos de espera en la transmisión de los datos, permitir un mejor control de la red y permitir de forma eficiente el aumento de las estaciones de trabajo.
A la topología formada por la distribución del cableado de la red se le llama topología física.
En función de la manera en que se realicen las conexiones con los concentradores de cableado y se distribuyan los mensajes, se puede hablar de topología lógica.
Las formas más utilizadas son las siguientes:
Configuración en bus
En ella, todas las estaciones comparten el mismo canal de comunicaciones, toda la información circula por ese canal y cada una de ellas reúne la información que le corresponde.
Esta configuración es fácil de instalar, la cantidad de cable a utilizar es mínima, tiene una gran flexibilidad a la hora de aumentar o disminuir el número de estaciones y el fallo de una estación no repercute en la red, aunque la ruptura de un cable la dejará totalmente inutilizada.
Entre sus inconvenientes destacan:
Es fáciI de intervenir por usuarios de fuera de la red, sin perturbar el funcionamiento normal.
La longitud no puede sobrepasar los 2000 metros
El control del flujo, ya que, aunque varias estaciones intenten transmitir a la vez, como hay un único bus, solo una de ellas podrá hacerlo, por lo que, cuantas mas estaciones tenga la red, más complicado será el control de flujo.


En ella, todas las estaciones están conectadas entre sí formando un anillo, de forma que cada estación sólo tiene contacto directo con otras dos.

Configuración en anillo
En ella, todas las estaciones están conectadas entre si formando un anillo, de forma que cada estación solo tiene contacto directo con otras dos


En las primeras redes de este tipo, los datos se movían en una única dirección, de manera que toda la información tenía que pasar por todas las estaciones hasta llegar a la de destino, donde se quedaba. Las redes más modernas disponen de dos canales y transmiten en direcciones diferentes por cada uno de ellos.
Este tipo de redes permite aumentar o disminuir el número de estaciones sin dificultad; pero, a medida que aumenta el flujo de información, será menor la velocidad de respuesta de la red.
Un fallo en una estación puede dejar bloqueada la red, pero un fallo en un canal de comunicaciones la dejará bloqueada en su totalidad y, además, será bastante difícil localizar el fallo y repararlo de forma inmediata.
Su instalación es compleja y su uso está extendido por el entorno industrial. Es usada por la red TOKEN RING de 18M.

Configuración en estrella
Esta forma de configuración es una de las más antiguas. Todas las estaciones están conectadas directamente al servidor y todas las comunicaciones se han de hacer necesariamente a través de él.



Permite incrementar fácilmente el numero de estaciones.
Si se produce un fallo en una de ellas, no repercutirá en el funcionamiento genEral de la red; pero, si se produce un fallo en el servidor, la red completa se vendrá abajo.
Tiene un tiempo de respuesta rápido en las comunicaciones de las estaciones con el servidor y lento en las comunicaciones entre las distintas estaciones de trabajo.


No es muy conveniente para grandes instalaciones y su coste es caro, debido a la gran cantidad de cableado y a la complejidad de la tecnología que se necesita para el servidor. Está usada por la red STARLAN de ATT o SNeT.
Configuración mixta en estrella/bus
En esta configuración mixta, un multiplexor de señal ocupa el lugar del ordenador central de la configuración en estrella, estando determinadas estaciones de trabajo conectadas a él y otras conectadas en bus junto con los multiplexores.
Esta red ofrece ventajas en edificios que cuentan con grupos de trabajo separados por grandes distancias. Es usada por la red ARCNET.


Topología física y lógica
Todas las configuraciones que han estado viendo hasta ahora son llamadas topologías físicas porque describen cómo está extendido el cableado.
Además, cada red designa una topología lógica que describe la red desde la perspectiva de las señales que viajan a través de ella.
Un diseño de red puede tener distinta topología física y lógica (es decir, la forma en que esté cableada una red no tiene por qué reflejar necesariamente la forma en que viajan las señales a través de ella). .
En una configuración física en estrella con un hub, cada estación envía y recibe señales por el mismo cable. En el concentrador (hub), se mezclan las señales de todas las estaciones y son transmitidas a todas ella (es decir, actúa igual que si estuviera en una configuración en bus).
Por tanto, es una topología física de estrella que funciona como una topología lógica de bus.
Muchas redes nuevas utilizan este modelo, ya que es fácil de modificar la situación de cada estación (sólo hay que desconectar un cable) sin perjuicio para la red entera y, además, incrementa las posibilidades de detección de problemas de red.

Protocolos de comunicación
Como se ha visto anteriormente, el proceso de transmisión de datos conlleva una serie de procedimientos que van desde el nivel hasta la presentación de la información en un formato determinado (nivel de aplicación).
Aunque todos ellos son fundamentales, se va a profundizar en el nivel de enlace, que es el encargado del control de la comunicación.
Toda comunicación se puede dividir en tres fases:
Establecimiento de la comunicación. En esta fase se establece la conexión física entre los ordenadores y se ponen de acuerdo en cuanto al procedimiento empleado para el intercambio de la información.
Transferencia de información. Ambos sistemas intercambian datos a través del enlace establecido. En caso de producirse un error en la recepción de los datos, se detecta y se solicita su reenvío.
Terminación: En esta fase se da por finalizada la comunicación.
La forma de establecer y finalizar la comunicación depende de cómo estén conectadas las dos estaciones de trabajo (a través de un cable por la puerta serie o paralelo, a través de una línea punto a punto, a través de un módem por la red telefónica, etc.).
La forma de controlar la transferencia de la información depende exclusivamente del protocolo que se utilice. Este protocolo corresponde al nivel de enlace de datos del modelo 05/ y deberá realizar las siguientes funciones:
Sincronización de la comunicación.
Control de los errores de transmisión.
Coordinación de la comunicación.
Recuperación ante los fallos que se produzcan.

Cuando se ha de transmitir una determinada información, la información se distribuirá en bloques de una longitud determinada, dispuesta en un orden determinado y con un control de errores que permitirá comprobar que todos y cada uno de os bits enviados sean iguales a todos y cada uno de los bits recibidos. De esta forma, si se produjera un error en uno de los bloques, únicamente sería necesario volver a transmitir dicho bloque sin necesidad de repetir toda la transmisión.
Se entiende por protocolo al conjunto de reglas que hacen posible el intercambio fiable de comunicación entre dos equipos informáticos.
Entre los protocolos más adecuados de este nivel, se encuentran:
Contienda.
Contienda simple.
Acceso múltiple por detección de portadora (CSMA).
Acceso múltiple por detección de portadora con detección de colisiones (CSMNCO).
Acceso múltiple por detección de portadora evitando colisiones (CSMA/CA).
Multiacceso evitando colisiones (MACA).
Llamada selectiva (polling).
Paso de testigo (token passing).
Protocolos de contienda
Se entiende por protocolos de contienda al método de acceso a la línea basado e- que el primero que llega a ella es el primero que la utiliza.
Contienda simple
En este protocolo todas las estaciones comparten el mismo canal de transmisión y los mensajes se envían a través de dicho canal; las estaciones responden únicamente a los mensajes que incluyen su dirección y al resto los ignoran; mientras no reciban un mensaje que incluya su dirección, se encuentran en estado de espera, pero escuchando el canal de transmisión.
Por tanto, se pueden dar dos situaciones: que las estaciones se encuentren transmitiendo datos o que se encuentren en estado de espera.
Una estación envía los bloques de datos sin fijarse en si el canal está disponible o no. Cuando un bloque de una estación coincide con el de otra, se produce une colisión y ambos se destruyen automáticamente. Si éste llega a su destino, la estación receptora envía un mensaje indicando que lo ha recibido. Si la estación emisora, después de un tiempo aleatorio, no ha recibido este mensaje, vuelve a repetir la transmisión del bloque, y así sucesivamente, hasta que haya finalizado la transmisión de datos.
Este tipo de protocolo no se utiliza en redes con cargas medias o altas, ya que SE estarían produciendo colisiones constantemente y el rendimiento de la red serie muy bajo y con tiempos de espera muy grandes.
Acceso múltiple por detección de portadora (CSMA)
En este protocolo también se utiliza un único canal, pero una estación no transmite hasta que la línea esté libre. Para ello, la estación emisora se pone a la escucha, en una frecuencia secundaria, para saber si hay otra estación que esté enviando algún bloque de datos.
Mientras se encuentra a la escucha, puede actuar de dos maneras distintas:
Escuchar continuamente a la espera de que quede libre y entonces transmitir (detección continua de portadora).
Escuchar si el canal está ocupado. Si lo está, deja la transmisión un tiempo aleatorio y, después, vuelve a intentarlo (detección no continua de portadora).
Cuando la línea está libre, envía el bloque de datos y, además, otra señal en la frecuencia secundaria para avisar a las demás estaciones que la línea está ocupada.
Una vez transmitido el bloque de datos, la estación espera hasta recibir el mensaje de que la estación receptora ha recibido el bloque. Si no lo recibe o recibe una señal negativa, la estación supone que se ha producido una colisión (por haber iniciado dos estaciones emisoras un envío simultáneamente), espera un tiempo aleatorio y vuelve a enviar el bloque de datos.
Por tanto, se pueden dar tres situaciones: que las estaciones se encuentren transmitiendo datos, que se encuentren en estado de espera o que se encuentren escuchando la línea.
Este protocolo permite una mejora en comparación con el de contienda simple si la carga es baja o media y la red tiene una longitud pequeña, ya que, entonces, el tiempo que tarda la señal en propagarse es pequeño y el riesgo de que dos estaciones decidan enviar bloques de datos simultáneamente y colisionen será bajo .
Acceso múltiple por detección de portadora con detección de colisiones (CSMA/CD)
Este protocolo actúa de la misma manera que el anterior, pero, además de comprobar si la línea está libre antes de comenzar la transmisión, se comprueba si se ha producida alguna colisión durante la transmisión.
Si se ha producido alguna colisión, se detiene la transmisión y se vuelve a enviar el bloque de datos después de un tiempo de espera aleatorio.
El rendimiento de este tipo de protocolo es mayor que en los dos anteriores. Por ello es recomendable para cargas de tipo bajo o medio y para una longitud de la red .
Acceso múltiple por detección de portadora evitando colisiones (CSMA/CA)
En este tipo de protocolo, cuando una estación va a enviar un bloque de datos, comprueba que la línea está libre y, cuando verifica que lo está, indica que tiene intención de transmitir.
Si hay varias que se encuentran esperando, la transmisión se realiza por turnos. En este turno se tiene en cuenta la prioridad de la estación y el orden en que se ha indicado que se desea transmitir; por tanto, primero transmitirá la que lo haya solicitado primero entre las que tienen la máxima prioridad y no la que lo haya solicitado primero si tiene una prioridad baja.
El rendimiento de este tipo de protocolo es mayor que en los tres anteriores; por ello es recomendable para cargas de tipo medio o alto y para una longitud media de la red.
Multiacceso Evitando Colisiones (MACA)
Sin embargo, CSMA-CA en un entorno inalámbrico y celular presenta una serie de problemas que intentaremos resolver con alguna modificación. Los dos principales problemas que se pueden detectar son:
Nodos ocultos. Una estación cree que el canal está libre, pero en realidad está ocupado por otro nodo que no oye.
Nodos expuestos: Una estación cree que el canal esta ocupado, pero en realidad está libre pues el nodo al que oye no le interferiría para transmitir a otro destino.
La solución que propone el estándar 802.11 para solucionar los dos problemas anteriores es el protocolo MACA.

Según este protocolo, antes de transmitir, el emisor envía una trama RTS (Request to SendJ, indicando la longitud de datos que quiere enviar. El receptor le contesta con una trama CTS (Clear to SendJ, repitiendo la longitud. Al recibir el CTS, el emisor envía sus datos.
Los nodos seguirán una serie de normas para evitar los nodos ocultos y expuestos.
Al escuchar un RTS, hay que esperar un tiempo por el CTS.
Al escuchar un CTS, hay que esperar según la longitud indicada.
La solución final propuesta por el estándar 802.11 es utilizar MACA con CSMA/CA para enviar los RTS y CTS.
Llamada selectiva (polling)
Para poder utilizar este protocolo, es necesario que la red disponga de dos tipos de estaciones: la estación principal y las secundarias.
Cada estación secundaria dispone de una zona de almacenamiento temporal donde envía el bloque de datos que desea transmitir.
La estación principal comprueba en cada una de las secundarias si alguna tiene algún bloque de datos para transmitir. Si en alguna de ellas encuentra uno, se autoriza a dicha estación para que lo transmita de forma inmediata o al cabo de un determinado tiempo. Si no tiene ningún bloque de datos, pasa a revisar la estación siguiente, y así sucesivamente.
Los bloques de datos se pueden enviar de dos formas distintas:
Pasando por la estación principal, la cual los reenvía a la estación destino. Enviándolos directamente a la estación destino.
Se puede indicar que el control sobre las estaciones secundarias tenga el mismo nivel de prioridad para todas, o bien, que las estaciones que cuentan con una mayor actividad tengan una prioridad más alta. También se puede indicar que las estaciones que no estén activas no tengan control por parte de la estación principal.
Este tipo de protocolo cuenta con algunas ventajas con respecto a los de contienda:
La longitud de los bloques es superior.
Soporta un mayor volumen de carga en la red.
Permite trabajar con longitudes de red mayores.
Está recomendado para redes con carga media y para una longitud media o grande de la red.
Paso de testigo (Token passing)
Este protocolo hace circular continuamente un grupo de bits (testigo) por la red.
Este testigo está formado por una cabecera, un campo de datos y un campo final.
Cuando una estación quiere transmitir, ha de esperar a que llegue hasta ella el testigo vacío. En ese momento, le añade unos datos, quedando el testigo formado por la cabecera, la dirección destino, la dirección origen, el camino que ha de seguir para llegar a su destino y el bloque de datos, y lo envía a su destino.

Si la estación no desea transmitir, pasa el testigo vacío a la siguiente estación, y así sucesivamente.
El testigo ocupado llega a la estación destino que recoge el bloque de datos, pone una marca en el testigo indicando si lo acepta o lo rechaza por venir con errores y lo devuelve a la estación que lo ha enviado.
Cuando llega a la estación que lo envió, ésta lo reenvía si llega con la marca dE rechazado, envía el siguiente bloque de datos o vacía el testigo para que pase a !a estación siguiente.
Este protocolo cuenta con bastantes ventajas:
Elimina por completo el riesgo de colisiones.
Puede emplear mensajes muy largos.
El volumen de carga es bastante alto.
El tamaño de la red puede ser grande.
Está recomendado para redes con volumen de carga medio o alto y para una longitud media o grande de la red.
Control de errores
Debido a las interferencias, ruidos y distorsiones que aparecen en la línea/los datos, al llegar a la estación destino, pueden haber sufrido alguna modificación} no corresponder exactamente con los que fueron emitidos.
Para detectar estos errores, se emplean diversas técnicas, que dependen del protocolo elegido.
Los métodos más utilizados para el control de los errores son:
Método de paridad.
Método de redundancia cíclica.
Método de paridad
Este método, también llamado geométrico, consiste en añadir un bit (bit de paridad) a cada uno de los caracteres enviados. Este bit debe tener el valor cero o uno, y será tal que haga que el carácter, contando el bit de paridad, tenga un número par de bits con valor uno (en el caso de la paridad par) o que tenga un número impar de unos (en el caso de la paridad impar).
La estación destino cuenta el número de bits uno de cada carácter recibido y si el valor calculado coincide con el correspondiente a la paridad utilizada, la transmisión ha sido correcta, pero si no ha sido así, solicita a la estación emisora que repita el envío.
Este bit de paridad (par o impar) que se añade al final de cada carácter también recibe los nombres de bit de paridad transversal, bit de paridad vertical o comprobación de redundancia vertical (VRC).
He aquí un ejemplo de paridad par en el que se indican en cursiva los bits de paridad:
Este método cuenta con el problema de que únicamente puede detectar el error si se ha modificado un solo bit. Pero si se modifica un número par de bits, no se detectará el error. Para evitar este problema, se puede incluir al final de cada paquete un bit de comprobación de error que hará que la suma de unos de cada columna de bits corresponda con la paridad par o impar que se está utilizando.
A este bit se le denomina carácter de comprobación horizontal, suma de comprobación (checksum), paridad horizontal o comprobación de redundancia horizontal (LRC).
Si se emplean la paridad vertical y la horizontal, se podrían llegar a detectar todos los errores de un bit que se produzcan.
Método de redundancia cíclica
Este método consiste en que la estación emisora agrega al final de cada bloque de datos una información calculada de acuerdo con una fórmula polinómica, cuyas variables son los ceros y unos enviados en el bloque de datos (se divide el valor binario numérico total por un valor constante definido por el protocolo, se desecha el cociente y es el resto lo que se añade al final del bloque de datos).
La estación destino realiza el mismo cálculo. Si le produce el mismo resultado, a transmisión es correcta, pero si no ha sido así, solicita a la estación emisora que repita el proceso.
Este método recibe el nombre de Código de Redundancia Cíclica (CRC) y a los valores añadidos al bloque de datos se les denomina Carácter de Comprobación de Bloque (BCC) o, simplemente, Redundancia.
La ventaja de este método estriba en que el número de bits que se añade a cada bloque de datos es mucho menor que el del método anterior.
Retransmisión de bloques erróneos
Normalmente, la estación destino no corrige los bloques de datos erróneos, sino que se limita a detectar la existencia del error, pidiéndole a la estación emisora que vuelva a emitir dicho bloque de datos. Para la retransmisión del bloque de datos erróneo, existen dos técnicas:
Parada y espera
Esta técnica consiste en que la estación emisora, después de enviar el bloque de datos, espera a recibir una contestación de confirmación o error del envío.
Si la transmisión es correcta, la estación receptora envía un mensaje de confirmación (ACK) y si la transmisión es errónea, envía un mensaje de rechazo (NAK). A recibir el mensaje de rechazo, la estación emisora procede a retransmitir el bloque de datos erróneo.
El inconveniente de esta técnica es el tiempo que pierde la estación emisora en esperar el mensaje de la estación receptora antes de proceder a un nuevo envío.
Esta técnica consiste en que la estación emisora está enviando bloques de datos continuamente sin tener que permanecer a la espera de la confirmación de la estación receptora. Para poder realizarlo, identifica a cada bloque de datos con un código numérico.
Cuando se produce un error, la estación receptora solicita el reenvío del bloque erróneo y se pueden producir dos modalidades:
Envio continuo no selectivo: En este modo, la estación emisora vuelve e retransmitir todos los bloques enviados desde aquél en el que se produjo e error. Esto provoca el reenvío de bloques que se podían haber recibido correctamente.
Envío continuo selectivo: En este modo, la estación emisora vuelve a retransmitir únicamente aquel bloque en el que se produjo el error.
Recuperación ante fallos
En el caso de que se produjera un envío de un bloque de datos, la estación emisora estará esperando el mensaje de confirmación o error; si la estación receptora Sé desconectara o se perdiera dicho mensaje, la estación emisora estaría esperando indefinidamente dicha contestación.
En ese caso, el protocolo debería proceder de la siguiente manera:
Establecer un tiempo de espera de dicha contestación.
Solicitar una nueva respuesta cuando haya finalizado dicho tiempo de espera.
Limitar el número de intentos, después de los cuales el fallo se da por irrecuperable, y finalizaría la transmisión de datos con dicha estación.
Funciones del sistema operativo de red
La tarea principal del servidor de archivos de una red es ejecutar el sistema operativo de red.
El sistema operativo de la red se encarga de controlar el acceso a los datos de los archivos que se encuentran en las unidades de discos compartidas del servidor, de la distribución del espacio en los discos duros del servidor y de la utilización de los periféricos compartidos.
El bloqueo de archivos y registros
Una de las grandes diferencias entre un sistema operativo monousuario (pensado para ser utilizado por un único usuario simultáneamente) y un sistema operativo de red (pensado para ejecutar varias tareas y por varios usuarios simultáneamente) es que un mismo archivo o un registro de un archivo puede ser usado por más de un usuario y, por tanto, es necesario establecer un mecanismo para que dos usuarios no efectúen una modificación en el registro o en el archivo al mismo tiempo.
La diferencia entre un bloqueo de archivo o de registro reside en que:
En el bloqueo de un archivo se impide que, mientras está siendo utilizado por un usuario, el archivo pueda ser utilizado por otro.
En el bloqueo de registros se impide que, mientras un usuario está utilizando una ficha determinada de un archivo, ésta pueda ser modificada por otro usuario, pero sí pueda modificar, borrar o insertar nuevas fichas dentro de ese archivo.
La distribución de espacios en los discos duros
En una red local, el disco o los discos duros pueden ser utilizados de tres maneras distintas: de forma privada, compartida o pública (que pueden coexistir sin ningún tipo de problema).
En una utilización privada los archivos que se encuentran en ellos son personales y únicamente tiene acceso su propietario para operaciones de lectura/ escritura, borrado y creación de nuevos archivos.
En una utilización compartida los archivos que se encuentran en ellos tienen niveles de acceso distintos en función de las autorizaciones dadas por el administrador de la red. Por tanto, puede haber archivos que pueden ser utilizados totalmente por todos los usuarios, archivos que pueden ser utilizados parcialmente por todos los usuarios y archivos que sólo pueden ser utilizados por un usuario o un grupo de usuarios.
En utilización pública los archivos pueden ser leídos, modificados o borrados por todos los usuarios (aunque sería recomendable que las dos ultimas opciones las realizaran personas específicas que tuvieran un nive de acceso superior).
La compartición de periféricos
Dentro de las ventajas de una red, se encuentra la posibilidad de compartir los periféricos que se encuentran en ella y, en especial, las impresoras.
Para poder compartir una impresora, ésta ha de estar conectada al servidor de archivos de la red o a un servidor específico denominado servidor de impresión.
El servidor de impresión y/o el servidor de archivos disponen de un programa que controla los trabajos de impresión mandados por los usuarios. Este programa crea una zona de almacenamiento temporal de datos en el disco donde se guardan todos los trabajos pendientes de imprimir (cola de impresión) hasta que la impresora queda libre y son dirigidos a ella para ser impresos.
Se puede especificar el orden en que se van a imprimir, el número de copias, la impresora a usar, el formato de impresión que se va a utilizar, si se coloca una primera página identificativa del trabajo (banner), etc.


Gestión de cuentas de usuario
Una cuenta de usuario permite que un usuario inicie sesiones en equipos y/o dominios con una identidad que se puede autentificar y autorizar para tener acceso a los recursos del dominio. Cada usuario que se conecta a la red debe tener su propia cuenta de usuario y su propia contraseña única. Por tanto, una cuenta de usuario se utiliza para:
Autentificar la identidad del usuario.
Autorizar o denegar el acceso a los recursos del servidor.
Administrar los permisos.
Auditar las acciones realizadas con la cuenta de usuario.
Los usuarios de la red pueden agruparse para permitirles compartir los datos aunque procedan de distintos lugares del árbol del directorio. Concediendo a un grupo privilegios para un subdirectorio, los miembros del grupo pueden acceder a archivos compartidos que no están accesibles a otros usuarios de la red.
El proceso de creación de grupos consta de tres pasos básicos:
Crear el grupo que se va añadir.
Conceder derechos de archivo y directorio al grupo.
Añadir los usuarios al grupo.
Las aplicaciones y los datos
Un paso importante en el funcionamiento de un servidor es la carga o instalación del programa o los programas de aplicaciones y los datos que puedan ser necesarios.
En general, los procedimientos de una instalación de un programa en cualquier servidor son similares a los de una aplicación en un ordenador aislado. La única diferencia está en dónde se cargan los archivos en el disco duro.
Es conveniente asegurarse de que se está utilizando una versión del programa apropiada para funcionar en redes. No es adecuado utilizar versiones para un solo usuario (monopuesto) en una red, ya que tales versiones, frecuentemente, no funcionan como deben cuando varios usuarios intentan acceder a los mismos archivos.
Para cargar de forma adecuada las aplicaciones, debe seguirse cuidadosamente la documentación de instalación. De otro modo, pueden surgir problemas, tales como anomalías en el programa ocasionadas por la señalización incorrecta de los archivos.

Funciones del administrador de red
La responsabilidad de configurar y gestionar el servidor de la red corresponde al administrador de red.
Los pasos que debe seguir primero son:
Instalar todo el cableado de la red.
Instalar las tarjetas de red en los ordenadores.
Instalar los discos duros, impresoras y otros periféricos.
Conectar todos los equipos a la red.
Instalar los sistemas operativos de todas las estaciones de trabajo.
Instalar el sistema operativo de red en el servidor, identificando cada estación de trabajo y los dispositivos conectados.

Actividades
1. Indique los tipos de redes que hay en función de su localización geográfica.
2. ¿Cuál es la categoría de cable que deberá utilizar si desea conseguir una velocidad de transmisión de 1 Gbps?
3. ¿Influye en la velocidad de transmisión la longitud del cable? ¿Por qué razones?
4. Indique las diferencias que hay entre un conmutador y un concentrador.
5. Indique las diferencias que hay entre un conmutador y un puente.
6. Suponga que ahora debe interconectar 22 ordenadores para formar una red. Indica las topologías lógicas si solamente se dispone de concentradores de cableado de ocho puertos (debe utilizarse el menor número de ellos).
8. Suponga que una estación conectada a una LAN Token Bus toma el testigo para transmitir y antes de devolverlo se bloquea por un fallo interno, de forma que esa trama se pierde definitivamente. ¿Qué ocurre en este caso? ¿Qué estrategia cree que deberá seguir el protocolo de comunicaciones para controlar este tipo de situaciones?
9. Indique tres formas de modulación que puede utilizar un módem.
10. Suponga que se utiliza control de paridad bidimensional par para transmitir (es decir, paridad vertical y horizontal). El emisor envía los bloques de la izquierda y el receptor capta los de la derecha. ¿Se ha producido algún error en alguna de las transmisiones? ¿El receptor ha detectado el error?
a) 110011 110011  111111 110111  010111 010111  110000 110000  101011 101011 b) 110011 110011  111111 101011  010111 010111  110000 100100  101011 101011 c) 110011 010001  111111 111111  010111 010111  110000 010010  101011 101011 
















Intercambio de información entre sistemas: TCP/IP
Para poder establecer una comunicación entre ordenadores, lo mismo que para establecerla entre personas, es necesario contar con una serie de normas que regulen dicho proceso.
Esas normas las fija la sociedad, en general, (en el caso de las personas) o a través de organismos internacionales de normalización (en el caso de las máquina).
Niveles OSI
Al principio del desarrollo de la informática, cada fabricante establecía los procedimientos de comunicación entre sus ordenadores de forma independiente por lo que resultaba muy difícil, por no decir imposible, la comunicación entre ordenadores de fabricantes distintos.
Poco a poco, se fue haciendo necesario disponer de unas normas comunes que permitiesen la intercomunicación entre todos los ordenadores.
De todos los protocolos propuestos destaca el modelo OSI (Open System Interconnection), cuya traducción al castellano es Interconexión de Sistemas Abiertos, que fue propuesto por la Organización Internacional de Normalizacion (ISO).
ISO, que es una organización no gubernamental fundada en 1947, tiene como misión la coordinación del desarrollo y aprobación de estándares a nivel internacional. Su ámbito de trabajo cubre todas las áreas, incluyendo las redes locales a excepción de las áreas electrotécnicas que son coordinadas por lEC (lnternational Electrotechnical Commission).
Cada país únicamente puede estar representado en ISO por una organización (en el caso de España, está representada por AENOR [Asociación Española de Normalización] y, en el caso de EE.UU., está representado por ANSI [American.National Standards Institute]).
El modelo OSI, cuya actividad se empezó a desarrollar en 1977 y llegó a constituirse como estándar internacional en 1983, trata de establecer las bases para la definición de protocolos de comunicación entre sistemas informáticos.
Propone dividir en niveles todas las tareas que se llevan a cabo en una comunicación entre ordenadores. Todos los niveles estarían bien definidos y no interferirían con los demás. De ese modo, si fuera necesario una corrección o modificacion en un nivel, no afectaría al resto.
En total se formarían siete niveles (los cuatro primeros tendrían funciones de comunicación y los tres restantes, de proceso). Cada uno de los siete niveles dispondría de los protocolos específicos para el control de dicho nivel.

Nivel físico
En este nivel se definen las características eléctricas y mecánicas de la red necesarias para establecer y mantener la conexión física (se incluyen las dimensiones físicas de los conectores, los cables y los tipos de señales que van a circular por ellos). Los sistemas de redes locales más habituales definidos en este nivel son Ethernet, red en anillo con paso de testigo (Token Ring) e interfaz de datos distribuidos por fibra (FDDI, Fiber Distributed Data Interface).
Nivel de enlace de datos
Se encarga de establecer y mantener el flujo de datos que discurre entre los usuarios. Controla si se van a producir errores y los corrige (se incluye el formato de os bloques de datos, los códigos de dirección, el orden de los datos transmitidos, la detección y la recuperación de errores). Las normas Ethernet y Token Ring también están definidas en este nivel.
Nivel de red
Se encarga de decidir por dónde se han de transmitir los datos dentro de la red (se incluye la administración y gestión de los datos, la emisión de mensajes y la regulación del tráfico de la red). Entre los protocolos más utilizados definidos en este nivel se encuentran: Protocolo Internet (lP Internet Protocol y el intercambio de paquetes entre redes (lPX, Intemetwork Packet Exchange) de Novell.
Nivel de transporte
Asegura la transferencia de la información a pesar de los fallos que pudieran ocurrir en los niveles anteriores (se incluye la detección de bloqueos, caídas del sistema, asegurar la igualdad entre la velocidad de transmisión y la velocidad de recepción y la búsqueda de rutas alternativas). Entre los protocolos de este nivel utilizados se encuentran el Protocolo de Control de la Transmisión (TCP Transmission Control Protocol) de Internet, el Intercambio Secuencial de paquetes SPX(Sequenced Packet Exchange) de Novell y NetBIOS/NetBEUI de Microsoft.
Nivel de sesión
Organiza las funciones que permiten que dos usuarios se comuniquen a través de la red (se incluyen las tareas de seguridad, contraseñas de usuarios y la administración del sistema).
Nivel de presentación
Traduce la información del formato de la máquina a un formato por los usuarios (se incluye el control de las impresoras, emulación de terminal y sistemas de codificación).
Nivel de aplicación
Se encarga del intercambio de información entre los usuarios y el sistema operativo (se incluye la transferencia de archivos y los programas de aplicación)
El proceso que se produce desde que un usuario envía un mensaje hasta que llega a su destino consiste en una bajada a través de todos los niveles (con sus correspondientes protocolos) desde el nivel séptimo hasta llegar al primero. Allí se encontrará en el canal de datos que le dirigirá al usuario destino y volverá a por todos los niveles hasta llegar al último de ellos.
Los niveles inferiores proporcionan servicios a los niveles superiores.
Cada nivel dispone de un conjunto de servicios.
Protocolos de red y de transporte
Si el nivel de enlace de datos juega un papel fundamental en redes locales, el nivel de red es muy importante en redes de área extensa.
Los protocolos correspondientes al nivel físico, nivel de enlace de datos y ahora nivel de red son muy dependientes de las características de la red física. En redes de area extensa, la gestión de estos niveles suele ser responsabilidad de las compañías de telecomunicaciones propietarias, mientras que los protocolos a niveles superiores (transporte y aplicación) son responsabilidad del usuario.
El nivel de red se encarga de llevar los bloques de información desde el origen hasta el destino. Que esos bloques alcancen al receptor puede suponer muchos saltos por estaciones intermedias, característica que diferencia a esta capa con el nivel de enlace de datos, que sólo se preocupa de la comunicación entre estaciones conectadas al mismo cable. En una red local que utiliza un medio compartido, solamente existe una ruta posible para comunicar dos estaciones, por lo que el nivel de red apenas tiene trabajo; en su lugar, el nivel de enlace deberá realizar la tarea de comprobar si el mensaje va destinado a la estación (y si procede, capturarlo) o no, comprobando la dirección MAC del destinatario.
Para poder realizar su trabajo convenientemente, la capa de red debe conocer la topología física y seleccionar las mejores rutas a través de ella; también deberá tener en cuenta rutas alternativas para evitar congestiones o zonas más saturadas, De la misma forma que un viajero selecciona el camino a seguir. Normalmente, la capa de red utiliza algún método (dependiendo del protocolo) para guardar toda la información concerniente a la topología física de la red.
Entre los protocolos de red y de transporte se encuentran: IPX/SPX NETBIOS/NetBEUl y TCP/IP.
TCP/IP
El nombre TCP/IP proviene de dos de los protocolos más importantes de la familia de protocolos Internet, el Transmission Control Protocol (TCP) y el Internet Protocol IP.
La principal virtud de TCP/IP estriba en que está diseñado para enlazar ordenadores de diferentes tipos, incluyendo PCs, minis y mainframes, que ejecuten sistemas operativos distintos, sobre redes de área local y redes de área extensa y por tanto, permite la conexión de equipos distantes geográficamente.
Otro gran factor que ha permitido su expansión es la utilización de TCP/IP como estándar de Internet.
El mayor problema de TCP/IP estriba en la dificultad de su configuración, por le que no es recomendable su uso para utilizarlo en una red pequeña.
TCP/IP fue desarrollado en 1972 por el Departamento de Defensa de los Estados Unidos, ejecutándose en ARPANET(una red de área extensa del Departamento de Defensa). Posteriormente, una red dedicada exclusivamente a aspectos militares denominada MILNET se separó de ARPANET. Fue el germen de lo que después constituiría Internet.
La arquitectura TCP/IP transfiere datos mediante el ensamblaje de datos en paquetes. Cada paquete comienza con una cabecera que contiene información de control seguida de los datos.
El lnternet Protocol IP es un protocolo del nivel de red de OSI que permite a las aplicaciones ejecutarse de forma transparente sobre las redes interconectadas. De esta forma, las aplicaciones no necesitan conocer qué hardware está siendo utilizado en la red y/ por tanto, la misma aplicación puede ejecutarse en cualquier arquitectura de red.
El Transmission Control Protocol (TCP), un protocolo del nivel de transporte de OSI asegura que los datos sean entregados, que lo que se recibe corresponde con lo que se envió y que los paquetes sean reensamblados en el orden en que fueron enviados.
UNIX se empezó a comercializar como el principal sistema operativo que utilizaba TCP/IP y llegaron a ser sinónimos.
Como denominar a un ordenador en TCP/IP
Es importante que se establezca la identificación de la estación de trabajo de una forma que evite su duplicidad dentro de todos los ordenadores que puedan infectarse.
Para ello, en TCP/IP, se utiliza el nombre del usuario y el nombre del dominio de Ia red.
Para identificar al usuario, es necesario nombrarlo evitando que pueda haber dos con el mismo nombre y produzca confusiones al servidor de la red.
Para identificar a la red, se utiliza el concepto de dominio. La estructura del dominio se asemeja a un árbol invertido (es decir, el tronco se encuentra en la parte superior y las ramas en la parte inferior) y cada hoja corresponde a un dominio.
La identificación de un dominio está formada por varios apartados separados por un punto (por ejemplo, RED1.MEC.EDU). Cada uno de ellos recibe el nombre de subdominio. El subdominio situado más a la derecha es el de carácter más general y recibe el nombre de dominio de nivel alto.
El nombre de un dominio completamente calificado (FQDN, Fu\l Qualified Domain Name) ha de empezar por el nombre de la estación de trabajo (HOST), un punto y el nombre de la red (DOMINIO). Por ejemplo, si se denomina al PC como PC109 y a la red principal como RED 1 , la identificación completa de la estación de trabajo sería PC109.RED1.
Si. a su vez, esta red formara parte de otra red superior, se volvería a poner otro punto y el nombre de dicha red (por ejemplo, PC109.RED1.MEO. En este caso, después del HOST, vendría el SUB DOMINIO (es posible tener varios niveles de subdominios) y, para finalizar, el DOMINIO.
También es interesante identificar a la institución de la que forma parte la red, así como la organización o el país a los que pertenece. Para ello, se le habrán de añadir estos dos nuevos conceptos separados, también, por puntos.
Com Organización comercial
Edu Institución educativa
Gov Institución gubernamental
Int Organización internacional
Mil Organización militar
Net Organización de red
Org Organización sin ánimo de lucro
Fr Organización francesa
Uk Organización inglesa
Es Organización española
Si se toma como ejemplo la identificación ROORIGUEZ@PC709.REDMEC.EOV se ve que el usuario (ROORIGUEZ) se separa con una arroba del dominio, que está formado por el nombre de la estación (PC709), de la red (RED1) de la institución (MEC) y de la organización (EDU).
Existe una institución que se encarga del registro de todas las direcciones IP y sus correspondientes dominios que se denomina INTERNIC y que ha delegado para España sus funciones en REDIRIS.
Es necesario hacer constar que la definición de dominio dada en este apartado no tiene nada que ver con los dominios de redes locales definidos en Windows NT
Direcciones IPv4 e IPv6
Las direcciones IP consiguen que el envío de datos entre ordenadores se realice de forma eficaz, de forma parecida a como se utilizan los números de teléfono en las llamadas telefónicas.
Actualmente, las direcciones IP de la versión actual Ipv4) tienen 32 bits, formados por cuatro campos de 8 bits (octeto) cada uno, separados por puntos.
Por tanto, las direcciones IP están en representación binaria (por ejemplo, 01111111.00000000.00000000.00000001). Cada uno de los campos de 8 bits puede tener un valor que esté comprendido entre 00000000 (cero en decimal) y 11111111 (255 en decimal).
Normalmente y debido a la dificultad del sistema binario, la dirección IP se representa en decimal. Por ejemplo, la dirección IP indicada anteriormente, 01111111.00000000.00000000.00000001 (en representación binaria), tiene su correspondencia con 127.0.0.1 (en representación decimal).
La forma de pasar de un sistema binario a un sistema decimal se hace por potencias de dos en función de la posición de cada uno dentro del octeto, correspondiendo cero a la primera posición a la derecha y siete a la primera posición de la izquierda (por ejemplo, 00000001 corresponde a 1 ya que 20 = 1, 00000010 corresponde a 2 ya que 21 = 2 Y 00001000 corresponde a 8 ya que 23 = 8).
Si hay varios unos en el octeto, se deberán sumar los resultados de las potencias de dos correspondientes a su posición (por ejemplo, 00001001 corresponde a 9 ya que 23 + 20 = 8 + 1 = 9 Y 01 001 001 corresponde a 73 ya que 26 + 23 + 20 = 64 + 8 + 1 = 73).
Los cuatro octetos de la dirección IP componen una dirección de red y una :r:í,-'=Cción de equipo que están en función de la clase de red correspondiente.
Existen cinco clases de redes: A, B, C, D y E (esta diferenciación viene dada en función del número de ordenadores que va a tener la red).
clase A: porcion de la red de un byte seguido por una porcion del host de 3 bytes. El bit de mayor orden de la porcion de red esta siempre a 0. Puede haber hasta 126 redes de clase A con 2 a la 18 host por red
clase B: porcion de red de 2 bytes seguido por una porcion de host de 2 bytes. Los dos bits de orden superior de la porcion de red tienen el valor 10. Puede haber 16382 redes de clase B con 2 a la 16 nodos por red
clase C: porcion de la red de 3 bytes seguidos por una porcion del host de 1 byte. Los tres bits de orden superior de la porcion de red valen 110 siempre. Puede haber (2 a la 18) –3 redes de clase C cada una con 256 nodos.
Clase D: direcciones multidestino. Con una dirección de este tipo de envia un mismo datagrama a un grupo de equipos definido previamente evitando enviar un datagrama para cada destinatario con dirección individual.
Clase E: reservado para usos futuros

Existen unas reglas y convenios de numeración en cuanto a las direcciones IP que es importante conocer:
las direcciones de red se escriben en notación decimal con puntos de la forma: A.B.C.D. Cada uno de los 4 bytes se codifica en decimal , de cero a 255
la dirección 255.255.255.255 se utiliza para realizar broadcast en la propia red
la dirección 0.0.0.0 identifica al host actual
la dirección con el campo host todo a ceros se utiliza para indicar la red misma y por tanto no se utiliza para ningun host
la dirección con el campo host todo a unos se usa como dirección broadcast de la red indicada y por tanto no para ningun host
la dirección con el campo red todo a ceros identifica a un host en la propia red, cualquiera que esta sea
existen algunas redes , especialmente el rango de 240.0.0.0 en adelante que estan reservados y no deben utilizarse
las direcciones 127.x.y.z se utilizan en las pruebas loopback devolviendo todas las implementaciones de IP al origen todos los datagramas enviados a esta dirección
las redes 10.0.0.0 ,172.16.0.0-172.31.0.0,192.168.0.0 a 192.168.255.0 estan reservadas para intranets por RFC
como consecuencia de las normas cuarta y quinta hay dos direcciones inútiles en una red.

En el futuro, el tamaño de la dirección fPv6 aumentará de 32 a 128 bits para poder soportar un número mayor de nodos direccionables, más niveles de direcciones jerárquicas y una autoconfiguración más sencilla de las direcciones.
Habrá tres formas de representar dichas direcciones:
La primera forma, que es la más aceptada, consiste en representarla de la manera x:x:x:x:x:x:x:x, donde las x representan los valores hexadecimales de los ocho bloques de dos octetos cada uno. Por ejemplo:
FADB:CA58:96A4:B215:FABC:BA61 :7994:1782 A090:1 :0:8:A800:290C:1 :817B
Como puede observarse, no es necesario escribir todos los ceros que hay por delante de un valor hexadecimal en un campo individual, pero se ha de tener, por lo menos, una cifra en cada campo .
La segunda forma consiste en suprimir los ceros que se encuentran en medio de las direcciones. La expresión de dos "::" indicaría uno o varios grupos de 16 bits iguales a 0. Por ejemplo, la dirección siguiente:
A 123:FF01 :0:0:0:0:0:92
se representaría de la manera siguiente:
A 123:FF01 ::92
Otra forma, a veces mas comoda cuando haya un entorno mixto de nodos con direcciones nuevas y antiguas es representarla de la manera x:x:x:x:x:x:d.d.d.d donde x son los valores hexadecimales y d los decimales
Servidor DHCP
En una red normal cada equipo debe tener asignada una dirección IP si utiliza el protocolo TCP/IP, pero, en una red con un servidor DHCP, éstas se asignarán cuando sea necesario.
DHCP (Dynamic Host Configuration Protocol) es un sistema desarrollado para asignar direcciones IP a los clientes que lo soliciten.
El proceso a seguir por un equipo que quiera conseguir una dirección /P es el siguiente:
Envía un mensaje al servidor DHCP solicitando una dirección /P.
El servidor DHCP responde ofreciendo varias direcciones IP que tiene disponibles de las indicadas en la instalación (entre las que están eliminadas aquéllas consideradas convenientes).
El cliente selecciona una y envía una solicitud de uso de la dirección al servidor DHCP.
El servidor DHCP admite la solicitud y garantiza al cliente la concesión del uso de la dirección.
El cliente utiliza la dirección para conectarse a la red.
Las direcciones se conceden por un periodo de tiempo determinado. Cuando periodo ha finalizado, el cliente deberá solicitar la renovación de la concesión o la dirección pasará al estado de disponible. Si solicita la renovación y no renovársela, se le reasignará otra.
Resolver nombres de ordenadores (DNS)
Todo ordenador lleva una dirección lP y un nombre de equipo. Normalmente se necesitará indicar la dirección IP para conectarse a uno de ellos y poder realizar procesos con TCP/IP.
Pero también es posible realizar una conexión indicando únicamente el nombre del equipo (que es más sencillo de recordar que su dirección /P). Para ello, existen varios métodos:
Servidor DNS
Archivo LMHOSTS
Servidor WINS
Resolución NetB/OS sobre nodos TCP//P
DNS (Domain Name System) es un sistema que usa servidores distribuidos a lo de la red para resolver el nombre de un ordenador (con la estructura de nombre de ordenador, nombre de subdominio y nombre de dominio) en una dirección IP (de esta manera, no es necesario tener que recordar y usar su dirección IP.
Por tanto, se necesita un archivo que realice dicha conversión (que es lo necesario para establecer la conexión).
En una primera fase se utilizaba un archivo para realizar esta función que recibia el nombre de HOSTS. He aquí un ejemplo básico de archivo HOSTS:
172.16.132.1 principal
172.16.132.30 jlr
171.16.132.31 personal
165.16.132.41 secretaría
También era posible utilizarlo indicando el nombre completo del equipo. He aquí un ejemplo de este tipo de archivo HOSTS:
172.16.132.1 principal
172.16.132.1 principal.contabilidad.es
172.16.132.30 jlr
172.16.132.30 jlr.contabilidad.es
172.16.132.31 personal
172.16.132.31 personal.contabilidad.es
165.16.132.41 secretaría
165.16.132.41 secretaría.contabil idad.es
Este archivo tiene que estar situado en el mismo lugar donde se encuentre TCP/IP en el equipo y está determinado por el sistema operativo (normalmente se encuentra en un directorio ETC).
Otra posibilidad es que el servidor DNS cuente con una base de datos para poder resolver el nombre del ordenador.
La información que se encuentra en dicha base de datos se incluye en registro de recursos (RR).
Entre dichos registros de recurso se encuentran:
Dirección (A). Asigna un nombre de un ordenador a una dirección IP concreta.
Dirección IPv6 (AAAA). Asigna un nombre de un ordenador a una dirección IPv6 concreta.
Inicio de autoridad (SOA). Indica el inicio de autoridad para la zona (los servidores de nombres tienen información completa acerca de una parte de dominio llamada zona; entonces se dice que tiene autoridad para esa zona)
lntercambiador de correo (MX). Identifica el equipo al que se va a entregar correo en el dominio.
Puntero de dominio (PTR). Asigna direcciones IP a nombres de equipo.
Servidor de nombre (NS). Asocia un nombre de dominio con un nombre de equipo para un servidor de nombre concreto.
Ubicación de servidos (SRV).Asigna un nombre de dominio DNS a una lista especificada de equipos que ofrecen un tipo específico de servicio.
Los servidores DNS pueden real izar los siguientes papeles:
Servidor de nombre primario: Este tipo de servidor DNS mantiene la base de datos de nombres y direcciones para una zona, guardando información sobre la forma de contactar con servidores de nombre de zonas inferiores y superiores.
Servidor de nombre secundario: Este tipo de servidor DNS obtiene información de la zona de un servidor maestro (puede ser de un servidor primario o de otro secundario que tiene una copia del archivo de zona). Esta información se guarda en un archivo de sólo lectura para aumentar la fiabilidad y descargar trabajo al servidor DNS primario. Para mantener actualizada dicha base de datos, se realizan transferencias de zonas. Estas transferencias de zonas se hacen al arrancar el servidor secundario y cada vez que se detecta una modificación en la base de datos principal.
Servidor de nombre maestro. Este tipo de servidor DNS transfiere el archivo de zona a un servidor secundario (puede actuar como servidor maestro tanto un servidor primario como uno secundario).
Servidor de nombre sólo de cache: Este tipo de servidor DNS no almacena ningún archivo de información de zona. Cuando un equipo solicita a un servidor DNS, primario o secundario, la resolución de un nombre de equipo, el servidor de sólo caché guarda la dirección IP que devuelve el servidor DNS antes de enviarla al equipo que realizó la consulta. En caso de necesitarse resolver otra vez el nombre del equipo anterior, en vez de consultarse al servidor DNS primario o secundario, se consultará al servidor de sólo caché.
Protocolos TCP/IP
TCP/IP es una familia de protocolos desarrollados para permitir la comunl' cación entre ordenadores de cualquier tipo de red o fabricante, respetando los protocolos de cada red individual.
Los protocolos TCP/IP se estructuran en cinco niveles funcionales
El nivel físico corresponde al hardware. Puede ser un cable coaxial, un cable par trenzado, cable de fibra óptica o una línea telefónica. TCP/IP no considera oficialmente el nivel físico como componente específico de su modelo y tiende a agrupar el nivel físico con el nivel de red. Los protocolos principales de este nivel son: ARP y RARP.
El nivel de red, independientemente del medio físico que se utilice, necesitará una tarjeta de red específica que, a su vez, dependerá de un software llamado controlador de dispositivo proporcionado por el sistema operativo o por el fabricante. Proporciona fiabilidad (aunque no necesariamente) en la distribución de datos que pueden adoptar diferentes formatos. Aunque TCP/IP no especifica ningún protocolo para este nivel, los protocolos más notables son: SLIP, PPP y PPTP.
El nivel de Intemet se superpone a la red física creando un servicio de red virtual independiente de aquélla. No es fiable ni orientado a conexión. Se encarga del direccionamiento y encaminamiento de los datos hasta la estación receptora. El protocolo específico de este nivel es IP. .
El nivel de transporte suministra a las aplicaciones servicios de comunicaciones desde la estación emisora a la receptora. Utiliza dos tipos de protocolos: TCP que es fiable y orientado a conexión, y UDP que es no fiable y no orientado a conexión.
El nivel de aplicación corresponde a las aplicaciones disponibles para los usuarios como pueden ser: FTP, SNMP TELNET, etc.
Estos niveles se corresponden con los niveles del modelo de referencia OSI de la siguiente manera:

Esta correspondencia es teórica porque, como los protocolos TCP/IP fueron desarrollados antes que el modelo de referencia OSI, existen sustanciales diferencias, como son:
El concepto de jerarquía en relación a los niveles. Indica que una tarea de comunicaciones se divide en entidades que pueden comunicar con otras entidades pares en otro sistema. Una entidad dentro de un sistema proporciona servicios a otras entidades y, a su vez, utiliza los servicios de otras. Estas entidades deben tener una relación jerárquica, de manera que una entidad sólo utilice los servicios de las entidades jerárquicamente inferiores. La diferencia entre ambos modelos es consecuencia del pragmatismo con el que se desarrollaron los protocolos TCP/IP, ya que éstos proporcionan a los diseñadores mayor grado de libertad para la utilización de uno u otro, mientras que OSI es más prescriptivo, ya que dicta los protocolos de un nivel determinado que deben realizar unas funciones específicas.
La interoperación de redes, ya que los protocolos TCP/IP se han concebido para interconectar sistemas no conectados a la misma red.
La fiabilidad extremo a extremo. El protocolo IP no es fiable, es decir, no garantiza que los paquetes entregados sean correctos y que conserven la secuencia con que fueron emitidos, ya que supone que son los protocolos de transporte los que deben garantizarlo.
Los servicios no orientados a conexión. El protocolo IP tampoco es orientado a conexión, ya que ésta debe proporcionarse en niveles superiores.
La gestión de red. En los primeros documentos del modelo OSI no se contemplaban las funciones de gestión y, aunque actualmente ya se contemplan, no alcanzan el nivel de aceptación de los de TCP/IP.
Protocolos del nivel físico
Aunque TCP/IP no considera oficialmente el nivel físico como componente específico de su modelo y tiende a agrupar el nivel físico con el nivel de red, se van a describir en este apartado los protocolos ARPy RARP
ARP (Address Resolution protocol)
Es un protocolo que se utiliza para convertir las direcciones IP en direcciones físicas que puedan ser utilizadas por los manejadores.
Para poder realizar esta conversión, existe en cada ordenador un módulo ARP que utiliza una tabla de direcciones ARP que, en la mayoría de los ordenadores, funciona como si fuera una memoria intermedia (caché), de forma que la información que lleva mucho tiempo sin utilizarse se borra.
Si encuentra la correspondencia entre la dirección IP y la dirección física, se procede a la transmisión.
Si no la encuentra en la tabla, se genera una petición ARP que se difunde por toda la red. Si alguno de los ordenadores de la red reconoce su propia dirección IP en la petición ARP, envía un mensaje de respuesta indicando su dirección física y se graba en la tabla de direcciones ARP.
RARP (Reverse Address Resolution Protocol)
Se utiliza cuando, al producirse el arranque inicial, los ordenadores no conocen su dirección /P.
Requiere que exista en la red, al menos, un servidor RARP. Cuando un ordenador desea conocer su dirección /P, envía un paquete que contiene su propia dirección física.
El servidor RARP, al recibir el paquete, busca en su tabla RARP la dirección IP correspondiente a la dirección física inicial indicada en el paquete y envía un paquete al ordenador origen con esta información.
A diferencia del protocolo ARP que se incorpora normalmente en todos los productos TCP//P, el protocolo RARP sólo se incorpora en unos pocos productos.
Protocolos del nivel de red
Aunque TCP/IP no especifica ningún protocolo para este nivel, se va a describir el protocolo PPP.
PPP (Point-to-Point Protocol)
Es un protocolo SLIP mejorado con control y recuperación de errores.
Funcionalmente, es mucho más completo y robusto que SLIP. Además de asumir todas sus funciones, incorpora múltiples mejoras:
Es posible negociar el tamaño máximo de los paquetes entre los dos extremos o la utilización de técnicas de compresión.
Existe posibilidad de autentificación.
Puede monitorizarse la calidad del enlace.
Una característica que hace a PPP aún más interesante es la posibilidad de conexión a través de RDSI. Existe una gran cantidad de software comercial y de dominio público disponible para PPP.

Protocolos del nivel Internet
En este nivel se encuentran los protocolos ICMPe IP.
ICMP (Internet Control Message Protocol) es un protocolo de mantenimiento, gestión de red que ayuda a supervisar la red.
Se utiliza para poder encontrar una ruta a través de la cual los datagramas viajan por la red y alcancen su destino.
El objetivo principal de ICMP es proporcionar la información de error o control entre nodos. La implementación de ICMP es obligatoria como un subconjunto logico del protocolo IP.
Los mensajes de error de este protocolo normalmente los genera y los procesos TCP/IP, y no el usuario.
Existen cuatro tipos de mensajes ICMP:
Mensajes de destino no alcanzable.
Mensajes de control de congestión.
Mensajes de redireccionamiento.
Mensajes de tiempo excedido.
Una de las utilidades de diagnóstico que utiliza este protocolo es la utilidad PING (se utiliza para comprobar si un equipo está conectado a la red).
IP (Internet protocol) se encarga de seleccionar la trayectoria a seguir por los datagramas, es decir, por dónde se deben encaminar los datagramas saliente::: pudiendo llevar a cabo tareas de fragmentación y reensamblado.
Este protocolo, que no es fiable ni está orientado a conexión, no garantiza e control de flujo, la recuperación de errores ni que los datos lleguen a su destino.
IP no se encarga de controlar que sus datagramas, que envía a través de la red puedan perderse, llegar desordenados o duplicados. Para ello, tendrán que ser contemplados por protocolos del nivel de transporte.
Los datagramas IP contienen una cabecera con información para el nivel IP y datos. Estos datagramas se encapsulan en tramas que, dependiendo de la red física utilizada, tienen una longitud determinada.
Cuando los datagramas viajan de unos equipos a otros, pueden atravesar diferentes tipos de redes. El tamaño máximo de estos paquetes puede variar de una red a otra dependiendo del medio físico que se emplee para su transmisión. A este tamaño máximo se le denomina MTU (Unidad Máxima de Transmisión) y ninguna red puede transmitir ningún paquete cuya longitud exceda del MTU de dicha red.
Debido a este problema, es necesario reconvertir los datagramas IP en el formato requerido por cada una de las redes que va atravesando. Esto es lo que se denomina fragmentación y reensamblado.
La fragmentación divide los paquetes en fragmentos de menor longitud (se realiza en el nivel más inferior posible y de forma transparente al resto de los nivele3 y el reensamblado realiza la operación contraria.

Protocolos del nivel de transporte
En este nivel se encuentran los protocolos TCP y UDP.
TCP (Transmíssíon Control Protocol) es un protocolo orientado a conexión que utiliza los servicios del nivel Internet.
Al igual que cualquier protocolo orientado a conexión, consta de tres fases:
Establecimiento de la conexión: Se inicia con el intercambio de tres mensajes, garantiza que los dos extremos de la transmisión estén preparados para la transferencia de datos y permite que ambos acuerden los números iniciales de secuencia (cada extremo elige un número de forma aleatoria).
Transferencia de los datos: La unidad de datos que utiliza es el segmento y su longitud se mide en octetos. La transmisión es fiable ya que permite la recuperación ante datos perdidos, erróneos o duplicados, así como garantizar la secuencia de entrega, para lo que se añade a la cabecera del segmento de datos un número de secuencia y un código de control. La fiabilidad de la recepción se consigue mediante la confirmación de la recepción, los temporizadores de espera de confirmación y la retransmisión de segmentos.
Liberación de la conexión: Cuando una aplicación comunica que no tiene más datos que transmitir, TCP finaliza la conexión en una dirección. Desde ese momento, TCP no vuelve a enviar datos en ese sentido, permitiendo que los datos circulen en el sentido contrario hasta que el emisor cierra también esa conexión.
TCP permite multiplexacíón es decir, una conexión TCP puede ser utilizada simultáneamente por varios usuarios.
Como normalmente existe más de un proceso de usuario o aplicación utilizando TCP de forma simultánea, es necesario identificar los datos asociados a cada proceso. Para ello, se utilizan los puertos. Un puerto es una palabra de 16 bits que identifica hacia qué aplicación o proceso han de dirigirse los datos.
Hay aplicaciones que tienen asignado el mismo número de puerto, ya que realizan funciones de servidores normalizados que utilizan los servicios TCP/IP. Estos puertos reservados se encuentran en el archivo SERVICES que se encuentra en el directorio ETC y corresponden a números superiores a 1, indicando también si corresponden al protocolo TCPo UDP.
Algunos ejemplos de puertos son:
21:FTP
23:Telnet
25:SMTP
69:TFTP
111:RFC
161:SNMP
UDP (User Datagram Protocol) es un protocolo que se basa en el intercambio de datagramas. UDP permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera.
El inconveniente de esta forma de actuación es que no hay confirmación de recepción ni de haber recibido los datagramas en el orden adecuado, debiendo ser la aplicación la que se encargue de controlarlo.
Al igual que el protocolo TCP utiliza puertos y sockets y, también, permite la multiplexación.
Protocolos del nivel de aplicación
Todas las aplicaciones TCP/IP utilizan el modelo cliente/servidor.
En este nivel se encuentran un buen número de protocolos de los cuales se va a hablar mínimamente de los siguientes: FTP, HTTP, SMTP y TELNET.
FTP (File Transfer Protocol) es el más utilizado de todos los protocolos de aplicación y uno de los más antiguos.
Se utiliza para la transferencia de archivos proporcionando acceso interactivo con especificaciones de formato y control de autentificación (aunque es posible conectarse como el usuario anonymous que no necesita contraseña).
HTTP (HyperText Transfer Protocol) es uno de los protocolos más recientes. Se utiliza para manejar la consulta de hipertexto y el acceso de datos con World Wide Web (WWW). El tráfico generado por este protocolo ha pasado, debido a la influencia de Internet, a ser muy grande.
SMTP (Simple Mail Transfer Protocol) es un protocolo de correo electrónico. Especifica el formato exacto de los mensajes que un cliente debe enviar desde un ordenador al servidor de otro, pero no especifica cómo debe almacenarse el correo ni con qué frecuencia se debe intentar el envío de los mensajes.
TELNET permite que un usuario, desde un terminal, acceda a los recursos y aplicaciones de otros ordenadores. Una vez que la conexión queda establecida, actúa de intermediario entre ambos ordenadores.
Se fundamenta en tres principios:
El concepto de terminal virtual de red. Corresponde a la definición de cómo han de ser los datos, caracteres de control y las secuencias de los mandatos que han de circular por la red para permitir una heterogeneidad de los sistemas.
La simetría entre terminales y procesos. La comunicación puede ocurrir entre dos terminales, dos procesos o entre un terminal y un proceso.
Permite que el cliente y el servidor renegocien sus opciones: La conexión comienza con una fase de negociación de opciones en la que se utilizan cuatro mandatos: WILL, WONT, DO y DONT.
WILL se envía para mostrar el deseo de comenzar una opción (que se ha de indicar) y se contesta con DO (respuesta positiva) o DONT(respuesta negativa).
WONT se envía para mostrar el deseo de no comenzar una opción (que se ha de indicar) y se contesta con DONT(mostrando el acuerdo de no utilización).
DO se envía para indicar que comience a utilizar una opción (que se ha de indicar) y se contesta con WILL (respuesta positiva) o WONT (respuesta negativa).
DONT se envía para indicar que no comience a utilizar una opción (que se ha de indicar) y se contesta con WONT(mostrando el acuerdo de no utilización).

Enviando paquetes en la subred local
Una de las responsabilidades de IP es determinar si un paquete debe ser enviado a la subred local, o bien, debe ser encaminado a otra subred.
Se siguen los pasos siguientes:
IPrecibe una trama de TCP que está dirigida a una dirección IPdeterminada. IPcompara el identificativo de la subred de la dirección recibida con el identificativo de la subred local. Si ambos coinciden, la trama se envía localmente.
Antes de proceder al envío local, IP debe determinar la dirección de la red física que corresponde a la dirección IPdestino. Para ello, utiliza ARP.
IP añade la siguiente información a la trama:
La dirección IPorigen.
La dirección física de la red origen.
La dirección IPdestino.
La dirección física de la red destino.
IP pasa el paquete con las direcciones añadidas al protocolo de nivel inferior que lo lleva a su destino.
Enviando paquetes a la subred remota
Si en el punto 2 del apartado anterior se determina que las dos subredes (origen y destino) son distintas, es una indicación clara de que el paquete se tiene que encaminar hacia una subred remota.
Cuando un ordenador está conectado con el exterior, debe estar configurado con una dirección IP de un gateway(puerta de enlace/ router o encamínador) por defecto.
Como el paquete tiene que dirigirse hacia el exterior/ IPdirige el paquete al gateway por defecto.
Allí se realizan distintos algoritmos de encaminamiento (que pueden ser simples o complejos) hasta que se identifica el gateway de la subred a la que tiene que enviar el paquete. Entonces, lo envía a dicho Gateway que, por fin, lo hace llegar al ordenador destino.
Para identificar el gateway de la subred remota, es necesario consultar las tablas de encaminamiento que están disponibles en el gateway por defecto.
Esta tabla puede ser:
Estática, Este tipo de tabla lo tiene que crear manualmente el administrador de la red y no sé actualiza automáticamente cuando se producen cambios en la red. Debe contener, por lo menos, los datos siguientes:
Direcciones de red: Indica las direcciones IP remotas a las que va a tener acceso.
Máscara de subred: Indica la máscara correspondiente a la subred de la dirección IP remota.
Dirección del Gateway: Indica la dirección del gateway remoto que se usará para enviar un paquete a una dirección IP remota.
Dirección física de la red: Indica la dirección física de la red remota.
Dinámica: Este tipo de tablas se actualizan automáticamente cuando se produce algún tipo de cambio en la red.
Seguridad en TCP
La seguridad es una preocupación importante siempre que se conecta una red al exterior.
El software básico de TCP/IP no cifra los datos por sí mismo, debe realizarlo la aplicación. Si no se cifran los datos, la contraseña se enviará en texto ASCII y podrá ser leída fácilmente durante el trayecto por personas que dispongan de medios y conocimientos. Es importante que los datos (sobre todo la contraseña) vayan cifrados, para evitar que sean examinados por personas ajenas.
Otra opción es mantener alejadas del sistema a todas aquellas personas ajenas.
Para ello, lo mejor es instalar un cortafuegos (firewall).
Su función es filtrar los intentos de establecimiento de conexión, de forma que se pueda detectar e impedir el acceso al sistema a posibles intrusos sin que ni siquiera se haya llegado a establecer un enlace directo entre ellos.
El cortafuegos puede ser configurado para permitir que sólo determinadas direcciones, origen y destino, puedan acceder a su red (o desde ella).
Las funciones de cortafuegos se pueden realizar por:
Ordenadores dedicados exclusivamente al filtrado de paquetes (servidor proxy).
Encaminadores de red (routers) configurados para esta tarea. Programas de software para distintos sistemas operativos.
Cualquier otro dispositivo intercalado entre la red y el exterior que soporte el filtrado de paquetes, según unos parámetros previamente definidos.
Comandos TCP/IP
ARP
Es un comando que muestra o modifica las tablas de traducción de direcciones físicas IP a Ethernet utilizadas por el protocolo de resolución de direcciones ARP. La forma de escribir este comando es:
ARP NUM 2
Visualizar “Mayor =” NUM 1
SI NO
Visualizar “Mayor =” NUM 2
Fin
7
1
La representación de los algoritmos se realiza mediante los diagramas de flujo. Éstos utilizan una serie de símbolos (cajas), unidos por líneas de flujo que indican la secuencia en que deben ejecutarse los programas. A estos diagramas también se los llama organigramas, ya que indican el orden de ejecución.
Los símbolos más habituales son los siguientes:
Terminal: se utiliza para representar el inicio y el fin de un programa; también puede representar una pausa o interrupción del programa.
Proceso: representa cualquier tipo de operación que se pueda realizar con los datos.
Decisión: se utiliza para representar una operación lógica o una comparación de datos para que, en función del resultado, el programa tome uno de los caminos existentes. Lo normal es que tenga dos salidas, pero puede tener más, en cuyo caso se denomina decisión múltiple.
Entrada/Salida: simboliza la introducción de datos o la salida de información a través de cualquier periférico. Éste se puede sustituir por símbolos específicos del periférico utilizado.
Líneas de flujo: indican la secuencia en la que se van a ejecutar los pasos del programa.

Codificación del programa
En esta fase se escribe, en el lenguaje de programación elegido, el algoritmo obtenido en la fase anterior. El resultado final será la creación de un fichero con las instrucciones necesarias para resolver el problema, denominado programa fuente. Esta fase debería ser la más corta, ya que se trata simplemente de escribir las instrucciones indicadas por el algoritmo. En la figura 2 se muestra el programa fuente, escrito en lenguaje C, que permitiría visualizar el mayor de dos números introducidos desde el teclado.
Compilación del programa
Una vez escrito el programa fuente, éste se traduce mediante el compilador a código máquina, apareciendo uno nuevo, denominado programa objeto.8
Si en la fase de codificación se hubieran cometido errores en la escritura de las instrucciones del lenguaje de programación, éstos aparecerían en la compilación y tendrían que corregirse hasta conseguir un programa objeto válido.
Montaje o linkado
En esta fase se monta el programa objeto con las librerías necesarias del lenguaje de programación para formar el fichero ejecutable.
Fase de pruebas
El programa ejecutable obtenido se somete a una serie de pruebas para detectar posibles errores de funcionamiento; en ellas deben probarse todas las posibilidades del programa.
Si se diera por finalizada la fase de pruebas sin haber realizado un chequeo completo, se correría el riesgo de que el programa fallara en cualquier momento durante su ejecución. En caso de detectar algún error, éste debe corregirse en el programa fuente, que posteriormente debería volverse a compilar, montar y someter a nuevas pruebas.
Fase de explotación y mantenimiento
Esta última fase se desarrolla diariamente con el uso del programa. En ella se realizan los cambios necesarios para solucionar los errores que aparezcan y para adecuar el programa a las nuevas exigencias de los usuarios.

Entorno de programación de Borland Turbo C++

Dependiendo del lenguaje de programación y de la aplicación comercial que se utilice, el entorno de trabajo será diferente. En nuestro caso utilizaremos el programa Borland Turbo C++ 3.0 para Windows, basado en el lenguaje C; ya que se trata de un programa para Windows, el entorno de programación resultará familiar.
Para poder ejecutar el programa y abrir así su ventana, se debe operar como con cualquier otra aplicación Windows: seleccionar la opción del Menú Inicio o, si se hubiera creado, hacer doble clic sobre su icono de acceso directo.
Para salir de Turbo C++, hay que seleccionar la opción Exit del menú File o hacer clic sobre el botón Cerrar de su ventana.
La forma de trabajar con esta aplicación es totalmente similar que con cualquier otra: cada documento (en este caso programa) se escribe y modifica en una ventana propia que puede ser maximizada, minimizada, cerrada, etc.
Cuando el programa necesite información para realizar un proceso, o cuando simplemente tenga que mostrar algún aviso, activará distintos cuadros de diálogo.


9
UNIDAD 1
Los programas podrán guardarse, recuperarse, imprimirse, etc., mediante las opciones de menú como los documentos de cualquier otra aplicación; tan sólo debe tenerse en cuenta que tanto los menús como las opciones de éstos están escritas en inglés.
Los botones de la barra de herramientas permiten realizar rápidamente la tareas más frecuentes. Aunque el aspecto de la barra varía dependiendo de la situación del programa, el más frecuente es el que muestra la figura siguiente.



A continuación se va a describir, con un ejemplo, el proceso completo que debe seguirse para crear un programa con Turbo C++; es recomendable realizar todos los pasos aquí detallados aunque no se comprendan, por ahora, algunos de ellos.
Escritura del programa
Para crear un nuevo programa, hay que seleccionar la opción New del menú File, con lo que se abrirá una nueva ventana en la que se podrán escribir las instrucciones del lenguaje C mediante el editor de programación.

Al escribir las instrucciones de un programa, debe hacerse correctamente, ya que, de lo contrario, el programa no podrá entenderlas y producirá errores a la hora de ejecutarlo. Además, hay que tener en cuenta que no se pueden utilizar caracteres acentuados, excepto en los comentarios del programa o en la salida de texto por pantalla.
Una vez escrito el programa, lo mejor es guardarlo en un disco; por defecto, el programa guarda los ficheros fuente de los programas en la carpeta C:\TCWIN\BIN. Sin embargo, conviene crear una nueva carpeta, por ejemplo, FUENTE, para organizar mejor los archivos.
Para guardar el programa en el disco de trabajo, se debe seleccionar la opción Save del menú File; aparecerá un cuadro de diálogo en el que habrá que activar la carpeta (directorio) donde se desea guardar y escribir el nombre del archivo.

Obtención del programa ejecutable
Una vez que se ha escrito el programa en el fichero fuente, debe ser convertido en otro distinto que pueda ser ejecutado por el ordenador. Este proceso, que consta a su vez de tres pasos bien distintos, generará dos nuevos ficheros, denominados fichero objeto y fichero ejecutable.
Por defecto, el programa guardará estos nuevos ficheros en la carpeta C:\TCWIN\BIN; aunque sería posible crear otra distinta e indicar al programa que los almacene en ella. La creación de la carpeta se realizará con el Explorador de Windows; posteriormente se le indicará al compilador la nueva carpeta en el cuadro de diálogo que aparece al seleccionar la opción Directories del menú Options.

Como el compilador estaba preparado para trabajar en Windows 3.x, no permite guardar los programas con más de ocho caracteres en su nombre. Tampoco debe escribirse extensión para el fichero; el programa le asignará automáticamente la extensión CPP. Si se le asignara otra extensión, el programa no podría compilarlo posteriormente.
Compilación del fichero. La compilación se lleva a cabo seleccionando la opción Compile del menú Compile. El resultado de esta operación es la creación de un nuevo archivo (fichero objeto), de extensión OBJ, en el que el compilador ha convertido las instrucciones de C en código máquina. Al acabar el proceso, el programa informa, en un cuadro de diálogo, de algunos datos y estadísticas; este cuadro de diálogo se cierra haciendo clic sobre el botón Aceptar. También se puede realizar la compilación de un archivo mediante el botón de la barra de herramientas.
Montaje del fichero. En este proceso, que se realiza mediante la opción Link del menú Compile o mediante el botón de la barra de herramientas, el programa monta el fichero objeto con las librerías necesarias para su ejecución. El resultado final será la creación de un fichero ejecutable, de extensión EXE. Una vez acabado el proceso, aparecerá un cuadro de diálogo con información, que deberá cerrarse.
Ejecución del programa. Una vez generado el fichero ejecutable, sólo falta ejecutar el programa mediante la opción Run del menú Run. En caso de que la aplicación (Turbo C++) no haya informado de la existencia de errores en los pasos anteriores, aparecerá el resultado del programa creado en una nueva ventana.

La compilación, el montaje y la ejecución de un programa se pueden realizar automáticamente uno tras otro; bastará con seleccionar la opción Run del menú Run. En ese caso, si Turbo C++ detecta que el fichero no ha sido compilado y/o montado, realizará las operaciones necesarias, en el orden correspondiente, dando como resultado final la ejecución del programa.

Corrección de errores

En caso de producirse algún error durante la compilación o el montaje del fichero, el programa no se podrá ejecutar, y será imprescindible corregir, en la ventana de edición, los errores cometidos. Posteriormente se tendrán que volver a realizar los procesos de compilación y montaje del archivo para poder ejecutar el programa libre de errores. En el momento en que el programa encuentre un error, avisará del mismo en el cuadro de diálogo correspondiente; al cerrar éste, aparecerá una ventana con la descripción del error. Además, en la ventana del editor, el cursor estará situado en la línea que contiene el error, para localizarlo rápidamente.

Código fuente y código objeto

El proceso completo de creación de un programa da como resultado la aparición de varios archivos diferentes en las carpetas especificadas. Estos archivos son:
Código fuente o programa fuente. Es el fichero que contiene las instrucciones del lenguaje de programación utilizado; en nuestro caso, este archivo queda grabado con extensión CPP. El contenido de este archivo se puede modificar tantas veces como se quiera mediante el editor.
Código objeto. Este archivo, de extensión OBJ, aparece al compilar el código fuente; aunque tiene el mismo contenido que el programa fuente, está escrito en código máquina (0 y 1), y es el propio compilador el encargado de traducir las instrucciones del lenguaje de programación en código máquina. Para modificar este archivo, se tendría que modificar el fichero fuente y volver compilarlo.
Archivo ejecutable. Este archivo, de extensión EXE, se crea al montar los distintos bloques de código máquina creados durante la compilación y las librerías utilizadas de C. Este archivo permite ejecutar el programa creado como cualquier otra aplicación Windows: haciendo doble clic sobre él en la ventana del Explorador de Windows, creando un icono de aplicación para él o indicando su nombre y ruta de acceso en el cuadro de diálogo Ejecutar.

Elementos principales de un programa en lenguaje C
Todo programa en lenguaje C está constituido por una serie de elementos básicos e indispensables. En la figura 14 se muestran los principales elementos de un programa que permite sumar dos números introducidos desde el teclado.
El lenguaje C, a diferencia de otros lenguajes, hace distinción entre los caracteres en mayúsculas y en minúsculas; es decir, sus funciones e instrucciones deben escribirse tal y como corresponda, generalmente en caracteres minúsculas. En caso de no respetar esta regla, se producirá un error en la compilación del fichero fuente.
En cualquier lenguaje de programación hay diferencias entre las instrucciones y las funciones. Las instrucciones son las distintas acciones individuales que debe ejecutar el ordenador; también se las denomina sentencias. Cada una de las líneas de un programa suele corresponder a una acción.
Las funciones son grupos de instrucciones que se ejecutan conjuntamente y resuelven un pequeño problema; algunas veces se las llama subprogramas. Todos los lenguajes de programación incorporan distintas funciones ya creadas (funciones de sistema), que pueden ser utilizadas en cualquier momento con sólo invocarlas; además, también es posible crear nuevas funciones (funciones de usuario) para disponer de ellas en un futuro.
C es un lenguaje totalmente orientado a las funciones, por lo que en algunos momentos se pueden llegar a confundir las funciones de sistema con las instrucciones propias del lenguaje. Para usuarios principiantes, lo mejor es no realizar grandes distinciones entre ellas, pero sí indicar que, para poder utilizar una función de sistema, se debe incluir en el programa el fichero de cabecera en el que esté incluida.



Tipos de datos y declaración de variables

Tanto en el mundo real como en informática, los datos pueden ser de distintos tipos; por este motivo, antes que un programa pueda procesar un dato, necesitará saber de qué tipo es. Esto obliga a declarar el tipo de dato antes de poder introducirlo y/o procesarlo. Para ello habrá que escribir una instrucción que indique el tipo de dato, seguido del nombre que se le quiere asignar.
A la hora de nombrar un dato, debe tenerse en cuenta que:
Se puede utilizar cualquier carácter alfanumérico, pero siempre debe comenzar con una letra. No hay que olvidar que el lenguaje C diferencia los caracteres en mayúsculas y en minúsculas.
No se pueden utilizar espacios en blanco, por lo que es frecuente utilizar el carácter guión bajo ( _ ) para nombres compuestos.
La longitud del nombre no puede ser superior a 32 caracteres.
No se puede utilizar como nombre de dato ninguna palabra clave o reservada del lenguaje; por ejemplo, no es posible utilizar la palabra int como nombre de dato.


De los distintos tipos de datos con los que se puede trabajar en C, los más importantes son:
Carácter (char). Este dato estará constituido por un único carácter, que podrá ser uno cualquiera de la tabla ASCII.
Entero (int). Este dato podrá ser cualquier número entero cuyo valor esté comprendido entre –32 768 y 32 767.
Punto flotante (float). El valor de este dato podrá ser cualquier número con decimales; habrá que tener en cuenta que el separador decimal en C es el carácter punto (.).
Es posible definir varios datos del mismo tipo en una única instrucción, separando sus nombres mediante el carácter coma (,). Conviene elegir cada nombre de dato de manera que sugiera su propósito; en otras palabras, los nombres deben ser significativos. Por ejemplo, el mejor nombre para un dato que vaya a representar la edad de una persona es edad, y no A, num o dato1.
Existen unos modificadores que pueden aplicarse a un dato del tipo int para modificar su rango de representación. De ellos, destacan los siguientes:
long. Permite declarar el dato de tipo entero largo, ampliando así su rango de representación; ahora podrá ser un número entero comprendido entre –2 147 483 648 y 2 147 483 647.
unsigned. Permite declarar el dato como entero sin signo; el nuevo rango de representación estará comprendido entre 0 y 65 535.
Debe tenerse en cuenta que ambos modificadores se pueden utilizar conjuntamente, consiguiendo de ese modo representar números comprendidos entre 0 y 4 294 967 295. Para utilizar un modificador, hay que escribirlo detrás de la palabra clave int y antes del nombre del dato.





Si se desea que un dato tenga un valor determinado, bastará con poner en su declaración, a continuación de su nombre, el signo igual (=) y el valor deseado, que tendrá que ser coherente con el tipo de dato declarado.
Hasta ahora se ha hablado y trabajado con datos que se mantenían constantes hasta finalizar el programa; sin embargo, esto no es lo más habitual. Es frecuente que el valor de los datos varíe a lo largo del proceso, por lo que resulta más correcto denominarlos variables en lugar de datos.

Instrucciones de entrada y salida de información

En C existe una amplia variedad de funciones de visualización y entrada de datos; de ellas, las más importantes sin lugar a dudas, son printf y scanf. Estas funciones ya han aparecido en los ejemplos anteriores, pero ahora es el momento de explicar su utilización.
La función printf permite visualizar información en pantalla y la función scanf permite introducir datos desde el teclado. Ambas funciones se encuentran en el fichero de cabecera stdio.h, por lo que es necesario incluirlo en el programa.
Los formatos de estas funciones son:
printf (cadena de formato, [lista de argumentos]);
La lista de argumentos de la función printf es opcional (motivo por el que se muestra entre corchetes, que en realidad no deben escribirse), y puede estar constituida por una o varias variables, expresiones, etc., separadas mediante el carácter coma.

scanf (formato, argumento);
El argumento de la función scanf indica la variable a la que se le asignará el dato introducido desde el teclado. A diferencia de la función printf, la función scanf sólo puede tener un argumento, que deberá estar precedido del carácter &.

Tanto la cadena de formato de printf como el único formato de scanf, tienen como misión indicar el tipo de dato a visualizar o introducir, que puede ser de tipo entero, carácter o flotante.
Por último, la cadena de formato de printf puede contener, además de las especificaciones de formato, una secuencia de caracteres simples y/o secuencias de escape; no hay que olvidar que todo debe estar delimitado por el carácter comillas dobles (").
Es muy importante que, tanto en la función printf como en la función scanf, las variables sean del mismo tipo que las especificaciones de formato.
En la siguiente tabla se muestran las especificaciones de formato correspondientes
a los tipos de datos más frecuentes.
TIPO DE DATOS O VARIABLE ESPECIFICACIÓN DE FORMATO
Entero con signo %d
Entero sin signo %u
Entero largo con signo %ld
Entero largo sin signo %lu
Flotante %f
Carácter %c
En el caso de visualizar mediante la función printf el valor de varias variables, además de estar especificadas en la lista de argumentos, deben existir otras tantas especificaciones de formato, una para cada variable. La correspondencia entre el formato y la variable se hace según el orden en el que se
hayan escrito.
En la cadena de formato del comando printf también se pueden utilizar secuencias de escape; se trata de caracteres especiales que obligan a realizar una acción determinada.
En la tabla siguiente se recogen las secuencias de escape más utilizadas, junto a la acción que produce cada una de ellas.



Secuencia Acción
de escape
\n Provoca un salto de línea, situando el cursor al principio de la siguiente línea.
\t Sitúa el cursor en la siguiente parada de tabulador.
\a Emite un aviso sonoro.
\” Permite obtener, en el resultado, el carácter comilla doble (“).
\’ Permite visualizar el carácter comilla simple (‘).
\\ Se visualizará, en el resultado, el carácter barra invertida (\).
\b Hace retroceder el cursor un espacio.

En el caso de que una especificación de formato no coincida con el tipo de la variable, el programa se compilará y ejecutará sin problemas, pero el resultado será erróneo.

Operadores aritméticos básicos
La función de los operadores aritméticos es permitir realizar las operaciones básicas (sumas, restas, multiplicaciones y divisiones) con los datos de las distintas variables. Los operadores aritméticos básicos son la suma, la resta, la multiplicación y la división.
El orden en el que se van a ejecutar los distintos operadores aritméticos en una misma fórmula es el habitual: primero se realizan las multiplicaciones y divisiones, y a continuación, las sumas y restas. Cuando existen varias operaciones con la misma prioridad, se efectúan de izquierda a derecha.
Los paréntesis modifican el orden de prioridad (se realizan primero las operaciones incluidas en ellos), y en caso de que existan paréntesis dentro de otros, se ejecutan en primer lugar las operaciones especificadas en los paréntesis interiores.



Particularidades de la división
Al dividir dos datos de tipo entero, el programa sólo se queda con la parte entera del cociente; si el resultado de la división fuera un número decimal, el resultado que mostraría el programa estaría constituido sólo por su parte entera, quedando truncada su parte decimal, por lo que el resultado sería un valor aproximado.
Se podría pensar que el problema tendría solución declarando una nueva variable, de tipo flotante, en la que almacenar el resultado de la operación, tal y como se ha hecho en el programa siguiente.

25
UNIDAD 1
Otra posibilidad de solucionar el problema anterior, quizá más elegante, consiste en convertir el tipo de uno de los datos involucrados en la operación.
Lo habitual es que la conversión se realice, de forma temporal, en la operación en cuestión. Para realizar la conversión, basta con indicar, en la operación en la que esté involucrado el dato, el tipo al que se desea convertir; éste debe colocarse delante del nombre de la variable y encerrado entre paréntesis.


Instrucción de asignación
La operación de asignación consiste en dar valor a una variable. En C, la asignación de variables se realiza utilizando el carácter igual (=), tal y como se ha comprobado en los programas de este tema.
Podría parecer que esta operación de asignación equivale a la condición de igualdad matemática; sin embargo, aunque el carácter utilizado sea el mismo, tiene funciones totalmente diferentes:
En matemáticas, el operador de igualdad se utiliza para indicar que dos expresiones son exactamente iguales.
En informática, el operador de igualdad se utiliza para asignar un valor a una variable; la variable, escrita a la izquierda del operador, tomará el valor de la expresión escrita a la derecha.

Aunque pueda parecer que no existen diferencias entre ellas, en los programas de la siguiente página se muestran ejemplos de asignación muy utilizados en informática.
Existe una operación que en matemáticas no tiene sentido, pero que en informática es perfectamente inteligible; de hecho, se utiliza en un gran número de ocasiones. Dicha operación se denomina de incremento, y consiste en asignar a una determinada variable el valor que tenga en ese momento más una determinada cantidad.
Como fácilmente se puede deducir, el incremento puede ser de cualquier magnitud, tanto positivo como negativo; en éste último caso se le denomina decremento
2

UNIDAD 1
Las variables de tipo númérico no son las únicas que se pueden incrementar. El programa siguiente muestra cómo se puede modificar el contenido de una variable de tipo carácter.


La justificación del resultado del programa es la siguiente: el programa es capaz de sumar un número a un carácter ya que internamente trabaja con el número que le corresponde al carácter según el código ASCII. Al carácter “h” le corresponde el número 104, mientras que al carácter “a” le corresponde el 97; por eso, al introducir el entero 7, el programa da “h” como resultado del incremento (97 + 7 = 104).

EJERCICIOS
1. Ejecuta la aplicación Turbo C++; posteriormente, abre una ventana de documento nueva y escribe uno de los programas que aparecen en el tema.
2. Guarda el programa con el nombre Bienveni.
3.¿Cómo definirías programa?
4. Busca algunos ejemplos de programas dentro de tus actividades cotidianas.
5. Describe los datos y el algoritmo adecuado para:
) Sacar dinero de un cajero automático.
b) Poner un CD en el equipo de música.
c) Enviar una carta a un amigo.
d) Encontrar la solución de la ecuación: 2x + 3 = 15
4
6. Compila y monta el programa Bienveni.
7. Ejecuta el programa Bienveni. (Observa que el resultado del programa se muestra en una ventana independiente que puede maximizarse, minimizarse, etc.) Posteriormente, cierra la ventana de resultado.
8. Cierra la ventana de edición del programa Bienveni.
9. Ejecuta el Explorador de Windows; activa la carpeta en el que el compilador guarda los ficheros ejecutables, y haz doble clic sobre el archivo Bienveni.exe para comprobar que el programa se ejecuta.
Finalmente, cierra la ventana de resultado y la del Explorador.
10. Busca con el Explorador de Windows los tres ficheros (fuente, objeto y ejecutable) correspondientes al programa Bienveni.
11. Visualizar el valor de la diferencia entre el primer número entero y el segundo, que deben introducirse desde el teclado.
12. Visualizar la suma de cuatro enteros cualesquiera introducidos desde el teclado.
13. Modificar el valor de un primer entero introducido desde el teclado con la suma de un segundo entero también introducido desde el teclado. Además, el programa debe mostrar el resultado final.
14. Calcular y visualizar el valor del cubo de un entero introducido desde el teclado.
15. Visualizar la media de cinco enteros introducidos desde el teclado.
16. Visualizar la superficie de un rectángulo introduciendo su base y su altura.
17. Visualizar la superficie de un triángulo rectángulo indicando su base y su altura.
18. Visualizar la superficie y el perímetro de un círculo introduciendo su radio desde el teclado.
19. Intercambiar el valor de dos enteros que se hayan introducido desde el teclado.
20. Calcular el volumen de una esfera introduciendo su radio desde el teclado.
21. Introducir, desde el teclado, el valor de un ángulo en grados sexagesimales y convertirlo a radianes.
22. Introducir, desde el teclado, el valor de un ángulo en radianes y convertirlo a grados sexagesimales.
23. Introducir, desde el teclado, un distancia en kilómetros y convertirla a metros.
24. Introducir, desde el teclado, una distancia en metros y convertirla a kilómetros.
25. Introducir, desde el teclado, tres números para las variables enteras A, B y C, y visualizar el resultado correspondiente a la operación: (A/B) + (C/A) – (B/C).
26. Calcular el espacio (s) recorrido por un móvil con movimiento rectilíneo y uniforme, introduciendo su posición inicial (s0), su velocidad (v) y el tiempo transcurrido (t ). Nota: s = s0 + v · t
27. Calcular el tiempo empleado (t ) por un móvil que circula con movimiento rectilíneo y uniforme, introduciendo el espacio recorrido (s), su posición inicial (s0) y su velocidad (v). Nota: s = s0 + v · t
28. Calcular la velocidad (v) de un móvil que se mueve con movimiento rectilíneo y uniforme, introduciendo su posición inicial (s0), el espacio recorrido (s) y el tiempo empleado en recorrerlo (t ). Nota: s = s0 + v · t
29. Calcular la velocidad (v) de un móvil con movimiento rectilíneo uniformemente acelerado, introduciendo su velocidad inicial (v0), aceleración (a) y el tiempo transcurrido (t ). Nota: v = v0 + a · t
30. Calcular la aceleración (a) de un móvil que se mueve con movimiento rectilíneo uniformemente acelerado, introduciendo su velocidad (v), su velocidad inicial (v0) y el tiempo transcurrido (t ). Nota: v = v0+ a · t
31. Calcular el tiempo (t ) empleado por un móvil en aumentar su velocidad inicial (v0) hasta otra final (v), si circula con movimiento rectilíneo uniformemente acelerado, de aceleración (a). Nota: v = v0 + a · t
28
Crea distintos programas que te permitan resolver cada uno de los problemas que se indican a continuación; guárdalos con los nombres Prog1_1, Prog1_2, Prog1_3, Prog1_4, etc.
29
32. Calcular el espacio (s) recorrido por un móvil con movimiento rectilíneo uniformemente acelerado, introduciendo su posición inicial (s0), velocidad inicial (v0), aceleración (a) y el tiempo transcurrido (t ). Nota: s = s0 + v0 · t + a · t 2
33. Calcular la aceleración (a) de un móvil que sigue un movimiento rectilíneo uniformemente acelerado, introduciendo el espacio recorrido (s), su posición inicial (s0), su velocidad inicial (v0) y el tiempo transcurrido (t ). Nota: s = s0 + v0 · t + a · t 2
34. Calcular el trabajo (W) realizado por una fuerza constante sobre un cuerpo, introduciendo desde el teclado su valor (F ) y el desplazamiento provocado en él (s). Nota: W = F · s
25. Calcular el valor de la fuerza constante (F) aplicada a un cuerpo, introduciendo el valor del trabajo realizado (W) para desplazarlo una distancia (s). Nota: W = F · s
26. Calcular el desplazamiento (s) de un cuerpo sobre el que se ha realizado un trabajo (W) al aplicarle una fuerza (F ). Nota: W = F · s
27. Calcular el valor de la potencia (P ) desarrollada por un motor que realiza un trabajo (W) durante un tiempo (t ). Nota: P = W t
28. Calcular el valor del trabajo (W) realizado por un motor que tiene una potencia (P ) y opera durante un tiempo (t ). Nota: P = W t
29. Calcular la energía cinética (Ec ) de un móvil introduciendo, desde el teclado, su masa (m) y su velocidad (v). Nota: Ec =1/2 m · v 2
30. Calcular la energía potencial (EP) de un cuerpo de masa (m) que está situado a una altura (h); asigna el valor 9,8 a la gravedad (g). Nota: EP = m · g · h

































Estructuras básicas de control
La programación estructurada está basada en la utilización de las siguientes estructuras básicas: estructura secuencial, estructura selectiva y estructura repetitiva.
Estructura secuencial: La estructura secuencial es aquella en la que cada instrucción sigue a la anterior de modo que la salida de una instrucción sirve de entrada a la siguiente.
Estructura selectiva: Las estructuras selectivas se utilizan para tomar decisiones lógicas, por lo que también se las conoce con el nombre de estructuras de decisión o alternativas. En ellas se evalúa una condición y, en función del resultado de la misma, se realiza una u otra acción.
Estructura repetitiva: Este tipo de estructuras, también denominadas bucles, se caracterizan por repetir una secuencia de instrucciones un número determinado de veces. Se conoce con el nombre de iteración a la ejecución de todas las acciones o instrucciones que forman el bucle. En toda estructura repetitiva debe existir una condición que controle el momento en el que deben finalizar las iteraciones del bucle.

Estructuras selectivas en lenguaje C
En programación, es muy frecuente plantear una condición y, dependiendo de si ésta es verdadera o falsa, ejecutar unas instrucciones determinadas u otras diferentes. En C, como en todos los lenguajes de programación, existen instrucciones condicionales o selectivas, llamadas así porque evalúan una condición y, dependiendo de su resultado, seleccionan un conjunto de instrucciones.
Las dos instrucciones condicionales en C son if y switch.
Instrucción if: La instrucción if evalúa una condición y, en caso de ser cierta, ejecutará una instrucción determinada; en caso contrario, seguirá ejecutándose el programa o se realizará otra instrucción alternativa.
El formato general de esta instrucción es:
if (condición)
sentencia-1;
[else
sentencia-2;]
Si la condición es cierta, se ejecutará la instrucción sentencia-1 y no se ejecutará sentencia-2, aunque se hubiera escrito. En caso de que la condición fuera falsa, se ejecutará la instrucción sentencia-2 y no se ejecutará sentencia-1.

A la hora de escribir una condición, surgirá la necesidad de utilizar alguno de los operadores relacionales y/u operadores lógicos.
Operadores relacionales: Los operadores relacionales son los habituales: mayor que, menor que, menor o igual que…, aunque algunos de ellos se escriben de un modo especial en C. En la siguiente tabla se muestran los operadores relacionales, junto a su escritura en C y una breve descripción. No debe olvidarse que, en lenguaje C, las condiciones deben escribirse obligatoriamente encerradas entre paréntesis; de lo contrario se produciría un error de compilación.
La expresión a > b toma valor verdadero si a es mayor que b, y falso si a es menor o igual que b.
La expresión a < b toma valor verdadero si a es menor que b, y falso si a es mayor o igual que b.
La expresión a >= b toma valor verdadero si a es mayor o igual que b, y falso si a es menor que b.
La expresión a ) a menor ( 0 si al carácter diferenciador de la 1ª cadena le corresponde, según la tabla ASCII, un número mayor que al de la 2ª cadena.
Esta función, que está incluida en el fichero de cabecera string.h, tiene el siguiente formato:
strcmp (cadena1,cadena2);

El programa de la figura siguiente permite introducir dos cadenas de caracteres y visualizar un mensaje informando sobre si son o no iguales.



La comparación de dos o más cadenas de caracteres debe realizarse mediante la función strcmp, o bien comparando uno a uno los caracteres de ambas cadenas. Si se intentara hacer una comparación global de las cadenas, de forma parecida a como se haría con dos enteros, se produciría un error de compilación.
strcpy (): Esta función permite copiar el contenido de una cadena de caracteres en otra; la cadena que recibe la copia debe tener el tamaño adecuado para poder almacenar el valor de la otra cadena sin que se produzcan errores. El fichero de cabecera que contiene esta función también es string.h. El formato de esta función es muy sencillo, ya que basta con indicar los nombres de las cadenas destino (aquella en la que se va a realizar la copia) y origen (aquella que contiene el dato a copiar). strcpy (cadena_destino, cadena_origen);
En el siguiente programa puede verse un ejemplo de cómo utilizar esta función para copiar una cadena en otra.


Las posibilidades de copiar una cadena en otra son dos: hacerlo mediante la función strcpy o realizar la copia de su contenido carácter a carácter; si se intentara hacer una asignación entre las cadenas como si fueran variables de tipo entero, se produciría un error de compilación.
strlen (): Esta función calcula el número de caracteres de una cadena, sin tener en cuenta el carácter nulo (\0) que indica la finalización de la misma. Al igual que el resto de funciones de cadenas, está contenida en el fichero de cabecera string.h, por lo que deberá incluirse este fichero en el programa donde se desee utilizar la función. Su formato es muy elemental: sólo deberá indicarse el nombre de la cadena de la que se desea saber cuántos caracteres tiene almacenados. strlen(cadena); El programa de la figura siguiente permite saber el número de caracteres introducidos en una cadena de caracteres.



1. Declarar un vector de 25 números enteros con un valor determinado. Posteriormente, debe sustituirse cada uno de sus elementos por su cuadrado y visualizarse el vector resultante.
2. Introducir, mediante el teclado, valores a un vector de números enteros de 12 elementos; dichos números deben estar comprendidos entre –250 y 500, ambos inclusive. Posteriormente, se sustituirán los elementos negativos por su valor absoluto y se visualizará el vector.
3. Introducir, desde el teclado, valores a un vector de flotantes de 18 elementos, validando sólo aquéllos comprendidos entre 0 y 1, ambos inclusive. Posteriormente, se sustituirán los elementos que ocupen posiciones pares por el valor cero y se visualizará el nuevo vector.
4. Declarar un vector de 30 enteros, introducir por teclado el valor de su primer elemento y asignar, al resto de elementos, el valor del elemento anterior más uno. Por último, debe visualizarse el vector resultante en orden inverso.
5. Declarar un vector de 35 flotantes, introducir por teclado el valor de su primer elemento y asignar, al resto de elementos, el doble del elemento anterior. Posteriormente, se visualizará el vector en orden inverso.
6. Declarar un vector de 15 enteros e introducir sus valores desde el teclado. Posteriormente, se visualizará el valor de la suma de todos sus elementos.
7. Declarar un vector de 10 flotantes e introducir valor a cada uno de sus elementos desde el teclado. Posteriormente, se visualizará el valor medio de sus elementos.
8. Declarar un vector de 20 enteros e introducir el valor a cada uno de sus elementos desde el teclado. Posteriormente, debe visualizarse el valor medio de los elementos que ocupen posiciones pares y el valor medio de los que ocupen las posiciones impares.
9. Declarar un vector de 18 flotantes e introducir, desde el teclado, valores comprendidos entre 1 y 10. Posteriormente, debe visualizarse el valor medio de sus elementos.
10. Declarar un vector de 10 números enteros que se introducirán desde el teclado. Posteriormente, el programa debe dar la suma de los elementos que ocupan las posiciones pares y la de las posiciones impares.
11. Declarar un vector de 12 enteros e introducir, desde el teclado, valores menores que 0. Posteriormente, se visualizarán sus elementos, en orden inverso, y el valor medio de los mismos.
12. Declarar un vector de 25 flotantes e introducir sus valores desde el teclado. Posteriormente, se visualizará el mayor de sus elementos, el menor, la suma de los elementos y su valor medio.
13. Introducir 20 números enteros en un vector declarado de este tipo y ordenar, únicamente, los 10 primeros elementos de forma ascendente mediante el método de la burbuja mejorado; el programa debe mostrar en pantalla el vector resultante.
14. Introducir valor a los 20 elementos de un vector de flotantes y ordenar, únicamente los 10 últimos elementos, de forma descendente por el método de la burbuja mejorado. Una vez ordenado el vector, se visualizarán los valores de sus elementos.
15. Introducir desde el teclado los valores de un vector de enteros de 10 elementos. Ordenarlo de modo ascendente, por el método de la burbuja mejorado, y visualizar los elementos que ocupen las posiciones pares.
16. Introducir desde el teclado los valores de un vector de flotantes de 10 elementos. Ordenarlo de modo descendente, por el método de la burbuja mejorado, y visualizar los elementos que ocupen las posiciones impares.
17. Introducir desde el teclado los valores de un vector de 15 enteros. Ordenarlo de manera ascendente o descendente, por el método de la burbuja mejorado, dependiendo de una variable aceptada por teclado, validada como ‘a’ (ascendente) o ‘d’ (descendente). Finalmente, debe visualizarse el vector.
18. Introducir desde el teclado los valores de un primer vector de enteros de 20 elementos. Ordenarlo de manera descendente por el método de la burbuja mejorado. Declarar dos nuevos vectores de enteros, de 10 elementos cada uno; en el primero deben copiarse los 10 valores más pequeños del vector inicial y, en el segundo, los 10 mayores. Antes de finalizar se deben visualizar los tres vectores.
19. Introducir valores a los 20 elementos de un vector de flotantes y ordenar, únicamente los 10 últimos elementos, de forma descendente por el método de la selección. Una vez ordenado el vector, se deben visualizar los valores de sus elementos.
20. Introducir desde el teclado los valores de un vector de 10 enteros. Ordenarlo de modo ascendente, por el método de la selección, y visualizar los elementos que ocupen las posiciones pares.
21. Introducir desde el teclado los valores de un vector de flotantes de 10 elementos. Ordenarlo de manera descendente, por el método de la selección, y visualizar los elementos que ocupen las posiciones impares.
22. Introducir, desde teclado, los valores de un vector de 15 enteros. Ordenarlo de forma ascendente o descendente, por el método de la selección, dependiendo de una variable aceptada por teclado, validada como ‘a’ (ascendente) o ‘d’ (descendente). Antes de finalizar el proceso se debe visualizar el vector.
23. Introducir valores a un vector de 30 enteros. Ordenarlo de modo ascendente o descendente, dependiendo de una variable aceptada por teclado que deberá tomar los valores de ‘a’ (ascendente) o ‘d’ (descendente); el método de ordenación a seguir será el de burbuja o el de selección dependiendo de otra variable introducida por teclado y que se validará como ‘b’ (burbuja) o ‘s’ (selección). Antes de finalizar se debe visualizar el vector.
24. Declarar una cadena de caracteres de hasta 25 caracteres; introducir una cadena cualquiera y que el programa muestre los caracteres situados en las posiciones impares.
25. Introducir desde el teclado valor a una cadena de hasta 101 elementos y visualizar cuántos de ellos no son vocales.
26. Introducir valor a una cadena de hasta 101 elementos y visualizar el número de caracteres de la cadena que:
Sean distintos del nulo.
Sean espacios en blanco.
Sean vocales.
27. Declarar una cadena de caracteres de 50 elementos e introducir un texto con varias palabras. El programa debe mostrar los caracteres de la primera palabra introducida.
Nota: Ten en cuenta que la primera palabra finaliza con el primer carácter espacio en blanco determinado.
28. Introducir, desde el teclado, valor a una cadena de hasta 101 elementos y sustituir todas las vocales por el carácter asterisco.
29. Dada una cadena de 15 caracteres y una variable de tipo carácter, introducir valores para ambas desde el teclado; posteriormente, debe buscarse, dentro de la cadena, la primera concordancia con el carácter de la variable, indicando la posición que ocupa dentro de la cadena (en caso de encontrarse en ella) o bien mostrando un mensaje que indique que dicho carácter no se encuentra dentro de la cadena.
30. Dada una cadena de 15 caracteres útiles y una variable carácter, introducir ambas desde el teclado y buscar en la cadena la última concordancia del carácter introducido, indicando la posición que ocupa dentro de la cadena; en caso de no encontrarse, debe mostrar un mensaje indicándolo.
31. Dadas dos cadenas de igual longitud, introducir una de ellas desde el teclado y copiar, uno a uno, todos sus caracteres en la otra; por último, deben visualizarse ambas cadenas.
32. Dadas dos cadenas de igual longitud, introducirlas desde el teclado y visualizar si las dos cadenas tienen exactamente los mismos caracteres (es decir, son iguales), o, si por el contrario, tienen caracteres distintos.
33. Dadas dos cadenas de igual longitud, introducir una de ellas desde el teclado y copiarla en la otra; posteriormente, deben eliminarse las vocales de la segunda cadena. Antes de finalizar el programa, deben visualizarse ambas cadenas.
34. Dadas dos cadenas de igual longitud, aceptar una de ellas desde el teclado y copiarla en la otra; posteriormente, deben eliminarse las consonantes de la segunda cadena y, por último, deben visualizarse ambas cadenas.
35. Dadas dos cadenas de igual longitud que se introducirán desde el teclado, visualizar un mensaje que indique si las dos cadenas son iguales.
36. Introducir valores a dos cadenas de caracteres desde el teclado e informar, en pantalla, de cuál es la cadena más larga de las introducidas.
37. Introducir valores a dos cadenas desde el teclado y, en la más corta, sustituir cada vocal por la misma vocal en mayúscula; el programa debe finalizar visualizando ambas cadenas.
38. Dadas dos cadenas de igual longitud, aceptar ambas desde el teclado y visualizar si las dos cadenas son iguales. En caso contrario, deberá visualizarse la longitud de cada una de ellas y un mensaje que indique cuál es la mayor y cuál la menor.
39. Introducir valores a dos cadenas de caracteres y copiarlas, o concatenarlas, dependiendo de una variable que se introducirá desde el teclado y que se validará como ‘p’ (copia) o ‘n’ (concatenación). Antes de finalizar se deben visualizar ambas cadenas.





























Programación en lenguaje HTML

Estructura básica de un documento html
El principio esencial del lenguaje HTML es el uso de las etiquetas (tags). Funcionan de la siguiente manera:
Este es el inicio de una etiqueta.
Este es el cierre de una etiqueta.
Las letras de la etiqueta pueden estar en mayúsculas o minúsculas, indiferentemente. Lo que haya entre ambas etiquetas estará influenciada por ellas. Por ejemplo, todo el documento HTML debe estar entre las etiquetas y : [Todo el documento]
Un documento HTML en sí está dividido en dos zonas principales:
El encabezamiento, comprendido entre las etiquetas y
El cuerpo, comprendido entre las etiquetas y
Dentro del encabezamiento hay información del documento, que no se ve en la pantalla principal del BROWSER que es utilizado para visualizar el documento HTML, principalmente la información encontrada en el encabezamiento es el título del documento, comprendido entre las etiquetas y . El título debe ser breve y descriptivo de su contenido, pues será lo que vean los demás cuando añadan nuestra página a su bookmark (o agenda de direcciones). Dentro del cuerpo está todo lo que queremos que aparezca en la pantalla principal (texto, imágenes, etc.)
Por tanto, la estructura de un documento HTML queda de esta manera:


Título de la página


[Aquí van las etiquetas que visualizan la página]



Dando forma al texto del documento HTML
Cuando escribimos en el documento el texto que queremos que aparezca en la pantalla, veremos que éste se acomoda a ella, sin que tengamos que pulsar el retorno del carro. Si queremos separar el texto en distintos párrafos debemos usar la etiqueta , (que no tiene su correspondiente etiqueta de cierre )
El texto puede tener unas cabeceras, comprendidas entre las etiquetas y , y , etc. (hasta el número 6), siendo el número indicativo del tamaño. El tamaño mayor es el correspondiente al número 1.
Una etiqueta muy interesante es la de centrado y (no la soportan todos los navegadores, aunque sí la mayoría de ellos). Nos centra todo lo que esté dentro de ella, ya sea texto, imágenes, etc. También tenemos los separadores (horizontal rules), que se consiguen con la etiqueta (no existe la correspondiente de cierre). Con ella se obtiene una raya horizontal tan ancha como la pantalla, y con la apariencia de estar embutida sobre el fondo, como se puede observar a continuación:

EJEMPLO 1


Mi pagina en el Web - 1


Primera Pagina
Esta es mi primera pagina, aunque todavía es muy sencilla. Como él lenguaje HTML no es difícil, pronto estaré en condiciones de hacer cosas más interesantes.
Aquí va un segundo párrafo, que les parece.


Una etiqueta puede estar anidada dentro de otra. En el ejemplo anterior cómo lo está la etiqueta dentro de la etiqueta . Cuando queremos poner un texto sin ninguna característica especial, lo ponemos directamente. Únicamente, la separación entre párrafos (dejando una línea en blanco) la conseguimos con la etiqueta . Si queremos separar los párrafos, o cualquier otra cosa, pero sin dejar una línea en blanco, usamos una etiqueta parecida (break, o romper). Tampoco tiene etiqueta de cierre.
Al escribir el texto, si ponemos más de un espacio en blanco entre dos palabras observamos que el navegador sólo reconoce uno de ellos. Si queremos forzarle a que lo haga, debemos poner el código " " (non-breaking space).
Para destacar alguna parte del texto se pueden usar: y para poner algo en negrita (bold). y para poner algo en cursiva (italic). Otra etiqueta interesante es y . El texto que se encuentre entre ella estará preformateado, es decir que aparecerá como si hubiera sido escrito con una máquina de escribir, con una fuente de espaciado fijo (tipo Courier). Además se respetarán los espacios en blanco y retornos del carro, tal como estaban en nuestro documento HTML. Es muy apropiada para confeccionar tablas y otros documentos similares.
Con la etiqueta y conseguimos también que el texto tenga un tamaño menor y la apariencia de los caracteres de una máquina de escribir (typewriter). La diferencia con la anterior es que no preformatea el texto, sino que únicamente cambia su apariencia.
La etiqueta y se utiliza para destacar una cita textual dentro del texto general. Este párrafo está escrito entre ambas etiquetas. Obsérvese los márgenes a ambos lados.
En las fórmulas matemáticas puede interesar poder escribir índices y subíndices, que se consiguen con las etiquetas y respectivamente.
A menudo nos interesará presentar las cosas en forma de listas. Podemos escoger entre tres tipos distintos:
Listas desordenadas (no numeradas)
Listas ordenadas (numeradas)
Listas de definición.
Las listas desordenadas (Unordered Lists) sirven para presentar cosas que, por no tener un orden determinado, no necesitan ir precedidas por un número. Su estructura es la siguiente:

Un elemento
Otro elemento
Otro más
etc.

Es decir, toda la lista está dentro de la etiqueta y , y luego cada elemento va precedida de la etiqueta (list ítem). Se puede anidar una lista dentro de otra. Por ejemplo:

Mamíferos
Peces

Sardina
Bacalao

Aves

Las listas ordenadas (Ordered Lists) sirven para presentar elementos en un orden determinado. Su estructura es muy similar a la anterior. La diferencia estriba en que en el resultado aparecerá automáticamente un número correlativo para cada elemento.


Primer Elemento
Segundo Elemento
Tercer Elemento
etc.

Al igual que las listas desordenadas, también se pueden anidar las listas ordenadas. El tercer tipo lo forman las listas de definición. Como su nombre indica, son apropiadas para glosarios (o definiciones de términos). Toda la lista debe ir englobada entre las etiquetas y . Y a diferencia de las dos que hemos visto, cada renglón de la lista tiene dos partes:
El nombre de la cosa a definir , que se consigue con la etiqueta (definition term).
La definición de dicha cosa, que se consigue con la etiqueta (definition definition).

Una cosa a definir
La definición de esta cosa
Otra cosa a definir
La definición de esta otra cosa

Comentarios no visibles en la pantalla
A veces es muy útil escribir comentarios en el documento HTML sobre el código que escribimos, que nos pueden servir para recordar posteriormente sobre lo que hicimos, y que no queremos que se vean en pantalla.
Esto se consigue encerrando dichos comentarios entre estos dos símbolos:

EJEMPLO 2


Mi pagina del Web - 2



Mis aficiones


Sin un orden particular, mis aficiones son las siguientes:


El cine
El deporte

Natacion
Baloncesto

La musica

La musica que más me gusta es
(en orden de preferencia):



El rock
El jazz
La musica clasica



Caracteres especiales
Existen algunas limitaciones para escribir el texto. Una de ellas es debido a que las etiquetas se forman como un comando escrito entre los símbolos "". Por tanto, si se quisieran escribir estos caracteres como parte normal del texto, daría esto lugar a una ambigüedad, ya que el programa navegador podría interpretarlos como el comienzo o final de una etiqueta, en vez de un carácter más del texto.
Para resolver este problema, existen unos códigos para poder escribir estos caracteres y otros relacionados con las etiquetas.
< para < (less than, menor que)
> para > (greater than, mayor que)
& para & (ampersand)
" para " (double quotation)
Como se ve, estos códigos empiezan siempre con el signo “&” y acaban siempre con “;”. De una manera similar, existen códigos para escribir letras específicas de distintos idiomas.
Hay muchos de ellos, pero, lógicamente, los que más nos interesan son los propios del castellano (las vocales acentuadas, la “ ñ ” y los signos “ ¿ ” y “ ¡ ” ).
Los códigos de las vocales acentuadas se forman comenzando con “ & ”, seguido de la vocal en cuestión, seguido de la palabra acute (aguda) y terminando con el signo “ ; ”.
á Para la á
é Para la é
í Para la í
ó Para la ó
ú Para la ú
Á Para la Á
É Para la É
Í Para la Í
Ó Para la Ó
Ú Para la Ú
El resto de los códigos son:
ñ Para la ñ
Ñ Para la Ñ
ü Para la ü
Ü Para la Ü
¿ Para ¿
¡ Para ¡
Todo esto, que como se ve es muy laborioso, puede parecer inútil ya que si escribimos nuestro texto sin hacer ningún caso de estas convenciones, escribiendo las letras acentuadas y demás signos directamente, es muy posible que el resultado lo veamos correctamente en nuestro navegador, pero nunca podremos, estar seguros que les ocurra lo mismo a todos los que accedan a nuestras páginas con otros navegadores distintos.

Enlaces
La característica que más ha influido en el espectacular éxito del WEB ha sido, aparte la de su carácter multimedia, la posibilidad de unir los distintos documentos repartidos por todo el mundo por medio de enlaces hipertexto.
En general, los enlaces tienen la siguiente estructura:
YYY
Donde XXX es el destino del enlace (Obsérvese las comillas). YYY es el texto indicativo en la pantalla del enlace (con un color especial y generalmente subrayado).
Tipos de enlaces
Enlaces dentro de la misma página: A veces, en el caso de documentos (o páginas) muy extensos, nos puede interesar dar un salto desde una posición a otra determinada. En este caso, lo que antes hemos llamado XXX, es decir, el destino del enlace, en este caso el sitio dentro de la página a donde queremos saltar, se sustituye por #MARCA (la palabra MARCA puede ser cualquier palabra que queramos). Lo que hemos llamado antes YYY es la palabra (o palabras) que aparecerán en la pantalla en color (en forma de hipertexto). Su estructura es, entonces:
YYY
Y en el sitio exacto a donde queremos saltar, debemos poner la siguiente etiqueta:

Enlaces con otra página nuestra: Puede ser que tengamos una sola página. Pero lo más frecuente es que tengamos varias páginas, una inicial (o principal) y otras conectadas a ella, e incluso entre ellas mismas. Supongamos que queremos enlazar con la página creada en el ejemplo 2, que la hemos llamado mipag2.html. En este caso, simplemente sustituimos lo que hemos llamado XXX (el destino del enlace) por el nombre del archivo:
Ejemplo de mi segunda pagina
Si queremos que vaya a un sitio concreto de otra página nuestra en vez de ir al principio de la página, adonde va por defecto, en ese sitio tenemos que colocar una marca (ver la Enlaces dentro de la misma página), y completar el enlace con la referencia a esa marca.
Lo veremos con el siguiente ejemplo: es la marca que colocaremos en nuestra pagina, que deseamos accesar desde otra nuestra. Entonces la etiqueta tiene que ser: En mi otra pagina .
Una observación importante: Pudiera ocurrir que nuestro sitio del WEB estuviera organizado con un directorio principal, y otros subdirectorios auxiliares. Si la página a la que deseamos accesar está, por ejemplo en el subdirectorio misubdir, entonces en la etiqueta tendría que colocarse "misubdir/mipag2.html".
Y a la inversa, si quiero saltar desde una página a otra que está en un directorio anterior, en la etiqueta tendría que haber puesto "../mipag2.html". Esos dos puntos hace que se dirija al directorio anterior. Obsérvese que se debe utilizar el símbolo / para indicar los subdirectorios, y no
este otro \, que es propio únicamente de Windows.
Si nos queremos evitar todas estas complicaciones, podemos tener todo junto en un único directorio, pero esto tiene el inconveniente de que esté todo más desordenado, y sean más difíciles de hacer las futuras modificaciones.
Enlaces con una página fuera de nuestro sistema: Si queremos enlazar con una página que esté fuera de nuestro sistema (es decir, que esté en un servidor distinto al que soporta nuestra página), es necesario conocer su dirección completa, o URL (Uniform Resource Locator). El URL podría ser, además de la dirección de una página del WEB, una dirección de FTP, GOPHER, etc.
Una vez conocida la dirección (o URL), lo colocamos en vez de lo que hemos llamado anteriormente XXX (el destino del enlace). Si queremos enlazar por ejemplo con la página de Netscape (cuyo URL es: http://home.netscape.com/), la etiqueta sería:
Página inicial de Netscape
Es muy importante copiar estas direcciones correctamente (respetando las mayúsculas y minúsculas, pues los servidores UNIX sí las distinguen)
Enlaces con una dirección de e-mail: En este caso, sustituimos lo que se ha llamado antes XXX (el destino del enlace) por mailto: seguido de la dirección de e-mail. La estructura de la etiqueta es:
Texto del enlace
Un ejemplo podría ser:
Tom Zambrano
Hay algunos navegadores que no subrayan el comentario de este tipo de enlace.
Una manera recomendable y más segura para conocer la dirección e-mail seria poner algo así como:
Comentarios a Tom Zambrano en
tzambran@delfos.ucla.edu.ve
Es decir, es conveniente, por la razón dicha anteriormente, poner también en el texto del enlace la dirección de e-mail.
EJEMPLO 3


Mi pagina del Web - 3



Mis paginas favoritas


Estas son mis paginas favoritas:
Netscape
Microsoft
Yahoo!



Imágenes
La etiqueta que nos sirve para incluir imágenes en nuestras páginas del WEB es muy similar a la de enlaces a otras páginas, que hemos visto en el capítulo anterior. La única diferencia es que, en lugar de indicar al programa navegador el nombre y la localización de un documento de texto HTML para que lo cargue, se le indica el nombre y la localización de un archivo que contiene una imagen.
La estructura de la etiqueta es:

Con el comando IMG SRC (image source, fuente de la imagen) se indica que se quiere cargar una imagen llamada imagen.gif (o el nombre que tenga).
Dentro de la etiqueta se pueden añadir otros comandos, tal como ALT
Con el comando ALT se introduce una descripción (una palabra o una frase breve) indicativa de la imagen. Este comando, que en principio se puede omitir, es en beneficio de los que accedan a nuestra página con un programa navegador en forma de texto como el lynx. Ya que no son capaces de ver la imagen, por lo menos pueden hacerse una idea sobre ella. Pero no es sólo por esto. Hay casos, como veremos más adelante, en los que se utiliza una imagen como enlace a otra página. Si se omitiera este comando, los que utilizan dichos navegadores no podrían de ninguna manera acceder a esas páginas.
Con respecto a la localización del archivo de esa imagen, se puede decir aquí lo mismo que en el capítulo anterior referente a los enlaces. Si no se indica nada especial, como en el caso que se ha expuesto, quiere decir que el archivo imagen.gif está en el mismo directorio que el documento HTML que estamos escribiendo. Si no es así, se siguen los mismos criterios que los indicados para los enlaces.
Las imágenes deben estar guardadas en un formato de archivo especial llamado GIF. (Hay también otro formato más avanzado JPG). Este formato GIF almacena las imágenes con un máximo de 256 colores, en forma comprimida. Un aspecto muy importante a tener en cuenta es el tamaño de las imágenes, pues una imagen grande supone un archivo grande, y esto puede resultar en un tiempo excesivo de carga, con el consiguiente riesgo de que quien esté intentando cargar nuestra página se canse de esperar, y desista de ello.
Para elegir la posición de la imagen con respecto al texto hay distintas posibilidades. La más sencilla es colocarla entre dos párrafos, con un titular a un lado. Los navegadores más actuales (como el Netscape Navigator y el Microsoft Internet Explorer) permiten que el texto pueda rodear a la imagen. De momento nos vamos a limitar a escoger la posición del titular con respecto a la imagen.
Se puede poner arriba, en medio o abajo del lado de la imagen. Para ello se añade el comando ALIGN a la etiqueta, de la siguiente manera:
Titular alineado arriba
Titular alineado en medio
Titular alineado abajo
Otra posibilidad muy interesante es la de utilizar una imagen como enlace a otra página. Para estos casos se utilizan generalmente imágenes pequeñas (iconos), aunque se puede usar cualquier tipo de imagen.
Según vimos en el capítulo anterior, la estructura general de un enlace es:
YYY
En este caso sustituimos XXX por el nombre del archivo de la página a la que queremos acceder. Y en lugar de YYY ponemos la etiqueta completa de la imagen (que queda así englobada dentro de la etiqueta del enlace).
Como por ejemplo (hombre.gif) para acceder al ejemplo 2
(mipag2.html):

Pulsando la imagen comprobamos cómo efectivamente enlaza con la página deseada. Obsérvese además que la imagen está rodeada de un rectángulo del color normal en los enlaces. Si no se desea que aparezca ese rectángulo, hay que incluir dentro de la etiqueta de la imagen el atributo BORDER=0, es decir:

Posicionando el cursor sobre esta última imagen, comprobamos que actúa también como enlace aunque carezca del rectángulo de color. Esto puede resultar más estético, pero se corre el riesgo de que el usuario no se dé cuenta de que la imagen sirve de enlace.
También podemos utilizar una imagen para enlazar con otra imagen. Supongamos que queremos enlazar con la imagen estaimagen.gif por medio de esta otra imagen desdeesta.gif:

Por último, otra posibilidad es la de utilizar un texto para enlazar con una imagen. En este caso sustituimos XXX (el destino del enlace) con el nombre del archivo de la imagen a la que queremos acceder e YYY (lo que aparece en pantalla como el enlace) por el texto.
Por ejemplo: un paraíso tropical
Un tipo de imágenes del que se hace abundante uso y que sirven para mejorar la presentación de la página son los iconos, botones, barras separadoras, etc. A pesar de su tamaño o forma, son imágenes como cualquier otra.

Alineación y dimensionado de imágenes
Alineación de las imágenes
Si se quieren lograr diseños fantasticos y rodear con textos los gráficos exactamente igual que en las revistas se pueden usar los comando o atributos conjuntamente con la etiqueta , ALIGN=. Donde quiera que se desee que aparezca una imagen basta con insertar:
Alinea la pagina a la izquierda
Alinea la pagina al centro
Alinea la pagina a la derecha
Si se quiere interrumpir el proceso de rellenado del texto a los lados de la imagen, para que salte hasta debajo de ella, es decir, dejar un espacio en blanco parcialmente, se pueden emplear las siguientes extensiones de la etiqueta :
Busca el primer margen libre (clear) a la izquierda.
Busca el primer margen libre a la derecha.
Busca el primer margen libre a ambos lados.
Un ejemplo para aclarar esto:
Este texto esta a un lado de la imagen.
Este tambien esta a un lado de la imagen, en la linea siguiente.
Este otro texto, en cambio, ha buscado el primer margen libre a la izquierda.
Dimensionando la imagen
Los programas navegadores cuando cargan un documento HTML y encuentran una etiqueta de una imagen, interrumpen el proceso de carga y solicitan al servidor que le envíe dicha imagen, quedando a la espera hasta que se complete el envío, repitiéndose este proceso con cada una de las imágenes. Esto es especialmente molesto cuando, como ocurre frecuentemente, en la cabecera de la página se encuentra una imagen grande, ya que durante un tiempo relativamente largo no se verá nada en la pantalla.
Para evitar este inconveniente existen unas extensiones de la etiqueta de la imagen que sirven para indicar al navegador cuáles son sus dimensiones en pixels. (Este dato lo habremos obtenido previamente de algún programa gráfico).
En este caso, el navegador actúa de una forma más favorable, ya que entonces, como conoce las dimensiones de las imágenes les reserva un espacio en la pantalla y va colocando el texto de forma apropiada, sin ninguna interrupción, a la vez que va rellenando esos espacios reservados a las imágenes.
Estos comandos o atributos son WIDTH (ancho) y HEIGHT (alto).
Por ejemplo, para la imagen isla.gif situada más arriba:

Es conveniente hacer esto con todas las imágenes, incluso con las más pequeñas (iconos, botones, etc), para que no haya ninguna interrupción en el proceso de carga del documento. Se puede también, si se quiere, dimensionar las imágenes con unos valores distintos a los que realmente tienen, variando el tamaño, la anchura o la altura. Esto es muy conveniente, por ejemplo para poner en la página un thumbnail (reproducción en pequeño de una imagen), que hace de enlace a la imagen en su verdadero tamaño. De esta manera no recargamos demasiado una página, y el usuario será quien decida qué imágenes desea cargar.
Para hacer que una imagen reducida sea el enlace con la imagen en su tamaño original, lo conseguimos con:

También se puede conseguir esto de otra manera, más correcta aunque más laboriosa. Es la de reducir en un programa gráfico esta imagen a 150x75, guardarla con otro nombre, y luego hacer que la pequeña sea el enlace de la grande. Es más correcta esta otra solución porque no todos los navegadores reconocen los comandos WIDTH y HEIGHT, incluso tampoco algunas de las versiones más antiguas de Netscape.
Fondos y colores
Se puede cambiar el fondo de dos maneras distintas:
1. Con un color uniforme
2. Con una imagen
Fondos con un color uniforme: Se consigue añadiendo el comando BGCOLOR a la etiqueta (situada al principio del documento), de la siguiente manera:
XX Es un número indicativo de la cantidad de color rojo
YY Es un número indicativo de la cantidad de color verde
ZZ Es un número indicativo de la cantidad de color azul
Estos números están en numeración hexadecimal. Esta numeración se caracteriza por tener 16 dígitos (en lugar de los diez de la numeración decimal habitual). Estos dígitos son: 0 1 2 3 4 5 6 7 8 9 A B C D E F. Es decir, que en nuestro caso, el número menor es el 00 y el mayor el FF. Así, por ejemplo, el color rojo es el #FF0000, porque tiene el máximo de rojo y cero de los otro dos colores. Los colores primarios son:
#FF0000 Rojo
#00FF00 Verde
#0000FF Azul
Otros colores son:
#FFFFFF Blanco
#000000 Negro
#FFFF00 Amarillo
Para hacer un color más oscuro, hay que reducir el número de su componente, dejando los otros dos invariables. Así, el rojo #FF0000 se puede hacer más oscuro con #AA0000, o aún más oscuro con #550000. Para hacer que un color tenga un tono más suave (más pastel), se deben variar los otros dos colores haciéndolos más claros (número más alto), en una cantidad igual. Así, podemos convertir el rojo en rosa con #FF7070.
Colores del texto y de los enlaces: Si no se variasen los colores habituales del texto y de los enlaces (negro y azul, respectivamente), podría ocurrir que su lectura contra un fondo oscuro fuese muy dificultosa, o incluso imposible, si el fondo fuese precisamente negro o azul. Para evitar esto, se pueden escoger los colores del texto y de los enlaces, añadiendo a la etiqueta (si se desea) los siguientes comandos:
TEXT color del texto
LINK color de los enlaces
VLINK color de los enlaces visitados
ALINK color de los enlaces activos (el que adquieren en el momento de ser pulsados). Los códigos de los colores son los mismos que los que se han visto anteriormente. La etiqueta, con todas sus posibilidades, sería:

El comando TEXT explicado anteriormente (que va englobado dentro de la etiqueta ) cambia el color de la totalidad del texto de la página. Tanto el Netscape Navigator 2, como el Microsoft Explorer soportan una etiqueta de color de la fuente con la que se puede cambiar sólo una parte del texto:
Este texto es de color XXYYZZ
Fondos con una imagen: El fondo de una página puede ser también una imagen, ya sea en formato GIF o JPEG. Esta imagen se repite por toda la página, de una manera análoga al tapiz de Windows. La estructura de la etiqueta puede ser:


No todos los navegadores soportan este formato.
Se pueden añadir también a esta etiqueta todos los comandos para cambiar los colores del texto y de los enlaces, vistos anteriormente. Esto es imprescindible a veces para conseguir que el texto sea legible, en contraste con el fondo. Hay que prever la posibilidad de que quien acceda a nuestra página haya deshabilitado la carga automática de imágenes, en cuyo caso tampoco cargaría la imagen que sirve como fondo y sólo vería el fondo estándar de color gris. Esto podría ser muy perjudicial si hemos escogido unos colores para el texto y los enlaces que no contrastan bien con ese fondo gris. La solución a este problema es poner dentro de la etiqueta los dos comandos BACKGROUND y BGCOLOR (en este orden), teniendo cuidado en escoger un color uniforme de fondo parecido al de la imagen.
Por ejemplo, supongamos que queremos poner como fondo la imagen nubes.jpg. Escogemos entonces un color de fondo azul claro, #CCFFFF. La etiqueta quedaría así:

Esto tiene la ventaja adicional de que, incluso aunque no se deshabilite la carga automática de imágenes, al cargar la página, lo primero que se ve es ese fondo de color uniforme, que luego es reemplazado por el de la imagen.
Tablas
Las tablas pueden parecer un modo sencillo de disponer el texto en columnas o quizás de añadir un titular a una ilustración, pero hay modos de sacar un gran partido de una característica aparentemente sencilla. La etiqueta puede ser una poderosa herramienta de formato. Se puede hacer por ejemplo, no mostrar el borde de una tabla en absoluto. También se puede hacer uso de la etiqueta para ubicar texto e imágenes con precisión, en prácticamente casi cualquier lugar de una página.
Estructura de una tabla
Vamos a ver ordenadamente (de fuera hacia dentro) las etiquetas necesarias para confeccionar las tablas.

[resto de las etiquetas]

Es la etiqueta general, que engloba a todas las demás.

[resto de las etiquetas]

Presenta los datos tabulados con un borde, haciendo las tablas más atractivas, y el grosor es de n pixeles.

[etiquetas de las distintas celdas de la primera fila]

Permite formar cada fila de la tabla. Hay que repetirla tantas veces como filas queremos que tenga la tabla.

[contenido de cada celda (imágenes, texto, etc.)]

Permite formar las distintas celdas que contendrá cada fila de la tabla. Hay que repetirlas tantas veces como celdas queramos que tenga la fila.

[encabezamiento de tabla]

Es utilizada para colocar encabezamientos en negrita sobre las columnas
EJEMPLO 4


Página de prueba para tablas




Columna 1 Columna 2 Columna 3
fila1 - c elda1 fila1 - celda2 fila1 - celda3


fila2 - celda1 fila2 - celda2 fila2 - celda3


[Aquí van las etiquetas que visualizan la página]


¿Qué pasa si el numero de celdas de una fila es distinto al de otra?
Pues el navegador forma el número de filas y columnas que haga falta, dejando espacios en blanco en las filas que tengan menos celdas.
Titular de tabla
Se puede añadir un titulo a la tabla, es decir un texto situado encima de la tabla que indica cuál es su contenido. Se consigue con la etiqueta y . Por ejemplo:
Esta es mi primera tabla
TITULO Coloca él titulo sobre la tabla.
TITULO Coloca él titulo bajo la tabla.
Contenido de las celdas
Solo se ha puesto hasta ahora en el ejemplo, texto normal dentro de las distintas celdas. Pero se puede poner en ellas cualquier otro elemento de los que van en un documento HTML, como imágenes, enlaces, etc. No hay más que poner dentro de la etiqueta de la celda la etiqueta correspondiente a una imagen, un enlace, etc.
EJEMPLOS
Con una imagen





Con un enlace


Mi página principal


Posicionamiento del contenido dentro de la celda
Normalmente, el contenido de una celda está alineado a la izquierda. Pero se puede cambiar esto añadiendo dentro de la etiqueta de la celda los siguientes atributos:
Al centro
A la derecha
Cabecera a la izquierda
El alineamiento por defecto en el sentido vertical es en el medio. También se puede cambiar, añadiendo dentro de la etiqueta de la celda los siguientes atributos:
Arriba
Abajo
Variando las dimensiones de la tabla
El navegador se encarga normalmente de dimensionar el tamaño total de la tabla de acuerdo con el número de filas, de columnas, por el contenido de las celdas, espesor de los bordes, etc.
A veces nos puede convenir forzarle para que la tabla tenga unas dimensiones totales mayores que las que le corresponden, tanto en anchura como en longitud. Esto se consigue añadiendo dentro de la etiqueta de la tabla los atributos WIDTH y HEIGHT igual a un porcentaje de la dimensión de la pantalla, o a una cifra que equivale al número de pixels.
Por ejemplo, si colocamos:

O, por ejemplo ponemos:

Celdas que abarcan a otras varias
A veces puede interesarnos que una celda se extienda sobre otras varias. Esto se consigue añadiendo dentro de la etiqueta de la celda los atributos COLSPAN=número para extenderse sobre un número determinado de columnas, o ROWSPAN=número para extenderse verticalmente sobre un número determinado de filas.
Por ejemplo, en la primera tabla del ejemplo anterior vamos a añadir una fila con una sola celda, que abarca a dos columnas:
Celda sobre 2 columnas
O, en la misma tabla, vamos a añadir una celda en la primera fila, pero que abarque también a la siguiente:
Celda junto a 2 filas
Color de fondo en las tablas
Podemos conseguir que las tablas tengan un color de fondo, siguiendo un procedimiento totalmente análogo al empleado para que una página tenga un color de fondo uniforme (según vimos en el capítulo 7). Para ello debemos utilizar el atributo BGCOLOR="#XXYYZZ", visto en dicho capítulo.
Se puede conseguir:

[resto de las etiquetas]

La totalidad de la tabla tendrá un color de fondo.

[contenido de la celda]

Solamente una celda determinada tendrá un color de fondo, distinto al del resto de la tabla.
Imágenes de fondo en las tablas
El Explorer de Microsoft soporta la colocación de imágenes de fondo en el interior de las tablas, de una manera análoga a como se hace en una página (según vimos en el capítulo 7). Para ello debemos, utilizar el atributo BACKGROUND="imagen.gif" o BACKGROUND="imagen.jpg", visto en dicho capítulo.
Si se utiliza dentro de la etiqueta la imagen en cuestión se multiplicará detrás de todas las celdas.
(Con el Netscape no se verá ninguna imagen de fondo, sólo con el Explorer)
Si, por el contrario, sólo se pone este atributo dentro de la etiqueta de una celda concreta ( o ), entonces la imagen de fondo se verá sólo en esa celda.
Separación entre las celdas de una tabla
Por defecto, la separación entre las distintas celdas de una tabla es de dos pixels. Pero se puede variar esto con el atributo CELLSPACING, que se pone dentro de la etiqueta TABLE.
Por ejemplo, para obtener una separación de 20 pixels entre celdas ponemos:

A primera vista parece como si esto fuera lo mismo que si hubiéramos aumentado el espesor de los bordes. Pero para comprobar que no es así, hagamos que en el caso anterior, tenga además unos bordes de 5 de espesor:

Separación entre el borde y el contenido dentro de las celdas
Por defecto, la separación entre el borde y el contenido dentro de las celdas es de un pixel. Se puede cambiar esto con el atributo CELLPADDING, que se pone dentro de la etiqueta TABLE. Por ejemplo, para obtener una separación de 20 pixels entre el contenido y los bordes, dentro de cada celda:

Se puede combinar este atributo con CELLSPACING (visto en el apartado anterior). Por ejemplo, una tabla con bordes de 5 de espesor, separación entre celdas de 15 y separación del contenido con respecto a los bordes de las celdas de 20, lo obtendríamos con:




Formularios
La manera general para que los lectores de nuestra página se puedan comunicar con nosotros es por medio de un enlace a nuestra dirección de e-mail, con lo que recibiríamos un email convencional. Pero puede ser que lo que necesitemos sea solamente una respuesta concreta a unas opciones que presentaremos nosotros mismos, o un comentario del usuario, para lo que le suministraremos un espacio en donde introducirlo.
Se puede, hacer todo esto, además de otras cosas, utilizando los formularios, con los que se pueden confeccionar páginas que contengan los elementos necesarios para ello, tal como botones de radio, listas de selección, cajetines de introducción de texto y de control, etc., como vamos a ver.
Los formularios permiten que los demás nos envíen la información directamente a nosotros o bien a nuestro servidor, en donde hemos instalado un programa que procese esta información. Por ejemplo, vamos a suponer que queremos crear una lista de correo. Los usuarios pueden introducir sus nombres y direcciones de e-mail y pulsar un botón de envío.
Esos datos los podemos recibir "en bruto" en nuestro correo, con los que confeccionaríamos manualmente dicha lista de correo, sin necesitar ningún programa para ello. Este proceso es el que vamos a comentar en este capítulo.
La otra posibilidad, de la que únicamente se va a hacer esta mención, es que hubiéramos instalado en nuestro servidor un programa especial para procesar esos datos y añadirlos a la lista de correo, y que incluso pudiera devolver automáticamente al usuario algún tipo de información.
Para conseguir esto, los formularios necesitan ejecutar programas o scripts por medio del CGI (Common Gateway Interface). El CGI permite a los formularios ser procesados por programas escritos en cualquier lenguaje, aunque los más usados en Internet son el Perl y el C.
El tipo de formulario que se describe a continuación podrá ser utilizado por la mayoría de los navegadores, con la notable excepción del Explorer (incluso la versión 3.0), por lo que es conveniente suministrar al final del formulario, como una alternativa para estos casos, un enlace de e-mail ordinario.
Estructura de un formulario
La estructura general de un formulario es:
1.Etiqueta de inicio:

2.Cuerpo del formulario
(Elementos para introducir los datos).
3.Botones de envío y de borrado.
4.Etiqueta de cierre
Etiqueta de inicio: El atributo ACTION indica la acción que se debe efectuar y que es que los datos sean enviados por e-mail a la dirección indicada. (Si hiciéramos uso del CGI, sería precisamente aquí donde indicaríamos su localización en el servidor, que habitualmente es el directorio cgi-bin, para que procese los datos). El atributo METHOD=POST indica que los datos sean inmediatamente enviados por correo a la dirección de e-mail, nada más púlsar el usuario el botón de envío. Con el atributo ENCTYPE="TEXT/PLAIN" se consigue que las respuestas las recibamos como un archivo de texto, perfectamente legible y sin codificar.
Cuerpo del Formulario (Elementos para introducir los datos): Los vamos a dividir en tres clases:
1. Introducción por medio de texto
2. Introducción por medio de menús
3. Introducción por medio de botones
La introducción de los datos se consigue por medio de la etiqueta:

En donde:
XXX Es la palabra que indica el tipo de datos a introduccir.
YYY Es el nombre que le asignamos nosotros a la variable de introducción del dato.
ZZZ Es la palabra asociada a un elemento.
Todo esto, que de momento parece muy confuso, se aclarará al ir viendo los distintos casos.
Introducción por medio de texto
Introducción por medio de texto (una línea)
En este caso es XXX=TEXT, es decir, INPUT TYPE=“TEXT”. El atributo VALUE no procede en este caso. Vamos a poner un ejemplo. solicitamos el apellido del usuario:

Escribe tu apellido:


Si el usuario introduce su apellido, p. ej. Ruiz, y pulsa el botón de envío (que veremos más adelante), recibiremos, un e-mail suyo con el siguiente texto:
Apellido=Ruiz
La longitud de este formulario es por defecto de 20 caracteres. Se puede variar incluyendo en la etiqueta el atributo SIZE="número". Por otra parte, sea cual sea la longitud del formulario, si no se indica nada, el usuario puede introducir el número de caracteres que quiera. Se puede limitar esto, incluyendo en la etiqueta el atributo MAXLENGTH="número".
En el caso que hemos visto, si hubiéramos cambiado la etiqueta correspondiente por:

(Se puede comprobar cómo no se pueden introducir más de 12 caracteres).
También se puede hacer que el texto introducido no sea reconocible, es decir que todos los caracteres se representen por asteriscos. Basta con cambiar en la etiqueta INPUT TYPE=“TEXT”.
por INPUT TYPE=“PASSWORD”. En el último ejemplo, si cambiamos la etiqueta correspondiente por:

(Se puede comprobar cómo los caracteres introducidos se representan por asteriscos)
Introducción por medio de texto (múltiples líneas)
Cuando el texto a introducir puede alcanzar una gran longitud, por ejemplo un comentario, es conveniente utilizar un formulario de texto de múltiples líneas.
Esto se consigue con la etiqueta de inicio:

(en donde no se utiliza INPUT TYPE y donde ROWS representa el número de filas, y COLS el de
columnas).
y la de cierre:
Ejemplo: un formulario solicitando los comentarios del usuario:

Introduce tus comentarios:


(El salto de línea del texto introducido no se efectúa automáticamente).
Una vez que el usuario haya escrito sus comentarios dentro del formulario, y haya pulsado el botón de envío, recibiremos un e-mail suyo con el siguiente texto:
Comentarios = mensaje escrito por el usuario
Introducción por medio de menús
Si queremos que el usuario, en vez de introducir un texto, como hemos visto en los casos anteriores, escoja entre varias opciones que le presentamos nosotros, haremos uso de un formulario en forma de menú.
Se consigue con la etiqueta de inicio y la de cierre . Las distintas opciones a escoger se consiguen con la etiqueta .
Ejemplo: Pedimos al usuario que elija su color preferido:

¿Cuál es tu color preferido?


Rojo
Verde
Azul
Amarillo


Si el usuario ha escogido, p. ej. Azul y ha pulsado el botón de envío, recibiremos un e-mail suyo con el texto: ColorPreferido=Azul. En el ejemplo anterior, sólo es visible en el formulario una opción. Si queremos que sean visibles múltiples opciones a la vez, añadimos en la etiqueta los atributos MULTIPLE SIZE="número", donde especificamos el número de opciones visibles.
Si cambiamos en el ejemplo anterior la etiqueta correspondiente por:

Introducción por medio de botones
Caja de confirmación (checkbox)
Si queremos que el usuario confirme una opción determinada, podemos hacer uso de un formulario de confirmación, o checkbox, que se consigue con la etiqueta:

Ejemplo: Solicitamos al usuario que confirme su inclusión en una lista de correo:

Sí, deseo ser incluido en la lista de correo.

Si el usuario marca este formulario y pulsa el botón de envío, recibiremos un e-mail suyo con el texto: Lista=On. Si queremos que el formulario aparezca inicialmente como marcado (el usuario no necesitará hacerlo), basta con añadir el atributo CHECKED dentro de la etiqueta. En el ejemplo anterior si sustituimos la etiqueta equivalente por:

Botones de radio
Cuando queremos que el usuario elija una única opción entre varias, podemos hace uso de los botones de radio, que se consiguen con la etiqueta:

Donde YYY es el nombre que le ponemos a la variable que se trata de elegir, y ZZZ es el nombre de cada una de las opciones en concreto.
Ejemplo: solicitamos al usuario que defina cuál es su sistema operativo preferido:

¿Cuál es tu sistema operativo preferido?

PC
Mac
Unix

Obsérvese el atributo opcional CHECKED que se ha añadido en la primera etiqueta. Esa será la opción que aparece marcada por defecto.
Obsérvese también que no es posible escoger más de una opción. Si el usuario ha escogido la opción PC y pulsa el botón de envío, recibiremos un e-mail suyo con el texto: SistemaOperativo=PC.

Botones de envío y de borrado: Hasta ahora, en todos los ejemplos que hemos visto, faltaba un elemento esencial en cualquier formulario, y es el botón de envío de los datos, que se consigue con la etiqueta:
En donde ZZZ es el texto que queremos que aparezca en el botón.
Vamos a añadirlo al primer ejemplo, en el que se solicitaba el apellido del usuario:

Escribe tu apellido:



Otro botón interesante es el de borrado de los datos introducidos, muy conveniente en un formulario con muchos elementos. Es muy similar al de envío, pues se consigue con la etiqueta:

En donde ZZZ es el texto que queremos que aparezca en el botón. Si añadimos al ejemplo anterior la etiqueta:

Se puede comprobar su funcionamiento, escribiendo algo en el formulario y pulsando luego el botón de borrado.
Consideraciones finales
Hasta ahora hemos visto uno a uno los diferentes elementos que se pueden utilizar. Pero no hay ningún inconveniente en usar, dentro del mismo formulario, distintos tipos de introducción de datos. Al pulsar el usuario el botón de envío recibiríamos en e-mail suyo con las distintas parejas NAME=VALUE de cada elemento, encadenadas con el símbolo &.
EJEMPLO
Haremos como ejemplo práctico un libro de visitas a nuestra página.


Libro de Visitas



Libro de visitas
Tu nombre:

Escribe tus comentarios:









Mapas
Hemos visto anteriormente dos maneras distintas de enlazar una página con otra: por medio de un enlace de texto o por medio de una imagen. Pero en este último caso se hacía uso de una imagen para enlazar a una única página.
Se puede utilizar una única imagen para enlazar con varias páginas, yendo a una u otra según la zona en donde se pulse el ratón. Este tipo de imágenes se llaman mapas. Veremos cómo se crea un mapa partiendo de una imagen, y cómo se implementa dicho mapa con el lenguaje HTML en nuestra página.
Hay dos tipos de mapas:
1. Mapas gestionados por el servidor
2. Mapas gestionados por el cliente
En nuestro caso, trataremos sobre los mapas gestionados por el cliente, pero cabe hacer mención de los mapas gestionados por el servidor.
Mapas gestionados por el servidor
En este tipo de mapas al desplazar el cursor sobre la imagen que forma el mapa se van obteniendo las distintas coordenadas. Cuando se pulsa el ratón en un punto determinado, el navegador envía esas coordenadas al servidor, y éste comprueba en un archivo MAP (situado en su directorio cgi-bin) cuál es la página que se corresponde con estas coordenadas, envía esta información al navegador, y éste solicita a su vez al servidor que le enlace con dicha página.
Estos mapas, tienen una ventaja: que pueden ser utilizados por todos los navegadores, incluso por las versiones más antiguas.
Pero tienen varios inconvenientes: No todos los servidores tienen implementado el programa CGI necesario para que pueda funcionar un mapa de este tipo. Además hay que conocer el tipo de servidor (NCSA, el más común, o CERN), pues el código a aplicar es distinto en un caso u otro. Por otra parte, al requerir un trasiego de información entre el navegador y el servidor, el tiempo de respuesta es mayor que en el otro tipo, como veremos a continuación.
Mapas gestionados por el cliente
Estos mapas son gestionados por el cliente (es decir, nuestro navegador) y no por el servidor, como en el caso anterior.
En este tipo de mapas, al ir desplazando el cursor se observa que en ciertas zonas se convierte en el símbolo normal para enlazar con otras páginas (una mano, habitualmente). Si se pulsa en estas zonas activas (HOTSPOTS), el navegador consulta con el documento HTML que ha recibido, y decide a qué página o dirección corresponde esa zona activa.
Es decir, no necesita enviar la información al servidor y esperar la respuesta de éste, con lo que el proceso es más rápido que en el caso anterior, reduciéndose además el tráfico de datos y la sobrecarga al servidor. Otras ventajas son que al pasar por una zona activa se muestra la dirección a la que se corresponde (al contrario que en el caso anterior, en la que sólo se ven unas coordenadas). Además, estos mapas se pueden utilizar off-line, al contrario también que en el otro tipo, ya que no requieren la ayuda del servidor.
Pero tiene el inconveniente de que estos mapas no son implementados por todos los navegadores, como en el caso anterior, aunque sí por la mayoría de los utilizados actualmente, desde las versiones siguientes: Netscape 2.0, Microsoft Explorer 2.0, Mosaic 2.1, etc. Pero se puede obviar este inconveniente suministrando enlaces alternativos para los navegadores que no implementen este tipo de mapas.
En lo que sigue, vamos a ver exclusivamente cómo implementar este tipo de mapas, es decir, mapas gestionados por el cliente (client-side image maps).
Confección de la imagen del mapa
Antes que nada, es necesario confeccionar la imagen que va a servir como mapa. Se hará con un programa gráfico, y pueden utilizarse los formatos GIF o JPG.
Para crear una mapa para utilizarlo en nuestra página HTML, debemos seguir los siguientes pasos:
Se confecciona con un programa gráfico la imagen que nos va a servir como mapa.
Para definir un área activa rectangular, necesitamos conocer las coordenadas de su ángulo superior izquierdo (X1,Y1) y las de su ángulo inferior derecho(X2,Y2). Estas coordenadas las obtenemos con el programa gráfico con el que hemos confeccionado la imagen. Al obtener los datos necesarios (las coordenadas) podemos escribir el código HTML que convierta esta imagen en un mapa.
Código HTML para definir un mapa gestionado por el cliente
En este caso, el código que debemos escribir es el siguiente:






Veamos ahora cada una de las etiquetas:
Esta es la etiqueta de apertura del mapa, y en donde se define su nombre.

Esta etiqueta define la primera zona activa. Se indica que su forma (SHAPE, en inglés) es rectangular, y que las coordenadas de su ángulo superior izquierdo son (X1,Y1), y que las del ángulo inferior derecho son (X2,Y2). A continuación se indica cuál es enlace que se desea obtener.
Con esta etiqueta se define el área completa del mapa, indicando que su forma es la que tiene por defecto (default), o sea rectangular. Si se quisiera que el mapa no abarcara la totalidad de la imagen, o incluso que tuviera una forma distinta, habría que indicarlo aquí, en lugar de la instrucción DEFAULT, haciendo uso del mismo tipo de instrucciones que las de las zonas activas.
Etiqueta de cierre del mapa.
Con esta etiqueta se solicita primero al servidor que envíe una imagen llamada imagen.gif. Con USEMAP="#nombre" se indica que esta imagen es el mapa definido anteriormente con ese nombre, y que debe actuar en consecuencia a las pulsaciones del ratón, solicitando un enlace determinado en las zonas activas, o no haciendo nada en el resto.
Con el atributo NOHREF, se define que el área completa de la imagen es una zona no activa, excepto en las áreas definidas anteriormente como activas.
Enlaces alternativos de texto
Como se ha dicho anteriormente, no todos los navegadores implementan este tipo de mapas gestionados por el cliente. Por ello, es necesario suministrar unos enlaces alternativos convencionales de texto, para obviar este inconveniente.
Por ejemplo, a continuación del mapa, se pueden poner enlaces de texto, correspondientes a las dos zonas activas (reduciendo la fuente, para hacerlo menos antiestético):

Mi página XX |
Mi página YY

Zonas activas en forma de círculos o polígonos
Hasta ahora se han definido las zonas activas en forma de rectángulos. Pero se pueden definir también estas zonas activas como círculos o como polígonos.
Para definir una zona activa circular es necesario conocer las coordenadas de su centro (X,Y) y la longitud de su radio (R). Una vez sabidos estos datos, la etiqueta es como sigue:

Para definir una zona activa poligonal hay que conocer las coordenadas de los distintos puntos (X1,Y1), (X2,Y2), (X3,Y3), etc. Con estos datos, la etiqueta se escribe como sigue:

Frames
Frames (en inglés, marcos o cuadros) es un procedimiento del lenguaje HTML para dividir la pantalla en diferentes zonas, o ventanas, que pueden actuar independientemente unas de otras, como si se trataran de páginas diferentes, pues incluso cada una de ellas pueden tener sus propias barras deslizadoras. Los navegadores que lo implementan son el Netscape 2.0, y el Explorer 2.0 en adelante.
Una de sus características más importantes es que pulsando un enlace situado en un frame, se puede cargar en otro frame una página determinada. Esto se utiliza frecuentemente para tener un frame estrecho en la parte lateral (o superior) con un índice del contenido en forma de diferentes enlaces, que, al ser pulsados cargan en la ventana principal las distintas páginas. De esta manera se facilita la navegación entre las páginas, pues aunque se vaya pasando de unas a otras, siempre estará a la vista el índice del conjunto.
Para comprender los distintos conceptos vamos a desarrollar un ejemplo, creando una página con dos Frames. El de la izquierda va a servir de índice de lo que veamos en el de la derecha, y en éste veremos inicialmente una página de presentación.
Documento de definición de los frames
Lo primero que tenemos que hacer es crear un documento HTML en el que definiremos cuántas zonas va a haber, qué distribución y tamaño van a tener, y cuál va ser el contenido de cada una de ellas.
En el ejemplo que vamos a desarrollar, la página va a tener dos frames distribuidos en columnas (es decir, uno al lado del otro, en vez de uno encima del otro, lo que sería una distribución en filas).
Con respecto al tamaño, haremos que el primero (el del izquierda) ocupe el 20% del ancho de la pantalla, y el otro, el 80% restante.
Y con respecto al contenido, el frame de la izquierda va a contener un documento HTML que va a servir de índice de lo que veamos en el otro (y que vamos a llamar mi_indice.html), y el de la derecha otro documento HTML que va a servir de página de presentación (al que llamaremos mi_presentacion.html).
Todo lo anterior se refleja en el siguiente documento HTML:


Mi primera pagina con frames






Obsérvese lo siguiente:
Es un documento parecido a los que conocíamos hasta ahora. La diferencia está en que en vez de utilizar la etiqueta BODY, que sirve normalmente para delimitar lo que se va a ver en la pantalla, se hace uso de la etiqueta FRAMESET (definir los frames).
En este caso, con la etiqueta se define que va a haber dos frames y que van a ir en columnas. Si hubiéramos querido que fueran en filas, habríamos puesto ROWS (filas, en inglés). También se define el espacio en anchura que van a ocupar cada uno de ellos en la pantalla. Se ha puesto como porcentajes del total, pero se podría también haber puesto una cifra absoluta, que representaría el número de pixels a ocupar.
Ya se ha definido el número de frames, su distribución y su tamaño, pero falta por definir el contenido de cada frame. Esto se hace con las etiquetas:


Con esto se define que el contenido del primer frame (el de la izquierda) sea el documento HTML mi_indice.html y el del segundo (el de la derecha) sea el documento HTML mipresentacion.html. Obsérvese que en la etiqueta del segundo se ha incluido el atributo NAME=“principal”, pero no así en el primero. El motivo es que se necesita dar un nombre al segundo frame, pues, como veremos a continuación, en el documento del primer frame va a haber unos enlaces que van a ir dirigidos hacia él. En este caso sólo tenemos dos frames, pero podría haber más, y es necesario distinguirlos unos de otros. Y el primero no necesita nombre, pues no va a haber enlaces en el segundo dirigidos hacia él.
A este documento le vamos a llamar mi_pagina.html, pero todavía no lo vamos a guardar, pues falta por añadir algo que veremos más adelante.
Documentos HTML de cada frame
Necesitamos ahora confeccionar el documento HTML de cada uno de los frames. Recuérdese que son como páginas independientes, que pueden tener cada una su propio fondo, etc., y todo lo que queramos añadir en ellos y que hemos aprendido hasta ahora.
Documento del frame de la izquierda
Va a tener un fondo amarillo, y va a contener dos enlaces dirigidos al frame de la derecha.


Indice


Presentación
Esta es otra página



Dentro de las etiquetas de los enlaces podemos observar algo nuevo, y es el atributo TARGET (en inglés: objetivo, blanco), que sirve para hacer que al ser activado el enlace no se cargue en el propio frame, sino en otro, precisamente en el que hayamos llamado con ese nombre en el documento de definición de los frames.
En nuestro caso, le hemos dado el nombre de "principal" al frame de la derecha, y es por tanto ahí donde se van a cargar los documentos HTML. Guardamos este documento con el nombre de mi_indice.html.
Documento del frame de la derecha
Va a tener un fondo negro, y va a contener sólamente un texto.


Presentacion





ESTA ES LA VERSION
CON FRAMES
DE MI PAGINA





Guardamos este documento con el nombre de mi_presentacion.html
Alternativa para los navegadores que no soportan frames
Con lo visto anteriormente, ya tenemos las tres piezas que necesitamos:
Documento de definición de los frames
Documento del contenido del primer frame
Documento del contenido del segundo frame
Hay que prever el caso en que los navegadores no soportan o desconocen las etiquetas FRAMESET y FRAME. Para estos casos está prevista la etiqueta y . Se añaden al final del documento de definición de los frames, y a se pone entre ambas lo que queremos que vean los que acceden con un navegador que no soporta frames. Puede incluso ser el código HTML de una página completa (lo que normalmente va entre las etiquetas y ). En nuestro caso, pudiéramos poner un mensaje advirtiendo de esta circunstancia, y dirigiendo al usuario, con un enlace normal, hacia una página que hayamos definido como principal o de presentación para estos casos. (También podríamos no decir nada sobre frames, y colocar aquí el código de la página de presentación)

Estas utilizando un navegador que no soporta frames.
Pulsa para visitar mi página.



Mi pagina con frames






Estas utilizando un navegador que no soporta frames.
Pulsa para visitar mi página.


Ahora sí podemos guardar este documento con el nombre de mi_pagina.html.
Atributos de la etiqueta
La etiqueta FRAMESET, como hemos visto en el ejemplo, es la que define la distribución, el número y tamaño de los frames. Tiene dos atributos: COLS (columnas) y ROWS (filas):

Define la distribución de los frames en columnas o en filas, según se use uno u otro atributo. Define el número de frames que habrá, pues, por ejemplo:
(habrá dos frames en columnas)
(habrá tres frames en columnas)
Define el tamaño de los frames, según el valor que demos a XX, YY, ZZ.... Este valor se puede expresar en:
Un porcentaje del ancho del pantalla (para las columnas), o del alto de la pantalla (para las filas). Así, por ejemplo:
(la columna de la izquierda ocupará el 20% del ancho de la pantalla, y la de la derecha el 80% restante)
(la fila superior ocupará el 10% del alto de la pantalla, la del medio el 70%, y la inferior el 20%)
Un número absoluto que representa el número de pixels que ocupará cada frame a lo ancho o a lo alto (según sean filas o columnas). Así, por ejemplo:
(la columna de la izquierda tendrá 40 pixels de ancho y la de la derecha 600). Pero es peligroso utilizar sólo valores absolutos, pues el tamaño de la pantalla varía de un usuario a otro. Si se va a usar algún valor absoluto para un frame, es mejor mezclarlo con alguno relativo, como los que vamos a ver acontinuación, para que se ajuste el total a la pantalla del usuario Un valor relativo que se consigue poniendo un asterisco (*), en vez de un número. Esto se interpreta como que ese frame debe tener el espacio restante. Por ejemplo:
(Habrá tres filas, la superior y la inferior de una altura fija de 100 pixels, y la del medio obtendrá el espacio restante).
Si hay más de un frame con asterisco, ese espacio restante se dividirá por igual entre ellos. Si hay un número antes del asterisco, ese frame obtiene esa cantidad más de espacio relativo. Así "2*,*" daría dos tercios para el primer frame y un tercio para el otro.
Frames sin bordes
Si se desea que no haya un borde de separación entre los frames, se deben incluir el atributo FRAMEBORDER=0 dentro de la etiqueta FRAMESET. No todas las versiones de los navegadores lo implementan.
Para que también desaparezcan los huecos de separación entre frames hay que añadir otros dos atributos (el primero es para el Explorer y el segundo para el Netscape):
FRAMESPACING=0 y BORDER=0. con lo que la etiqueta completa quedaría:

Atributos de la etiqueta
Esta etiqueta define las cararacterísticas de un frame concreto, no del conjunto de los frames, como era el caso con la etiqueta . Puede tener los siguientes posibles atributos, que van dentro de la etiqueta :
SRC="dirección" Esta dirección puede ser la de un documento HTML (tal como hemos utilizado en el ejemplo), o cualquier otro recurso del Web (o URL). Con este atributo se indica lo que se cargará inicialmente en el frame. Si no se le pone este atributo a la etiqueta , entonces dicho frame aparecerá inicialmente vacío, aunque tendrá las dimensiones asignadas.
NAME="nombre_de_la_ventana" Este atributo se usa para asignar un nombre a un frame. De esta manera se podrá "dar en el blanco" (en inglés, target) en esta página, desde un enlace situado en otra página. Es decir, que pulsando en otra página un enlace, se cargará precisamente en ésta, tal como hemos visto en el ejemplo. El atributo NAME es opcional. Por defecto, todas las ventanas carecen de nombre. Los nombres que se escojan deben comenzar por un carácter alfanumérico (una letra o un número, pero no otro tipo de símbolo).
MARGINWIDTH="número" Se utiliza este atributo cuando se quiere controlar el ancho de los márgenes dentro de un frame. El número que se ponga representa los pixels de los márgenes. Este atributo es opcional.
MARGINHEIGHT="número" Igual que el anterior, pero referido a los márgenes en altura.
SCROLLING="yes|no|auto" Este atributo se utiliza para decidir si el frame tendrá o no una barra deslizadora. Si se escoje "yes" tendrá siempre una barra deslizadora. Si se escoje "no" no la tendrá nunca, y si se escoje "auto", será el navegador quien decida si la tendrá o no. Este atributo es opcional. Su valor por defecto es "auto".
NORESIZE A este atributo no se le asigna un valor numérico, como a los demás. Es un indicador para que la ventana no se pueda redimensionar (en inglés, resize) por parte del usuario. Es un atributo opcional. Por defecto, todos los frames son re-dimensionables.
FRAMEBORDER="no" Este atributo elimina el borde en un frame, pero si se quiere que se elimine completamente, también hay que ponérselo al frame contiguo. Si se quiere eliminar los bordes de todos los frames, se debe colocar en la etiqueta FRAMESET, como hemos visto anteriormente.
El atributo TARGET
En el ejemplo hemos visto que, como queríamos que los enlaces situados en el frame de la izquierda surtieran efecto no en él mismo, sino en otro frame, teníamos que poner dentro de cada enlace el atributo TARGET=“principal”, siendo “principal” el nombre que habíamos dado al segundo frame, en el documento de definición de frames. Es decir, hemos utilizado este atributo de esta manera:
TARGET="nombre_dado_a_otro_frame".
Estos nombres, que los escogemos nosotros, pueden ser cualquiera, pero con la condición que el primer carácter sea alfanumérico (letra o número). Pero hay unos nombres reservados (es decir, que no se pueden usar para denominar a un frame), que hacen que este atributo efectúe unas funciones especiales. Para que cumplan su cometido, es imprescindible escribir estas palabras reservadas (blank, self y top) en minúsculas.
TARGET=“_blank”. Hace que se abra una nueva copia del navegador, y el enlace activado se carga en ella, a pantalla completa. Es decir, tendríamos dos copias del navegador (Netscape, Explorer, etc.) funcionando a la vez.
TARGET="_self". Hace que el enlace se cargue en el propio frame.
TARGET="_top". Hace que el enlace se cargue a pantalla completa, suprimiendo todos los frames, pero sin que se cargue una nueva copia del navegador. Este es particularmente útil. Un error muy común es olvidarse de poner este atributo en los enlaces que están en un frame, con lo que resulta que al ser activados, la página llamada se carga dentro del propio frame, lo cual es muy molesto si esa página pertenece a otro sitio del WEB, y aún más grave si esa página tiene a su vez frames. Este inconveniente se evita poniendo este atributo dentro de las etiquetas de los enlaces.
Frames anidados dentro de otros frames
Hasta ahora hemos contemplado sólo la posibilidad de tener una distribución de los frames bien en filas o bien en columnas, (dependiendo que se utilice el atributo ROWS o COLS en la etiqueta FRAMESET), pero no ambos a la vez.
Se pueden obtener distribuciones más complejas anidando filas dentro de una columna, o a la inversa, columnas dentro de una fila.
Supongamos que queremos la siguiente distribución:
Un frame estrecho en horizontal en la parte superior, de lado a lado de la pantalla (altura, el 15%)
Otro frame estrecho en vertical en la parte izquierda, debajo del anterior (anchura, el 20%)
Un tercero ocupando el resto de la pantalla.
Vemos que, en realidad, esto equivale a la siguiente distribución:
Dos filas. La superior ocupa el 15% y la inferior el resto. La fila inferior está a su vez dividida en dos columnas. La primera (la de la izquierda) ocupa el 20% y la otra, el resto. El documento de definición de las dos filas (olvidémonos de momento que la de abajo está subdividida), sería:


Pagina con dos filas






Como la fila inferior, en realidad, son dos columnas (con una distribución del 20% y resto), sustituimos (anidando) la etiqueta por:




Con lo que queda el documento definitvo así:


Pagina con fila superior y dos columnas inferiores










Sonidos
Una página del WEB puede tener sonidos incorporados, bien sea como un fondo sonoro que se ejecuta automáticamente al cargar la página, o como una opción para que la active el propio usuario.
Capacidades sonoras de los navegadores
Para poder escuchar los sonidos es necesario disponer, como es lógico, de una tarjeta de sonido con sus correspondientes altavoces. Pero esto no es suficiente, pues no todos los programas navegadores están capacitados en la misma medida.
Explorer de Microsoft
Es el que está mejor adaptado para el sonido, pues a partir de la versión 2.0 es capaz de reproducir fondos sonoros sin necesidad de añadir nada, y no hay ninguna complicación con los servidores, como ocurre con el Netscape. Además, a partir de la versión 3.0 del Explorer, es incluso compatible con los plug-ins del Netscape.
Netscape
Las versiones anteriores a la 2.0 no son capaces de reproducir fondos sonoros que se ejecuten automáticamente, sino que requerirá que se activen los programas auxiliares asociados a los formatos, .WAV o .MID.
La versión 2.0 sí es capaz de reproducir un fondo sonoro, pero es necesario que tenga instalado un plug-in llamado Crescendo.
La versión 3.0 lleva implícito el plug-in Live Audio (pero sólo la versión completa, no la reducida). En caso afirmativo, es capaz de reproducir un fondo sonoro.
Pero a todas estas complicaciones de las distintas versiones de los navegadores de los usuarios, hay otra más y es que el servidor donde esté alojada la página del WEB debe tener configurados como MIME los formatos, .MID y .WAV. Si esto no es así, aunque depositemos en el servidor nuestro documento HTLM acompañado por el correspondiente archivo de sonido, éste no se ejecutará. En dicho caso, es necesario ponerse en contacto con los administradores del servidor para que configuren como MIME los formatos, .MID y .WAV.
Este problema no existe, sin embargo para el Explorer, con el que no nos tenemos que preocupar por este tema.
Fondo sonoro para el Microsoft Internet Explorer
Para las versiones 2.0 en adelante, se utiliza la etiqueta:

El archivo de sonido puede estar en formato .MID o .WAV.
El atributo LOOP (en inglés, lazo) sirve para especificar el número (n) de veces que se debe ejecutar el archivo de sonido. Si se escoge el número n=-1 o se pone LOOP=INFINITE, el sonido se ejecutará indefinidamente. Se puede omitir este atributo, y entonces el archivo se ejecutará una sola vez. La etiqueta para que se ejecute el archivo sonido.mid dos veces en el Explorer es:

(Para poder oirlo, hay que estar utilizando el Explorer)
Fondo sonoro para el Netscape
La etiqueta básica para el Netscape es:

donde WIDTH es la anchura y HEIGHT la altura de una consola que aparece, y que tiene diferentes teclas (Play, Stop, Pausa, etc.). Respecto a las dimensiones XXX e YY estas dependerán del plug-ins que existe para Netscape.
El archivo de sonido puede estar en formato, .MID o .WAV, pero recuérdese la advertencia hecha anteriormente, de que estos formatos deben estar configurados como MIME por el servidor donde esté alojada la página.
Dentro de la etiqueta se pueden añadir los siguientes atributos opcionales:
AUTOSTART=“TRUE” Arranca automáticamente.
LOOP=“TRUE” Se ejecuta ininterrumpidamente
Para conseguir que la consola sea invisible hay que añadirle el atributo HIDDEN=“TRUE”.

Fondo sonoro combinado para el Explorer y el Netscape
Se pueden combinar los dos tipos distintos de etiquetas para conseguir que un fondo sonoro sea escuchado por usuarios que utilicen tanto el Explorer como el Netscape (siempre que éste último esté preparado para ello). En este caso, el Explorer ignorará la etiqueta del Netscape, y a la inversa. Las dos etiquetas necesarias para que se reproduzca un archivo de sonido ya sea en formato, .WAV o .MID, como sonido de fondo, tanto por el Explorer como por el Netscape (lo hará una sola vez):
Para el Explorer.
Para el Netscape.
Como vimos anteriormente para que un archivo de sonido, .MID o .WAV se ejecute como sonido de fondo, tanto por el Explorer como por el Netscape y que se ejecute indefinidamente, a la etiqueta del Explorer basta con añadirle el atributo LOOP=INFINITE, como se ha visto anteriormente. Y con respecto a la etiqueta del Netscape, teóricamente debería también bastar añadirle el atributo LOOP=“TRUE”, pero curiosamente esto no es así, porque hay que poner las dimensiones de la consola (que no se va a ver).
Las dos etiquetas quedarian de esta manera:


Activación del sonido por el propio usuario
Hemos visto cómo poner un sonido de fondo en una página. Hay otra opción, mucho más sencilla, y es la de poner un enlace a un archivo de sonido, de tal manera, que al pulsarlo se ejecute el archivo. Por ejemplo, poner un enlace a un archivo sonido.mid:
Escucha esta musica
Al pulsar el enlace se activa, en una ventana aparte, el programa que ejecuta el sonido. Esto es válido para todos los navegadores, incluso las versiones más antiguas, con la única condición de que se haya configurado un programa auxiliar capaz de ejecutar archivos .MID o .WAV.
Se puede hacer el enlace con un icono. Por ejemplo al hacer un enlace con un icono llamado snd.gif al archivo de sonido sondiowav el enlace quedaria así:

En el capítulo anterior creamos una versión con frames, en la que aparece inicialmente en el frame de la derecha una página de presentación. Se puede colocar a esta página una música de fondo, para que sea ejecutada por el Explorer y el Netscape. Para ello debemos hacer lo siguiente:
En el documento de la derecha que llamamos como presentacion.html debemos añadir entre las etiquetas y (situadas al final), lo siguiente:
¡Escucha la música de fondo!

















Programación en Bases de datos
Introducción a los conceptos de bases de datos
Definiciones de  Base de Datos
Todo buen curso necesita empezar con algunos conceptos básicos para el mejor entendimiento del mismo, por lo tanto empezaremos con las definiciones que involucran a las bases de datos.
Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos.
Información: Es un conjunto ordenado de datos los cuales son manejados según la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en archivos.
Conceptos básicos de archivos computacionales
Campo: Es la unidad más pequeña a la cual uno puede referirse en un programa. Desde el punto de vista del programador representa una característica de un individuo u objeto.
Registro: Colección de campos de iguales o de diferentes tipos.
Archivo: Colección de registros almacenados siguiendo una estructura homogénea.
Base de datos: Es una colección de archivos interrelacionados, son creados con un DBMS. El contenido de una base de datos engloba a la información concerniente (almacenadas en archivos) de una organización, de tal manera que los datos estén disponibles para los usuarios, una finalidad de la base de datos es eliminar la redundancia o al menos minimizarla. Los tres componentes principales de un sistema de base de datos son el hardware, el software DBMS y los datos a manejar, así como el personal encargado del manejo del sistema.
Sistema Manejador de Base de Datos. (DBMS): Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de una tarea específica. El objetivo primordial de un sistema manejador base de datos es proporcionar un contorno que sea a la vez conveniente y eficiente para ser utilizado al extraer, almacenar y manipular información de la base de datos. Todas las peticiones de acceso a la base, se manejan centralizadamente por medio del DBMS, por lo que este paquete funciona como interfase entre los usuarios y la base de datos. Las funciones principales de un DBMS son:
Crear y organizar la Base de datos.
Establecer y mantener las trayectorias de acceso a la base de datos de tal forma que  los datos puedan ser accesados rápidamente.
Manejar los datos de acuerdo a las peticiones de los usuarios.
Registrar el uso de las bases de datos.
Interacción con el manejador de archivos. Esto a través de las sentencias en DML al comando de el sistema de archivos. Así el Manejador de base de datos es el responsable del verdadero almacenamiento de los datos.
Respaldo y recuperación. Consiste en contar con mecanismos implantados que permitan la recuperación fácilmente de los datos en caso de ocurrir fallas en el sistema de base de datos.
Control de concurrencia. Consiste en controlar la interacción entre los usuarios concurrentes para no afectar la inconsistencia de los datos.
Seguridad e integridad. Consiste en contar con mecanismos que permitan el control de la consistencia de los datos evitando que estos se vean perjudicados por cambios no autorizados o previstos.
El DBMS es conocido también como Gestor de Base de datos.
         INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_11.gif" \* MERGEFORMATINET 
La figura muestra el  DBMS como interfase entre la base de datos física y las peticiones del usuario. El DBMS interpreta las peticiones de entrada/salida del usuario y las manda al sistema operativo para la transferencia de datos entre la unidad de memoria secundaria y la memoria principal. En sí, un sistema manejador de base de datos es el corazón de la base de datos ya que se encarga del control total de los posibles aspectos que la puedan afectar.
Esquema de base de datos: Es la estructura por la que está formada la base de datos, se especifica por medio de un conjunto de definiciones que se expresa mediante un lenguaje especial llamado lenguaje de definición de datos. (DDL)
Administrador de base de datos (DBA): Es la persona o equipo de personas profesionales responsables del control y manejo del sistema de base de datos, generalmente tiene(n) experiencia en DBMS, diseño de bases de datos, Sistemas operativos, comunicación de datos, hardware y  programación.
Definición de esquema: Es el esquema original de la base de datos se crea escribiendo un conjunto de definiciones que son traducidas por el compilador de DDL a un conjunto de tablas que son almacenadas permanentemente en el diccionario de datos.
Definición de la estructura de almacenamiento del método de acceso. Estructuras de almacenamiento y de acceso adecuados se crean escribiendo un conjunto de definiciones que son traducidas por e compilador del lenguaje de almacenamiento y definición de datos.
Concesión de autorización para el acceso a los datos. Permite al administrador de la base de datos regular las partes de las bases de datos que van a ser accedidas por varios usuarios.
Especificación de límitantes de integridad. Es una serie de restricciones que se encuentran almacenados en una estructura especial del sistema que es consultada por el gestor de base de datos cada vez que se realice una actualización al sistema.
Usuarios de las bases de datos: Podemos definir a los usuarios como toda persona que tenga todo tipo de contacto con el sistema de base de datos desde que este se diseña, elabora, termina y se usa. Los usuarios que accedan una base de datos pueden clasificarse como:
Programadores de aplicaciones. Los profesionales en computación que interactúan con el sistema por medio de llamadas en DML (Lenguaje de Manipulación de Datos), las cuales están incorporadas en un programa escrito en un lenguaje de programación (Por ejemplo, COBOL, PL/I, Pascal, C, etc.).
Usuarios sofisticados. Los usuarios sofisticados interactúan con el sistema sin escribir programas. En cambio escriben sus preguntas en un lenguaje de consultas de base de datos.
Usuarios especializados. Algunos usuarios sofisticados escriben aplicaciones de base de datos especializadas que no encajan en el marco tradicional de procesamiento de datos.
Usuarios ingenuos. Los usuarios no sofisticados interactúan con el sistema invocando a uno de los programas de aplicación permanentes que se han escrito anteriormente en el sistema de base de datos, podemos mencionar al usuario ingenuo como el usuario final que utiliza el sistema de base de datos sin saber nada del diseño interno del mismo por ejemplo: un cajero

Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación de los datos involucra tanto la definición de estructuras para el almacenamiento de la información como la provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe de tener implementados mecanismos de seguridad que garanticen la integridad de la información, a pesar de caídas del sistema o intentos de accesos no autorizados.
Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión abstracta de los datos, esto se logra escondiendo ciertos detalles de como se almacenan y mantienen los datos.
Objetivos de los sistemas de bases de datos
Los objetivos principales de un sistema de base de datos es disminuir los siguientes aspectos:
Redundancia e inconsistencia de datos: Puesto que los archivos que mantienen almacenada la información son creados por diferentes tipos de programas de aplicación existe la posibilidad de que si no se controla detalladamente el almacenamiento, se pueda originar un duplicado de información, es decir que la misma información sea más de una vez en un dispositivo de almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan entre si, por ejemplo: que se actualiza la dirección de un cliente en un archivo y que en otros archivos permanezca la anterior.
Dificultad para tener acceso a los datos: Un sistema de base de datos debe contemplar un entorno de datos que le facilite al usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes necesita averiguar los nombres de todos los clientes que viven dentro del código postal 78733 de la ciudad. El gerente pide al departamento de procesamiento de datos que genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto ocasiona una deficiencia del sistema.
Aislamiento de los datos: Puesto que los datos están repartidos en varios archivos, y estos no pueden tener diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los datos apropiados.
Anomalías del acceso concurrente: Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos simultáneamente. En un entorno así la interacción de actualizaciones concurrentes puede dar por resultado datos inconsistentes. Para prevenir esta posibilidad debe mantenerse alguna forma de supervisión en el sistema.
Problemas de seguridad: La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se debe considerar el control de acceso a los mismos, no todos los usuarios pueden visualizar alguna información, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de seguridad que garantice la autentificación y protección de los datos. En un banco por ejemplo, el personal de nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco y no a otro tipo de información.
Problemas de integridad: Los valores de datos almacenados en la base de datos deben satisfacer cierto tipo de restricciones de consistencia. Estas restricciones se hacen cumplir en el sistema añadiendo códigos apropiados en los diversos programas de aplicación.

Abstracción de la información.
Una base de datos es en esencia una colección de archivos relacionados entre sí, de la cual los usuarios pueden extraer información sin considerar las fronteras de los archivos.
Un objetivo importante de un sistema de base de datos es proporcionar a los usuarios una visión abstracta de los datos, es decir, el sistema esconde ciertos detalles de cómo se almacenan y mantienen los datos. Sin embargo para que el sistema sea manejable, los datos se deben extraer eficientemente.
Existen diferentes niveles de abstracción para simplificar la interacción de los usuarios con el sistema; Interno, conceptual y externo, específicamente el de almacenamiento físico, el del usuario y el del programador.
Nivel físico: Es la representación del nivel más bajo de abstracción, en éste se describe en detalle la forma en como de almacenan los datos en los dispositivos de almacenamiento (por ejemplo, mediante señaladores o índices para el acceso aleatorio a los datos).
Nivel conceptual: El siguiente nivel más alto de abstracción, describe que datos son almacenados realmente en la base de datos y las relaciones que existen entre los mismos, describe la base de datos completa en términos de su estructura de diseño. El nivel conceptual de abstracción lo usan los administradores de bases de datos, quienes deben decidir qué información se va a guardar en la base de datos.
Consta de las siguientes definiciones:
Definición de los datos: Se describen el tipo de datos y la longitud de campo todos los elementos direccionables en la base. Los elementos por definir incluyen artículos elementales (atributos), totales de datos y registros conceptuales (entidades).
Relaciones entre datos: Se definen las relaciones entre datos para enlazar tipos de registros relacionados para el procesamiento de archivos múltiples.
En el nivel conceptual la base de datos aparece como una colección de registros lógicos, sin descriptores de almacenamiento. En realidad los archivos conceptuales no existen físicamente. La transformación de registros conceptuales a registros físicos para el almacenamiento se lleva a cabo por el sistema y es transparente al usuario.
Nivel de visión: Nivel más alto de abstracción, es lo que el usuario final puede visualizar del sistema terminado, describe sólo una parte de la base de datos al usuario acreditado para verla. El sistema puede proporcionar muchas visiones para la misma base de datos. La interrelación entre estos tres niveles de abstracción se ilustra en la siguiente figura.
  INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_1.gif" \* MERGEFORMATINET 


Modelos de datos
Para introducirnos en este tema, empezaremos definiendo que es un modelo.
Modelo: Es una representación de la realidad que contiene las características generales de algo que se va a realizar. En base de datos, esta representación la elaboramos de forma gráfica.
Modelo de datos: Es una colección de herramientas conceptuales para describir los datos, las relaciones que existen entre ellos, semántica asociada a los datos y restricciones de consistencia. Los modelos de datos se dividen en tres grupos:
  Modelos lógicos basados en objetos.
  Modelos lógicos basados en registros.
  Modelos físicos de datos.
Modelos lógicos basados en objetos.
Se usan para describir datos en los niveles conceptual y de visión, es decir, con este modelo representamos los datos de tal forma como nosotros los captamos en el mundo real, tienen una capacidad de estructuración bastante flexible y permiten especificar restricciones de datos explícitamente. Existen diferentes modelos de este tipo, pero el más utilizado por su sencillez y eficiencia es el modelo Entidad-Relación.
Modelo Entidad-Relación
Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de entidades, que son objetos  que existen y que se distinguen de otros por sus características, por ejemplo: un alumno se distingue de otro por sus características particulares como lo es el nombre, o el numero de control asignado al entrar a una institución educativa, así mismo, un empleado, una materia, etc. Las entidades pueden ser de dos tipos:
Tangibles: Son todos aquellos objetos físicos que podemos ver, tocar o sentir.
Intangibles: Todos aquellos eventos u objetos conceptuales que no podemos ver, aun sabiendo que existen, por ejemplo: la entidad materia, sabemos que existe, sin embargo, no la podemos visualizar o tocar.
Las características de las entidades en base de datos se llaman atributos, por ejemplo el nombre, dirección teléfono, grado, grupo, etc. son atributos de la entidad alumno; Clave, número de seguro social, departamento, etc., son atributos de la entidad empleado. A su vez una entidad se puede asociar o relacionar con más entidades a través de relaciones.
 Pero para entender mejor esto, veamos un ejemplo:
Consideremos una empresa que requiere controlar a los vendedores y las ventas que ellos realizan; de este problema determinamos que los objetos o entidades principales a estudiar son el empleado (vendedor) y el artículo (que es el producto en venta), y las características que los identifican son:
          Empleado:        Artículo:
Nombre            Descripción                   Puesto              Costo                   Salario              Clave                  
La relación entre ambas entidades la podemos establecer como Venta.
Bueno, ahora nos falta describir como se representa un modelo E-R gráficamente, la representación es muy sencilla, se emplean símbolos, los cuales son:





  Símbolo                                           Representa
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_2.gif" \* MERGEFORMATINET 
    Así nuestro ejemplo anterior quedaría representado de la siguiente forma:
  INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_3.gif" \* MERGEFORMATINET 
    Existen más aspectos a considerar con respecto a los modelos entidad relación, estos serán considerados en el tema Modelo Entidad Relación.
Modelos lógicos basados en registros.
Se utilizan para describir datos en los niveles  conceptual y físico. Estos modelos utilizan registros  e instancias para representar la realidad, así como las relaciones que existen entre estos registros (ligas) o apuntadores. A diferencia de los modelos de datos basados en objetos, se usan para especificar la estructura lógica global de la base de datos y para proporcionar una descripción a nivel más alto de la implementación.
Los tres modelos de datos más ampliamente aceptados son:
Modelo Relacional
Modelo de Red
Modelo Jerárquico
Modelo relacional.
En este modelo se representan los datos y las relaciones entre estos, a través de una colección de tablas, en las cuales los renglones (tuplas) equivalen a los cada uno de los registros que contendrá la base de datos y las columnas corresponden a las características(atributos) de cada registro localizado en la tupla;
Considerando nuestro ejemplo del empleado y el artículo:
 Tabla del empleado
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_4.gif" \* MERGEFORMATINET 
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_5.gif" \* MERGEFORMATINET 
Ahora nos preguntamos ¿cómo se representan las relaciones entre las entidades en este modelo?
Existen dos formas de representarla; pero para ello necesitamos definir que es una llave primaria: Es un atributo el cual definimos como atributo principal, es una forma única de identificar a una entidad. Por ejemplo, el RFC de un empleado se distingue de otro por que los RFC no pueden ser iguales.
 Ahora si, las formas de representar las relaciones en este modelo son:
Haciendo una tabla que contenga cada una de las llaves primarias de las entidades involucradas en la relación. Tomando en cuenta que la llave primaria del empleado es su RFC, y la llave primaria del articulo es la Clave.
   INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_6.gif" \* MERGEFORMATINET 
2. Incluyendo en alguna de las tablas de las entidades involucradas, la llave de la otra tabla.                                                                                                 
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_7.gif" \* MERGEFORMATINET 
Modelo de red.
Este modelo representa los datos mediante colecciones de registros y sus relaciones se representan por medio de ligas o enlaces, los cuales pueden verse como punteros. Los registros se organizan en un conjunto de gráficas arbitrarias.
Ejemplo:
               INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_8.gif" \* MERGEFORMATINET 
 
   Modelo jerárquico.
Es similar al modelo de red en cuanto a las relaciones y datos, ya que estos se representan por  medio de registros  y sus ligas. La diferencia radica en que están organizados por conjuntos de arboles en lugar de gráficas arbitrarias.
 
              INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_9.gif" \* MERGEFORMATINET 
           Para profundizar más en el tema visita: Modelo de datos jerárquico. 
Modelos físicos de datos.
Se usan para describir a los datos en el nivel más bajo, aunque existen muy pocos modelos de este tipo,   básicamente capturan aspectos de la implementación de los sistemas de base de datos. Existen dos clasificaciones de este tipo que son:
 Modelo unificador
 Memoria de elementos.
Instancias y esquemas.
Con el paso del tiempo la información que se va acumulando y desechando en la base de datos, ocasiona que está cambie. Denominamos instancia al estado que presenta una base de datos en un tiempo dado. Veámoslo como una fotografía que tomamos de la base de datos en un tiempo t, después de que transcurre el tiempo t la base de datos ya no es la misma. Esquema es la descripción lógica de la base de datos, proporciona los nombres de las entidades y sus atributos especificando las relaciones que existen entre ellos. Es un banco en el que se inscriben los valores que irán formando cada uno de los atributos. El esquema no cambia los que varían son los datos y con esto tenemos una nueva instancia.
Ejemplo: Considerando el ejemplo del vendedor que vende artículos, esquema e instancia según nuestro ejemplo, quedaría:
Esquema:
    { Vendedor : Nombre, puesto, salario, RFC }
    { Articulo : Clave, costo, descripción }
Instancia:
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_10.gif" \* MERGEFORMATINET 
Como podemos observar el esquema nos muestra la estructura en el cual se almacenaran los datos, en este caso en registros cuyos nombres de campos son: por parte del vendedor (Nombre, puesto, salario, RFC) y por el artículo (Clave, costo, descripción); La instancia representa a una serie de datos almacenados en los registros establecidos por el esquema, estos datos varían, no permanecen fijos en el tiempo.

Independencia de los datos
Se refiere a la protección contra los programas de aplicación que puedan originar  modificaciones cuando se altera la organización física o lógica de la base de datos. Existen 2 niveles de independencia de datos.
Independencia física de datos: Es la capacidad de modificar el esquema físico sin provocar que se vuelvan a escribir los programas de aplicación.
Independencia lógica de datos: Capacidad de modificar el esquema conceptual sin provocar que se vuelvan a escribir los programas de aplicación.
Lenguaje de definición de datos
El lenguaje de definición de datos, denominado por sus siglas como: DDL(Data definition Language). Permite definir un esquema de base de datos por medio de una serie de definiciones que se expresan en un lenguaje especial, el resultado de estas definiciones se almacena en un archivo especial llamado diccionario de datos.
Lenguaje de manipulación de datos
La manipulación de datos se refiere a las operaciones de insertar, recuperar, eliminar o modificar datos; dichas operaciones son realizadas a través del lenguaje de manipulación de datos (DML, Data Manipulation Language), que es quién permite el acceso de los usuarios a los datos.
Existen básicamente 2 tipos de lenguajes de manipulación de datos:
Procedimentales:     Los LMD requieren que el usuario especifique que datos se necesitan y cómo obtenerlos.
No procedimentales: Los LMD requieren que el usuario especifique que datos se necesitan y sin especificar cómo obtenerlos.

Estructura general del sistema.
Un sistema de base de datos se encuentra dividido en módulos cada uno de los cuales controla una parte de la responsabilidad total de sistema. En la mayoría de los casos, el sistema operativo proporciona únicamente los servicios más básicos y el sistema de la base de datos debe partir de esa base y controlar además el manejo correcto de los datos. Así el diseño de un sistema de base de datos debe incluir la interfaz entre el sistema de base de datos y el sistema operativo.
Los componentes funcionales de un sistema de base de datos, son:
Gestor de archivos. Gestiona la asignación de espacio en la memoria del disco y de las estructuras de datos usadas para representar información.
Manejador de base de datos. Sirve de interfaz entre los datos y los programas de aplicación.
Procesador de consultas. Traduce las proposiciones en lenguajes de consulta a instrucciones de bajo nivel. Además convierte la solicitud del usuario en una forma más eficiente.
Compilador de DDL. Convierte las proposiciones DDL en un conjunto de tablas  que contienen metadatos, estas se almacenan en el diccionario  de datos.
Archivo de datos. En él se encuentran almacenados físicamente los datos de una organización.
Diccionario de datos. Contiene la información referente a la estructura de la base de datos.
Indices. Permiten un rápido acceso a registros que contienen valores específicos.
Una forma gráfica de representar los componentes antes mencionados y la relación que existe entre ellos sería la siguiente.
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_12.gif" \* MERGEFORMATINET 



Modelo Entidad-Relación
El modelo E-R se basa en una percepción del mundo real, la cual esta formada por objetos básicos llamados entidades y las relaciones entre estos objetos así como las características de estos objetos llamados atributos.

Entidades y conjunto de entidades
Una entidad es un objeto que existe y se distingue de otros objetos de acuerdo a sus características llamadas atributos. Las entidades pueden ser concretas como una persona o abstractas como una fecha.
Un conjunto de entidades es un grupo de entidades del mismo tipo. Por ejemplo el conjunto de entidades CUENTA, podría representar al conjunto de cuentas de un banco X, o ALUMNO representa a un conjunto de entidades de todos los alumnos que existen en una institución.
Una entidad se caracteriza y distingue de otra por los atributos, en ocasiones llamadas propiedades, que representan las características de una entidad. Los atributos de una entidad pueden tomar un conjunto de valores permitidos al que se le conoce como dominio del atributo. Así cada entidad se describe por medio de un conjunto de parejas formadas por el atributo y el valor de dato. Habrá una pareja para cada atributo del conjunto de entidades.
Ejemplo: Hacer una descripción en pareja para la entidad alumno con los atributos No_control, Nombre y Especialidad.
Nombre_atributo, Valor
  No_control   ,    96310418
Nombre        ,    Sánchez Osuna Ana
Esp              ,     LI
O considerando el ejemplo del Vendedor cuyos aributos son: RFC, Nombre, Salario.
Nombre_atributo, Valor
RFC                  , COMD741101YHR
Nombre             , Daniel Colín Morales
Salario             , 3000
Relaciones y conjunto de relaciones.
Una relación es la asociación que existe entre dos a más entidades. Un conjunto de relaciones es un grupo de relaciones del mismo tipo.
La cantidad de entidades en una relación determina el grado de la relación, por ejemplo la relación ALUMNO-MATERIA es de grado 2, ya que intervienen la entidad ALUMNO y la entidad MATERIA, la relación PADRES, puede ser de grado 3, ya que involucra las entidades PADRE, MADRE e HIJO.
Aunque el modelo E-R permite relaciones de cualquier grado, la mayoría de las aplicaciones del modelo sólo consideran relaciones del grado 2. Cuando son de tal tipo, se denominan relaciones binarias.
La función que tiene una relación se llama papel, generalmente no se especifican los papeles o roles, a menos que se quiera aclarar el significado de una relación.
Diagrama E-R (sin considerar los atributos, sólo las entidades) para los modelos ejemplificados:
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_1.gif" \* MERGEFORMATINET 
Limitantes de mapeo.
Existen 4 tipos de relaciones que pueden establecerse entre entidades, las cuales establecen con cuantas entidades de tipo B se pueden relacionar una entidad de tipo A:
Tipos de relaciones:
Relación uno a uno. Se presenta cuando existe una relación como su nombre lo indica uno a uno, denominado también relación de matrimonio. Una entidad del tipo A solo se puede relacionar con una entidad del tipo B, y viceversa; Por ejemplo: la relación asignación de automóvil que contiene a las entidades EMPLEADO, AUTO, es una relación 1 a 1, ya que asocia a un empleado con un único automóvil por lo tanto ningún empleado posee más de un automóvil asignado, y ningún vehículo se asigna a más de un trabajador.   Es representado gráficamente de la siguiente manera:
                    INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_2.gif" \* MERGEFORMATINET 
A: Representa a una entidad  de cualquier tipo diferente a una entidad B.
R: En el diagrama representa a la relación que existe entre las entidades. El extremo de la flecha que se encuentra punteada indica el uno de la relación, en este caso, una entidad A ligada a una entidad B.
Relación uno a muchos. Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B, y una entidad del tipo B solo puede estar relacionada con una entidad del tipo A.  Su representación gráfica es la siguiente:
    INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_3.gif" \* MERGEFORMATINET 
Nótese en este caso que el extremo punteado de la flecha de la relación de A y B, indica una entidad A conectada a muchas entidades B.
Muchos a uno. Indica que una entidad del tipo B puede relacionarse con cualquier cantidad de entidades del tipo A, mientras que cada entidad del tipo A solo puede relacionarse con solo una entidad del tipo B.
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_4.gif" \* MERGEFORMATINET 
Muchas a muchas. Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier cantidad de entidades del tipo B.
 
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_5.gif" \* MERGEFORMATINET 
A los tipos de relaciones antes descritos, también se le conoce como cardinalidad.  La cardinalidad nos especifica los tipos de relaciones que existen entre las entidades en el modelo E-R y establecer con esto las validaciones necesarias para conseguir que los datos de la instancia (valor único en un momento dado de una base de datos) correspondan con la realidad.
Algunos ejemplos de cardinalidades de la vida común pueden ser:
Uno a uno. El noviazgo, el RFC de cada persona, El CURP personal, El acta de nacimiento, ya que solo existe un solo documento de este tipo para cada una de las diferentes personas.
Uno a muchos. Cliente – Cuenta en un banco, Padre-Hijos, Camión-Pasajeros, zoologico- animales, árbol – hojas.
Muchos a muchos. Arquitecto – proyectos, fiesta – personas, estudiante – materias.
NOTA: Cabe mencionar que la cardinalidad para cada conjunto de entidades depende del punto de vista que se le de al modelo en estudio, claro esta, sujetándose a la realidad.
Otra clase de limitantes lo constituye la dependencia de existencia. Refiriéndonos a las mismas entidades A y B, decimos que si la entidad A depende de la existencia de la entidad B, entonces A es dependiente de existencia por B, si eliminamos a B tendríamos que eliminar por consecuente la entidad A, en este caso B es la entidad Dominante y A es la entidad subordinada.
Llaves primarias.
Como ya se ha mencionado anteriormente, la distinción de una entidad entre otra se debe a sus atributos, lo cual lo hacen único. Una llave primaria es aquel atributo el cual consideramos clave para la identificación de los demás atributos que describen a la entidad. Por ejemplo, si consideramos la entidad ALUMNO del Instituto Tecnológico de La Paz, podríamos tener los siguientes atributos: Nombre, Semestre, Especialidad, Dirección, Teléfono, Número de control, de todos estos atributos el que podremos designar como llave primaria es el número de control, ya que es diferente para cada alumno y este nos identifica en la institución.
Claro que puede haber más de un atributo que pueda identificarse como llave primaria en este caso se selecciona la que consideremos más importante, los demás atributos son denominados llaves secundarias.
Una clave o llave primaria es indicada gráficamente en el modelo E-R con una línea debajo del nombre del atributo.
Diagrama Entidad-Relación
Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de un esquema gráfico empleando los terminología de entidades, que son objetos  que existen y son los elementos principales que se identifican en el problema a resolver con el diagramado y se distinguen de otros por sus características particulares denominadas atributos, el enlace que que rige la unión de las entidades esta representada por la relación del modelo.
Recordemos  que un rectángulo nos representa a las entidades; una elipse a los atributos de las entidades, y una etiqueta dentro de un rombo nos indica la relación que existe entre las entidades, destacando con  líneas las uniones de estas y que la llave primaria de una entidad es aquel atributo que se encuentra subrayado.
A continuación mostraremos algunos ejemplos de modelos E-R, considerando las cardinalidades que existen entre ellos:
Relación Uno a Uno.
Problema:
Diseñar el modelo E-R, para la relación Registro de automóvil que consiste en obtener la tarjeta de circulación de un automóvil con los siguientes datos:- Automóvil- Modelo, Placas, Color  - Tarjeta de circulación -Propietario, No_serie, Tipo.
     INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_7.gif" \* MERGEFORMATINET  Indicamos con este ejemplo que existe una relación de pertenencia de uno a uno, ya que existe una tarjeta de circulación registrada por cada automóvil.
En este ejemplo, representamos que existe un solo presidente para cada país.
      INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_8.gif" \* MERGEFORMATINET 
Relación muchos a muchos. El siguiente ejemplo indica que un cliente puede tener muchas cuentas, pero  que una cuenta puede llegar a pertenecer a un solo cliente (Decimos puede, ya que existen cuentas registradas a favor de más de una persona).
          INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_9.gif" \* MERGEFORMATINET 

Reducción de diagramas E-R a tablas
Un diagrama E-R, puede ser representado también a través de una colección de tablas. Para cada una de las entidades y  relaciones  existe una tabla única a la que se le asigna como nombre el del conjunto de entidades y de las relaciones respectivamente, cada tabla tiene un número de columnas que son definidas por la cantidad de atributos y las cuales tienen el nombre del atributo.
La transformación de nuestro ejemplo Venta en la que intervienen las entidades de Vendedor con los atributos RFC, nombre, puesto, salario y Artículo con los atributos Clave, descripción, costo.
Cuyo diagrama E-R es el siguiente:
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig1_3.gif" \* MERGEFORMATINET  Entonces las tablas resultantes siguiendo la descripción anterior son:
Tabla Empleado
NombrePuestoSalarioRFCTeófiloVendedor2000TEAT701210XYZCesarAuxiliar ventas1200COV741120ABCTabla artículo
ClaveDescripciónCostoA100Abanico460C260Colcha matrimonial1200Tabla Venta
RFCClaveTEAT701210XYZC260COV741120ABCA100Nótese que en la tabla de relación - Venta -, contiene como atributos a las llaves primarias de las entidades que intervienen en dicha relación, en caso de que exista un atributo en las relaciones, este atributo es anexado como una fila más de la tabla;
Por ejemplo si anexamos el atributo fecha a la relación venta, la tabla que se originaria sería la siguiente:
RFCClaveFechaTEAT701210XYZC26010/12/96COV741120ABCA10011/12/96
Generalización y especialización
Generalización: Es el resultado de la unión de 2 o más conjuntos de entidades (de bajo nivel) para producir un conjunto de entidades de más alto nivel. La generalización se usa para hacer resaltar los parecidos entre tipos de entidades de nivel más bajo y ocultar sus diferencias. La generalización consiste en identificar todos aquellos atributos iguales de un conjunto de entidades para formar una entidad(es) global(es) con dichos atributos semejantes, dicha entidad(es) global(es) quedara a un nivel más alto al de las entidades origen.
Ejemplo: Tomando el ejemplo del libro de fundamentos de base de datos de Henry F. Korth. Donde: Se tiene las entidades Cta_Ahorro y Cta_Cheques, ambas tienen los atributos semejantes de No_Cta y Saldo, aunque además de estos dos atributos, Cta_Ahorro tiene el atributo Tasa_Interes y Cta_Cheques el atributo Saldo_Deudor. De todos estos atributos podemos juntar (generalizar) No_Cta y Saldo que son iguales en ambas entidades.
Entonces tenemos:
   INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_10.gif" \* MERGEFORMATINET 
Podemos leer esta gráfica como: La entidad Cta_Ahorro hereda de la entidad CUENTA los atributos No_Cta y saldo, además del atributo de TasaInteres, de forma semejante Cta_cheque tiene los atributos de No_Cta, Saldo y SaldoDeudor.
Como podemos observar la Generalización trata de eliminar la redundancia (repetición) de atributos, al englobar los atributos semejantes. La entidad(es) de bajo nivel cuentan (heredan) todos los atributos correspondientes.
 Especialización: Es el resultado de tomar un subconjunto de entidades de alto nivel para formar un conjunto de entidades de más bajo nivel.
En la generalización cada entidad de alto nivel debe ser también una entidad de bajo nivel. La especialización no tiene este limitante.
Se representa por medio de un triángulo denominado con la etiqueta "ISA", se distingue de la generalización por el grosor de las líneas que conectan al triángulo con las entidades. La especialización denota la diferencia entre los conjuntos de entidades de alto y bajo nivel.
Agregación. 
La agregación surge de la limitación que existe en el modelado de E-R, al no permitir expresar las relaciones entre relaciones de un modelo E-R en el caso de que una relación X se quiera unir con una entidad cualquiera para formar otra relación.
La Generalización consiste en agrupar por medio de un rectángulo a la relación (representada por un rombo) junto con las entidades y atributos involucrados en ella, para formar un grupo que es considerado una entidad y ahora sí podemos relacionarla con otra entidad.
Para ejemplificar lo anterior consideremos el ejemplo del libro de fundamentos de Base de Datos de Henry F. Korth. En donde el problema consiste en que existen trabajando muchos empleados que trabajan en diferentes proyectos, pero dependiendo del trabajo que realiza en pueden llegar a utilizar un equipo o maquinaria; en este problema intervienen 3 entidades: Empleado, Proyecto y Maquinaria, el diagrama E-R correspondiente es:
 INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_11.gif" \* MERGEFORMATINET 
Como el modelo  E-R no permite la unión entre dos o más relaciones, la relación trabajo es englobada como si fuera una entidad más de la relación usa, gráficamente queda como:
       INCLUDEPICTURE "http://sistemas.itlp.edu.mx/tutoriales/basedat1/fig2_12.gif" \* MERGEFORMATINET 
Ahora podemos decir que la entidad trabajo se relaciona con la entidad maquinaria a través de la relación usar. Para indicarnos que un trabajo usa un determinado equipo o maquinaria según el tipo de trabajo que se trate.

Modelo Relacional
La ventaja del modelo relacional es que los datos se almacenan, al menos conceptualmente, de un modo en que los usuarios entienden con mayor facilidad. Los datos se almacenan como tablas y las relaciones entre las filas y las tablas son visibles en los datos. Este enfoque permite a los usuarios obtener información de la base de datos sin asistencia de sistemas profesionales de administración de información.
Las características más importantes de los modelos relacionales son:
Es importante saber que las entradas en la tabla tienen un solo valor (son atómicos); no se admiten valores múltiples, por lo tanto la intersección de un renglón con una columna tiene un solo valor, nunca un conjunto de valores.
Todas las entradas de cualquier columna son de un solo tipo. Por ejemplo, una columna puede contener nombres de clientes, y en otra puede tener fechas de nacimiento. Cada columna posee un nombre único, el orden de las comunas no es de importancia para la tabla, las columnas de una tabla se conocen como atributos. Cada atributo tiene un dominio, que es una descripción física y lógica de valores permitidos.
No existen 2 filas en la tabla que sean idénticas.
La información en las bases de datos son representados como datos explícitos, no existen apuntadores o ligas entre las tablas.
En el enfoque relacional es sustancialmente distinto de otros enfoques en términos de sus estructuras lógicas y del modo de las operaciones de entrada/salida. En el enfoque relacional, los datos se organizan en tablas llamadas relaciones, cada una de las cuales se implanta como un archivo. En terminología relacional una fila en una relación representa un registro o una entidad; Cada columna en una relación representa un campo o un atributo.
Así, una relación se compone de una colección de entidades (o registros) cuyos propietarios están descritos por cierto número de atributos predeterminados implantados como campos.
Estructura de las bases de datos relacionales
La arquitectura relacional se puede expresar en términos de tres niveles de abstracción: nivel interno, conceptual y de visión. La arquitectura relacional consta de los siguientes componentes: 
Modelo relacional de datos: En el nivel conceptual, el modelo relacional de datos está representado por una colección de relaciones almacenadas. Cada registro de tipo conceptual en un modelo relacional de datos se implanta como un archivo almacenado distinto.
Submodelo de datos: Los esquemas externos de un sistema relacional se llaman submodelos relacionales de datos; cada uno consta de uno a más escenarios (vistas) para describir los datos requeridos por una aplicación dada. Un escenario puede incluir datos de una o más tablas de datos. Cada programa de aplicación está provisto de un buffer ("Area de trabajo de usuario") donde el DBMS puede depositar los datos recuperados de la base para su procesamiento, o puede guardar temporalmente sus salidas antes de que el DBMS las escriba en la base de datos.
Esquema de almacenamiento: En el nivel interno, cada tabla base se implanta como un archivo almacenado. Para las recuperaciones sobre las claves principal o secundaria se pueden establecer uno o más índices para accesar un archivo almacenado.
Sublenguaje de datos: Es un lenguaje de manejo de datos para el sistema relacional, el álgebra relacional y cálculo relacional, ambos lenguajes son "relacionalmente completos", esto es, cualquier relación que pueda derivarse de una o más tablas de datos, también se puede derivar con u solo comando del sublenguaje. Por tanto, el modo de operación de entrada/Salida en un sistema relacional se puede procesar en la forma: una tabla a la vez en lugar de: un registro a la vez; en otras palabras, se puede recuperar una tabla en vez de un solo registro con la ejecución de un comando del sublenguaje de datos.
El modelo relacional fue propuesto originariamente por E.F. Codd en un ya famoso artículo de 1970. Gracias a su coherencia y facilidad de uso, el modelo se ha convertido en los años 80 en el más usado para la producción de DBMS.
La estructura fundamental del modelo relacional es precisamente esa, "relación", es decir una tabla bidimensional constituida por líneas (tuplas) y columnas (atributos). Las relaciones representan las entidades que se consideran interesantes en la base de datos. Cada instancia de la entidad encontrará sitio en una tupla de la relación, mientras que los atributos de la relación representarán las propiedades de la entidad. Por ejemplo, si en la base de datos se tienen que representar personas, se podrá definir una relación llamada "Personas", cuyos atributos describen las características de las personas (tabla siguiente). Cada tupla de la relación "Personas" representará una persona concreta.
PersonasNombreApellidoNacimientoSexoEstado CivilJuanLoza15/06/1971HSolteroIsabelGalvez23/12/1969MCasadaMicaelaRuiz02/10/1985MSolteraEn realidad, siendo rigurosos, una relación es sólo la definición de la estructura de la tabla, es decir su nombre y la lista de los atributos que la componen. Cuando se puebla con las tuplas, se habla de "instancia de relación". Por eso, la tabla anterior representa una instancia de la relación persona. Una representación de la definición de esa relación podría ser la siguiente:
Personas (nombre, apellido, fecha_nacimiento, sexo, estado_civil)
A continuación, se indicarán ambas (relación e instancia de relación) con el término "relación", a no ser que no quede claro por el contexto a qué acepción se refiere.
Las tuplas en una relación son un conjunto en el sentido matemático del término, es decir una colección no ordenada de elementos diferentes. Para distinguir una tupla de otra, se recurre al concepto de "llave primaria", o sea a un conjunto de atributos que permiten identificar unívocamente una tupla en una relación. Naturalmente, en una relación puede haber más combinaciones de atributos que permitan identificar unívocamente una tupla ("llaves candidatas"), pero entre éstas se elegirá una sola para utilizar como llave primaria. Los atributos de la llave primaria no pueden asumir el valor nulo (que significa un valor no determinado), en tanto que ya no permitirían identificar una tupla concreta en una relación. Esta propiedad de las relaciones y de sus llaves primarias está bajo el nombre de integridad de las entidades (entity integrity).
A menudo, para obtener una llave primaria "económica", es decir compuesta de pocos atributos fácilmente manipulables, se introducen uno o más atributos ficticios, con códigos identificativos unívocos para cada tupla de la relación.
Cada atributo de una relación se caracteriza por un nombre y por un dominio. El dominio indica qué valores pueden ser asumidos por una columna de la relación. A menudo un dominio se define a través de la declaración de un tipo para el atributo (por ejemplo diciendo que es una cadena de diez caracteres), pero también es posible definir dominios más complejos y precisos. Por ejemplo, para el atributo "sexo" de nuestra relacion "Personas" podemos definir un dominio por el cual los únicos valores válidos son 'M' y 'F'; o bien por el atributo "fecha_nacimiento" podremos definir un dominio por el que se consideren válidas sólo las fechas de nacimiento después del uno de enero de 1960, si en nuestra base de datos no está previsto que haya personas con fecha de nacimiento anterior a esa. El motor de datos se ocupará de controlar que en los atributos de las relaciones se incluyan sólo los valores permitidos por sus dominios. Característica fundamental de los dominios de una base de datos relacional es que sean "atómicos", es decir que los valores contenidos en las columnas no se puedan separar en valores de dominios más simples. Más formalmente se dice que no es posible tener atributos multivalor (multivalued). Por ejemplo, si una característica de las personas en nuestra base de datos fuese la de tener uno o más hijos, no sería posible escribir la relación Personas de la siguiente manera:
Personas (nombre, apellido, fecha_nacimiento, sexo, estado_civil, hijos)
En efecto, el atributo hijos es un atributo no-atómico, bien porque una persona puede tener más de un hijo o porque cada hijo tendrá diferentes características que lo describen. Para representar estas entidades en una base de datos relacional hay que definir dos relaciones:
Personas (*número_persona, nombre, apellido, fecha_nacimiento, sexo, estado_civil)
Hijos(*número_persona, *nombre_apellido, edad, sexo)
En las relaciones precedentes, los asteriscos (*) indican los atributos que componen sus llaves primarias. Nótese la introducción en la relación Personas del atributo número_persona, a través del cual se asigna a cada persona un identificativo numérico unívoco que se usa como llave primaria. Estas relaciones contienen sólo atributos atómicos. Si una persona tiene más de un hijo, éstos se representarán en tuplas diferentes de la relación Hijos. Las diferentes características de los hijos las representan los atributos de la relación Hijos. La unión entre las dos relaciones está constituida por los atributos número_persona que aparecen en ambas relaciones y que permiten que se asigne cada tupla de la relación hijos a una tupla concreta de la relación Personas. Más formalmente se dice que el atributo número_persona de la relación Hijos es una llave externa (foreign key) hacia la relación Personas. Una llave externa es una combinación de atributos de una relación que son, a su vez, una llave primaria para otra relación. Una característica fundamental de los valores presentes en una llave externa es que, a no ser que no sean null, tienen que corresponder a valores existentes en la llave primaria de la relación a la que se refieren. En nuestro ejemplo, esto significa que no puede existir en la relación Hijos una tupla con un valor del atributo número_persona sin que también en la relación Personas exista una tupla con el mismo valor para su llave primaria. Esta propiedad va bajo el nombre de integridad referencial (referential integrity).
Una de las grandes ventajas del modelo relacional es que define también un álgebra, llamada "álgebra relacional". Todas las manipulaciones posibles sobre las relaciones se obtienen gracias a la combinación de tan sólo cinco operadores: RESTRICT, PROJECT, TIMES, UNION y MINUS. Por comodidad, se han definido también tres operadores adicionales que de todos modos se pueden obtener aplicando los cinco fundamentales: JOIN, INTERSECT y DIVIDE. Los operadores relacionales reciben como argumento una relación o un conjunto de relaciones y restituyen una única relación como resultado.
Veamos brevemente estos ocho operadores:
RESTRICT: Restituye una relación que contiene un subconjunto de las tuplas de la relación a la que se aplica. Los atributos se quedan como estaban.
PROJECT: Restituye una relación con un subconjunto de los atributos de la relación a la que viene aplicado. Las tuplas de la relación resultado se componen de las tuplas de la relación original, de manera que siguen siendo un conjunto en sentido matemático.
TIME: Se aplica a dos relaciones y efectúa el producto cartesiano de las tuplas. Cada tupla de la primera relación está concatenada con cada tupla de la segunda.
JOIN: Se concatenan las tuplas de dos relaciones de acuerdo con el valor de un conjunto de sus atributos.
UNION: Aplicando este operador a dos relaciones compatibles, se obtiene una que contiene las tuplas de ambas relaciones. Dos relaciones son compatibles si tienen el mismo número de atributos y los atributos correspondientes en las dos relaciones tienen el mismo dominio.
MINUS: Aplicado a dos relaciones compatibles restituye una tercera que contiene las tuplas que se encuentran sólo en la primera relación.
INTERSECT: Aplicado a dos relaciones compatibles restituye una relación que contiene las tuplas que existen en ambas.
DIVIDE: Aplicado a dos relaciones que tengan atributos comunes, restituye una tercera que contiene todas las tuplas de la primera relación que se puede hacer que correspondan con todos los valores de la segunda relación.
En las siguientes tablas, a título de ejemplo, se representan los resultados de la aplicación de algunos operadores relacionales a las relaciones Personas e Hijos. Como nombres para las relaciones resultado se han utilizado las expresiones que las producen.
Personasnúmero_personanombreapellidofecha_nacimientosexoestado_civil2MarioRossi29/03/1965MCasado1GiuseppeRusso15/11/1972MSoltero3AlessandraMondella13/06/1970 FSoltera
Hijosnúmero_personanombre_apellidoedadsexo2Maria Rossi3F2Gianni Rossi5M
RESTRICT (Personas)
sexo='Mnúmero_personanombreapellidofecha_nacimientosexoestado_civil2MarioRossi29/03/1965MCasado1GiuseppeRusso15/11/1972MSoltero
PROJECT sexo (Personas)
sexo
M
F
RESTRICT (Personas)
sexo='M'n.nombreapellidonacimientosexostado_civilnombreedadsexoMarioRossiapellido29/03/1965MCsadoMaria Rossi3FMarioRossiApellido29/03/1965MCasadoGianni Rossi5MLas bases de datos relacionales efectúan todas las operaciones en las tablas usando el álgebra relacional, aunque normalmente no le permiten al usuario usarla. El usuario interacciona con la base de datos a través de una interfaz diferente: el lenguaje SQL, un lenguaje declarativo que permite escribir conjuntos de datos. Las instrucciones SQL vienen descompuestas por el motor de datos en una serie de operaciones relacionales.
Las interrelaciones
Las interrelaciones son las relaciones que existen entre varias tablas del sistema (Clientes y Pedidos, por ejemplo). Existen tres formas de interrelaciones dependiendo de la cardinalidad con la que se combinan los elementos de ambas tablas.
Interrelaciones uno a uno
Una interrelación es de uno a uno entre la tabla A y la tabla B cuando a cada elemento de la clave de A se le asigna un único elemento de la tabla B y para cada elemento de la clave de la tabla B contiene un único elemento en la tabla A. Un ejemplo de interrelación de este tipo es la formada por las tablas Datos Generales de Clientes y Datos Contables de Clientes. En esta relación cada cliente tiene una única dirección y una dirección en cada una de las tablas. Representamos la relación como A 1: 1 B.
Ante la presencia de este tipo de relación nos podemos plantear el caso de unificar todos los datos en única tabla pues no es necesario mantener ambas tablas a la misma vez.
Este tipo de relación se genera cuando aparecen tablas muy grandes, con gran cantidad de campos, disgregando la tabla principal en dos para evitar tener una tabla muy grande. También surge cuando los diferentes grupos de usuario cumplimentan una información diferente para un mismo registros; en este caso se crean tantas tablas como registros, evitando así tener que acceder a información que el usuario del grupo actual no necesita.
Interrelaciones uno a varios
Una interrelación es de uno a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee un único elemento relacionado en la tabla A.
Estudiemos la relación entre la tabla de clientes y la tabla de pedidos. Un cliente puede realizar varios pedidos pero un pedido pertenece a un único cliente, por tanto se trata de una relación uno a varios y la representamos A 1: n B.
Interrelaciones varios a varios
Una interrelación es de varios a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee varios elementos relacionados en la tabla A.
Un caso muy característico de esta interrelación es la que surge entre las tablas de Puestos de Trabajo y Empleados de una empresa. Un Empleado puede desempeñar realizar varias funciones dentro de una empresa (desempeñar varios puestos de trabajo), y un puesto de trabajo puede estar ocupado por varios empleados a la misma vez. Esta interrelación la representamos como A n: n B.
No se deben definir relaciones de este tipo en un sistema de bases de datos, debido a su complejidad a la hora de su mantenimiento, por este motivo se debe transformar este tipo de relación es dos interrelaciones de tipo 1: n, empleando para ello una tabla que denominaremos puente y que estará formada por las claves de ambas tablas. Esta tabla puente debe contener una única clave compuesta formada por los campos clave de las tablas primeras.
EmpleadosCódigo EmpleadoEmpleado103Juan105Luisa251Martín736Ana María
PuestosCódigo PuestoPuesto52Comercial73Administrativo
Tabla PuenteCódigo EmpleadoCódigo Puesto103521037310573251527365273673Ahora existe una relación 1: n entre Empleados y Tabla Puente y otra relación 1: n entre Puestos y Tabla Puente ya que un empleado posee varios códigos de empleado en la tabla puente pero cada elemento de la tabla puente pertenece a un único empleado.
Por otro la un puesto de trabajo posee varios elementos relacionados en la tabla puente, pero cada elemento de la tabla puente está relacionado con un único elemento de la tabla puestos.
Problemas con las interrelaciones
A la hora de establecer las interrelaciones existentes en un sistema de bases de datos nos podemos encontrar dos problemas:
Interrelaciones recursivas: un elemento se relaciona consigo mismo directamente.
Interrelaciones circulares o cíclicas: A se relaciona con B, B se relaciona con C y C se relaciona con A.
Ambos casos pueden suponer un grabe problema si definimos una relación con integridad referencial y decimos eliminar en cascada (al eliminar una clave de la tabla A se eliminan los elementos relacionados en la tabla B). Supongamos la relación recursiva existen en la relación Empleado y Supervisor (ambos son empleados de la empresa). Está claro que un empleado está supervisado por otro empleado. Veamos la forma de solucionarlo:
EmpleadosCódigoNombreSupervisor102JuanNO105LuisSI821MaríaNO956MartínSIPara solucionar la relación debemos crear una tabla formada por dos campos. Ambos campos deben ser el código del empleado pero como no podemos tener dos campos con el mismo nombre a uno de ellos le llamaremos código supervisor.
Tabla PuenteCódigo EmpleadoCódigo Supervisor102105105956821105956105Para terminar de resolver la interrelación recursiva basta con definir dos interrelaciones entre la tabla empleados y la tabla puente de tipo 1: n. La primera relación se crea utilizando las claves Empleados[Código] y Tabla Puente[Código Empleado]. La segunda entre Empleados[Código] y Tabla Puente [Código Supervisor].
Las interrelaciones cíclicas o circulares no son muy frecuentes y no existe una metodología estándar para su eliminación, normalmente son debidas a errores de diseño en la base de datos, principalmente en el diseño conceptual del sistema de datos. Por tanto si llegamos a este punto hay que volver a replantearse todo el diseño de la base de datos.
Atributos de las interrelaciones
En la mayoría de las interrelaciones definidas será conveniente exigir integridad relacional entre las claves. Exigiendo la integridad referencial se consigue que en una relación de tipo 1: n o de tipo 1: 1, no se puede añadir ningún valor en la tabla destino si no existe en la tabla origen. Dicho con un ejemplo: en la relación Clientes y Pedidos la tabla Pedidos contiene un campo que se corresponde con el código del Cliente, si se exige la integridad referencia no se podrá escribir un código de cliente en la tabla Pedidos que no exista en la tabla Clientes; de no exigir la integridad referencial se podrán crear pedidos con códigos de clientes que no existen, generando incongruencia de datos en la base de datos.
Definida la integridad referencial (siempre necesaria) podemos exigir la actualización en cascada (siempre necesaria); esta actualización implica que si cambiamos el código a un cliente, debemos actualizar dicho código en la tabla de pedidos, de no ser así, al cambiar el código a un cliente, perderemos los pedidos que tenía realizados.
Para concluir debemos hablar de la eliminación en cascada (NO siempre necesaria), la eliminación en cascada consiste en eliminar todos los datos dependientes de una clave. En nuestro ejemplo implica que al borrar un cliente hay que eliminar todos los pendidos que ha realizado. En muchas ocasiones no interesa realizar esta operación de eliminación en cascada por motivos diversos. Si en el caso de clientes y pedidos no se exige eliminación en cascada no se podrá borrar ningún cliente en tanto en cuanto tenga realizado algún pedido (de lo contrario tendríamos incongruencia de datos).
Reglas de transformación del modelo E/R al modelo relacional

Transformación de las entidades: Todas las entidades regulares presentes en el modelo E/R se transforman en tablas en el modelo relacional, manteniendo el número y tipo de los atributos, así como las claves primarias. Las entidades débiles también se convierten en tablas en el modelo relacional, manteniendo el número y tipo de los atributos, pero su clave primaria se forma por la composición de su clave primaria con la clave primaria de la entidad regular de la cual depende.
Transformación de las relaciones uno a uno (1:1):
Si en la relación binaria, las dos entidades participan con cardinalidad máxima y mínima igual a uno, entonces:
Si las dos entidades tienen el mismo identificador, entonces se transforman en una única tabla por la agregación de los atributos de las dos entidades y la clave es la clave de las entidades (es la misma en ambas).
Si las dos entidades tienen distinto identificador, entonces cada entidad se transforma en una tabla con clave principal el identificador de la entidad correspondiente y cada tabla tendrá como clave ajena el identificador de la otra tabla con la cual está relacionada.
Si en la relación binaria, alguna de las entidades participa con cardinalidad mínima igual a cero, entonces:
Cada entidad se transforma en una tabla con clave principal el identificador de la entidad correspondiente.
Se construye una nueva tabla correspondiente a la relación, la clave de la misma estará formada por las claves de cada tabla y los atributos de la relación (si los hay).
Transformación de las relaciones uno a varios (1:N)
Si en la relación binaria 1:N, la entidad que participa con cardinalidad máxima uno, lo hace también con cardinalidad mínima uno, entonces cada entidad se transforma en una tabla con clave principal el identificador de la entidad correspondiente y la clave de la entidad que participa con cardinalidad máxima uno pasa como clave ajena de la otra tabla con la cual está relacionada. Si la relación tuviera atributos, estos pasan a formar parte de la tabla correspondiente a la entidad que participa con cardinalidad máxima N.
Si en la relación binaria 1:N, la entidad que participa con cardinalidad máxima uno, lo hace con cardinalidad mínima cero, entonces cada entidad se transforma en una tabla con clave principal 1 el identificador de la entidad correspondiente y se construye una nueva tabla correspondiente a la relación, formada por las claves de cada tabla y los atributos de la relación. La clave de esta nueva tabla será el identificador de la entidad que participa con cardinalidad máxima N y tendrá como clave ajena el identificador de la otra entidad.
Las relaciones débiles no sufren ningún tipo de transformación, simplemente desaparecen en el modelo relacional.
Transformación de las relaciones varios a varios (N:M)
En la relación binaria N:M, cada entidad se transforma en una tabla con clave principal el identificador de la entidad correspondiente y se construye una nueva tabla correspondiente a la relación, que tendrá los atributos correspondientes a la relación y cuya clave estará formada por la composición de los identificadores de las entidades que participan en la relación.
Transformación de las relaciones N-arias
En las relaciones N-arias se aplica la misma regla que en las relaciones binarias N:M.
Transformación de las relaciones reflexivas
Para transformar una relación reflexiva al modelo relacional, suponer que se trata de una relación binaria con la particularidad que las dos entidades son iguales y aplicar las reglas de los apartados 2 a 4.

Lenguaje SQL
Introducción
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de Microsoft Jet. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del método OpenRecordSet y como la propiedad RecordSource del control de datos. También se puede utilizar con el método Execute para crear y manipular directamente las bases de datos Jet y crear consultas SQL de paso a través para manipular bases de datos remotas cliente - servidor.
Componentes del SQL
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. Comandos Existen dos tipos de comandos SQL:  
Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.
Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.
 
Comandos DLLComandoDescripciónCREATEUtilizado para crear nuevas tablas, campos e índicesDROPEmpleado para eliminar tablas e índicesALTERUtilizado para modificar las tablas agregando campos o cambiando la definición de los campos. 
Comandos DMLComandoDescripciónSELECTUtilizado para consultar  HYPERLINK "http://www.monografias.com/trabajos7/regi/regi.shtml" registros de la base de datos que satisfagan un criterio determinadoINSERTUtilizado para cargar lotes de datos en la base de datos en una única operación.UPDATEUtilizado para modificar  HYPERLINK "http://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtml" los valores de los campos y  HYPERLINK "http://www.monografias.com/trabajos7/regi/regi.shtml" registros especificadosDELETEUtilizado para eliminar registros de una tabla de una base de datosCláusulas Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.  
CláusulaDescripciónFROMUtilizada para especificar la tabla de la cual se van a seleccionar los registrosWHEREUtilizada para especificar las condiciones que deben reunir los registros que se van a seleccionarGROUP BYUtilizada para separar los registros seleccionados en  HYPERLINK "http://www.monografias.com/trabajos11/grupo/grupo.shtml" grupos específicosHAVINGUtilizada para expresar la condición que debe satisfacer cada grupoORDER BYUtilizada para ordenar los registros seleccionados de acuerdo con un orden específico HYPERLINK "http://www.monografias.com"  INCLUDEPICTURE "http://www.monografias.com/images04/trans.gif" \* MERGEFORMATINET 
Operadores Lógicos

OperadorUsoANDEs el "y" lógico. Evalúa dos condiciones y devuelve un  HYPERLINK "http://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtml" valor de verdad sólo si ambas son ciertas.OREs el "o" lógico. Evalúa dos condiciones y devuelve un  HYPERLINK "http://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtml" valor de verdad si alguna de las dos es cierta.NOTNegación  HYPERLINK "http://www.monografias.com/trabajos15/logica-metodologia/logica-metodologia.shtml" lógica. Devuelve el valor contrario de la expresión.


Operadores de Comparación

OperadorUsoMayor queDistinto de=Mayor ó Igual que=Igual queBETWEENUtilizado para especificar un intervalo de  HYPERLINK "http://www.monografias.com/trabajos14/nuevmicro/nuevmicro.shtml" valores.LIKEUtilizado en la comparación de un modeloInUtilizado para especificar registros de una base de datos   Funciones de Agregado
Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un  HYPERLINK "http://www.monografias.com/trabajos14/dinamica-grupos/dinamica-grupos.shtml" grupo de registros.  
FunciónDescripciónAVGUtilizada para calcular el promedio de los valores de un campo determinado COUNTUtilizada para devolver el número de registros de la selección SUMUtilizada para devolver la suma de todos los valores de un campo determinado MAXUtilizada para devolver el valor más alto de un campo especificado MINUtilizada para devolver el valor más bajo de un campo especificado   Consultas de Selección
Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.
Consultas básicas
La sintaxis básica de una consulta de selección es la siguiente:
SELECT Campos FROM Tabla;
En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo: SELECT Nombre, Telefono FROM Clientes;
Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes.
Ordenar los registros
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la claúsula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo:
SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;
Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre.
Se pueden ordenar los registros por mas de un campo, como por ejemplo:
SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre;
Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC)
SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC;
Consultas con Predicado
El predicado se incluye entre la claúsula y el primer nombre del campo a recuperar, los posibles predicados son:
PredicadoDescripciónALLDevuelve todos los campos de la tablaTOPDevuelve un determinado número de registros de la tablaDISTINCTOmite los registros cuyos campos seleccionados coincidan totalmenteDISTINCTROWOmite los registros duplicados basandose en la totalidad del  HYPERLINK "http://www.monografias.com/trabajos7/regi/regi.shtml" registro y no sólo en los campos seleccionados.ALL Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos  selecciona todos los registros que cumplen las condiciones de la instrucción SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la  HYPERLINK "http://www.monografias.com/trabajos15/todorov/todorov.shtml" \l "INTRO" estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados.
SELECT ALL FROM Empleados;
SELECT * FROM Empleados;
TOP Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994: SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;
Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:
SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;
El valor que va a continuación de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualización de la consulta.
DISTINCT Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único  HYPERLINK "http://www.monografias.com/trabajos7/regi/regi.shtml" registro: SELECT DISTINCT Apellido FROM Empleados;
Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios. DISTINCTROW Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que sólo se fijaba en el contenido de los campos seleccionados, éste lo hace en el contenido del registro completo independientemente de los campo indicados en la cláusula SELECT. SELECT DISTINCTROW Apellido FROM Empleados;
Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del predicado DISTINCT devuleve un único registro con el valor López en el campo Apellido ya que busca no duplicados en dicho campo. Este último ejemplo devuelve dos registros con el valor López en el apellido ya que se buscan no duplicados en el registro completo.
Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma:
SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;
Recuperar Información de una base de Datos Externa
Para concluir este capítulo se debe hacer referencia a la recuperación de registros de bases de datos externa. Es ocasiones es necesario la recuperación de información que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutará la consulta o que en ese momento no se encuentra abierta, esta situación la podemos salvar con la palabra reservada IN de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados IN 'c:\databases\gestion.mdb';
En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados.
Criterios de Selección
En el capítulo anterior se vio la forma de recuperar los registros de las tablas, las formas empleadas devolvían todos los registros de la mencionada tabla. A lo largo de este capítulo se estudiarán las posibilidades de filtrar los registros con el fin de recuperar solamente aquellos que cumplan unas condiciones preestablecidas.
Antes de comenzar el desarrollo de este capítulo hay que recalcar tres detalles de vital importancia. El primero de ellos es que cada vez que se desee establecer una condición referida a un campo de texto la condición de búsqueda debe ir encerrada entre comillas simples; la segunda es que no se posible establecer condiciones de búsqueda en los campos memo y; la tercera y última hace referencia a las fechas. Las fechas se deben escribir siempre en formato mm-dd-aa en donde mm representa el mes, dd el día y aa el año, hay que prestar atención a los separadores -no sirve la separación habitual de la barra (/), hay que utilizar el guión (-) y además la fecha debe ir encerrada entre almohadillas (#). Por ejemplo si deseamos referirnos al día 3 de Septiembre de 1995 deberemos hacerlo de la siguente forma; #09-03-95# ó #9-3-95#.
Operadores Lógicos
Los operadores lógicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not. A excepción de los dos últimos todos poseen la siguiente sintaxis:
    operador   
En donde expresión1 y expresión2 son las condiciones a evaluar, el resultado de la operación varía en  HYPERLINK "http://www.monografias.com/trabajos7/mafu/mafu.shtml" función del operador lógico. La tabla adjunta  HYPERLINK "http://www.monografias.com/trabajos11/tebas/tebas.shtml" muestra los diferentes posibles resultados:    
OperadorResultadoVerdadANDFalsoFalsoVerdadANDVerdadVerdadFalsoANDVerdadFalsoFalsoANDFalsoFalsoVerdadORFalsoVerdadVerdadORVerdadVerdadFalsoORVerdadVerdadFalsoORFalsoFalsoVerdadXORVerdadFalsoVerdadXORFalsoVerdadFalsoXORVerdadVerdadFalsoXORFalsoFalsoVerdadEqvVerdadVerdadVerdadEqvFalsoFalsoFalsoEqvVerdadFalsoFalsoEqvFalsoVerdadVerdadImpVerdadVerdadVerdadImpFalsoFalsoVerdadImpNullNullFalsoImpVerdadVerdadFalsoImpFalsoVerdadFalsoImpNullVerdadNullImpVerdadVerdadNullImpFalsoNullNullImpNullNullSi a cualquiera de las anteriores condiciones le anteponemos el operador NOT el resultado de la operación será el contrario al devuelto sin el operador NOT.
El último operador denominado Is se emplea para comparar dos variables de tipo objeto Is . este operador devuelve verdad si los dos objetos son iguales
SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50;
SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100;
SELECT * FROM Empleados WHERE NOT Estado = 'Soltero';
SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR Provincia = 'Madrid' AND Estado = 'Casado');
Intervalos de Valores
Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: campo [Not] Between valor1 And valor2 (la condición Not es opcional). En este caso la consulta devolvería los registros que contengan en "campo" un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condición Not devolverá aquellos valores no incluidos en el intervalo.
SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;
(Devuelve los pedidos realizados en la provincia de Madrid)
SELECT IIf(CodPostal Between 28000 And 28999, 'Provincial', 'Nacional') FROM Editores;
(Devuelve el valor 'Provincial' si el  HYPERLINK "http://www.monografias.com/trabajos12/eticaplic/eticaplic.shtml" código postal se encuentra en el intervalo, 'Nacional' en caso contrario)
El Operador Like
Se utiliza para comparar una expresión de cadena con un  HYPERLINK "http://www.monografias.com/trabajos/adolmodin/adolmodin.shtml" modelo en una expresión SQL. Su sintaxis es:
expresión Like  HYPERLINK "http://www.monografias.com/trabajos/adolmodin/adolmodin.shtml" modelo
En donde expresión es una cadena modelo o campo contra el que se compara expresión. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana María), o se pueden utilizar caracteres comodín como los reconocidos por el  HYPERLINK "http://www.monografias.com/Computacion/Sistemas_Operativos/" sistema operativo para encontrar un rango de valores (Like An*).
El operador Like se puede utilizar en una expresión para comparar un valor de un campo con una expresión de cadena. Por ejemplo, si introduce Like C* en una consulta SQL, la consulta devuelve todos los valores de campo que comiencen por la letra C. En una consulta con parámetros, puede hacer que el usuario escriba el modelo que se va a utilizar.
El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de cualquier letra entre A y F y de tres dígitos:
Like 'P[A-F]###'
Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a la D seguidas de cualquier cadena. Like '[A-D]*'
En la tabla siguiente se  HYPERLINK "http://www.monografias.com/trabajos11/tebas/tebas.shtml" muestra cómo utilizar el operador Like para comprobar expresiones con diferentes  HYPERLINK "http://www.monografias.com/trabajos/adolmodin/adolmodin.shtml" modelos.  
Tipo de coincidenciaModelo PlanteadoCoincideNo coincideVarios caracteres'a*a''aa', 'aBa', 'aBBBa''aBC'Carácter especial 'a[*]a''a*a''aaa'Varios caracteres'ab*''abcdefg', 'abc''cab', 'aab'Un solo carácter'a?a''aaa', 'a3a', 'aBa''aBBBa'Un solo dígito'a#a''a0a', 'a1a', 'a2a''aaa', 'a10a'Rango de caracteres'[a-z]''f', 'p', 'j''2', '&'Fuera de un rango'[!a-z]''9', '&', '%''b', 'a'Distinto de un dígito'[!0-9]''A', 'a', '&', '~''0', '1', '9'Combinada'a[!b-m]#''An9', 'az0', 'a99''abc', 'aj0' 
El Operador In
Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los en una lista. Su sintaxis es:
expresión [Not] In(valor1, valor2, . . .)
SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla');
La cláusula WHERE
La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Depués de escribir esta cláusula se deben especificar las condiciones expuestas en los partados 3.1 y 3.2. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM.
SELECT Apellidos,  HYPERLINK "http://www.monografias.com/trabajos11/salartp/salartp.shtml" Salario FROM Empleados WHERE  HYPERLINK "http://www.monografias.com/trabajos11/salartp/salartp.shtml" Salario > 21000;
SELECT Id_Producto, Existencias FROM  HYPERLINK "http://www.monografias.com/trabajos12/elproduc/elproduc.shtml" Productos WHERE Existencias 100 AND NombreProducto Like BOS*;
AVG Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente:
Avg(expr) En donde expr representa  el campo que contiene los datos numéricos para los que se desea calcular la media o una expresión que realiza un  HYPERLINK "http://www.monografias.com/trabajos7/caes/caes.shtml" cálculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmética (la suma de los valores dividido por el número de valores). La función Avg no incluye ningún campo Null en el  HYPERLINK "http://www.monografias.com/trabajos7/caes/caes.shtml" cálculo.
SELECT Avg( HYPERLINK "http://www.monografias.com/trabajos10/rega/rega.shtml" \l "ga" Gastos) AS Promedio FROM Pedidos WHERE  HYPERLINK "http://www.monografias.com/trabajos10/rega/rega.shtml" \l "ga" Gastos > 100; Count Calcula el número de registros devueltos por una consulta. Su sintaxis es la siguiente Count(expr) En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso  HYPERLINK "http://www.monografias.com/trabajos13/libapren/libapren.shtml" texto.
Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta el número de registros sin tener en cuenta qué valores se almacenan en los registros. La función Count no cuenta los registros que tienen campos null a menos que expr sea el  HYPERLINK "http://www.monografias.com/trabajos10/carso/carso.shtml" carácter comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente más rápida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*').
SELECT Count(*) AS Total  FROM Pedidos;
Si expr identifica a múltiples campos, la función Count cuenta un registro sólo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos con ampersand (&).
SELECT Count(FechaEnvío &  HYPERLINK "http://www.monografias.com/trabajos/transporte/transporte.shtml" Transporte) AS Total FROM Pedidos;
Max, Min
Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es: Min(expr), Max(expr), en donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL).
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = ' HYPERLINK "http://www.monografias.com/trabajos6/hies/hies.shtml" España';
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais  = ' HYPERLINK "http://www.monografias.com/trabajos6/hies/hies.shtml" España';
StDev, StDevP
Devuelve estimaciones de la desviación estándar para la  HYPERLINK "http://www.monografias.com/trabajos/explodemo/explodemo.shtml" población (el total de los registros de la tabla) o una muestra de la  HYPERLINK "http://www.monografias.com/trabajos/explodemo/explodemo.shtml" población representada (muestra aleatoria). Su sintaxis es: StDev(expr), StDevP(expr), en donde expr representa el nombre del campo que contiene los datos que desean evaluarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL) StDevP evalúa una población, y StDev evalúa una muestra de la población. Si la consulta contiene menos de dos registros (o ningún registro para StDevP), estas funciones devuelven un valor Null (el cual indica que la desviación estándar no puede calcularse).
SELECT StDev(Gastos) AS Desviacion FROM Pedidos WHERE Pais = 'España'; SELECT StDevP(Gastos) AS Desviacion FROM Pedidos WHERE Pais= 'España';
Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: Sum(expr)
En donde expr representa el nombre del campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;
Var, VarP
Devuelve una estimación de la varianza de una población (sobre el total de los registros) o una muestra de la población (muestra aleatoria de registros) sobre los valores de un campo. Su sintaxis es: Var(expr) VarP(expr) VarP evalúa una población, y Var evalúa una muestra de la población. Expr el nombre del campo que contiene los datos que desean evaluarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL)
Si la consulta contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la varianza no puede calcularse). Puede utilizar Var y VarP en una expresión de consulta o en una Instrucción SQL. SELECT Var(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'España'; SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'España';   Consultas de Acción
Las consultas de acción son aquellas que no devuelven ningún registro, son las encargadas de  HYPERLINK "http://www.monografias.com/trabajos4/acciones/acciones.shtml" acciones como añadir y borrar y modificar registros.
Delete Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algún campo en  HYPERLINK "http://www.monografias.com/trabajos/histoconcreto/histoconcreto.shtml" concreto. Su sintaxis es:
DELETE Tabla.* FROM Tabla WHERE criterio
DELETE es especialmente útil cuando se desea eliminar varios registros. En una instrucción DELETE con múltiples tablas, debe incluir el nombre de tabla (Tabla.*). Si especifica más de una tabla desde la que eliminar registros, todas deben ser tablas de muchos a uno. Si desea eliminar todos los registros de una tabla, eliminar la propia tabla es más eficiente que ejecutar una consulta de borrado. Se puede utilizar DELETE para eliminar registros de una única tabla o desde varios lados de una relación uno a muchos. Las  HYPERLINK "http://www.monografias.com/trabajos6/diop/diop.shtml" operaciones de eliminación en cascada en una consulta únicamente eliminan desde varios lados de una relación. Por ejemplo, en la relación entre las tablas Clientes y Pedidos, la tabla Pedidos es la parte de muchos por lo que las  HYPERLINK "http://www.monografias.com/trabajos6/diop/diop.shtml" operaciones en cascada solo afectaran a la tabla Pedidos. Una consulta de borrado elimina los registros completos, no únicamente los datos en campos específicos. Si desea eliminar valores en un campo especificado, crear una consulta de actualización que cambie los valores a Null.
Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la operación. Si desea saber qué registros se eliminarán, primero examine los resultados de una consulta de selección que utilice el mismo criterio y después ejecute la consulta de borrado. Mantenga copias de  HYPERLINK "http://www.monografias.com/trabajos/seguinfo/seguinfo.shtml" seguridad de sus datos en todo momento. Si elimina los registros equivocados podrá recuperarlos desde las copias de  HYPERLINK "http://www.monografias.com/trabajos/seguinfo/seguinfo.shtml" seguridad.
DELETE * FROM Empleados WHERE Cargo = 'Vendedor';
Insert Into
Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede ser de dos tipo: Insertar un único registro ó Insertar en una tabla los registros contenidos en otra tabla. Para insertar un único Registro:
En este caso la sintaxis es la siguiente:


INSERT INTO Tabla (campo1, campo2, .., campoN)
VALUES (valor1, valor2, ..., valorN)
Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y así sucesivamente. Hay que prestar especial  HYPERLINK "http://www.monografias.com/trabajos14/deficitsuperavit/deficitsuperavit.shtml" atención a acotar entre comillas simples (') los valores literales (cadenas de caracteres) y las fechas indicarlas en formato mm-dd-aa y entre caracteres de almohadillas (#).
Para insertar Registros de otra Tabla:
En este caso la sintaxis es:
INSERT INTO Tabla [IN base_externa] (campo1, campo2, ..., campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2, ..., TablaOrigen.campoN FROM TablaOrigen
En este caso se seleccionarán los campos 1,2, ..., n de la tabla origen y se grabarán en los campos 1,2,.., n de la Tabla. La condición SELECT puede incluir la cláusula WHERE para filtrar los registros a copiar. Si Tabla y TablaOrigen poseen la misma estructura podemos simplificar la sintaxis a: INSERT INTO Tabla  SELECT TablaOrigen.* FROM TablaOrigen
De esta forma los campos de TablaOrigen se grabarán en Tabla, para realizar esta operación es necesario que todos los campos de TablaOrigen estén contenidos con igual nombre en Tabla. Con otras palabras que Tabla posea todos los campos de TablaOrigen (igual nombre e igual tipo). En este tipo de consulta hay que tener especial atención con los campos contadores o autonuméricos puesto que al insertar un valor en un campo de este tipo se escribe el valor que contenga su campo homólogo en la tabla origen, no incrementándose como le corresponde. Se puede utilizar la instrucción INSERT INTO para agregar un registro único a una tabla, utilizando la sintaxis de la consulta de adición de registro único tal y como se mostró anteriormente. En este caso, su  HYPERLINK "http://www.monografias.com/trabajos12/eticaplic/eticaplic.shtml" código específica el nombre y el valor de cada campo del registro. Debe especificar cada uno de los campos del registro al que se le va a asignar un valor así como el valor para dicho campo. Cuando no se especifica dicho campo, se inserta el valor predeterminado o Null. Los registros se agregan al final de la tabla. También se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla o consulta utilizando la cláusula SELECT ... FROM como se mostró anteriormente en la sintaxis de la consulta de adición de múltiples registros. En este caso la cláusula SELECT especifica los campos que se van a agregar en la tabla destino especificada.
La tabla destino u origen puede especificar una tabla o una consulta. Si la tabla destino contiene una clave principal, hay que asegurarse que es única, y con valores no-Null ; si no es así, no se agregarán los registros. Si se agregan registros a una tabla con un campo Contador, no se debe incluir el campo Contador en la consulta. Se puede emplear la cláusula IN para agregar registros a una tabla en otra base de datos.
Se pueden averiguar los registros que se agregarán en la consulta ejecutando primero una consulta de selección que utilice el mismo criterio de selección y ver el resultado. Una consulta de adición copia los registros de una o más tablas en otra. Las tablas que contienen los registros que se van a agregar no se verán afectadas por la consulta de adición. En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la cláusula VALUES. Si se omite la lista de campos, la cláusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallará INSERT.
INSERT INTO Clientes SELECT Clientes_Viejos.* FROM Clientes_Nuevos; INSERT INTO Empleados (Nombre, Apellido, Cargo)
VALUES ('Luis', 'Sánchez', 'Becario');
INSERT INTO Empleados SELECT Vendedores.* FROM Vendedores WHERE Fecha_Contratacion < Now() - 30;
Update
Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada basándose en un criterio específico. Su sintaxis es:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN WHERE Criterio;
UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos se encuentran en múltiples tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los valores  HYPERLINK "http://www.monografias.com/trabajos/transporte/transporte.shtml" Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido:
UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03 WHERE PaisEnvío = 'ES';
UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de actualización.
UPDATE Empleados SET Grado = 5 WHERE Grado = 2;
UPDATE Productos SET  HYPERLINK "http://www.monografias.com/trabajos16/fijacion-precios/fijacion-precios.shtml" \l "ANTECED" Precio =  HYPERLINK "http://www.monografias.com/trabajos16/fijacion-precios/fijacion-precios.shtml" \l "ANTECED" Precio  * 1.1 WHERE Proveedor = 8 AND  HYPERLINK "http://www.monografias.com/trabajos5/fami/fami.shtml" Familia = 3;
Si en una consulta de actualización suprimimos la cláusula WHERE todos los registros de la tabla señalada serán actualizados.
UPDATE Empleados SET Salario = Salario * 1.1
  Tipos de Datos
Los  HYPERLINK "http://www.monografias.com/trabajos11/basdat/basdat.shtml" tipos de datos SQL se clasifican en 13  HYPERLINK "http://www.monografias.com/trabajos11/basdat/basdat.shtml" tipos de datos primarios y de varios sinónimos válidos reconocidos por dichos tipos de datos.
Tipos de datos primarios:
 
Tipo de DatosLongitudDescripciónBINARY1 bytePara consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario. BIT1 byteValores Si/No ó True/False BYTE1 byteUn valor entero entre 0 y 255.COUNTER4 bytesUn número incrementado automáticamente (de tipo Long)CURRENCY8 bytesUn entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807.DATETIME8 bytesUn valor de fecha u hora entre los años 100 y 9999.SINGLE4 bytesUn valor en punto flotante de precisión simple con un rango de -3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10-45 a 3.402823*1038 para valores positivos, y 0.DOUBLE8 bytesUn valor en punto flotante de doble precisión con un rango de -1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, y 0.SHORT2 bytesUn entero corto entre -32,768 y 32,767.LONG4 bytesUn entero largo entre -2,147,483,648 y 2,147,483,647.LONGTEXT1 byte por carácterDe cero a un máximo de 1.2 gigabytes.LONGBINARYSegún se necesiteDe cero 1 gigabyte.  Utilizado para objetos OLE.TEXT1 byte por carácterDe cero a 255 caracteres. 
La siguiente tabla recoge los sinonimos de los tipos de datos definidos:
 
Tipo de DatoSinónimosBINARYVARBINARYBITBOOLEAN  LOGICAL  LOGICAL1  YESNOBYTEINTEGER1COUNTERAUTOINCREMENTCURRENCYMONEYDATETIMEDATE  TIME  TIMESTAMPSINGLEFLOAT4  IEEESINGLE  REALDOUBLEFLOAT  FLOAT8  IEEEDOUBLE  NUMBER  NUMERICSHORTINTEGER2  SMALLINTLONGINT  INTEGER  INTEGER4LONGBINARYGENERAL  OLEOBJECTLONGTEXTLONGCHAR  MEMO  NOTETEXTALPHANUMERIC  CHAR  CHARACTER  STRING  VARCHARVARIANT (No Admitido)VALUE  SubConsultas
Una subconsulta es una instrucción SELECT anidada dentro de una instrucción SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta. Puede utilizar tres formas de sintaxis para crear una subconsulta:
comparación [ANY | ALL | SOME] (instrucción sql)
expresión [NOT] IN (instrucción sql)
[NOT] EXISTS (instrucción sql)
En donde:
comparación Es una expresión y un operador de comparación que compara la expresión con el resultado de la subconsulta.
expresión Es una expresión por la que se busca el conjunto resultante de la subconsulta. instrucción sql
Es una instrucción SELECT, que sigue el mismo formato y reglas que cualquier otra instrucción SELECT. Debe ir entre paréntesis. Se puede utilizar una subconsulta en lugar de una expresión en la lista de campos de una instrucción SELECT o en una cláusula WHERE o HAVING.
En una subconsulta, se utiliza una instrucción SELECT para proporcionar un conjunto de uno o más valores especificados para evaluar en la expresión de la cláusula WHERE o HAVING. Se puede utilizar el predicado ANY o SOME, los cuales son sinónimos, para recuperar registros de la consulta principal, que satisfagan la comparación con cualquier otro registro recuperado en la subconsulta. El ejemplo siguiente devuelve todos los productos cuyo precio unitario es mayor que el de cualquier  HYPERLINK "http://www.monografias.com/trabajos12/elproduc/elproduc.shtml" producto vendido con un descuento igual o mayor al 25 por ciento.:
SELECT * FROM Productos WHERE PrecioUnidad > ANY (SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 0 .25);
El predicado ALL se utiliza para recuperar únicamente aquellos registros de la consulta principal que satisfacen la comparación con todos los registros recuperados en la subconsulta. Si se cambia ANY por ALL en el ejemplo anterior, la consulta devolverá únicamente aquellos productos cuyo precio unitario sea mayor que el de todos los productos vendidos con un descuento igual o mayor al 25 por ciento. Esto es mucho más restrictivo.
El predicado IN se emplea para recuperar únicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual. El ejemplo siguiente devuelve todos los productos vendidos con un descuento igual o mayor al 25 por ciento.:
SELECT * FROM Productos WHERE IDProducto IN (SELECT IDProducto FROM DetallePedido WHERE Descuento >=  0.25);
Inversamente se puede utilizar NOT IN para recuperar únicamente aquellos registros de la consulta principal para los que no hay ningún registro de la subconsulta que contenga un valor igual. El predicado EXISTS (con la palabra reservada NOT opcional) se utiliza en comparaciones de verdad/falso para determinar si la subconsulta devuelve algún registro. Se puede utilizar también alias del nombre de la tabla en una subconsulta para referirse a tablas listadas en la cláusula FROM fuera de la subconsulta. El ejemplo siguiente devuelve los nombres de los empleados cuyo salario es igual o mayor que el salario medio de todos los empleados con el mismo título. A la tabla Empleados se le ha dado el alias T1::
SELECT Apellido, Nombre, Titulo, Salario FROM Empleados AS T1 WHERE Salario >= (SELECT Avg(Salario) FROM Empleados WHERE T1.Titulo = Empleados.Titulo) ORDER BY Titulo;
En el ejemplo anterior, la palabra reservada AS es opcional.
SELECT Apellidos, Nombre, Cargo, Salario FROM Empleados WHERE Cargo LIKE "Agente Ven*" AND Salario > ALL (SELECT Salario FROM Empleados WHERE (Cargo LIKE "*Jefe*") OR (Cargo LIKE "*Director*"));
Obtiene una lista con el nombre, cargo y salario de todos los agentes de  HYPERLINK "http://www.monografias.com/trabajos12/evintven/evintven.shtml" ventas cuyo salario es mayor que el de todos los jefes y directores.
SELECT DISTINCTROW NombreProducto, Precio_Unidad FROM Productos WHERE (Precio_Unidad = (SELECT Precio_Unidad FROM Productos WHERE Nombre_Producto = "Almíbar anisado");
Obtiene una lista con el nombre y el precio unitario de todos los productos con el mismo precio que el almíbar anisado.
SELECT DISTINCTROW Nombre_Contacto, Nombre_Compañia, Cargo_Contacto, Telefono FROM Clientes WHERE (ID_Cliente IN (SELECT DISTINCTROW ID_Cliente FROM Pedidos WHERE Fecha_Pedido >= #04/1/93# 150 ORDER BY Pedidos.Id_Producto;
Recupera el Código del  HYPERLINK "http://www.monografias.com/trabajos12/elproduc/elproduc.shtml" Producto y la Cantidad pedida de la tabla pedidos, extrayendo el nombre del producto de la tabla de productos.