Tecnologías Fundamentales en Redes, APIs y Desarrollo Web Moderno

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 12,49 KB

Conceptos Fundamentales de API REST

Una API REST (Representational State Transfer) es un estilo arquitectónico para sistemas distribuidos. Se basa en el uso de métodos HTTP estándar, URIs para identificar recursos y un formato de datos ligero como JSON.

Métodos HTTP en API REST

  • GET: Se utiliza para leer o recuperar recursos.
  • POST: Se emplea para crear nuevos recursos.
  • PUT: Sirve para modificar o actualizar recursos existentes.
  • DELETE: Permite eliminar recursos.

URIs y Semántica

Las URIs (Uniform Resource Identifiers) deben indicar los recursos de manera clara y tener un significado semántico. Por ejemplo: /clientes/1/facturas.

Codificación de Datos con JSON

JSON (JavaScript Object Notation) es un formato de texto ligero y legible por humanos, ideal para el intercambio de datos. Ejemplo: {"nombre": "Ana", "edad": 25, "activo": true}

Query String: Formato y Aplicaciones

La Query String es una parte de la URL que permite enviar datos adicionales al servidor. Su formato en la URL es: ?clave1=valor1&clave2=valor2.

Usos principales:

  • Enviar datos con el método GET en solicitudes HTTP.
  • Como parámetros en formularios HTML.

Tipos de NAT: Funcionamiento y Características

NAT (Network Address Translation) es una técnica que permite a múltiples dispositivos en una red privada compartir una única dirección IP pública.

  • Full-Cone NAT: Es el tipo más abierto. Una vez que un dispositivo interno inicia una comunicación, cualquier host externo puede responderle a través del puerto asignado, independientemente de su dirección IP de origen.
  • Restricted-Cone NAT: Un poco más restrictivo. Solo la dirección IP a la que el dispositivo interno se comunicó inicialmente puede responderle a través del puerto asignado.
  • Port-Restricted-Cone NAT: Aún más cerrado. Solo puede responder la dirección IP y el puerto específicos a los que el dispositivo interno se comunicó.
  • Symmetric NAT: El más restrictivo. Solo acepta respuestas exactas del mismo destino (misma IP y puerto) al que se envió la solicitud original. Para cada nueva conexión a un destino diferente, se asigna un nuevo puerto de origen.

Servicios Web vs. Aplicaciones Web: Distinciones Clave

Aunque ambos operan en la web, sus propósitos y modos de interacción difieren significativamente.

  • Aplicación Web: Posee una interfaz visual (generalmente construida con HTML, CSS y JavaScript) diseñada para la interacción directa con un usuario humano a través de un navegador web.
  • Servicio Web: Carece de una interfaz visual. Está diseñado para ser consumido por otras máquinas o programas (por ejemplo, a través de una API), facilitando la comunicación y el intercambio de datos entre sistemas.

Arquitectura de Aplicaciones Web: Capas y Funciones

Las aplicaciones web modernas suelen seguir una arquitectura de múltiples capas para separar responsabilidades y mejorar la escalabilidad y el mantenimiento.

  • Capa 1 (Presentación): Se encarga de la interfaz de usuario (HTML, CSS, JavaScript) y la interacción con el cliente.
  • Capa 2 (Lógica del Servidor/Negocio): Contiene la lógica de procesamiento de la aplicación, gestionando las solicitudes del cliente y coordinando con la capa de datos.
  • Capa 3 (Datos): Almacena y gestiona los datos de la aplicación, típicamente a través de una base de datos.

Redes Definidas por Software (SDN): Conceptos y APIs

SDN (Software-Defined Networking) es un enfoque de arquitectura de red que permite a los administradores gestionar los servicios de red a través de la abstracción de la funcionalidad de bajo nivel.

Planos en SDN

  • Plano de Control: Es el cerebro de la red, donde se toman las decisiones sobre cómo se enrutan los paquetes.
  • Plano de Datos: Se encarga del reenvío real de los paquetes según las instrucciones del plano de control.

Controlador SDN

El Controlador SDN es un programa centralizado que programa y gestiona el comportamiento de los dispositivos de red (como los switches), aplicando las políticas definidas por el administrador.

APIs en SDN

  • Southbound API: Permite la comunicación entre el controlador SDN y los dispositivos de red subyacentes (ejemplo: OpenFlow).
  • Northbound API: Facilita la interacción entre el controlador SDN y las aplicaciones de red o servicios de nivel superior (ejemplos: REST, Pyretic).

STUN y TURN: Funcionamiento y Aplicaciones en Tiempo Real

Estos protocolos son cruciales para establecer comunicaciones directas en entornos con NAT.

  • STUN (Session Traversal Utilities for NAT): Ayuda a los dispositivos a descubrir su dirección IP pública y el puerto asignado por el NAT, permitiendo la comunicación directa entre pares.
  • TURN (Traversal Using Relays around NAT): Si la conexión directa (P2P) no es posible debido a NATs restrictivos, TURN actúa como un servidor de retransmisión (relay) para el tráfico de medios.

Ambos son ampliamente utilizados en aplicaciones de comunicación en tiempo real como VoIP (Voice over IP) y WebRTC.

CG-NAT: Desafíos y Consideraciones para Operadores

CG-NAT (Carrier-Grade NAT) es una forma de NAT implementada a nivel de operador de servicios de internet (ISP), donde múltiples usuarios comparten una única dirección IP pública.

Problemas asociados:

  • Dificultades con juegos en línea y aplicaciones que requieren puertos específicos.
  • Riesgo de inclusión en listas negras de IP debido al comportamiento de otros usuarios compartiendo la misma IP.
  • Complicaciones en la trazabilidad de actividades en línea.
  • Problemas con servicios P2P (Peer-to-Peer).

