Redes
Redes
Redes
P2P
Introducción:
Este modelo difiere del tradicional cliente-servidor de Internet, donde
los roles están claramente diferenciados. En una red P2P, todos los
nodos son iguales, aunque pueden variar en configuración, capacidad
de procesamiento, ancho de banda y almacenamiento.
Elementos de las redes P2P:
En las redes P2P, el elemento fundamental es el "par" o "igual", que
es la unidad básica de procesamiento y comunicación. Existen dos
tipos de pares:
Pares simples: Son utilizados por un único usuario final, permiten
acceder a servicios de otros pares y ofrecen servicios desde su
dispositivo. Son dinámicos y heterogéneos, conectándose de manera
intermitente y con capacidades variadas.
Superpares: Ayudan a los pares simples a localizar otros pares o
recursos en la red, facilitando la búsqueda. Son estáticos,
normalmente siempre conectados y fácilmente accesibles.
Además, existen grupos de pares, formados para un objetivo
común, que permiten ofrecer servicios exclusivos a sus miembros. Los
servicios en una red P2P se pueden clasificar en:
Servicios de pares: Ofrecidos por un solo par, si este se desconecta,
el servicio se pierde.
Servicios de grupo de pares: Proporcionados por varios miembros
de un grupo, ofreciendo redundancia. Si un par del grupo falla, el
servicio sigue disponible.
Arquitectura de las redes P2P:
Modelo Híbrido o Centralizado (Primera generación - Napster):
En este modelo, la red tiene un servidor central que mantiene una
base de datos con la información de los archivos disponibles. Este
enfoque ofrece un alto rendimiento en la localización de recursos,
pero es costoso debido a la dependencia del servidor central.
Modelo P2P Puro o Descentralizado (Segunda generación -
Gnutella):
En este modelo no existe un servidor central. Todos los nodos actúan
como clientes y servidores a la vez. Los nodos se conectan entre sí, y
cada uno distribuye las peticiones y respuestas por la red. Aunque es
más robusto y económico, presenta problemas de sobrecarga y mayor
tiempo en las búsquedas.
Modelo P2P Mixto o Semicentralizado (Tercera generación):
En este modelo, ciertos nodos se convierten en superpares, ayudando
a gestionar el tráfico y a dirigir las solicitudes a otros pares.
Comunicación en las redes P2P:
En las redes P2P, es crucial poder identificar correctamente a los pares, grupos de pares
y contenidos. Tradicionalmente, algunos sistemas P2P utilizaban identificadores
basados en detalles específicos de los protocolos de transporte, como la dirección IP y el
puerto de un par.
Búsqueda de pares, contenidos y servicios en redes P2P:
Un buen sistema de búsqueda debe ser flexible, eficiente, tolerante a fallos, y capaz de
manejar escalabilidad, dinamismo y heterogeneidad. La búsqueda se realiza en tres
niveles:
Búsqueda en caché (Sin descubrimiento): Cada par mantiene una caché con recursos
previamente encontrados, lo que reduce el tráfico en la red. Las entradas caducan
después de un tiempo.
Búsqueda directa: Si la información no está en la caché, el par pregunta a otros pares
conectados directamente, utilizando métodos de broadcast o multicast.
Búsqueda indirecta: En redes semidescentralizadas o mixtas, los superpares actúan
como fuentes de información, realizando las búsquedas en nombre de los pares.
Tablas Hash Distribuidas (DHT) y Características de las Redes P2P:
Son fundamentales en redes P2P, mejorando la descentralización y escalabilidad al
reemplazar las topologías caóticas de redes anteriores. Una DHT realiza funciones
típicas de una tabla hash, permitiendo almacenar y buscar valores mediante claves
distribuidas entre múltiples nodos en la red.
Funcionamiento básico:
Cada clave se convierte en un identificador de k bits mediante una función hash.
Se busca el nodo responsable de almacenar esa clave (su sucesor en el anillo).
Optimización de búsquedas:
Inicialmente, la búsqueda entre nodos se realiza de forma secuencial.
Para mejorar la eficiencia, los nodos mantienen una tabla de punteros a otros nodos, y se
emplea un algoritmo para optimizar la búsqueda.
Mejoras y versiones:
Chord DHT es una de las implementaciones clásicas, usando el principio de "anillo de
nodos" para determinar la ubicación de claves.
Kademlia DHT mejora la tabla de punteros, añadiendo varias referencias y
favoreciendo nodos con mayor tiempo de conexión.
Características y Beneficios de las Redes P2P:
Descentralización: No depende de un servidor central, lo que reduce cuellos de botella
y mejora la resistencia a fallos.
Escalabilidad: La arquitectura de red permite expandirse sin perder rendimiento.
Anonimato: Se pueden mantener comunicaciones privadas entre nodos.
Propiedad compartida: Los recursos son distribuidos y gestionados por los nodos.
Rendimiento: Alta eficiencia en la transferencia de datos.
Seguridad: La descentralización contribuye a mayor seguridad y control distribuido.
Tolerancia a fallos: Los nodos pueden unirse y abandonar la red sin afectar su
funcionamiento.
Interoperabilidad: Facilidad de integración con diferentes sistemas y protocolos.
----------------------------------------------------------------------------------------------------------
HTTP
Breve historia del protocolo HTTP.
El Protocolo de Transferencia de Hipertexto (HTTP) es la base de la comunicación
en la web.
1. Orígenes (1990-1991)
Creación de HTTP: HTTP se diseñó como una manera de permitir la comunicación
entre los navegadores web (cliente) y los servidores web.
Resumen de la evolución del protocolo HTTP:
HTTP/0.9 (1991): Primera versión, solo para obtener contenido estático, sin cabeceras.
HTTP/1.0 (1996): Introducción de cabeceras HTTP y más métodos de solicitud.
HTTP/1.1 (1997): Conexiones persistentes, mayor control sobre las solicitudes y
respuestas.
HTTP/2 (2015): Multiplexación, compresión de cabeceras, mejoras en la eficiencia.
HTTP/3 (2020): Basado en QUIC, mejora la latencia y el rendimiento mediante UDP.
Importancia del HTTP en las tecnologías de la información y comunicación.
El Protocolo de Transferencia de Hipertexto (HTTP) es fundamental para las
tecnologías de la información y comunicación (TIC) por diversas razones.
1. Base de la World Wide Web (WWW)
HTTP es el protocolo que permite la transferencia de información en la web, y sin
él no existiría la interacción entre navegadores y servidores.
2. Facilitador de la comunicación cliente-servidor
HTTP establece una comunicación eficiente entre los clientes (como los navegadores
web) y los servidores web, en la que los clientes realizan solicitudes para obtener
recursos específicos, y los servidores responden con esos recursos.
3. Acceso a servicios en la nube y APIs
Las aplicaciones modernas dependen de servicios web que utilizan HTTP para enviar y
recibir datos entre aplicaciones y servidores.
4. Escalabilidad y desempeño en la web
La evolución de HTTP, especialmente con HTTP/2 y HTTP/3, ha permitido que la
web sea más escalable y rápida.
5. Seguridad en la web (HTTPS)
Con el creciente número de ataques cibernéticos y problemas de privacidad, HTTPS
asegura que los datos transmitidos entre el navegador y el servidor estén encriptados.
6. Interoperabilidad entre plataformas y dispositivos
HTTP es un protocolo ampliamente aceptado y utilizado por diversas plataformas y
dispositivos. Su capacidad para operar en diferentes redes y dispositivos lo hace
esencial para la interoperabilidad.
7. Comercio electrónico y transacciones en línea
HTTP, combinado con la seguridad de HTTPS, es crucial para el comercio electrónico.
Desde la compra de productos hasta la realización de pagos, las transacciones que
ocurren en la web están basadas en este protocolo.
8. Desarrollo de aplicaciones web modernas
HTTP es esencial para el desarrollo de aplicaciones web interactivas y dinámicas.
9. Soporte de la transmisión de multimedia
El protocolo HTTP también juega un papel clave en la transmisión de contenido
multimedia en la web. Servicios como el streaming de videos y música dependen de
HTTP para la entrega de contenido multimedia.
10. Establecimiento de una infraestructura global de información
HTTP facilita la distribución y acceso global de información. Su arquitectura basada
en solicitudes y respuestas permite que los recursos estén disponibles a través de una
infraestructura global.
HTTP es esencial para el funcionamiento y crecimiento de las tecnologías de la
información y la comunicación. Gracias a su capacidad para facilitar la interacción
entre clientes y servidores, el acceso a servicios web, la seguridad en las
transacciones y la eficiencia en la transmisión de datos.
Descripción de la arquitectura cliente-servidor.
Es un modelo de diseño de software que organiza las aplicaciones y
servicios en dos componentes principales: clientes y servidores.
Este modelo es fundamental en el desarrollo de sistemas distribuidos.
Componentes principales de la arquitectura cliente-servidor
Cliente: El cliente es el actor solicitante en la arquitectura. Es una
máquina o aplicación que inicia una solicitud de servicio o recurso.
Los clientes son dispositivos o programas que consumen servicios
proporcionados por los servidores.
Los clientes no tienen la capacidad de almacenar o procesar grandes
cantidades de datos por sí mismos, sino que dependen de los
servidores para proporcionarles información o servicios.
Servidor: El servidor es el actor proveedor de los recursos o
servicios. Es una máquina o software que responde a las
solicitudes del cliente.
Los servidores son responsables de gestionar y almacenar los datos
o servicios solicitados por los clientes.
Los servidores están permanentemente disponibles y operan para
procesar las solicitudes de los clientes, proporcionando la
información solicitada de manera eficiente.
Principio de funcionamiento
Solicitud: Un cliente envía una solicitud al servidor para acceder a
un servicio o recurso específico.
Procesamiento de la solicitud: El servidor recibe la solicitud,
procesa la información y decide la respuesta adecuada.
Respuesta: Una vez que el servidor ha procesado la solicitud, envía
una respuesta al cliente.
Características clave de la arquitectura cliente-servidor
Descentralización de responsabilidades: El cliente se encarga de
la interfaz de usuario y la interacción con el usuario final,
mientras que el servidor maneja el procesamiento de datos y la
gestión de recursos.
Comunicación mediante redes: La comunicación entre clientes y
servidores se realiza generalmente a través de una red de
computadoras.
Independencia de plataformas: Los clientes y servidores pueden
estar en plataformas diferentes, es decir, pueden utilizar
sistemas operativos distintos.
Escalabilidad: La arquitectura cliente-servidor es escalable, ya que
permite agregar más clientes y servidores sin necesidad de rediseñar
todo el sistema.
Seguridad: En autenticación de clientes, cifrado de la
comunicación (como el uso de HTTPS) y el control de acceso a los
recursos del servidor.
Centralización de recursos: Los servidores actúan como el punto
centralizado donde se almacenan los datos y recursos. Esto facilita
la gestión, el mantenimiento y la actualización de la
información.
Tipos de arquitectura cliente-servidor
Cliente-Servidor de 2 capas: El cliente envía solicitudes al
servidor, y el servidor procesa los datos y devuelve la respuesta. Los
clientes generalmente interactúan directamente con la base de datos
en el servidor.
Cliente-Servidor de 3 capas: Aquí, hay una capa intermedia entre
el cliente y el servidor llamada capa de negocio o lógica de
aplicación, que maneja la lógica de negocio antes de interactuar con
el servidor de datos.
Cliente-Servidor de n capas: Este modelo permite una gran
modularidad y mantenibilidad.
Ventajas de la arquitectura cliente-servidor
Centralización de la administración de datos: Es más fácil
administrar, respaldar y asegurar los datos.
Escalabilidad: Se pueden agregar más servidores para manejar una
mayor carga de trabajo sin afectar la funcionalidad del sistema.
Mejor control y seguridad: El servidor puede imponer reglas
estrictas de acceso y control.
Mantenimiento eficiente: El mantenimiento se simplifica.
Desventajas de la arquitectura cliente-servidor
Dependencia del servidor: Si el servidor falla o se vuelve
inaccesible, los clientes no podrán acceder a los recursos, lo que
puede causar interrupciones.
Sobrecarga en el servidor: A medida que el número de clientes
aumenta, el servidor puede volverse un cuello de botella.
Costos de infraestructura: La implementación de una
infraestructura de servidores robustos puede ser costosa.
Diferencias entre HTTP y HTTPS:
Seguridad:
HTTP es un protocolo no seguro, lo que significa que los datos
enviados entre el cliente y el servidor no están cifrados y pueden ser
interceptados.
HTTPS utiliza cifrado SSL/TLS para proteger la transmisión de datos.
Puerto:
HTTP usa el puerto 80 por defecto.
HTTPS usa el puerto 443.
Certificados:
HTTP no requiere ningún tipo de certificado.
HTTPS requiere un certificado SSL/TLS
Rendimiento:
HTTP tiene un rendimiento ligeramente más rápido ya que no realiza
cifrado.
HTTPS puede ser más lento debido al proceso de cifrado y
descifrado.
Uso:
HTTP es utilizado principalmente en sitios web sin transacciones o en
aquellos donde la seguridad no es crítica.
HTTPS es fundamental en sitios que manejan información sensible.
HTTPS es más seguro que HTTP gracias al cifrado y la autenticación,
lo que lo hace esencial para la protección de datos en línea.
Detalle de los métodos HTTP (GET, POST, PUT, DELETE, etc.).
Los métodos HTTP son los comandos que se utilizan para realizar
diversas operaciones en los recursos de un servidor a través de la
comunicación cliente-servidor.
GET
Propósito: Solicitar un recurso o información de un servidor.
Descripción: El método GET se utiliza para obtener información de
un servidor sin modificar el recurso. Generalmente se utiliza para
cargar una página web o recuperar datos.
Características:
Seguro: No realiza cambios en el servidor.
POST
Propósito: Enviar datos al servidor para crear un nuevo recurso.
Descripción: El método POST se utiliza para enviar datos al
servidor, como en la creación de una nueva entrada o recurso, como
un formulario de contacto.
Características:
No seguro: Modifica el estado del servidor.
No idempotente: Las solicitudes POST repetidas pueden generar
resultados diferentes.
Cuerpo en la solicitud: Los datos enviados están en el cuerpo de la
solicitud.
PUT
Propósito: Reemplazar un recurso existente en el servidor.
Descripción: El método PUT se utiliza para actualizar un recurso
existente en el servidor.
Características:
Cuerpo en la solicitud: Los datos del recurso actualizado van en el
cuerpo de la solicitud.
DELETE
Propósito: Eliminar un recurso en el servidor.
Descripción: se utiliza para eliminar un recurso específico del
servidor.
HEAD
Propósito: Solicitar solo los encabezados de una respuesta, sin el
cuerpo del recurso.
Descripción: El método HEAD es similar al GET.
Seguro: No altera el estado del servidor.
OPTIONS
Propósito: Obtener información sobre los métodos HTTP soportados
por el servidor para un recurso específico.
Descripción: El método OPTIONS se utiliza para descubrir qué
métodos HTTP están habilitados para un recurso específico en el
servidor.
Seguro: No modifica el estado del servidor.
PATCH
Propósito: Aplicar una modificación parcial a un recurso.
Descripción: El método PATCH se utiliza para realizar modificaciones
parciales en un recurso existente
TRACE
Propósito: Realizar una traza de los pasos tomados por el servidor al
recibir la solicitud.
Descripción: El método TRACE permite a los clientes ver lo que
recibe el servidor, útil para depurar y diagnosticar problemas de red.
Características: No se utiliza comúnmente en aplicaciones
web debido a posibles riesgos de seguridad.
Seguro: No modifica el estado del servidor.
CONNECT
Propósito: Establecer un túnel de red, como el utilizado en
conexiones seguras a través de HTTPS.
Descripción: El método CONNECT se utiliza para establecer una
conexión de red que permita a un cliente acceder a recursos a través
de un servidor intermediario.
Características:
No seguro: Depende del contexto (generalmente usado en proxies).
Casos prácticos de uso de cada método en
aplicaciones web.
GET
Caso práctico: Cargar una página web
Descripción: El método GET se utiliza para solicitar recursos
estáticos
POST
Caso práctico: Enviar un formulario de contacto
Descripción: El método POST se utiliza para enviar datos al servidor
para que sean procesados, como en el caso de un formulario de
contacto.
PUT
Caso práctico: Actualizar información de perfil de usuario
Descripción: El método PUT se utiliza para actualizar un recurso
existente, como cuando un usuario modifica su información personal.
DELETE
Caso práctico: Eliminar una publicación en un blog
Descripción: El método DELETE se utiliza para eliminar un recurso
específico del servidor.
HEAD
Caso práctico: Comprobar la disponibilidad de un archivo sin
descargarlo
Descripción: El método HEAD se utiliza cuando se quiere obtener los
encabezados de respuesta de un recurso sin tener que descargar el
cuerpo del archivo.
OPTIONS
Caso práctico: Verificar los métodos HTTP soportados por un
servidor
Descripción: El método OPTIONS se utiliza para descubrir qué
métodos HTTP son soportados por un servidor para un recurso
específico. Esto es útil para verificar la compatibilidad y las
capacidades de un servidor o recurso.
PATCH
Caso práctico: Actualizar parcialmente un recurso (por
ejemplo, la dirección de correo electrónico)
Descripción: El método PATCH se utiliza para realizar
actualizaciones parciales a un recurso existente. PATCH permite
modificar solo algunos campos del recurso.
TRACE
Caso práctico: Diagnóstico de red para depuración
Descripción: El método TRACE se utiliza para realizar una traza de
la solicitud, devolviendo exactamente lo que fue recibido por el
servidor. Aunque rara vez se utiliza en aplicaciones web, puede ser
útil para fines de depuración, especialmente cuando se analizan
problemas de red.
CONNECT
Caso práctico: Establecer una conexión segura mediante
HTTPS
Descripción: El método CONNECT se utiliza en proxies para
establecer un túnel de comunicación entre el cliente y el servidor. Es
comúnmente utilizado para conexiones seguras, como cuando se
utiliza HTTPS a través de un proxy.
Exploración de cómo HTTP transmite datos
(encabezados, cuerpo del mensaje, etc.).
El protocolo HTTP (HyperText Transfer Protocol) es el principal
medio para la transmisión de datos entre el cliente (normalmente un
navegador web) y el servidor en la web. HTTP define cómo se
estructuran y envían las solicitudes y respuestas, y se basa en un
modelo de texto plano que se comunica a través de un formato de
mensaje dividido en encabezados y cuerpo del mensaje.
Aislamiento:
Una capa de material aislante que rodea el conductor central,
generalmente hecha de plástico o polietileno.
Blindaje (malla metálica o lámina):
Una capa de material conductor, generalmente aluminio o cobre
trenzado, que rodea el aislamiento. Su función es proteger la señal
contra interferencias electromagnéticas (EMI) externas y también
evita que la señal se escape del cable.
Capa exterior de aislamiento:
Una capa final de plástico o PVC, que protege al cable de daños
físicos y sirve como aislamiento adicional para evitar cortocircuitos o
interferencias externas.
¿Qué ventajas tiene el cable coaxial sobre los pares trenzados
sin blindaje?
Mayor resistencia a interferencias:
El blindaje del cable coaxial ayuda a proteger la señal de
interferencias electromagnéticas (EMI) externas, mientras que los
cables UTP no tienen protección contra este tipo de interferencias, lo
que puede afectar la calidad de la señal.
Mejor capacidad de transmisión a largas distancias :
El cable coaxial es más eficiente para transmitir señales a mayores
distancias sin que se degrade tanto como el UTP.
Mayor ancho de banda:
El coaxial puede manejar mayor ancho de banda que los cables
UTP, lo que lo hace más adecuado para transmitir grandes cantidades
de datos a alta velocidad.
Menor probabilidad de crosstalk (interferencias entre cables):
Debido a su estructura de blindaje, el cable coaxial presenta menor
riesgo de crosstalk.
Durabilidad y protección física:
El blindaje del cable coaxial también lo hace más resistente a daños
físicos y condiciones ambientales adversas.
¿Cuáles son los dos tipos de cable coaxial y en qué se
diferencian?
Coaxial de tipo rígido (RG-6):
Descripción: Este tipo de cable tiene un núcleo sólido, lo que lo hace
menos flexible pero más adecuado para instalaciones fijas.
Características:
Mayor capacidad de transmisión. Mejor protección contra
interferencias.
Más adecuado para distancias largas debido a su mayor capacidad de
señal.
Coaxial de tipo flexible (RG-59):
Descripción: Este tipo de cable es más flexible y tiene un núcleo
trenzado, lo que facilita su instalación en espacios pequeños o cuando
se necesita movimiento.
Características:
Más flexible y fácil de manejar. Mejor para distancias cortas o
conexiones en equipos de consumo como televisores o cámaras de
seguridad.
Menor capacidad de transmisión y mayor pérdida de señal a largas
distancias en comparación con el RG-6.