Fundamentos de Internet (protocolos)

Torre de protocolos

Es un conjunto de protocolos implementados en un sistema ordenados según su posición en el modelo y permite definir las entidades que se comunican y el nivel al que lo hacen.

Una torre de protocolos es un despliegue de los distintos protocolos en la capa correspondiente para ver qué es lo que se está ejecutando en la comunicación de cada equipo y cómo se comunican esos equipos.

En la siguiente imagen se pueden apreciar los distintos dispositivos que nos podríamos encontrar en una red y a la capa que son capaces de llegar. Podemos ver que:

– El  repetidor (o HUB) tan sólo es capaz de llegar a la capa 1, ya que sólo se encarga de reenviar los 0s y 1s que recibe (lo que le entra por un lado lo saca por el otro).

– El puente OSI (o switch) es capaz de llegar hasta la capa de enlace. Se usan para conectar equipos a las redes.

– El encaminador (o router) que capaz de alcanzar la capa de red. Recordemos que es el encargado de encaminar y reenviar los paquetes entre distintas redes.

– El sistema final que llega hasta la capa de aplicación. Recordemos que son en los equipos finales donde se ejecutan los procesos de las aplicaciones distribuidas.

Además, en la imagen anterior podemos apreciar que el equipo final origen tiene que encapsular su mensaje para que pueda atravesar los distintos equipos intermedios, los cuales desencapsularán los mensajes hasta la capa que puedan llegar (exceptuando el repetidor que no desencapsula nada ya que solo copia en la salida los 0s y 1s que recibe en la entrada).

Por último vamos a proceder a ver un ejemplo completo de torre de protocolos siguiendo el modelo que se sigue en internet.

En la imagen anterior se puede apreciar que en un host final se está ejecutando un navegador web chrome y al otro lado otro host está ejecutando un servidor apache. La torre de protocolos del host final, tendría http si es una navegación no segura, en la capa de transporte estaríamos ejecutando tcp, en la de red estaría IP, en la capa de enlace estaríamos ejecutando la 802.11 ya que estaríamos utilizando enlace WIFI y en la física está la 802.11ax que la d es uno de los protocolos WiFI que ha salido recientemente.

En el primer encaminador (mirando de izquierda a derecha) se estaría ejecutando en el enlace físico el 802.11ax para que sea una entidad par con el emisor, y como es un Router, tan solo llega hasta el nivel 3. En la otra pata que se comunica con otro router a través de un enlace punto a punto, la capa IP se mantiene pero la de enlace pasa a ser PPP, y después ya tendría alguno físico correspondiente al enlace dado.

En el segundo encaminador, la primera pata coincide con la entidad par del otro router y la otra pata que está conectada conectada a un servidor apache, como es un enlace ethernet estaría ejecutando en red IP, en enlace la 802.3 que es donde se define ethernet y en físico estaría por ejemplo la que observamos en la imagen, la 802.3ab.

El equipo final donde se ejecuta el servidor apache tendría lo mismo que el router hasta la capa de red para que sea entidad par, añadiendo TCP como transporte y HTTP como aplicación, para que sean entidades pares con las del equipo final donde se ejecuta el navegador web.

Como conclusión, vemos cómo hay una comunicación entre entidades pares, entre hosts finales que los dos llegan hasta aplicación y con el mismo protocolo, en transporte y red igual y lo que va cambiando o alternándose son los distintos protocolos de enlace y físico porque en esa comunicación va variando esas capas en los distintos equipos intermedios, pasando de wifi a ppp y de ahí a ethernet.

Comunicación App-Transporte. Sockets

Hemos hablado de que las capas de entidades pares se comunican y que para hacerlo necesitan hacer uso o prestar un servicio a las otras capas. Si una aplicación quiere enviar un mensaje, debe usar el servicio de la capa de transporte y para ello se crean lo que se conocen como sockets.

Los sockets son como APIs ofrecidas por el S.O para usar la red y que ayuda al flujo de datos entre procesos. Además:

– Es lo que permite que un proceso de App acceda a los servicios de transporte. Es como establecer un destino para que la aplicación pueda comunicarse con esa capa de transporte.

– El socket creado es identificado de forma única localmente usando el par IP:puerto.

– En un host puede haber múltiples aplicaciones y cada aplicación puede crear múltiples sockets. La forma que tiene el S.O de diferenciarlos es a partir del par IP:puerto.

– Para que la aplicación solicite el servicio de transporte, necesita usar Primitivas de Acceso al servicio. Por ejemplo, es como alguien que quiera viajar de España a Francia quiera solicitar el transporte de un avión, pues antes necesita comprar el billete. Haciendo la analogía, una aplicación para poder enviar un mensaje del emisor al destino necesita solicitar el servicio de transporte necesario y para ello utiliza los sockets.

Por último, existen librerías con dichas primitivas para el uso de sockets. En el lenguaje C -> #include <socket.h>; En Python -> import socket

La capa de transporte

Tras entender qué es una aplicación distribuida, el modelo de capas, cómo se comunican entre ellas y entre entidades pares,  vamos a explicar un poco más en detalle la capa de transporte.

La capa de transporte ofrece una comunicación lógica entre procesos de aplicación de equipos distintos.

El funcionamiento básico sería el siguiente:

– El emisor recibe mensajes de aplicación y genera segmentos (T-PDU). En la cabecera de segmento se identifican los procesos de aplicación destino y origen con puerto destino y origen.

– El receptor recibe segmentos, lee la cabecera (T-PCI) y avisa al proceso app destino.

Se ha hablado de puerto origen y destino pero, ¿qué es un puerto? 

Un puerto es un entero de 16 bits ( 2^16 valores posibles -> 0-65535). Los posibles valores que toman son:

– < 1024 (well-known ports): puertos reservados para aplicaciones generales registradas en IANA.

– 1024-49151( puertos registrados ): se usan para aplicaciones no tan generales

– > 49151: puertos dinámicos o efímeros