Redes y comunicación
El campo de las redes y la comunicación incluye el análisis, diseño, implementación y uso de redes locales, de área extensa y móviles que conectan computadoras entre sí. Internet en sí es una red que hace posible que casi todas las computadoras del mundo se comuniquen.
Una red informática une ordenadores mediante una combinación de señales luminosas infrarrojas, transmisiones de ondas de radio, líneas telefónicas, cables de televisión y enlaces por satélite. El desafío para los científicos de la computación ha sido desarrollar protocolos (reglas estandarizadas para el formato y el intercambio de mensajes) que permitan que los procesos que se ejecutan en computadoras anfitrionas interpreten las señales que reciben y participen en “conversaciones” significativas para realizar tareas en nombre de los usuarios. Los protocolos de red también incluyen control de flujo, que evita que un remitente de datos inunde un receptor con mensajes que no tiene tiempo para procesar ni espacio para almacenar, y control de errores, que implica la detección de errores de transmisión y el reenvío automático de mensajes para corregir dichos errores. (Para algunos de los detalles técnicos de la detección y corrección de errores, consulte teoría de la información.)
La estandarización de protocolos es un esfuerzo internacional. Dado que de otra manera sería imposible que diferentes tipos de máquinas y sistemas operativos se comunicaran entre sí, la preocupación clave ha sido que los componentes del sistema (computadoras) estén “abiertos”.”Esta terminología proviene de los estándares de comunicación de interconexión de sistemas abiertos (OSI), establecidos por la Organización Internacional de Normalización. El modelo de referencia OSI especifica los estándares de protocolo de red en siete capas. Cada capa está definida por las funciones en las que se basa desde la capa inferior y por los servicios que proporciona a la capa superior.
En la parte inferior del protocolo se encuentra la capa física, que contiene reglas para el transporte de bits a través de un enlace físico. La capa de enlace de datos maneja “paquetes” de datos de tamaño estándar y agrega confiabilidad en forma de detección de errores y bits de control de flujo. Las capas de red y transporte dividen los mensajes en paquetes de tamaño estándar y los enrutan a sus destinos. La capa de sesión admite interacciones entre aplicaciones en dos máquinas que se comunican. Por ejemplo, proporciona un mecanismo para insertar puntos de control (guardando el estado actual de una tarea) en una transferencia de archivos larga para que, en caso de error, solo se deban retransmitir los datos posteriores al último punto de control. La capa de presentación se ocupa de las funciones que codifican datos, de modo que los sistemas heterogéneos puedan participar en una comunicación significativa. En el nivel más alto hay protocolos que admiten aplicaciones específicas. Un ejemplo de esta aplicación es el protocolo de transferencia de archivos (FTP), que rige la transferencia de archivos de un host a otro.
El desarrollo de redes y protocolos de comunicación también ha generado sistemas distribuidos, en los que los ordenadores conectados en una red comparten datos y tareas de procesamiento. Un sistema de base de datos distribuida, por ejemplo, tiene una base de datos extendida entre (o replicada en) diferentes sitios de red. Los datos se replican en “sitios espejo” y la replicación puede mejorar la disponibilidad y la fiabilidad. Un SGBD distribuido administra una base de datos cuyos componentes se distribuyen en varios equipos de una red.
Una red cliente-servidor es un sistema distribuido en el que la base de datos reside en un equipo (el servidor) y los usuarios se conectan a este equipo a través de la red desde sus propios equipos (los clientes). El servidor proporciona datos y responde a las solicitudes de cada cliente, mientras que cada cliente accede a los datos en el servidor de una manera independiente e ignorante de la presencia de otros clientes que acceden a la misma base de datos. Los sistemas Cliente-servidor requieren que las acciones individuales de varios clientes a la misma parte de la base de datos del servidor se sincronicen, de modo que los conflictos se resuelvan de manera razonable. Por ejemplo, las reservas de líneas aéreas se implementan utilizando un modelo cliente-servidor. El servidor contiene todos los datos sobre los próximos vuelos, como las reservas actuales y las asignaciones de asientos. Cada cliente desea acceder a estos datos con el fin de reservar un vuelo, obtener una asignación de asiento y pagar el vuelo. Durante este proceso, es probable que dos o más solicitudes de clientes quieran acceder al mismo vuelo y que solo quede un asiento asignado. El software debe sincronizar estas dos solicitudes para que el asiento restante se asigne de manera racional (generalmente a la persona que hizo la solicitud primero).
Otro tipo popular de sistema distribuido es la red peer-to-peer. A diferencia de las redes cliente-servidor, una red peer-to-peer asume que cada computadora (usuario) conectada a ella puede actuar tanto como cliente como servidor; por lo tanto, todos en la red son pares. Esta estrategia tiene sentido para grupos que comparten colecciones de audio en Internet y para organizar redes sociales como LinkedIn y Facebook. Cada persona conectada a una red de este tipo recibe información de otros y comparte su propia información con otros.