Buscar en este blog

Mostrando entradas con la etiqueta TCP/IP. Mostrar todas las entradas
Mostrando entradas con la etiqueta TCP/IP. Mostrar todas las entradas

lunes, 26 de septiembre de 2011

Cómo funciona Internet? (II)

En el post "Cómo funciona Internet?" se explica a grandes rasgos el proceso que siguen los datos para ser enviados y recibidos. En esta ocasión veremos algunos matices más sobre el complejo funcionamiento de Internet. Los sistemas OSI y TCP/IP (que se explicaron en "Cómo funciona Internet?") definen los procesos y características que siguen los datos en su transmisión, aunque como bien se dijo son tan sólo modelos teóricos y la realidad es algo mas compleja. Los protocolos para comunicaciones existentes se pueden contar por miles y las funciones y responsabilidades de cada protocolo varían según las características para las que se ha desarrollado, entremezclándose a menudo. En este post se citan tres puntos que pretenden dar una muestra de la complejidad de los datos que viajan por Internet.

En primer lugar hablaremos del protocolo GTP (GPRS Tunneling Protocol) y las VPNs (Virtual Private Network), que ya vimos en el post "N00ter: una aplicación que detecta si hay Gestión de Tráfico" que interconectan a través de Internet dos redes LAN, se llevan a cabo mediante mecanismos de 'tunneling'. Esta técnica es un claro ejemplo de cómo se entremezclan los protocolos. El GTP se emplea en el transporte de las redes 3G móviles y se lleva a cabo encapsulando el paquete IP original en los protocolos UDP e IP . El resultado es bastante diferente de lo que el modelo OSI o TCP/IP, ya que en la pila de protocolos aparecen dos veces la capa IP y también dos veces la capa de L4 (TCP y UDP). El funcionamiento de VPN es algo mas complejo aunque el principio es similar.


Por otro lado, resulta interesante ver cómo las aplicaciones emplean los protocolos y como generan conexiones. Como conexión se debe entender el flujo de paquetes que van desde una dirección IP y puerto origen a una dirección IP y puerto destino, y según un protocolo de transporte (TCP o UDP). Esto, como ya se ha dicho en anteriores ocasiones, se conoce cómo 5-tuple y es empleado en varios dispositivos de red. El caso es que no existen limitaciones para el número de conexiones que se pueden dar sobre una máquina, y este es uno de los puntos donde se hace fuerte el P2P (ver "El tráfico P2P"), junto con la "Violación de recomendaciones y normas en Internet". Lo que se hace es simple, imaginemos dos clientes que abren varias conexiones en paralelo entre ellos para lograr mayores tasas de transferencia. La matemática es simple: la apertura de diez conexiones en paralelo ofrece una conexión global con una velocidad de transferencia de diez veces mayor que su cuota justa. Si se abren cien...

Por último, es de destacar también la complejidad que se añade al usar infinidad de protocolos entremezclados. Una aplicación no tiene porqué emplear tan sólo un protocolo en concreto, y el número de protocolos existentes es muy elevado (los equipos de análisis actuales reconocen del orden de 1000). Los motivos son varios, aunque generalmente suele deberse a que muchas aplicaciones empelan código de terceros o varios servicios que requieren varios protocolos. Un ejemplo claro de este hecho es Skype, por ejemplo, que emplea protocolos de VoIP, de mensajería instantánea, de video, etc.



miércoles, 13 de julio de 2011

Cómo funciona Internet?

Después de haber hablado brevemente sobre "Qué es Internet?", se pretende dar un pequeña explicación de cómo funciona, que no es poca cosa. Para ello, primero de todo, se debe conocer el modelo en que está estructurado, que se corresponde con el modelo OSI.  

El Modelo OSI fue creado en 1984 por la ISO (International Organization for Standardization) con la intención de ser el marco de referencia para la conexión de equipos de comunicaciones y para estimular la compatibilidad entre diferentes tipos de redes.  Así, se definieron 7 capas a las que se atribuyen unas funciones determinadas y que hacen referencia a los procesos que atraviesan los datos desde su origen hasta su destino.

Capa física (L1): Describe las características físicas de los datos, esto abarca desde los conectores que se deben utilizar hasta la temporización de los datos, pasando por los niveles de potencia, etc.

Capa de enlace (L2): Prepara los datos para que puedan ser enviados a lo largo de los medios utilizados (a esta unidad de de datos se les llama tramas), lo que puede significar que los prepara para un medio inalámbrico (Wi-Fi, UMTS/HSPA, etc.) o bien para ser enviados a lo largo de una conexión cableada (Ethernet, ATM). Los dispositivos que realizan esta función son generalmente los switch, que trabajan con direcciones MAC (cada dispositivo de red posee una de estas, que es única en todo el mundo).

Capa de red (L3): Proporciona el direccionamiento y enrutamiento, es decir, gestiona como los datos (en este nivel, paquetes) se transportan de una parte de la red a otra. Es la responsable de configurar el paquete a un estándar de transmisión apropiada (por ejemplo, IP). El dispositivo que se encarga de esta tarea en Internet es el router, que trabaja con direcciones IP (aunque también con MAC).