OpenFlow: Campos de Flujo y Acciones

OpenFlow es un protocolo fundamental en SDN que permite al controlador programar el plano de datos de los switches.

Define flujos de red utilizando una combinación de campos en los encabezados de los paquetes, como:

  • Direcciones MAC de origen y destino.
  • Direcciones IP de origen y destino.
  • Puertos TCP/UDP.
  • Tipo de protocolo (TCP, UDP, ICMP, etc.), entre otros.

Las acciones que se pueden aplicar a un flujo incluyen:

  • Reenviar el paquete a un puerto específico.
  • Descartar el paquete.
  • Modificar campos del encabezado.
  • Monitorizar el tráfico.

Tipos de Redes de Entrega de Contenido (CDN)

Una CDN (Content Delivery Network) es un sistema distribuido de servidores que entrega contenido web a los usuarios basándose en su ubicación geográfica, mejorando la velocidad y disponibilidad.

  • Pure-play CDN: Proveedores independientes y especializados en CDN (ejemplo: Akamai).
  • Telco CDN: CDNs operadas directamente por proveedores de telecomunicaciones.
  • Managed CDN: Un proveedor gestiona la CDN sobre la infraestructura de red de un operador.
  • Licensed CDN: El operador instala la infraestructura, pero el software de la CDN es proporcionado por un tercero bajo licencia.
  • Federated CDN: Múltiples CDNs interconectadas que colaboran para entregar contenido.

Mecanismos de Enrutamiento de Solicitudes (Request-Routing)

Estos mecanismos dirigen las solicitudes de los usuarios al servidor o recurso más adecuado.

  • DNS-based Routing: La redirección se realiza a nivel de DNS, utilizando técnicas como round-robin o geolocalización para dirigir las solicitudes a diferentes servidores.
  • HTTP Redirect: El servidor envía una respuesta HTTP de redirección (ej. 301, 302) al navegador del cliente, indicándole que acceda a una nueva URL.
  • Reescritura de URLs: El servidor web interno modifica la URL de la solicitud antes de procesarla, decidiendo la ruta interna del contenido sin que el cliente lo perciba.

VXLAN: Virtualización de Redes en Entornos Cloud

VXLAN (Virtual Extensible LAN) es un protocolo de encapsulación que permite crear redes virtuales de nivel 2 (Ethernet) sobre una red IP de nivel 3. Encapsula tramas Ethernet dentro de paquetes UDP.

Es ampliamente utilizado en entornos de SDN y Cloud Networking para la creación de redes superpuestas (overlays) y la segmentación de redes virtuales a gran escala.

Servicios OTT: Definición y Desafíos para ISPs

Los servicios OTT (Over-The-Top) son aquellos que se ofrecen directamente a los usuarios a través de internet, sin la intervención o control directo del proveedor de servicios de internet (ISP) en la entrega del contenido (ejemplos: Netflix, WhatsApp, Spotify).

Problemas que presentan para los ISPs:

  • El ISP no tiene control sobre el tráfico de estos servicios, lo que dificulta la optimización de la red.
  • Generan un gran volumen de tráfico que puede congestionar la red del ISP sin generar ingresos directos por ese tráfico.
  • Desafían los modelos de negocio tradicionales de los operadores.

Herramientas y Prácticas en Redes y Desarrollo Web

En el ámbito de las redes y el desarrollo web, se utilizan diversas herramientas para el diseño, implementación y análisis.

Herramientas Comunes

  • Wireshark: Un analizador de protocolos de red que permite capturar y examinar el tráfico de red en detalle.
  • Mininet: Un emulador de red que permite crear prototipos de redes SDN y probar controladores OpenFlow en un entorno virtual.

Implementaciones y Pruebas Realizadas

  • Diseño de API REST para diversas funcionalidades.
  • Aplicación de reglas OpenFlow para controlar el flujo de tráfico en switches SDN.
  • Creación de topologías de red en entornos SDN.
  • Análisis de tráfico de red utilizando herramientas como Wireshark.

Principios para el Diseño de APIs REST Eficientes

Para diseñar una API REST robusta y fácil de usar, es fundamental seguir ciertos principios:

  1. Definir recursos con URIs claras y descriptivas: Las URIs deben identificar de forma única los recursos, por ejemplo: /usuarios, /facturas/1.
  2. Utilizar métodos HTTP estándar: Aprovechar los métodos GET, POST, PUT, DELETE para las operaciones CRUD (Crear, Leer, Actualizar, Eliminar).
  3. Representar los datos en formatos estándar: Preferiblemente JSON, por su ligereza y facilidad de parseo.
  4. Garantizar que las operaciones sean sin estado (Stateless): Cada solicitud del cliente al servidor debe contener toda la información necesaria para entender la solicitud. El servidor no debe almacenar ningún contexto del cliente entre solicitudes.

Diseño y Aplicación de Reglas OpenFlow

El diseño y la aplicación de reglas en OpenFlow son esenciales para programar el comportamiento de la red en SDN.

Proceso:

  1. Identificar el flujo: Definir los criterios que identifican un conjunto de paquetes, utilizando campos como direcciones IP, puertos, protocolo, VLAN ID, etc.
  2. Definir las acciones: Especificar qué acción debe realizar el switch cuando un paquete coincide con el flujo (ej. reenviar, descartar, modificar).

Ejemplo de comando ovs-ofctl para añadir una regla:

ovs-ofctl add-flow s1 "priority=100,ip,nw_dst=10.0.0.2,actions=output:2"

Entradas relacionadas: