En este blog iré comentando en español pequeños resúmenes de los módulos del curso Networks, friends, moneys and bytes de Coursera, conducido por el instructor Mung Chiang de la Universidad de Princeton, cualquier duda o comentario serán muy bienvenidos porque así aprendemos todos

sábado, 8 de diciembre de 2012

Como funciona Internet


El sistema que permite el tráfico de datos por Internet se ha ido formando de manera evolutiva, siguiendo algunos criterios fundamentales tales como la compatibilidad hacia atrás, las instalaciones incrementales y los incentivos económicos. Es difícil determinar cuales de estos avances se han producido por una planificación deliberada y cuales han sido simplemente un legado de accidentes o casualidades históricas.

Una de las ideas fundamentales detrás de Internet es el packet switching, o transmisión conmutada de paquetes. Para entender esta idea es útil considerar su opuesto, el canal dedicado. Supongamos un antiguo sistema de teléfonos conectado por cables y con una operadora que hace las conexiones, en este caso tendríamos dos alternativas posibles, la más obvia sería que desde cada casa con teléfono salga un par de cables que la conecte con la central telefónica. Este sería un sistema muy confiable pero extremadamente ineficiente, porque la mayoría del tiempo los pares de cable pasarían sin ocuparse, porque las personas no están llamándose por teléfono las 24 horas del día. Este es el equivalente de líneas dedicadas (circuit switched) cuya ventaja es la confiabilidad y la desventaja su ineficiencia y alto costo.

Pero tenemos una alternativa que consiste en dividir las casas por sectores y tirar un solo par de cables compartidos para todo un bloque. Esto puede causar problemas cuando hay dos llamadas para teléfonos ubicados en el mismo bloque, pero estos problemas son improbables porque si el bloque de casas atendidas no es demasiado grande la probabilidad que existan colisiones es baja. ¿Y que pasa cuando existe una colisión? Simplemente se atiende al primero que llega y el segundo que trata de ocupar la línea compartida recibe el tono "ocupado", tendrá que esperar a que el otro termine su llamada. Si ambos llaman exactamente en el mismo instante, sin un milisegundo de diferencia, normalmente ambos reciben el tono "ocupado" aunque esta es una situación muy improbable. Esta es una idea análoga al packet switching cuya ventaja es la eficiencia y la desventaja en que es menos confiable porque está sujetas a colisiones y congestión (por ejemplo cuando después de un terremoto todos llaman al mismo tiempo).

Las líneas dedicadas tienen otro problema grave que no es tan evidente: resulta muy fácil cortarlas. Como existe un único circuito, basta que alguien corte ese circuito con un alicate para dejarlo definitivamente fuera de servicio.  Este problema alertó a los militares en USA, que durante los años de la guerra fría  vieron que las universidades, centros atómicos, etc. estaban conectando sus supercomputadores con líneas dedicadas, que eran muy confiables pero extremadamente vulnerables ante un ataque: alguien con un alicate cortante podía hacer más daño que muchas bombas.

Por eso a comienzos de 1960, la ARPA y otras instituciones ligadas a la defensa financiaron la investigación para desarrollar un sistema de comunicaciones que tuviera dos características principales: redundancia y eficiencia. La redundancia significaba que no hubiese un circuito único, si un camino se cortaba se debería poder usar otro de manera automática. La eficiencia implicaba no tener que hacer cientos de líneas dedicadas en paralelo así es como fue inventado el packet switching, consistente en cortar los mensajes en pequeños paquetes de un largo fijo para ser distribuidos por distintos caminos en una red de conexiones.

Mientras las líneas dedicadas tienen garantía de calidad, el packet switching no puede garantizar que no se perderán paquetes y no habrá congestión, trabajan en cambio bajo el concepto de "best effort" o sea haciendo todo lo posible para que la calidad de servicio sea aceptable, cosa que ocurre en términos estadísticos, tal como ocurría con las antiguas líneas telefónicas compartidas.

El modelo de capas

Otra idea fundamental en Internet consiste en aislar los distintos procesos en un modelo de capas, que actúen como cajas negras en el sentido que sus responsabilidades, entradas y salidas sean estandarizadas. Eso permite hacer muchos cambios y avances dentro de la caja negra, pero mantiene la compatibilidad hacia atrás porque las entradas y salidas son siempre las mismas. El modelo más conocido es de cuatro capas como muestra la figura:

Cada capa produce un servicio a la capa superior. La capa física se refiere a los medios de transporte, por ejemplo fibra óptica; cable de cobre; canal wifi; enlace satelital, etc. La capa de enlace (links) se refiere a las redes de área local como Ethernet por ejemplo.  La capa de red (network) está constituída por los routers y el sistema de enrutamiento  de los packet (capa IP). La capa de transporte (TCP) verifica el tráfico end-to-end juntando los packet para reconstruir los mensajes y enviando señales de control sobre la recepción. Finalmente la capa de aplicaciones es todo el software que usamos como los browsers, páginas web, Facebook, Blogger y todo eso.

Las capas de transporte y red (TCP/IP) casi no han cambiado desde el inicio de Internet, las demás capas en cambio han tenido cambios enormes. Por ejemplo la velocidad de transmisión en la capa física ha aumentado 30.000 veces, una cifra difícil de imaginar.

El enrutamiento de los packets es una de las partes más complicadas de Internet y se pueden encontrar bibliotecas sobre esto. El principio general es que cada router tiene tablas de corto alcance, con los mejores caminos para llegar a cierta dirección: Ningún router tiene una visión global de las conexiones, solo conoce a sus vecinos más próximos y esto permite conectar cualquier par de direcciones a través de los trillones de caminos posibles en un promedio entre 12 -18 saltos.

No hay comentarios:

Publicar un comentario