Powered By Blogger

miércoles, 3 de agosto de 2011

Redes Informaticas

 La teoría de las redes informáticas no es algo reciente. 
La necesidad de compartir recursos e intercambiar información fue una inquietud permanente desde los primeros tiempos de la informática. Los comienzos de las redes de datos se remontan a los años ’60 ,  en los cuales perseguían exclusivamente fines militares o de defensa.
Paulatinamente se fueron adoptando para fines comerciales.
Obviamente en esa época no existían las PCs , por lo cual los entornos de trabajo resultaban centralizados y lo común para cualquier red era que el procesamiento quedara delegado a una única computadora central o mainframe Los usuarios accedieran a la misma mediante terminales “bobas” consistentes en sólo un monitor y un teclado.
Los tiempos han cambiado y ya prácticamente todos los usuarios acceden a los recursos desde PCs. Sin embargo, la teoría, los principios básicos, los protocolos han mantenido vigencia y si bien es cierto, se va produciendo obsolecencia de parte de ellos, es muy conveniente partir de los principios y de la teoría básica.     Resulta dificultoso comprender las redes actuales si no se conocen los fundamentos de la teoría de redes.        
En nuestro estudio partiremos de X.25; un sistema tardicional, que trabaja sobre redes analógicas, es decir líneas telefónicas dedicadas. Hoy en día tiene pocas aplicaciones, como ser cajeros automáticos, validación de tarjetas de crédito, etc;  pero su robustez, seguridad y confiabilidad han hecho mantenerlo como un estándar para las redes públicas y privadas durante una gran cantidad de años. Además sus principios, su teoría de funcionamiento aporta conceptos sumamente importantes que nos ayudarán a comprender los siguientes.
Frame Relay es una mejora de X.25 . Se trata de un sistema mucho más simple y eficiente, el cual tiene plena vigencia hoy en día en redes de área amplia. Trabaja sobre enlaces digitales generalmente punto a punto.
Posteriormente veremos las tecnologías LAN y por último culminaremos con el de mayor auge en nuestros días, base indispensable del funcionamiento de Internet: TCP/IP.  


 

 CONCEPTOS BÁSICOS ASOCIADOS A REDES

  • RED : Una RED es un conjunto de computadoras o terminales conectados mediante una o más vías de transmisión y con determinadas reglas para comunicarse.
  • HOST : Aunque en general este término suele relacionarse con Servidores, en un sentido amplio llamaremos HOST a cualquier equipo que se conecta a una red.
  • PROTOCOLO: Conjunto de comandos establecido por convención que deben conocer tanto emisor como receptor para poder establecer una comunicación en un red de datos. Constituyen el software de la red.
  • DTE: Data Terminal Equipement es el equipo terminal de datos, la computadora o terminal que es el extremo final de la red.
  • DCE: Data Communication Equipement es el equipo de comunicación. Generalmente un modem u algún otro dispositivo que establece el enlace físico y lógico con la red. 
  • INTERNET: aunque todos sabemos lo que es Internet, aquí lo utilizaremos también en otro sentido. Una Internet es un conjunto de dos o más redes que se interconectan mediante los medios adecuados.
  
Redes orientadas a la conexión vs. no orientadas a la conexión

Se dice que una red es Orientada a la Conexión cuando se establece un único camino para la transferencia de la información. Los datos viajarán uno tras otro por dicho camino.  No hay más de un camino simultáneamente.
 Requieren obligatoriamente de 3 fases:
  • Establecimiento
  • Transferencia
  • Desconexión
Son el caso de X.25 , Frame Relay, ATM y TCP.      
Las redes No Orientadas a la Conexión (connectionless) no utilizan un único camino, sino que los datos se fraccionan y toman por distintas vías simultáneamente para llegar a destino. Se la conoce también como Servicio de Datagramas y los casos típicos son IP y UDP.
  

 Circuitos Virtuales Conmutados vs. Circuitos Virtuales Permanentes

   