Capa de transporte (L4): Establece una conexión extremo a extremo entre el punto de origen y destino asegurando que los paquetes se reúnen en el orden correcto. A estas unidades de datos se les llama datagrama y aquí es dónde se especifica el número de puerto donde conectarse una vez alcanzada la máquina a la que accedemos (por ejemplo, para navegación web se utiliza el puerto 80). Un puerto no es más que un número que se emplea a nivel software en los dispositivos para saber qué hacer con la información. Los firewall suelen analizar esta capa de la información.

Capa de sesión (L5): Crea, administra y termina sesiones de comunicaciones entre el remitente y el destinatario de tráfico de datos.  Como sesión podemos entender un proceso de intercambio de datos.

Capa de presentación (L6): Tiene que ver con el formato en que los datos se presentan. Esta capa también funciona como la capa que cifra y comprime los datos. 

Capa de aplicación (L7): Esta capa interactúa con el programa que está haciendo una petición de datos y es dónde se definen los protocolos que se van a utilizar.


Cuando se hace una petición de comunicación, los datos se van encapsulando en las diferentes capas y cada una de ellas aporta una cierta información sobre qué protocolo y características está utilizando, esto se conoce como cabecera.  Este encapsulado se produce desde el L7 hasta el L2, hasta que se envia a la red. En la recepción se des-encapsula en el sentido contrario.


Se ha hablado del modelo OSI, pero Internet se basa en el modelo TCP/IP. A grandes rasgos son muy similares pero con la diferencia de que en TCP/IP se integran los niveles del modelo OSI L6 y L5 en su L7 (aplicación). Esto es debido a que Internet no tiene un nivel de sesión unificado sobre el que los niveles superiores se sostengan, estas funciones son típicamente desempeñadas (o ignoradas) por las aplicaciones de usuario. El modelo OSI es posterior a la definición del modelo TCP/IP (1972), aunque es interesante describirlo porque las funcionalidades son prácticamente las mismas.  En cualquier caso, el modelo OSI no es más que un modelo teórico, y como todos sabemos la aplicación práctica suele distar bastante de la teoría, pudiendo mezclarse conceptos a la hora de aplicar algunos protocolos.

Aclarado esto, ya podemos hablar de como se transfieren los datos. Cuando un usuario hace una petición, sucede algo así:
  1. Los datos son encapsulados por el nivel de aplicación, que guarda la información de que programa está solicitando datos. Esto lo hace nuestro PC o dispositivo cualquiera.
  2. Esta información a su vez se encapsula en un datagrama TCP (Transfer Control Protocol) o UDP (User Data Protocol), que contiene la información de a qué puerto se va a pedir la conexión, además del orden en que están distribuidos los datos.
  3. Estos datagramas se fragmentan en paquetes IP, que son los que se irán distribuyendo por la red. En primer lugar irán desde nuestro router al router del ISP. En ese punto, el router del ISP consulta la dirección IP de destino que lleva escrita nuestro paquete, y según unas tablas internas lo redirigirá a otro router para que este a su vez haga lo mismo, hasta que el paquete alcance el destino. Dependiendo de la página accedida, en número de saltos puede variar, pero para dar una idea suele ser de varias unidades o decenas. (Existe una aplicación bastante interesante llamada traceroute que nos da esta información).
  4. En el destino se procederá de forma inversa para acceder a los datos.

En la descripción del proceso se ha obviado la función del nivel de enlace. Cada router asocia la dirección MAC que corresponde a la IP a la que se deba acceder, y envía los datos a esa dirección. Cuando se recibe en el siguiente router o salto, se quita la cabecera L2 y se analiza la L3, se consultan las tablas de este nuevo router, se añade cabecera L2 y se envía al siguiente punto.


Un router como tal tan solo debería consultar dirección IP de destino y de origen para determinar hacia donde enviar los datos.  No obstante, la realidad es que se suele consultar esto mas los puertos origen y destino y el protocolo de datos (esta información corresponde al L4, y no es específica de un router, sino más bien de un firewall). A esta combinación de datos se la conoce como 5-tuple, y se emplea para determinar si algún paquete no debe seguir por la red si está intentando acceder algún puerto prohibido o si el protocolo no es el pertinente.

Existe un principio sobre el diseño de Internet que dice que una red óptima debe tener la inteligencia en los extremos  esto es el principio end-to-end. Esto significa que si un paquete se pierde por el camino, no será el router quien se encargue de tomar las medidas pertinentes, si no que será el destinatario quien se encargue de pedir la retransmisión (esto sucede en el L4). Este modo de funcionamiento no aprovisiona un QoS (Quality of Service) mínima y se corresponde con lo que se denomina un servicio 'best effort' (mejor esfuerzo) y que como su nombre indica hace las tareas lo mejor que puede. Este modo de funcionamiento es totalmente contrario a los servicios de comunicación a los que estamos acostumbrados (la red telefónica conmutada o RTC) dónde una llamada no es cursada si no se puede establecer un mínimo QoS.

Habiendo simplificado mucho y con ánimo de dar tan solo una visión orientativa, así es como se mueven los datos por Internet. Se ha prescindido de comentar protocolos de seguridad, protocolos de control, medidas para evitar congestión y errores y varias cosas más, que poco a poco iré desgranando.

Para más información y detalles del funcionamiento de Internet ver "Cómo funciona Internet? (II)", además del resto de entradas del blog.



Os dejo un par de vídeos bastante amigables (y antiguos) que explican el proceso (están en inglés, aunque hay versión en castellano): "Warriors of the Net", "How the Internet works".