Las redes Orientadas a la Conexión pueden constituir 2 tipos de circuitos o caminos para establecer la comunicación:
  • Circuitos Virtuales Conmutados (SVC´s) establecen un camino de comunicación a través de la red que no es siempre el mismo. La conexión se establece por un camino al necesitar intercambiar datos y se libera al finalizar. Al establecerse una nueva conexión el camino a través de la red puede ser diferente. X.25 trabaja de esta forma.
  • Circuitos Virtuales Permanentes (PVC´s) son similares a una línea punto a punto , están siempre fijos y no alternan entre caminos diferentes. La conexión se establece por única vez por un único medio físico al contratar el servicio y se mantiene inalterable hasta la baja del mismo. Frame Relay suele trabajar de esta forma aunque soporta también conmutados.
    
Conmutación de Circuitos vs Conmutación de paquetes

Las redes pueden conmutar circuitos , como es el caso de la red telefónica o conmutar paquetes, que son una subdivisión lógica de la información.
Casi todas las tecnologías actuales : X.25 , Frame Relay , ATM , TCP/IP son de conmutación de paquetes.
   

 



Clasificación por área de cobertura
  
El universo de las redes , puede clasificarse según la extensión que abarcan.
Cada uno de los tipos requiere de tecnologías y topologías específicas.
Se distinguen en general 3 categorías:
  • REDES LAN o Local Area Networks: Son las que no exceden 1 km de extensión. Lo más habitual es que abarquen un edificio o varios dentro de una manzana o un área limitada
  • REDES MAN  o Metropolitan Area NetworkHasta 10 Km, es decir , distintos puntos dentro de una misma ciudad.
  • REDES WAN  o Wide Area NetworksMás de 10 Km.  Distintas ciudades dentro de un mismo país o distintos países. 

Clasificación por método de comunicación

Las redes pueden utilizar dos métodos de comunicación que las diferencia en: 
  • REDES DE BROADCAST:  todas las máquinas comparten un único medio de transmisión . Es decir que cuando un de ellas transmita , todas recibirán la información y solamente aquella a ala cual va dirijida la utilizará.
  • REDES PUNTO A PUNTO:  existen conexiones individuales entre pares de máquinas.
   

Importancia de las Telecomunicaciones en nuestras vidas

 Aunque las telecomunicaciones en nuestros días son de vital importancia debido a que por medio de estas podemos transmitir información a lugares lejanos en fracciones de minutos, no toda la población mundial goza de este beneficio solo él entre el 20% y el 25% según las estimaciones de la Unión Internacional de Telecomunicaciones, si bien hoy muchos de nosotros sabemos usar estos servicios, y lo vemos relativamente fácil de usar ya es algo cotidiano para nosotros, hay que recordar que cuando nosotros empezamos a utilizarlos por primera vez se nos tornó difícil de usar, atraves del tiempo de estar practicando y las enseñanzas que nos dieron, ahora lo manejamos con facilidad.

  Es tan grande e importante las telecomunicaciones en nuestros días que la Unión Internacional de Telecomunicaciones (organismo dependiente de la ONU) que declaro el 17 de Mayo como el Día Mundial de las Telecomunicaciones. Gracias a la digitalización y al internet que se incorporaron a las telecomunicaciones se creó una disciplina conocida como Telemática en donde la parte fundamental de esta disciplina son las Redes y Movilidad.

Tipos de Programacion


Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo. 

Programación estructurada (PE) 

La programación estructurada esta compuesta por un conjunto de técnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo.

Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.

Esta técnica incorpora:
  • Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas.
  • Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.
  • Estructuras básicas: existen tres tipos de estructuras básicas:
    • Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.
    • Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.
    • Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.

Las principales ventajas de la programación estructurada son:
  • Los programas son mas fáciles de entender
  • Se reduce la complejidad de las pruebas
  • Aumenta la productividad del programador
  • Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.

Programación modular

En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad.

En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.
A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.

Programación orientada a objetos (POO)

Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos.

El elemento principal de la programación orientada a objetos es el objeto.
El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.
Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.

El polimorfismo y la herencia son unas de sus principales características y por ello dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos.

En DesarrolloWeb.com hemos publicado anteriormente una explicación de lo que es la programación orientada a objetos.

Programación concurrente 

Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.
Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea.
Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones.

Programación funcional 

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones.

Programación lógica 

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).

Que es un Compilador o Interprete?


Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje eslenguaje de máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.1
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable       por una computadora.
Diferencia entre un interprete y compilador
INTERPRETE: Es un programa que lee línea a línea un programa escrito en un lenguaje; en lenguaje fuente y lo va traduciendo a un código intermedio, para ejecutarlo.
COMPILADOR: Es un programa que lee totalmente un programa escrito en un lenguaje; el lenguaje fuente, y lo traduce a un programa equivalente a otro lenguaje, lenguaje objeto.
A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.





pseudocódigo

El pseudocódigo (o falso lenguaje) es utilizado por programadores para describir algoritmos en un lenguaje humano simplificado que no es dependiente de ningún lenguaje de programación. Por este motivo puede ser implementado en cualquiera lenguaje por cualquier programador que utilice el pseudocódigo.



Características y partes

Las principales características de este lenguaje son:
  1. Se puede ejecutar en un ordenador
  2. Es una forma de representación sencilla de utilizar y de manipular.
  3. Facilita el paso del programa al lenguaje de programación.
  4. Es independiente del lenguaje de programación que se vaya a utilizar.
  5. Es un método que facilita la programación y solución al algoritmo del programa.
Todo documento en pseudocódigo debe permitir la descripción de:
  1. Instrucciones primitivas.
  2. Instrucciones de proceso.
  3. Instrucciones de control.
  4. Instrucciones compuestas.
  5. Instrucciones de descripción.
Estructura a seguir en su realización:
  1. Cabecera.
    1. Programa.
    2. Modulo.
    3. Tipos de datos.
    4. Constantes.
    5. Variables.
  2. Cuerpo.
    1. Inicio.
    2. Instrucciones.
    3. Fin.


Definición de datos del pseudocódigo

La definición de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.


Funciones y operaciones

Cada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reemplace el valor de la variable x por el valor de la variable y" puede ser representado como:
  • asigne a x\, el valor de y\,



   { \color{Green} \mathit{ x }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   { \color{Green} \mathit{ y }}

   { \color{Green} \mathit{ x }} \;
   { \color{Blue}  \mathit{ := }} \;
   { \color{Green} \mathit{ y }}

   { \color{Green} \mathit{ x }} \;
   { \color{Blue}  \mathit{ = }} \;
   { \color{Green} \mathit{ y }}
Las operaciones aritméticas se representan de la forma usual en matemáticas.



   { \color{Gray}  \mathit{ \{ Esto \; es \; un \; comentario \; normalmente \; matem \acute{a} tico \} }}

   { \color{Green} \mathit{ volumen }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   { \color{Plum}  \mathit{ \pi }}
   { \color{Green} \mathit{ r }} {}^2
   { \color{Green} \mathit{ h }}

   { \color{Gray}  \mathit{ // y \; este \; es \; otro \; comentario \; normalmente \; de \; texto // }}

   { \color{Green} \mathit{ hipotenusa }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   \sqrt{
      { \color{Green} \mathit{ a }} {}^2 \;
      { \color{Blue}  \mathit{ + }} \;
      { \color{Green} \mathit{ b }} {}^2 \;
   }

   { \color{Green} \mathit{ resultado }} \;
   { \color{Blue}  \mathit{ \gets }} \;
   { \color{Tan}   \mathit{ sin }}
   (
      { \color{Green} \mathit{ a }}
   )